Index: vendor/dialog/1.3-20180621/CHANGES =================================================================== --- vendor/dialog/1.3-20180621/CHANGES (nonexistent) +++ vendor/dialog/1.3-20180621/CHANGES (revision 339483) @@ -0,0 +1,2248 @@ +-- $Id: CHANGES,v 1.619 2018/06/21 09:19:45 tom Exp $ +-- Thomas E. Dickey + +This version of dialog was originally from a Debian snapshot. I've done this +to it: + +2018/06/21 + + improve file-offset computation in textbox.c (Werner Fink). + + fix an overlooked case with real_auto_size() to maximize when + height or width is given as -1. + + build-fixes for configure options "--disable-Xdialog2" and + "--disable-form" + + add traces for each widget to show its parameters. + + modify color scheme for mixedgauge to use the dialog window colors, + like the captions. + + fix a too-small malloc in the mixedgauge widget. + + fix a use-after-free in dlg_remove_callback(). + + improve handling of SIGWINCH for several widgets (Debian #865840). + + menubox, the point of the Debian report was that it would be nice + to increase the window size if the terminal size increases. Did + that as a special case less problematic than decreasing the + terminal size. Added samples/menubox11 to demonstrate by + comparison with menubox10 a problem with debconf which puts extra + newlines in the caption that interfere with autowrap. + + progressbox and derived prgbox, programbox, now handle resizing. + + yesno, window was cleared + + add dlg_ttysize() to support new options, allowing scripts to obtain + some text-formatting details without initializing the terminal. + + add options --print-text-only, and --print-text-size for scripts that + adjust the widget size according to how the captions are formatted. + + improve dialog.pl: + + add demo.pl, to demonstrate the functions + + quote/escape string parameters passed to dialog. + + ensure all "integer" parameters are really integers. + + use actual screensize for list captions rather than assuming 24 + lines. + + when trimming blanks, treat unconverted tabs the same as spaces. + + correct parameter to test when trimming blanks from the script, + e.g., with "--trim" (report by Jarno Suni). + + improve documentation of the various whitespace-filtering options, + to show which take precedence (Debian #867536, cf: Debian #102942). + + modify msgbox.c, yesno.c to bind SCROLLKEY_BINDINGS before + TRAVERSE_BINDINGS so that up/down arrow will by default scroll the + message up/down rather than be aliases for tab-traversal (report by + Fredrik Kers). + + modify dump_one_binding() to show when a binding is overridden. + + improve format of trace-file, making comment-syntax consistent, + as well as showing argv-splitting as a series of comments. + + modify dlg_string_to_argv() to change the quoting behavior to be + more consistent with shell behavior (patch by Denilson Sa Maia). + + modify dlg_getc() to return ESC when a timeout expires, notifying + callers that a quit occurred rather than exiting the application + (suggested by Rodrigo Freitas). + + modify handle_inputs() to ensure cursor-visibility is restored when + there is no input character available (report by Guillaume Vareille). + + improve comment in manual page regarding which widgets can use the + "--help-button" (prompted by discussion with Csanyi Pal). + + add a check for valid object pointer in tailbox's main loop since + the getc-callback may have been freed within ui_getc.c (report by + "David"). + + improved configure macros for ncurses: CF_GNU_SOURCE, CF_SHARED_OPTS, + CF_CURSES_LIBS, CF_CURSES_FUNCS, CF_NCURSES_CONFIG + + improved configure script checks for groff vs man2html: + CF_PROG_GROFF and CF_WITH_MAN2HTML + + build-fix from lynx for AM_WITH_NLS configure macro + + update config.guess, config.sub + +2017/12/09 + + update ftp url in test-packages. + + modify test-packages to use recommended compiler/linker flags. + + improved configure macros AM_WITH_NLS, CF_CC_ENV_FLAGS, + CF_CURSES_LIBS, CF_NCURSES_CONFIG, CF_SHARED_OPTS, CF_WITH_LIBTOOL, + CF__INTL_BODY. + + update config.guess, config.sub + +2017/05/09 + + improved configure macros CF_ADD_CFLAGS, CF_CC_ENV_FLAGS, and + CF_SHARED_OPTS. + + updated hu.po and tr.po from + http://translationproject.org/latest/dialog/ + + update config.guess, config.sub + +2017/01/31 + + use DLG_TRACE macro consistently to make "--disable-trace" configure + option work. + + modify buildlist widget to support option "--reorder" for to allow + user to reorder the data based on the sequence of selections + (discussion with Paraic O'Ceallaigh). + + fill background color on unused parts of buildlist. + + fix a minor error in buildlist which let pageup switch columns. + + change several calls to dlg_trace_msg to prefix with "#" to make + the trace logs more consistent for parsing. + + add samples/run_test.sh + + further improve performance with very long command-lines by changes + to howmany_tags(). + + modify dlg_string_to_argv() to convert escaped double-quotes to + plain double-quotes when within a double-quoted string. + + modify makefile to apply CFLAGS to linking + + modify dlg_string_to_argv() to ignore escaped newlines except when + quoted, fixing a problem with samples/checklist9. + + interpret $DIALOGOPTS before expanding "--file", etc., to allow + the environment variable to turn on tracing in that process. + + improve performance when processing very long command lines, e.g., + using "--file" by changing dialog_opts[] to an array of pointers to + the expanded argv[] (discussion with Lars Tauber). + + modified autoconf macros + + CF_CC_ENV_FLAGS amend the last change to move only the + preprocessor, optimization and warning flags to CPPFLAGS and + CFLAGS, leaving the residue in CC. That happens to work for gcc's + various "model" options, but may require tuning for other compilers + + CF_LARGEFILE workaround for clang exit-code vs warnings + + CF_MATH_LIB quiet strict gcc warning + + CF_WITH_LIBTOOL fix a few places in configure/build scripts where + DESTDIR and rpath were combined + + CF_XOPEN_SOURCE add "uclinux" to list of Linux's + + update config.guess, config.sub + +2016/11/20 + + added fur.po (Friulian) from + http://translationproject.org/latest/dialog/ + +2016/08/28 + + improve parsing and trace for "bindkey", to convert space to/from + "\s", as well as handle octal escapes for single byte characters. + + change explicit checks for space character used for select or toggle + to make this rebindable to "TOGGLE" (prompted by discussion with + Paul van Tilburg). + + add default bindings for cursor left/right to formbox. The cursor + left/right cases were replaced with rebindable symbols in 2005/12/07 + without providing these keys as default values (report/patch by + Miroslav Lichvar). + + modified autoconf macros + + CF_PROG_LINT add cpplint to programs to use; drop ad hoc tdlint and + alint. + + CF_CC_ENV_FLAGS don't limit the check to -I, -U and -D options, + since the added options can include various compiler options before + and after preprocessor options. + + CF_GNU_SOURCE recent glibc (Debian 2.23-4 for example) has + misordered ifdef/checks for new symbol _DEFAULT_SOURCE, producing + warning messages when only _GNU_SOURCE is defined. Add a followup + check to define _DEFAULT_SOURCE. + + CF_XOPEN_SOURCE use _GNU_SOURCE for cygwin headers, tested with + cygwin 2.3, 2.5 (patch by Corinna Vinschen). + + mention --no-collapse option in manual page description of + --tab-correct option. + + update config.guess, config.sub + +2016/04/24 + + fix a special case in drawing shadow on a line-drawing cell where the + alternate-character set flag was lost (report by Martin Kravec). + + fix a regression from 2015/05/13 changes for escaping; it is + necessary to retain backslashes within quotes to make "\Z" escapes + work (report by Marcin Krol). + + fix test package for RPMs; changes in 2015 omitted symbolic links + for the library. + + fix typo in help message for "--buildlist" (report by Rihards Olups). + + modified autoconf macros + + CF_PROG_AR, CF_AR_FLAGS added to improve check for archive tool. + + CF_LD_RPATH_OPT, change FreeBSD to use -Wl,-rpath rather than + -rpath option. According to FreeBSD #178732, either works since + FreeBSD 4.x; however scons does not accept anything except the + -Wl,-rpath form. + + CF_WITH_NCURSES_ETC, change from ncurses to check for pthreads + dependency. + +2016/02/09 + + modify editbox widget to add a trailing newline if the text has none + to ensure the last line is not ignored (report by Florent Rougon). + + change mouse initialization to look for button-presses rather than + button-clicks, for better response. + + modify dump_curses_key() to show mouse-coding in readable form. + + correct mapping of mouse-clicks on the day-grid in calendar widget + when "--week-start" is used to set the start of the week (report by + Stefan Vogtner). + > integrated changes from Stefan Vogtner: + + use Gregorian algorithm for leap year + + use mktime if available; calendar was written just as it became + standard. + +2016/01/26 - release 1.3 + + correct --infobox documentation, which said it shows an OK button. + + fix a couple of place in test-scripts which referred to $SIG_TRAP + rather than $SIG_QUIT + + reorganize dialog.3, to use subsections for generating navigation + pane, using man2html + + add "--week-start" option for calendar widget (prompted by discussion + with Stefan Vogtner). + + add a limit-check in editbox.c to ensure that mouse-clicks outside + the filled-in text area do not access past the end of the array + (report by Stefan Vogtner). + + update configure macros from ncurses changes. + + update config.guess, config.sub + +2015/09/20 + + decrease table value for minimum number of arguments for the widgets + which use --no-items option (report by Raven Singularity). + + update configure macros: + + use $SHELL consistently, deprecate non-POSIX shell + + PKG_CONFIG may simply be unset - fix + + add option to allow changing ABI version, from ncurses6. + +2015/05/28 + + fixes for two autoconf macros, CF_ADD_INCDIR and CF_NCURSES_CONFIG + from work on ncurses. + + build-fix for NetBSD curses (patch by Matthias Scheler). + +2015/05/13 + + add configure option --with-install-prefix, like ncurses. + + add --with-screen and related configure options from ncurses-examples + to allow building with ncurses6 test-packages. + + update configure macros for improved coding style from lynx changes. + + updated ro.po from + http://translationproject.org/latest/dialog/ + + update config.guess, config.sub + > patches by Florent Rougon: + + fix two bugs in the "--file" option. + + When the number of arguments read from the included file is 0, the + code used to just skip over '--file' and its argument instead of + removing them from the argument list, causing "Error: Unknown + option --file" later on. + + In the alternative case (at least one argument read from the file), + the previous code used to do '--j;' in order to "force rescan" of + the inserted arguments. However, control then flowed to outer + blocks where a '++j;' counteracted this measure, causing "Error: + Unknown option --msgbox" (for instance) later on. + + modify escaping in argv.c to be more uniform, whether or not the + backslash is found within a parameter. + +2015/02/25 + + modify gauge widget to keep from erasing a second gauge widget, e.g., + via the "--and-widget" option. This is a cosmetic change to match + behavior of dialog 1.0 (report by Jason Orendorf). + + add configure option "--with-man2html" + + add configure options for versioned symbols, from ongoing work on + ncurses. + + update configure macros, e.g., for shared libraries + +2015/01/25 + + suppress highlighting of character which denotes an abbreviation or + shortcut for the OK/Cancel and other buttons for these widgets, which + use abbreviations for the list shown on the screen: buildlist, + checklist/radiobox, menubox, treeview (Debian #775295). + + add grid up/left and down/right bindings in editbox.c as synonyms for + field prev and next, respectively when handling the OK/Cancel buttons + (Debian #775294). + +2014/09/11 + + correct malloc-size for change to prgbox. + +2014/09/10 + + fixes to make "-c" option work when passing command to shell for the + prgbox widget, for example in samples/prgbox2 (report by Korantin + Auguste). + +2014/09/08 + + fix an out-of-bounds array index in buildlist widget (report by + Cade Foster). + +2014/09/01 + + add configure check for groff, needed for html/ps/pdf output. + + update configure-script macros: + + CF_ACVERSION_CHECK - work around another gratuitous incompatibility + introduced in 2.69 + + CF_ADD_CFLAGS - workaround for ash-shell, e.g., with Minix + + CF_ADD_LIBS - filter out duplicates + + CF_CURSES_FUNCS - improve workaround for weak-linkage, seems to fix + tests with NetBSD 6.1 + + CF_INTEL_COMPILER - clean up the -no-gcc option which was leftover + from testing. + + CF_LIB_SUFFIX - change suffix for AIX shared libraries to ".so". + + CF_MAKEFLAGS - workaround for GNU make 4.0 incompatibility with + previous releases. + + CF_XOPEN_SOURCE - add cases for Minix, UnixWare and improve the + workaround for Solaris. + + improve comparison in compare_cache() function, in case difference + between pointers does not fit in int's. + + updated de.po, es.po, hu.po, lv.po from + http://translationproject.org/latest/dialog/ + + update config.guess, config.sub + +2014/02/19 + + cleanup of manpages prompted by Gislason's comments. + + several changes to manpages to improve presentation (patches by + Bjarni I. Gislason, Debian #739180, Debian #739181) + + use "\/" when transitioning from italic to normal font + + correct an instance of "e.g,." + + use "\e" rather than "\\" to present a literal "\" + + improve formatting of table header + + remove some excess space-characters + + change a reference 0-9 to use "through" as the connector + + use "\&" to separate "." from a space to make the space shorter + + change a list's TP macro parameters to make the hanging text align + better with the adjacent paragraph + + add comma in a few places before "and" in a list + + separate units from numbers with a nonfillable space + + replace "-" with en-dash in a few places + + corrected argument indices after "--args" and "--file" to rescan the + argument list after removing/substituting those options. + + fix loops for "--file" option to handle cases with zero or no tokens at + all substituted (Redhat #1066168). + + add gd.po from + http://translationproject.org/latest/dialog/ + +2014/01/12 + + improve calculation for amount to scroll in programbox when an "Ok" + button might obscure part of the data (report by Florent Rougon). + + modify program to permit --separate-output to be used with buildlist + and treeview widgets (report by Florent Rougon). + + add list-height parameter to manpage description of --buildlist + (report by Florent Rougon). + + minor fixes to dialog.1 manpage; the reported problem was actually + fixed in 20120703 (Debian #726233, patch by Bjarni Ingi Gislason). + + add a "Hello World" example to dialog.3 manpage (prompted by + discussions with Dustin Oprea, Kevin Ingwersen). + + correct comparison in dlg_lookup_key() so that using "bindkey" with + a "*" wildcard parameter works as documented (report by Stewart + Benedict). + + updated configure macros, fixes for clang and mingw. + + update config.guess, config.sub + +2013/09/28 + + fix a regression in gauge widget from 2013/09/28 changes; + dlg_reallocate_gauge() failed when no --title option was given + (report by Tritonas Insomnia). + +2013/09/23 + + fix samples/inputbox6-utf8, which had depended unnecessarily on bash. + + improve memory caching for wide-character manipulation in gauge + widget (report by Devin Teske). + + add dlg_reallocate_gauge (discussion with Devin Teske). + + updated configure macros to use msys changes from ncurses. + + update config.guess, config.sub + +2013/09/02 + + modify makefile rule to make the ".png" filenames created by groff + predictable. + + add option --help-tags to allow scripts to get the item's tag field + consistently from help- and help-item button results rather than + getting the item's text for the latter (discussion with Florent + Rougon). + + correct manpage discussion of DIALOG_ITEM_HELP versus --item-help, + as well as --help-button return status (report by Florent Rougon). + + correct limit used for --hline option (report by Devin Teske, + cf: 2011/06/30). + + do not print empty "[]" if a --hline option was given with an empty + value (report by Devin Teske). + + miscellaneous configure script fixes/updates. In particular, add + option --with-shared which builds shared libraries without a libtool + dependency. + + add FreeBSD port-files for test-builds. + + update lt.po, add fa.po from + http://translationproject.org/latest/dialog/ + + update config.guess, config.sub + +2013/05/23 + + modify ifdef in arrows.c to work around packages which use the + wide-character ncursesw headers with the ncurses library (report + by Aleksey Cheusov). + + correct workaround for xterm alternate-screen to work with/without + the fix made in ncurses that makes putp() always write to the + standard output (Debian #708829). + + improve limit-checks for checklist, in case the dialog is resized + (report by Ilya A Arkhipov). + + add --last-key option (adapted from patch by Jordi Pujol, Debian + #697607). + +2013/03/15 + + update zh_TW.po, add an.po from + http://translationproject.org/latest/dialog/ + +2012/12/30 - release 1.2 + + improve some older changelog entries to help with HTML'izing content. + + various fixes/improvments for scrollbar appearance. + + add mappings for some equivalent options provided by whiptail; + add configure option --disable-whiptail to allow suppressing these. + + add configure option --disable-Xdialog2 to allow suppressing the + newer features, i.e., for cdialog 1.2 + + add --no-items option, for consistency. + + add --no-tags option, like Xdialog. + + add buildlist, rangebox and treeview dialogs, like Xdialog. + + remove obsolete workaround for ncurses 4.2 scrolling in checklist + and menubox. + + improve dialog_helpfile() by preventing it from showing extra buttons + (suggested by xDog Walker). + + correct logic in formbox's scroll_next() function (report by xDog + Walker). + + fix a case with inputbox widget where preset input text is not shown + until moving the cursor within the text (report by xDog Walker). + + handle SIGCHLD in dialog_prgbox() to eliminate defunct processes + (report by xDog Walker). + + improve the way "hotkeys" are assigned to widget buttons by checking + if a given key has already been used in the row of buttons (Debian + #684933). + + amend fix for --trace parsing from 2012/07/03, which sometimes + skipped a parameter (report by xDog Walker). + + drop copismall and install files from samples, which were essentially + nonfunctional. + + correct secondary border colors in samples/slackware.rc and + samples/whiptail.rc + + update gl.po, add ia.po from + http://translationproject.org/latest/dialog/ + + fix various issues reported by coverity scan. + + miscellaneous configure script fixes/updates: + + require autoconf 2.52+patches + + support --datarootdir option + + check for clang compiler + + check for tinfo library when looking for ncurses + + add 3rd parameter to AC_DEFINE for autoheader + + remove unused macros from aclocal.m4 + + update config.guess, config.sub + +2012/07/06 + + modify samples/setup-tempfile to work with Tru64's shell. + + modify inputmenu sample scripts to make them more portable: + + use "id" rather than "$GROUPS", use sed to work with Solaris. + + use sed to split-up the rename results to work with HPUX. + + fix regression in msgbox (ArchLinux #30574) + +2012/07/03 + + modify prgbox widget to work with --extra-button, etc. + + add case values to several widgets to allow for mouse-clicks with + "--extra-button" and "--help-button" additions. + + correct timebox widget's exit code for "--extra-button" when handing + the "enter" key. + + modify msgbox widget to honor "--extra-button". + + corrected processing of "--trace" option, which did not update the + index into command-line to point past its value. + + add a check in dialog program for valid characters used in option, + e.g., to generate an error if a script attempts to add option value + using "=" rather than with whitespace. + + add new command-line option --default-button and library function + dlg_default_button() to retrieve the value set by the option + to provide a way to set the default button directly rather than + by combining --nook, etc. (patch by Zoltan Kelemen). + + amend include of unctrl.h to apply only to the case where curses.h + is included, to avoid conflict of ncurses' unctrl.h with a system + implementation (report by Martin Roedlach) + + add limit-check to dlg_toupper() in non-wide curses mode to work + when non-character values such as arrow-key codes are passed to + it (patch by Zoltan Kelemen). + + override timeout value, e.g., as set via --timeout command-line + option in pause widget because that interferes with pause's behavior + (report by Jan Spitalnik). + + modify samples/inputmenu* to allow ":" in renamed text (report by + Andreas Stoewing). + + modify double-quoting to make it more consistent, i.e., checklist + output is quoted only when needed. This fixes the case where + single-quotes were used whether or not needed, but also modifies + older checklist behavior for double-quoting which always added those + (Debian #663664). + + correct exit-code used in inputmenu for "rename" button (Debian + #673041, forwarded from Ubuntu #333909, patch by Lebedev Vadim). + + update el.po and hr.po from + http://translationproject.org/latest/dialog/ + + use checkbashisms to clean up sample scripts. + +2012/02/15 + + modify menubox.c to use the same improvement as in checklist.c + + improve auto width computation for checklist widget by using + dlg_calc_list_width as in the non-auto case (Edho Arief). + + eliminate some bashisms in the sample scripts (Pedro Giffuni). + + makefile fixes from FreeBSD ports (Li-Wen Hsu): + + make --with-package option of configure script work. + + get LIBTOOL_VERSION from configure script, needed by + ${LIBTOOL_VERSION} in LIBTOOL_CREATE (LIB_CREATE in configure and + aclocal.m4) + + update cs.po and sr.po from + http://translationproject.org/latest/dialog/ + + updated configure script macros, improving CF_XOPEN_SOURCE among + other fixes. + +2011/10/20 + + fix --analyze warnings for clang versions 2.8, 2.9. + + add configure check for lint program. + + add check in dlg_getc() in case its window is freed as a side effect + of removing callbacks. + + fix logic in freeing subwindows (report by xDog Walker). + + fix a regression in logic distinguishing between inputmenu and menu + widgets (report by xDog Walker). + + minor fixes to library manpage. + +2011/10/18 + + modify header-sh.in to work around limit on sed script length on + HPUX. + + add a special case of parameter parsing for "--trace" to the + initialization done before calling init_dialog(), to allow users to + capture the initial state of the parameter list before any options + are processed and removed. This is only done if "--trace" is the + first option, otherwise it is handled in the common options as before + (report by xDog Walker). + + modify samples/testdata-8bit, discarding $1 from the parameter list + if it was used, so that the source'ing scripts can consistently use + "$@" to insert parameters before the widget, e.g., as an alternative + to using $DIALOGOPTS (report by xDog Walker). + + modify treatment of function pointers in menubox.c, make + dlg_renamed_menutext() and dlg_dummy_menutext() visible to library + users (request by xDog Walker). + + add dlg_count_real_columns(), use to modify centering for "--hline" + text to account for "\Z"s (report by xDog Walker). + + improve check in dlg_draw_arrows2() for conflict between the window + title and up-arrow marker to take into account that the given window + may not be the top-level window of the widget. + + change width of page up/down mouse areas in fselect panes to use the + full width of the panes rather than only the portion from the left + margin to the up/down arrow. + + add/use dlg_draw_box2() and dlg_draw_bottom_box2() to use the + secondary borders. + + modify rc-file read/write to accept/generate color values that refer + to previously-processed items in the color table. This reduces the + number of distinct colors that must be specified to set up a color + scheme. + + add color table entries for secondary borders, i.e., the ones that + are normally drawn with the dialog's text-colors (Debian #641168). + + modify fselect.c to scan the current directory if the input field + happens to be empty (Debian #640905). + + repeated the discussion of environment variables that can override + the exit-status values in the manpage's return-codes section + (Debian #642105). + + add an example to the manpage showing how to override the form + widget's keys used for field/button traversal (Debian #642108). + + modify call to dlg_register_window() in formbox.c so that the editing + bindings are attached to the form sub-window rather than the + top-level dialog window. Also change the name by which the editing + bindings are bound for editbox.c, fselect.c and inputbox.c, so that + the editing and navigation bindings can be different. + + correct logic in dlg_lookup_key() so that it matches the widget name + before using a binding from .dialogrc, allowing the inner/outer + windows of form and other editing widgets to have different bindings. + + modify dlg_register_window() to call dlg_dump_window_keys() after + its updates, via the --trace output, to supplement the manpage + description of key bindings (Debian #642108). + + add DLGK_FORM_PREV and DLGK_FORM_NEXT key-bindings to form.c, to + allow binding a single key to traverse both form-fields and buttons + (Debian #642108). + + modify dlg_parse_rc() to check for error return from + dlg_parse_bindkey(). + + add function dlg_dump_window_keys(), to help with debugging widgets. + + add CR, LF, TAB, FF and ESC to table of curses names to help make + key bindings more readable. + + update table of dialog key-names so that helpfile and trace are + dumped properly. + + correct dlg_dump_keys(), which was showing only the first item in + the matched binding table. + + save/restore window current position in dlg_update_mixedgauge(). + + pass return-code from pause_for_ok() from dlg_progressbox() when + pauseopt is set, rather than only DLG_OK. + + call setlocale() in init_dialog() rather than relying on on-demand + use within inputstr.c, since there are paths in textbox widget which + do not exercise the latter (report by xDog Walker). + + fix some places where checks for "\Z" were done without also checking + dialog_vars.colors (report by Moray Henderson). + + correct logic for DIALOGOPTS parsing so that the parse happens only + once unless memory leak checking is enabled (report by xDog Walker). + + remove an incorrect free() call in dlg_free_gauge() (report by xDog + Walker). + + modify dlg_trace_win() to log wide-characters (report by xDog Walker). + + make traces shorter by skipping repeated ERR's, but showing the + number skipped (report by xDog Walker). + + improve description in manpage to distinguish program box and + progress box from tailboxes (adapted from email by xDog Walker). + + modify dlg_trace_win() so that it looks for the topmost window in a + dialog. Because subwindows share space with the top window, tracing + the latter shows the whole widget (report by xDog Walker). + + expand tracing so that each window is traced before soliciting input, + making the ^T feature to print a window on demand partly redundant + (suggested by xDog Walker). + + cosmetic change in dialog.h to avoid "*/*" strings from comments next + to "*" (report by xDog Walker). + + ensure result from dlg_align_columns() has trailing null on each + string. Analysis was hindered by libc6's continuance of libc5's + early-1990s misfeature of clearing the result from malloc, noting + that libc6's documentation incorrectly claims that it does not do + this (report by xDog Walker). + +2011/07/07 + + modify util.c to work better with old versions of ncurses: + + suppress use of wchgat() before fix in 20060715 which is needed + for simple shadow manipulation used here in 2011/06/30 (report + by xDog Walker). + + add a null-pointer check in dlg_print_scrolled() + + fix a regression in dlg_getc() introduced by changes to intercept + F1 for help-popup (report by xDog Walker). + +2011/06/30 + + correct license statement for prgbox.c (Debian #632198). + + correct layout when "--colors" is used, by discounting characters in + the escape sequences from the column counts (report by xDog Walker). + + modify dlg_checklist() so that only one item in the list can + initially be selected (report by xDog Walker). + + add/use macro dlg_enter_buttoncode() to improve implementation of + "--nook" option (report by xDog Walker). + + add option "--no-nl-expand" to suppress the conversion of "\n" + strings into newlines (request by xDog Walker). + + modify LIB_CREATE symbol in makefile.in to include the library + dependencies such as ncurses. This is needed when dynamically + loading the library (report/analysis by xDog Walker). + + modify dlg_exit_label() to suppress the Cancel button, for + consistency. + + modify dlg_exit_label() to honor the --nook option, except when there + is no other button, e.g., the help-button. + + modify dlg_exit_buttoncode() so that it returns the proper code for + help-button (report by xDog Walker). + + correct loop limit when processing "--column-separator" (report by + xDog Walker). + + modify handling of "--version" and "--help" to ensure that they are + processed, and exit before widgets. Separate "--print-version" + from "--version", allowing its output to be interspersed with + widget output (report by xDog Walker). + + correct a few places where "--version" or "--help" options went + always to stdout rather than allowing redirection with the "--stderr" + option (report by xDog Walker). + + improve repainting after erasing a widget and its shadow. + + add "--hline" and "--hfile" options for compatibility with FreeBSD + dialog (request by Devin Teske). + + add dialog version message when opening a trace file (request by + xDog Walker). + + show filename of rc-file in traces. + + add piped-in data for gauge widget to traces. + + add entrypoints to gauge widget, for allocating, updating and freeing + the widget (adapted from patch by Stephen Hurd). + + fix a reference to freed memory in the gauge widget. + + fix --no-mouse option by actually closing the mouse (report by + xDog Walker). + + add sk.po from + http://translationproject.org/latest/dialog/ + + limit Solaris xpg4 portability fix for redefinition of ERR to cover + the specific value found in , in case an application + includes dialog.h after curses.h (FreeBSD #156601, report by Jaakko + Heinonen, Stephen Hurd). + + updated configure macros: + + CF_CURSES_CPPFLAGS, + + CF_CURSES_LIBS, make checks for special libraries on hpux10 and + sunos4 optional + + CF_CURSES_FUNCS, workaround for bug in gcc 4.2.1 (FreeBSD 8.1) + which caused part of test program to be omitted, i.e., when it saw + two return-statements in a row it omitted the _first_ one. Also + add expression to pointer check to help FreeBSD's linker decide it + should be validated. Just an assignment was not enough. Also, add + check for unctrl.h + + CF_CURSES_HEADER, change order for curses.h / ncurses.h pairs to + put ncurses.h first, which will tend to provide the same #define's + as in CF_NCURSES_HEADER (report by Dennis Preiser). + + CF_CURSES_TERM_H, modify to avoid spurious check for + if there is no ncurses version. Look for + ncurses's term.h anyway, to work around breakage by packagers who + separate ncurses' header files. + + CF_DISABLE_RPATH_HACK, fix garbled message + + CF_LD_RPATH_OPT, add mirbsd + + CF_MAKEFLAGS, filter out GNU make's entering/leaving messages. + This only appeared when using the macro in a dpkg script, though it + should have in other cases. + + CF_RPATH_HACK, add a check for libraries not found, e.g., from + suppressed functionality of gcc in linking from /usr/local/lib, and + add a -L option to help work around this. + + CF_XOPEN_SOURCE, workaround for cygwin to get ncurses' configure + script to define _XOPEN_SOURCE_EXTENDED (cygwin's features.h + doesn't do anything, so it needs a crutch). + + update config.guess, config.sub + +2011/03/02 + + add --prgbox and --programbox (adapted from patch by David Boyd). + + add sl.po from + http://translationproject.org/latest/dialog/ + + fix timeouts from 2011/01/18, which were being interpreted as + milliseconds rather than seconds (report by Luis Moreira). + +2011/01/18 + + fix inconsistency in return-codes for textbox when help-button is + used by making dlg_exit_buttoncode() a wrapper for + dlg_ok_buttoncode(). + + modify pause widget to use dlg_ok_buttoncode(), so help-button works. + + correct two infobox sample scripts, which did not pass extra + command-line parameters due to quoting problems. + + add a limit-check to the timebox widget (patch by Garrett Cooper). + + modify --trace option to also trace the command-line parameters. + + account for combining characters when wrapping text (Debian #570634). + + correct handling of SIGWINCH in gauge widget (Debian #305705). + + add gauge_color, to make guage's progress-bar distinct from + title_color (request by Dominic Derdau). + + update fi.po from + http://translationproject.org/latest/dialog/ + as well as resync line-numbers in the other po-files. + + modify configure script and dialog program to build with NetBSD's + wide-character curses functions, including workarounds for its + incorrect WACS_xxx definitions. Some of the UTF-8 examples work. + + add back-tab for traversal of tailboxbg widgets, for symmetry with + tab-traversal. + + reduce flicker in tailboxbg by checking if the input file size has + changed. + + modify internals of callbacks to avoid blocking reads of their + associated files by keyboard input. + + add command-line option --no-mouse, to suppress use of mouse. + + add configure option --enable-header-subdir to allow the header files + to be installed into a subdirectory named for the package. + + modify dlg_restore_vars() to retain the updated values of + input_result and input_length, eliminating the need for a caller to + provide their own user buffer (prompted by report by Thiago Bimbatti + Felicio). + + add a null-pointer check in show_result() for + dialog_vars.input_result, and ensure it is set to null after freeing + (prompted by report by Thiago Bimbatti Felicio). + + change order of -I options in CPPFLAGS (report by Michel Feldheim) + + modify pause-widget so that it no longer exits when an unrecognized + key is pressed (patch by Creidieki M Crouch). + + add --with-package option to configure script to allow renaming + of the dialog program and library, to support the package scripts. + + add Debian and RPM package scripts for test-builds. + + several improvements to configure script: + + quote params of ifelse() + + change obsolete ${name-value} to standard ${name:-value} + + use new macros CF_ADD_LIB/CF_ADD_LIBS to enforce consistency. + + AM_GNU_GETTEXT, drop $MKINSTALLDIRS, use "mkdir -p" consistently. + + CF_ADD_SUBDIR_PATH, workaround - if $prefix was not mkdir'd yet, no + directories were added. + + CF_BUNDLED_INTL, add --with-textdomain option, to use with lynx-dev + package + + CF_FIND_LINKAGE, simplify save/restore of $LIBS + + CF_GCC_WARNINGS, fix for Mac OS X (compiler makes conftest.dSYM + directory) + + CF_HEADER_PATH, don't search for variations of everything in the + current include-path + + CF_WITH_CURSES_DIR, move the calls to CF_ADD_INCDIR and + CF_ADD_LIBDIR for the curses-directory here, from + CF_NCURSES_CPPFLAGS and CF_NCURSES_LDFLAGS, so it will work even + with the default checking, e.g., no --with-ncurses, etc. + + update config.guess, config.sub + +2010/04/28 + + several improvements to configure script: + + modify CF_CURSES_TERM_H to handle cases such as cygwin where + packager has installed curses.h and term.h in different + directories, e.g., to wedge in a termcap library. + + modify CF_XOPEN_SOURCE, adding special case for OpenSolaris + + modify CF_MAKE_TAGS to add check for exctags and exetags, prefer to + ctags and etags to work around pkgsrc (NetBSD) renaming. + + correct CF_FIND_LINKAGE, setting cache variable for library_file in + the special case where no directory search is made. + + improve CF_GCC_VERSION, suppress stderr for c89 alias of gcc. + + improve CF_GCC_WARNINGS, moving -W and -Wall into the list to + check, since c89 alias for gcc complains about these options. + + modify CF_HEADER_PATH, to not search for variations of everything + in the current include-path + + use "mkdir -p", remove mkdirs.sh + + use CF_CURSES_HEADER to fill in possible subdirectory used for + ncurses header filename. + + modify CF_XOPEN_CURSES to work around current ncurse header loss of + predefinition of _XOPEN_SOURCE_EXTENDED + + add "--disable-rpath-hack" option, along with scripting to add + rpath option to libraries found in unusual places. + + modify pause widget to autosize like gauge, and to omit the area for + buttons when none are displayed. + + fix an infinite loop in dlg_button_layout() if there are no buttons + to display (Debian #579390). + + add makefile rules for generating html, etc., documentation from + nroff. + > patches by Samuel Martin Moro + + reset errors in tailbox before reading new character. + + modify dlg_draw_scrollbar(), omitting hiding percentages in boxes + when no arrows or scrollbar are needed. + + correct value of row for scrollbars in formbox. + + update es.po from + http://translationproject.org/latest/dialog/ + +2010/01/19 + + split up binding tables in inputbox and similar widgets to avoid + conflict between cursor-key use for input-string versus navigation + (report by slakmagik). + + if strftime() is available, support --time-format option for timebox + widget. + + if strftime() is available, support --date-format option for calendar + widget (request by Walter Harms). + + build-fixes for linking to intl library in /usr/local + + add --scrollbar option, use in most widgets to show a scrollbar on + the right margin of the data. That is cosmetic, does not respond to + the mouse. + + reuse functions from msgbox to allow prompt for yesno box to be + scrolled in a too-small window. + + correct mapping of button-codes with --nook option (report by Lebedev + Vadim). + + cleanup sample scripts using new utility scripts setup-* and report-*, + and allow command-line parameters to be added, for ad hoc testing. + + correct change to tailbox widget from 2009/02/22 using + dlg_button_layout(), which broke that widget. + + document some of the portability caveats. + + modify gauge widget to service callbacks (prompted by patch and + comments by Frank Sorenson). + + modify editbox to allow its input buffer to be larger than MAX_LEN + unless bounded by the --max-input option, and add limit-checks for + the buffer (report by slakmagik). + + improve manpage description of --checklist (report by Isaac Good). + + several improvements to configure script macros: CF_ADD_CFLAGS + CF_CURSES_FUNCS CF_DISABLE_ECHO CF_GCC_ATTRIBUTES CF_MATH_LIB + CF_POSIX_C_SOURCE CF_REMOVE_DEFINE CF_WITH_LIBTOOL CF_XOPEN_SOURCE + + add is.po, lv.po, sw.po from + http://translationproject.org/latest/dialog/ + + update de.po, id.po, pl.po, pt_BR.po, vi.po from + http://translationproject.org/latest/dialog/ + +2009/02/22 + + do not display top-arrows for scrolling if they would overwrite the + title (report by slakmagik) + + consistently use dlg_button_layout() when autosizing widgets (report + by slakmagik). + + add "-" and "+" bindings to timebox widget. + + add "-" and "+" bindings to calendar widget (OpenSolaris #6739031). + + review/fix other widgets to ensure that they exit on error, e.g., + editbox.c + + modify check in dlg_getc() to treat closure of either stdin or stdout + as an error, rather than both. This is more stringent than the check + added in 2007/07/04. + + modify dlg_result_key() to map curses ERR to dialog's error exit + (adapted from patch by Domagoj Pensa). + + updated several configure script macros: + + consistently append, rather then prepend, to $CFLAGS + + add cases for AIX 6, mint, and dragonfly to CF_XOPEN_SOURCE + + use $PATH_SEPARATOR rather than $PATHSEP + + improve CF_FIND_LINKAGE, use in checks for more libraries, e.g., + libutf8 and libiconv. + + update da.po, ru.po from + http://translationproject.org/latest/dialog/ + + update config.guess, config.sub + +2008/08/19 + + amend changes to quoting; by default, the checklist widget quotes its + output except when --separate-output is used (Debian #495600). + + add eo.po from + http://translationproject.org/latest/dialog/ + +2008/07/27 + + add pointer-check when closing piped input (cf: 2007/03/25) + + use here-documents rather than echo, when passing backslashes in + strings, to accommodate the Debian shell "dash" (Debian #489563). + + recode several ".po" files to UTF-8 for consistency. + + change --separator to be an alias for --output-separator, for + compatibility with Xdialog. + + add --output-separator option to allow scripts to change the output + separator from a newline (for --separate-output) or a space. This + applies to other widgets such as forms and editboxes which normally + use a newline. + + add --column-separator option, to tell where column-aligned data for + radio/checkboxes or menus should be split into columns (request by + Ben Dibbens). + + add id.po, ku.po, lt.po, nb.po and update ca.po, fr.po, gl.po, ja.po, + th.po from + http://translationproject.org/latest/dialog/ + + add "--quoted" option, to quote values returned by formbox, etc. + + change names of EX/ES macros in dialog.1 to work around name- + pollution caused by changes in Debian #470729. + +2008/03/16 + + modify dlg_mouse_wgetch() to loop only on errors that it detects, + rather than on errors forwarded from dlg_getc(), in case those are + due to a disconnected terminal (report by Anatoli Sakhnik). + + allow "default" color in dialogrc file (request by Dashing). + + fix an indexing error in formbox (Debian #469190, report by Dmitry + Gomerman, patch by Vladimir Mezentsev). + + add bindings for CTL/N, CTL/P to checklist, fselect and menubox + widgets (prompted by discussion with John Gatewood Ham). + + add be@latin.po, th.po and update zh_TW.po from + http://translationproject.org/latest/dialog/ + > patches by Peter Astrand: + + modify dlg_auto_sizefile() to ensure the computed height and width + do not extend beyond the screen size. + + use unctrl() to make inputstr.c work with Solaris curses. + > patches by Yura Kalinichenko: + + extend pause widget to use ok/cancel buttons (the former giving the + same result as a timeout), rather than an exit-button. + + fix initialization parameter of inputbox for multibyte characters. + +2007/10/28 + + improve layout of checklist.c, menubox.c, ensuring that the list fits + within the available space (report by Gordon Schumacher). + + undo removal of redundant chunk from checklist.c in 2007/02/27, + since some scripts depend on this (Debian #443077). + + update nl.po from + http://translationproject.org/latest/dialog/ + +2007/09/30 + + correct cursor position in editbox after deleting past left margin + (report by Joe McDonagh). + + add "--no-ok" option (patch by Klaus Knopper). + + modify "--file" option to allow it to read from sources other than + a regular file (patch by Pieter van Beek). + + improved hi.po (Hindi) (from Klaus Knopper). + + fix masking of attributes in dlg_draw_shadow() which lost + line-drawing bit (report by David Everly). + + fix editbox widget to handle zero-length files (report by Joe + McDonagh). + + update "po" files eu.po ga.po it.po ms.po sv.po vi.po wa.po zh_CN.po + from + http://translationproject.org/latest/dialog/ + +2007/07/04 + + revise the resizable shadows so textbox's search dialog has text + visible in the shadow again. + + improve the prefixing of autoconf-related symbols in the installed + header files, taking into account symbols which are not mentioned in + dlg_config.h + + add a check when ERR returned from wgetch() to ensure that the + input/output streams are still valid. If that happens, force + ESC to be returned, quitting dialog (report by Reiner Huober). + + add extern "C" declarations to dlg_keys.h so the corresponding + function declarations are exported to C++ as C symbols. + + update config.guess, config.sub + +2007/06/04 + + fix a memory leak in editbox.c + + revise change from 2007/02/27 which moved the logic for trimming + option text out of the loop because that moved it before + initialization of the "--trim" option. Put it back in the loop, but + limit the tokens which are trimmed to cover only those for the + current widget. Also ensure that all tokens for a widget are + trimmed, rather than only the first, which is usually text (report by + Lai Zit Seng). + + add _FILE_OFFSET_BITS definition in CF_LARGEFILE configure macro. + +2007/05/28 + + revise changes needed to make textbox's searchbox handle ncurses + resizing events, e.g., by handling the ERR in that code rather than + in dlg_getc() (Debian #423732). + +2007/05/14 + + supply a repaint_text() call in tailbox.c which was bypassed because + dlg_getc() now retries on ERR (Debian #423732, cf: 2007/02/27). + + modify dlg_getc() to fix regression in 2007/02/27 for use of + timeouts, broken by fixes to allow resizing of textbox (patch by + Arnaud Fontaine, Debian #418905). + + modify dlg_getc() to fix regression in use of TAB for traversal of + tailboxbg widgets due to changes for user-definable key bindings + (Debian #418917, cf: 2005/12/07). + +2007/04/09 + + add case in dlg_getc() to handle tab for traversing between widgets + as in the samples/tailboxbg1 script. Normally the key binding + overrides, except for the special case where multiple widgets are + available. + + add configure --with-libtool-opts, which passes its value to the + library creation and linkage passes, e.g., + --with-libtool-opts=-static + to force the result to be static libraries (prompted by a related + request by Santiago Vila). + > several fixes based on Coverity scan: + + fix memory leak in timebox, calendar widgets if the widget cannot + be created. + + fix memory leak in dlg_key.c if a user binding's storage cannot + be allocated. + + fix improperly delinked entry in dlg_del_window(). + +2007/03/25 + + improve mkdirs.sh to ignore error from mkdir if the target directory + happens to already exist (suggested by Harald van Dijk). + + amend documentation for --gauge to reflect longstanding quirk which + allows it to read percentage from the first line after an "XXX" + (Debian #415596). + + fix makefile dependency so "configure && make install-lib" works. + + fix resizing of msgbox; the message was not repainted (Debian + #415022, patch by Brian Rolfe). + + fix typo in makefile LIB_OBJECT symbol from 2007/02/27 changes. + + improve CF_MBSTATE_T by including stdio.h, needed on Tru64 to make + the test-compile work. + + change makefile to install dialog.3 as part of install-lib rather + than install-man (report by Thomas Klausner). + + use $(INSTALL_SCRIPT) for installing dialog-config (report by + Santiago Vila). + +2007/02/27 - release 1.1 + + mark as "dialog 1.1" + + add dialog-config script, which provides applications with compile- + and link-information for using the dialog library. + + move calls to dlg_trim_string() out of loop in dialog.c, so each + string is trimmed once (report by Ivanov Makcim). + + modify textbox.c to allow resizing while the search box is presented. + This relies on bug-fix in ncurses 5.6 20070224. + + use dgettext() rather than gettext() to allow libdialog to use the + messages installed for dialog (patch by Vajna Miklos). + + modify inputbox to position the cursor initially at the end of any + initial-text (request by Klaus Knopper). + + add configure --with-valgrind for testing. + + add --trace option, for debugging. + + add --ascii-lines and --no-lines options to control the way the + line-drawing characters are rendered (request by Klaus Knopper). + + add --keep-tite option, to override suppression of smcup/rmcup + (termcap ti/te) strings which would switch to xterm's alternate + screen (Debian #380665). + + modify fselect/dselect to use space-character as a completion + operator like tab in shells (patch by Yoram Bar Haim). + + remove a redundant chunk from checklist.c which reported status a + second time if the help-button was pressed but no item-help option + was in effect (Andre C Barros). + + fix return-status from "dialog --pause" (Debian #409254). + + add --mixedform and --mixedgauge dialogs based on patch from + Kiran Cherupally. + + add some notes on compatibility to the manpage. + + add editbox dialog (compatible with Xdialog, Debian #368478). + + add dselect dialog (compatible with Xdialog). + + remove an incorrect initialization of .text_flen from 2005/12/07 + changes, which made all fields in a form editable (Debian #404045). + + report error and exit if a filename given for the --file option + cannot be opened (report by "Dog Walker"). + + make --program-prefix, etc., work in configure script, e.g., to make + program install as "cdialog". This does not alter the library name. + + add install-bin, install-man (and uninstall) rules to makefile. + + updates for configure script macros (originally vile, lynx, xterm): + AM_PATH_PROG_WITH_TEST, AM_WITH_NLS, CF_CURSES_CPPFLAGS, + CF_CURSES_LIBS, CF_INCLUDE_DIRS, CF_LARGEFILE, CF_MAKEFLAGS, + CF_PATH_SYNTAX, CF_SUBDIR_PATH, CF_SUBST, CF_WITH_DBMALLOC, + CF_WITH_DMALLOC, CF_WITH_LIBTOOL and CF_XOPEN_SOURCE. + + update config.guess, config.sub + > adapted fixes from SuSE package (Werner Fink): + + add some limit-checks in dlg_draw_shadow(). + + make shadows resizable, using new dlg_move_window() in msgbox.c + and yesno.c + + add dialog_state.input, use this in end_dialog() to decide whether + to close pipe inputs and call _exit(), or simply call exit(). + + modify dlg_ctl_size() to check if the reason for failure is because + shadows were used; retry in that case without shadows. + + add signal catcher for SIGSEGV. + +2006/02/21 + + fix logic in split-out dlg_menu() to separate inputmenu and menu + handling (report by Auke Kok). + +2006/01/26 + + fix fselect.c to compile properly with Intel compiler and largefile + option. + + improve configure script checks for curses headers to work around + breakage in some packages, e.g., cygwin. + + amend correction to menubox, fixes normal menus (Debian #349969). + +2006/01/19 + + completed dialog.3 manpage + + modify configure script option --with-gauge to cover all flavors of + the gauge (gauge, pause, progressbox). + + add progressbox widget, a hybrid of gauge and tailbox (Reznic Valery). + + fix a comparison in checklist.c to avoid unneeded arrows when the + list happens to fit in the window (patch by Peter Postma). + + correct wrapping computation in print_line() from 2005/11/07 changes + (report by Barry Kauler). + + update sv.po (comments only). + http://www.iro.umontreal.ca/translation/maint/dialog/ + + correct logic that passes the callback for menubox to do inputmenu + operations from 2005/12/7 changes (report by Reznic Valery). + +2006/01/01 + + add a null-pointer check in dlg_register_buttons(), needed for the + tailboxbg (Debian #345524). + + fix a few memory leaks reported by valgrind. + +2005/12/19 + + correct return-values of new functions dlg_default_listitem() and + dlg_default_formitem() (Debian #344002). + + add Swedish translation (Debian #343303, by Daniel Nylander) + + begin function-summaries in dialog.3 + + update config.guess, config.sub + +2005/12/07 + + change license to LGPL. + + change naming convention in dlg_colors.h to make it easier to read, + and incidentally remove the last chunk of code preventing relicense. + + add --passwordform (request by Reznic Valery). + + modify pause.c, msgbox.c to work with --help-button. + + modify formbox.c, inputbox.c, textbox.c, yesno.c to work with extra + button (adapted from Reznic Valery patch). + + modify dlg_exit_label(), dlg_yes_labels() and dlg_ok_label() to allow + help-button (prompted by Reznic Valery patch). + + add zh_CN.po file from + http://www.iro.umontreal.ca/translation/maint/dialog/ + + provide alternate interfaces for dialog_checklist(), dialog_menu() + and dialog_form(): dlg_checklist(), dlg_menu() and dlg_form() + (discussion with Michael Gebetsroither). + + add/use dlg_result_key() to allow binding function keys to the + buttons. + + implement user-definable key bindings in the rc-file. + + modify inline cases for KEY_xxx values to use binding tables in new + module dlg_keys.c + + add several DIALOG_STATE items to the rc file: aspect, + separate_widget, tab_len and visit_links + + add a tab-adjustment to dlg_print_text() to improve solution from + 2005/10/30, e.g., in the samples/form* scripts. + + fix an off-by-one which made mouse-selection not work for menu items + past the first page (GenToo #112024, patch by Harald van Dijk). + +2005/11/07 + + extend dlg_add_result() to allow caller to pass a null pointer + for dialog_vars.input_result (Debian #336986). + + correct length used for text portion of radio/checkboxes (report by + Valentin Stoykov). + + modify msgbox, textbox and center_label() to work properly for + LANG=bg_BG.utf8 examples by Valentin Stoykov. + + modify use of freopen() to work with opaque FILE type on DragonFly + (report by Jeremy C Reed). + + modify print_line() to compute columns, use that for the call to + dlg_print_line(). Fix a few places where strlen() was used instead + of dlg_count_columns() (reports by Valentin Stoykov). + +2005/10/30 + + reviewed changes since beginning development in 1999, decided that + there are no appreciable portions of original code remaining. + Marked sources to correspond. + + improve cache performance for inputstr.c using tsearch() rather than + a linked-list search (Debian #294853). + + remove a special case for darwin in CF_XOPEN_SOURCE configure macro. + + add ms.po file from + http://www.iro.umontreal.ca/translation/maint/dialog/ + + remove an assignment that caused the cursor to appear initially on a + form field rather than button (Debian #333506). + + modify buttons.c to count columns rather than bytes, fixing case + where buttons were laid out incorrectly (report by Valentin Stoykov). + + change dlg_print_text() to count columns rather than bytes, fixing + case where fewer columns were displayed in menu than expected + (report by Valentin Stoykov). + +2005/10/05 + + improve fix for dlg_does_output(), eliminating redundant leading + separator. + + fill background color for item-help text (report by Peter Postma). + + correct interaction between --separate-output and --output-separator + broken in 2005/09/11 fix for Debian #326918 (Debian #331440). + + update config.guess, config.sub + +2005/09/11 + + undo doubled adjustment for left/right margins when wrapping text + for msgbox, gauge and pause (report by Xyba). + + correct position of scrolled text in formbox broken by 2004/12/19 + changes (report by Konrad Jelen). + + call dlg_does_output() from dlg_add_result(), ensuring that + separators are used when combining widgets such as formbox (report by + John Suykerbuyk). + + fix marker in textbox.c to make it disappear at the top of the file + (report by Patrick J. Volkerding). + + fix marker shown in arrows.c for checklists, etc., which was "(+)" + where it should have been "(-)" (report/patch by Patrick J. + Volkerding). + + fix --input-fd (changes in glibc since 2003 made dialog hang on exit + due to the way dialog updated stdin). + + restore default value (a tab) for --separator or --separate-widget + lost in 2003/11/26 changes (Debian #326918). + + make several widgets handle SIGWINCH (calendar, checklist, formbox, + fselect, inputbox, menubox, pause, tailbox, textbox, timebox). Only + msgbox and yesno had been done before. Note that some still have + fixed geometry requirements, so they cannot be shrunk below a given + threshold. Also, these changes do not address traversal, e.g., for + tailboxbg. + + make gauge widget handle SIGWINCH with ncurses (Debian #305705). + + add configure option to control whether largefile support is + compiled-in (Debian #298882). + + update eu.po (Debian #312622, patch by Piarres Egana). + + add/update po files from + http://www.iro.umontreal.ca/translation/maint/dialog/ + fi.po, rw.po, sr.po, tr.po, zh_TW.po + + fixes for configure script: + + improve script for determining gcc version + + improve checks for Intel compiler and related warning options + + improve checks for defining _XOPEN_SOURCE (or alternatives) and + _POSIX_C_SOURCE + + update config.guess, config.sub + +2005/03/06 + + add/update po files from + http://www.iro.umontreal.ca/translation/maint/dialog/ + ga.po, it.po + + revert last change for da.po; it was from an older version (report by + Morten Brix Pedersen). + +2005/02/06 + + modify makefile.in so --disable-echo applies to libtool builds. + + corrected malloc size used for editable fields in formbox widget to + match the function which updates the corresponding buffer. + + modify formbox widget's use of flen to allow negative values to be + used to limit the length of the displayed field. + + improve description in manpage of output from formbox widget + (Debian #292418). + + modify formbox widget to allow fields with flen==0 to display + (Debian #292417). + + improved configure macros CF_POSIX_C_SOURCE and CF_XOPEN_SOURCE, to + avoid redefinition warnings on cygwin. + + fix a typo in inputmenu-stdout found via "sh -n" (report by Steve + Grubb). + + add/update po files from + http://www.iro.umontreal.ca/translation/maint/dialog/ + ca.po, da.po, hu.po, nl.po, rm.po, ro.po, vi.po + +2005/01/16 + + add --args option to help with debugging scripts. + + adapted some new po files from Debian package for whiptail: ar.po, + bg.po, gl.po, hi.po, hr.po, mg.po, mk.po, ro.po, sq.po and zh_TW.po + + update da.po (Morten Brix Pedersen). + + add configure check for Intel 8.0 compiler, to set appropriate + warning options. + + update config.guess, config.sub + +2004/12/22 + + correct a typo in 2004/12/19 changes which caused width of multibyte + characters to be incorrectly computed in some locales. + + modify --version and --help options to write consistently to the + standard output (report by Santiago Vila). + + modify tailboxbg by resetting tty modes at the point where it forks a + process to update the screen, rather than waiting until that process + exits. This improves user feedback by making it apparent that dialog + is no longer processing input after that point (Redhat #142538). + + minor updates to some .po files using Babel Fish, comparing with lynx. + + update es.po (Santiago Vila). + + work around bug in NetBSD 1.6 curses which seems to be confused by + reusing color pairs with different video attributes. The problem + does not appear in NetBSD 2.0 curses (but its headers do not provide + version info, so color-caching is not available for that + configuration). + + modify pause and gauge widgets to ensure that reverse-video progress + bar is visible when the background is reversed, e.g., using the + default non-color attributes. + + use chtype rather than attr_t, to build with old Solaris curses, + used in save/restore operation from 2004/09/20. + +2004/12/19 + + add pause-widget (patch by Yura Kalinichenko). + + modify exit-code returned on selecting the "Help"-button when the + --item-help option is given. Previously this returned the same code + as "OK", since it combines output for "OK" with the help status. It + now returns the help-code, but this can be overridden by setting the + environment variable $DIALOG_ITEM_HELP (reports by Erika Pacholleck + and Sebastian Muesch). + + modify formbox widget so input-length is not limited to field-length + (report by David Liebermann). + + localize the label on the search box for textbox widget (report by + Erika Pacholleck). + + correct usage message detail for fselect, which listed an extra + parameter (Debian #284008). + + add include for in ui_getc.c to build with QNX 4.25 + using Watcom 10.6 (patch by Len Meakin). + + modify behavior when no locale (or POSIX locale) is set to allow + legacy interpretation of Latin-1 character set (Debian #284795). + +2004/11/18 + + correct computation of column width for menubox/checkbox tags, for + multicolumn characters, e.g., the menubox-utf8 example. + + correct calls to wbkgdset(), which set the background attribute but + not the corresponding character (ncurses uses blank if none is given). + + improve configure script check for _XOPEN_SOURCE and _POSIX_C_SOURCE. + + improved limit-computation in show_message() to allow for scrolling + very long messages. + + adjust scrolling logic in msgbox to account for the one-line offset + used by the logic which wraps text in a box, thus avoiding leaving + an extra blank line (report by Maxim Sobolev). + +2004/09/20 + + add samples/whiptail.rc + + add samples/dialog.py (noting that a later version of this exists + as pythondialog, but this is relatively self-contained). Modified + the script to accept the $DIALOG environment variable like the other + sample scripts, to specify the path of the program to use. + + modify the install rule for header-files so the autoconf names in + dlg_config.h (and corresponding usage in dialog.h, etc), are altered + from "HAVE_xxx" to "DLG_HAVE_xxx", etc. + + add a check for getenv("HOME") in rc.c + + add a call to end_dialog() in signal_handler for tailboxbg (from + patch by Werner Fink). + + correct initialization in checklist and radiobox for --default-item, + scrolling as needed. + + modify --visit-items option so that it puts the cursor initially on + the list (in menubox, checklist and radiobox), accepts abbreviations + for the buttons when the cursor is on the button-row, and otherwise + (when --visit-items is given) abbreviations apply only to the list + (report by Erika Pacholleck). + + modify a few widgets (inputbox, textbox, yesno) to beep on unexpected + input. + + modify some msgbox widget to accept abbreviations of its button + label, for consistency with other widgets (request by Erika + Pacholleck). + + corrected logic of dlg_char_to_button(), making it check only the + first uppercase letter in each button label rather than all uppercase + letters (report by Erika Pacholleck, cf: 2003/09/10). + + improved description of --clear and --keep-window options (adapted + from Erika Pacholleck). + + move discussion of --beep and --beep-signal options to Obsolete + Options section of manpage, remove these from the help-message + (report by Erika Pacholleck). + + bracket extern's in dialog.h with C++ extern "C" declaration, in case + the library is used from a C++ application. + + modify inputmenu examples to allow ESC to cancel the script. + + modify inputmenu widget to cancel edit on a TAB or ESC. + + modify inputmenu widget to use the same color scheme for the editable + text as the inputbox widget. + + modify samples/killall to work around differences in "cut" versions. + + use the color-caching from the \Z logic when loading the ".rc" file, + thereby reducing the number of color pairs required, and making it + less likely that deriving color pairs for drawing arrows on a given + background will run out of colors. + + save/restore window attributes in dlg_draw_arrows() and similar + functions, to allow widgets to draw arrows using the widget's + background rather than a common/fixed value (request by Erika + Pacholleck). + + modify textbox widget so the down-arrow will be hidden when at the + end of the file. (Modifying the up-arrow to be hidden is harder - + will do this when implementing scrollbars). + + correct off-by-one in fselect.c which left down-arrows showing at + the bottom of directory- and file-lists (report by Erika Pacholleck). + + improve display of percentages by omitting blanks where lines should + be shown. + + modify logic for \Z escapes to make those that set video attributes + not clear the colors (report by Erika Pacholleck). + + modify logic for \Z escapes to allow foreground and background + colors to be the same, provided that bold attribute is set. + Also improved the logic for choosing a background color when the + foreground and background are the same (report by Erika Pacholleck). + + updated configure script macro CF_XOPEN_SOURCE, ensuring that the + _POSIX_C_SOURCE value is defined with a specific value (bug report + originally for lynx). + + fix configure script so that po/makefile is generated properly when + the configure --srcdir --enable-nls options are used. + + modify makefile.in to allow build/install from another directory, + i.e., using configure --srcdir (patch by Mike Castle). + + updated da.po (Debian #262587, Morten Brix Pedersen). + + modify some sample scripts to avoid using grave quotes nested within + double quotes with multiple file redirection, which does not work + with Solaris /bin/sh (report/analysis by Eric Haller). + + check for end of string immediately after a \Z escape to avoid + displaying the null terminator as a ^@ (report by Erika Pacholleck). + > patches by Erika Pacholleck: + + modify calendar.c, fselect.c and timebox.c to use color scheme like + other lists, using menubox colors rather than dialog colors. + + correct charset for po/de.po, translate messages for "Help" and + "Rename". + + omit parentheses around percentage in textbox.c + + correct a few mismatched attributes, e.g., searchbox_attr in textbox.c, + percentage in msgbox.c, + + +2004/07/31 + + add test scripts to cover zero-width column case. + + remove limit checks from checklist.c and menubox.c (cf: 2004/07/28), + since some scripts use zero-width columns (Debian #262411 and report + by Kyle Sallee). + +2004/07/29 + + modify msgbox.c to only reserve space for percentage shown as part + of scrollable text for the msgbox widget. This makes infobox look + as it did before 2004/06/06 changes (report by Vinesh Christopher) + +2004/07/28 + + remove redundant calls to wtimeout() from widgets since wtimeout() + is properly called from ui_getc() where it is controlled by the + --timeout option (bug report by juanjo). + + add limit checks in checklist.c and menubox.c for very narrow screens + (prompted by Steve Grubb patch). + + initialize step in dlg_draw_buttons() in case it is used to draw + a vertical list of buttons (prompted by Steve Grubb patch). + > fixes by Steve Grubb: + + correct logic in checklist.c (cf: 2003/11/26 changes) which turned + quoting on unnecessarily for radiobox, breaking some old scripts. + + increase size of array in dlg_ok_labels() to avoid overrun if extra + and help buttons are used (cf: 2002/06/12 changes). + + initialize fkey variable in menubox.c and textbox.c (cf: 2003/07/12). + +2004/07/21 - release 1.0 + + minor updates for configure script, i.e., CF_XOPEN_SOURCE, + CF_NCURSES_LIBS macros. + + update config.guess, config.sub + + add nl.po (Jacques Weewer). + +2004/06/06 + + add --visit-items option, which allows the user to tab to the item + list in the checklist/radiobox and menubox widgets (request by + Ari Moisio). + + use wide-character line-drawing for up/down arrows when configured + for wide-characters, gives better results with uxterm. + + limit the number of times a --file option can be used, to prevent + runaway recursion if a --file option is embedded within a file which + is included. + + improve discussion of wrapping in the manpage (Debian #251937). + + modify msgbox to allow it to scroll vertically like textbox (Debian + #233276). This only works with ncurses. + + implement $DIALOGVARS environment variable to apply common options to + dialog_vars when it is reset before processing other common options. + + add --single-quoted option to control whether output is double-quoted + with '"' or single-quoted with single-quotes. + + revert the default quoting behavior of checklists to use + double-quotes (report by Mark K Post regarding Slackware scripts). + + add eu.po (Basque) (Piarres Beobide Egaa). + + add ca.po (Catalan) (Jordi Mallach). + +2004/04/21 + + add a call to flushinp() to init_dialog(), to discard any typeahead + before dialog is invoked (Debian #244746). + + correct dlg_match_char() function, which was broken during rewrite + to support wide-characters (Debian #244777). + + improved ru.po, uses UTF-8 charset (Leonid Kanter, Redhat #119200). + + correct position of shadow drawn for dialogs, which appeared to work + for most versions of curses (other than NetBSD) but would have been + visible for certain color schemes (discussion with Julian Coleman). + + correct loop-exit in longest_word() (Tomas Heredia, forwarded by + Santiago Vila). + + add cy.po (Welsh) (Dafydd Harries). + +2004/03/16 + + modify quoting of results to use single-quote rather than double + quote, and ensure that results containing a quote or backslash + character are escaped (report by Florent Rougon) + + remove an incorrect comparison from checklist which made cursor + stick on the last line, from 2004/03/01 changes. + +2004/03/14 + + add a dependency to install library if "--with-libtool" is used. + + add manpage for the library. + + add "--file" + + modify formbox.c to support "--help-status" like menubox. + + modify checklist.c to add item name to the "HELP" string when + "--help-button" is used and no --item-help option is given (Debian + #236841, report/patch by Jorg Sommer). + + rename colors.h to dlg_colors.h, install that when the library is + installed. + + add copyright notice to usage ("--help") message. + + correct a missing bounds check for mouse-clicks in menubox (prompted + by Debian #233044). + + updated several configure-script macros: AM_GNU_GETTEXT, + AM_WITH_NLS, CF_OUR_MESSAGES, CF_PROG_EXT, CF_WITH_DBMALLOC, + CF_WITH_DMALLOC, CF_WITH_LIBTOOL, CF_XOPEN_SOURCE. + +2004/03/01 + + improve layout of calendar widget to allow for very long button + labels (report by Santiago Vila). + + correct logic for $DIALOG_TTY, broken in 2003/11/30. The environment + variable must evaluate to a nonzero integer (report by Florent + Rougon). + + document interaction between "--default-no" and "--no-cancel" options + in manpage (Debian #223488). + + change configure script to use autoconf 2.52+patch, to work around + issues with Estonian locale (report by Seemant Kulleen). + + add uk.po (Ukrainian) (Debian #232441). + + make --default-item apply to checklist widget (Debian #225255). + + correct a missing check for --item-help when --help-status was given + for checklist (Debian #232921). + + correct a missing bounds check for mouse-clicks in checklist (Debian + #233044). + + update config.guess, config.sub + +2003/12/07 + + correct infinite loop in yesno widget when "--defaultno" option is + combined with "--no-cancel" (Debian #223077). + +2003/11/30 + + suppress double-quotes added for "--help-status" option if the + string does not contain any special characters. + +2003/11/26 + + add samples/sourcemage.rc, for comparison with slackware.rc + + add "--insecure" option (request by Sean Mathews (DrWho@f34r.com)). + + make "--defaultno" option apply to widgets which use OK/Cancel + buttons as well (Debian #209030). + + improve documentation of exit-codes for each widget in the manpage + (Debian #217926). + + add option "--keep-window" to suppress repainting after completing + each widget (request by Ingo van Lil). + + add options "--yes-label" and "--no-label" to allow override of the + "Yes" and "No" strings (request by Christoph Zwerschke). + + add option "--help-status" to allow script to restore a checklist + or radiolist after processing an item-help string (Debian #209031). + + modify width-calculation for non-formatted text to ensure it is + wide enough for the longest word in the text (patch by Andrew Gaul). + + modify dlg_index_columns() to count a newline as a single cell rather + than 2 for the normal curses case. This fixes an off-by-one for + the text-justification, shown in screen 2 of msgbox1 sample script. + + fix dlg_char_to_button(); 2003/09/10 changes made it incorrectly + ignore case of the labels. + + change calendar's use of arrow keys so they are (as before 2002/06/22) + interpreted within the day-grid as movement within that grid (request + by David Anders). + + correct missing initialization of last_getc variable in dlg_getc() + (report/analysis by Victor Wodecki). + + modify main program to make + dialog --no-shadow --print-maxsize + work. Normally dialog prints the screen size after subtracting the + area reserved for shadows, but some applications may need the actual + screen size (Debian #213424). + + several related changes (Debian #213425): + + separate the examples using "--stdout" and "--output-fd" from the + normal usage examples. + + add "--input-fd" option, provide a sample of its use. + + modify init_dialog() to use initscr() unless a "--stdout" option + was used. Some scripts relied on the coincidence that redirecting + standard output from dialog would "work". Before this change + init_dialog() assumed that redirected standard output was + synonymous with "--stdout" option (not the intended behavior). + + modify command-line parsing to look for "--stdout" and "--stderr" + options first, allowing only one. + + add a check for an environment variable $DIALOG_TTY which provides + the older behavior, i.e., try to open the terminal directly if + stdout is redirected. + + interface changes, to make libdialog simpler to use: + + rename all of the internal functions to begin with "dlg_", but + provide compatibility with older names if the application defines + __DIALOG_OLD_NAMES__. + + add dialog_version() function, and corresponding DIALOG_VERSION and + DIALOG_PATCHDATE definitions to dlg_config.h + + eliminate remaining global variables such as screen_initialized in + favor of dialog_state and dialog_vars. + + move some data such as dialog_vars.output to dialog_state, since + they are normally not reset between widgets. + + change interfaces of dialog_yesno() and dialog_checklist() to use + dialog_state.defaultno and dialog_vars.separate_output, making it + simpler and more consistent. + + improve configure script and related definitions: + + add "--with-libtool" option to provide shared library support by + libtool. + + rename generated "config.h" to "dlg_config.h", so it can be + installed without naming conflict. Added "dlg_config.h" to + install-lib rule. + + modify configure script and makefile to use EXEEXT and OBJEXT. + + add "--enable-widec" option to control whether wide-curses features + are compiled-in, rather than check for the existence of those in + the curses library. This allows building with HPUX curses, which + has abandoned legacy features while not quite supporting X/Open + curses. + + add configure check for getbegx(), etc., which are not provided on + all platforms. + + update config.guess, config.sub + +2003/10/02 + + update hu.po (Arpad Biro). + + revert part of the 2003/08/18 change to "--stdout" option. Using + stderr for screen output does not work well on several platforms + since stdout's settings are affected (report by Kent Robotti). + +2003/09/24 + + modify tailbox to allow it to display files with arbitrarily long + lines. + + fix an infinite loop in tailbox, broken when making interface changes + to dlg_getc() (report by Ingo van Lil). + + amend fix for "--and-widget" to not treat "---" as an option (report + by Kent Robotti). + + updated es.po (Santiago Vila). + +2003/09/10 + + correct "RENAMED" result from inputmenu widget, which did not reset + the result buffer, and did not account for scroll-offset (Debian + #209336). + + modify button, menu and checklist logic that matches a character to + the beginning of a text field to support wide-characters (completes + Debian #195674). + + modify configure script to not use "head -1". + +2003/08/30 + + modify searchbox popup in textbox widget so one can simply press + return on an empty input to cancel the popup. + + modify error reporting to avoid clearing screen if a problem is + found in the ".rc" file. + + add color/attribute combinations for form widget (based on patch by + Reznic Valery). + + combine rc-file colors, attribute- and color-tables to obtain a + single table for color values, which requires less work to add new + entries. + + modify fselect widget to make back-tab work again, since it was + broken by the rewrite of dlg_edit_string(). + + modify howmany_tags() so it will quit searching when it finds any + option, not only "--and-widget" (Debian #206636). + + correct call to dlg_print_text() in print_line(), which did not + account for hidden characters (report/patch by David Poole). + + modify print_button() to display properly if locale defines ok/cancel + or yes/no buttons that contain multibyte characters. + +2003/08/20 + + correct an indexing error when deleting from the end of a line using + KEY_DC; it happened to work on Linux because malloc() clears memory + like calloc(). + + add '\r' to case statement where '\n' is translated to KEY_ENTER to + work around defect in NetBSD curses. + + modify configure check for getparyx(), etc., which are implemented + by NetBSD curses as functions rather than macros. + + correct configure check for term.h, which may be + if ncursesw development headers are installed, but not ncurses + development headers. Or they may not coincide (Debian #206287). + +2003/08/18 + + modify checklist.c and menubox.c to display tags properly if they + contain wide-characters. + + better solution for initializing curses when "--stdout" option is + used, e.g., use stderr for the output if it is a tty. Also correct + the error handling, so dialog exits with an error if it cannot + find a way to do output (Debian #205509). + + modify sample scripts to use consistent definition of $DIALOG + (Debian #205508). + + add UTF-8 examples inputbox6-utf8, inputbox6-utf8 (from Tomohiro + Kubota, Debian #195674). + + modify print_line() to work with wide-characters, e.g., so it handles + wrapping for double-width characters. + + cache results from multibyte character indices, speeds up cursor + movement. + + modify form widget to support scrolling and mouse-selection. + + add form widget (based on patch by Reznic Valery). + + correct mouse-handling for inputmenu widget. + + corrections to menu.c: location of clearing operation, and height of + rows in code for older ncurses versions (patch by Reznic Valery). + + improve logic that compensates for xterm's alternate-screen by + cancelling the rmcup/smcup strings after the rmcup has been issued. + That ensures that dialog will not clear the screen on exit (report + by Javier Kohen). + + modify initialization between widgets to retain the values for the + --aspect, --separate-widget and --tab-len options. + + add --separator as an alias for --separate-widget (compatible with + Xdialog). + + correct handling of Xdialog's --icon and --wmclass options, whose + parameter was not ignored. + + correct logic for --separate-widget so its string is written before + each output, rather than only for --and-widget option (report by + Javier Kohen). + + improve limit-check in center_label() for buttons.c (report by Tor + Vidar Havstad). + + correct layout of --menu widget, which reduced display width due to + logic for --inputmenu being applied whether or not that configuration + was used (reports by Javier Kohen, Dimitar Zhekov and MAL + ). Fixes Debian #201215. + + modify gauge widget to support --begin option (Hans-Joachim Baader). + + updated pl.po (Jaroslaw Swierczynski). + + hide cursor while painting gauge. + + add auto-sizing logic to gauge widget (reports by Javier Kohen and + Robert Schubert). + +2003/07/20 + + rewrote inputstr.c, allowing it to enter and display wide-characters. + Some nonprinting characters such as control/B can be edited as well. + + modify timebox to allow user to type numbers into the fields. + + change interfaces of dlg_getc(), mouse_wgetch(), etc., to add + parameter that returns whether the result is really a function-key. + This is needed to work with wide-character curses. + + correct computation of week-number in calendar widget (report by + Heiner Lamann). + + updated configure script macros: + + suppress -Winline with gcc 3.3, since it is broken. + + fix caching bug in CF_UTF8_LIB + + improved script for CF_BUNDLED_INTL. + + update config.guess, config.sub + +2003/03/08 + + add null-pointer checks to some malloc calls which were overlooked. + + correct logic in dlg_add_result(), which did not copy content of + non-allocated buffer to the first allocation (report by Daniel + Dupont). + +2003/03/02 + + correct an uninitialized value in dlg_add_result() (Debian #182683). + +2003/01/30 + + corrected print_line(), which subtracted the margin twice from the + right-limit, making a string wrap unnecessarily (Debian #168823). + + correct initial limit-check for arrows in checklist.c, which used + the wrong variable, showing the bottom arrow when it should not + (Debian #168823). + + modify driver to always call show_result(), to simplify updates. + + fix several memory leaks, important if dialog is run with a large + number of widgets (report by albert.veli@telia.com forwarded by + Santiago Vila). + + check if the screen output is actually to the terminal before trying + to suppress xterm's alternate screen mode (see 2000/01/18) (report by + David Oliveira). + + use dialog_vars.input_result consistently to return the text which is + printed after a widget completes. In many cases, dialog now + allocates enough space to hold the text, rather than use a fixed + buffer. The checklist widget was writing directly to the output to + avoid limits of the fixed buffer. + + modify dialog.c to also write dialog_vars.input_result if the + Help-button was pressed (request by Amon Ott). + + add hu.po (Arpad Biro). + + update fr.po, pt.po, pt_BR.po to add strings for "Help" button (patch + by Frederic L W Meunier). + + fix off-by-one error in menu.c, checklist.c (reported by + Tomasz Wasiak 2002/09/15 and others: + Andrew Gaul 2002/11/12, + Tobias C Rittweiler 2002/11/19, + Arpad Biro 2003/01/21). + + updated configure script, improving checks for ncurses in various + locations, updated NLS script to match lynx. Added --with-curses-dir + option. + > Tobias C Rittweiler: + + make ifdef in mousewget.c consistent with usage in dialog.h + + use beep() rather than flash() in dlg_edit_string(), for consistency + with the other functions. + + change order of buttons so extra button falls between Ok/Cancel. + + fix so "dialog --print-maxsize" exits from curses. + + add --inputmenu option. + +2002/08/14 + + modify checklist.c and menubox.c to treat the extra button like the + "Ok" button by making dialog print the chosen items (request by + Tobias C Rittweiler). + + add examples checklist6 and menubox6 to illustrate the --colors + option. + + implement -colors option, which allows one to highlight words in the + titles and most text areas with color or video attributes (adapted + from patch by Tobias C Rittweiler). + + add examples inputbox4, inputbox5 to illustrate how to use the + --output-fd option, and how to use dialog without any temporary + file at all. + + add --output-fd option (Debian #153984). + + documented vi-style keys for calendar, textbox widgets in manpage. + +2002/06/22 + + improve mouse handling, e.g., for up/down scrolling in calendar, + checklist, etc. + + add --extra-button and --extra-label options (adapted from patch + by Tobias C Rittweiler). + + correct displayed cursor position in inputbox when returning to the + input area after traversing the buttons with tabs, etc. + + add left/right arrows for traversal in calendar and timebox dialogs. + + implement two new functions dlg_next_ok_buttonindex() and + dlg_prev_ok_buttonindex(), using these to hide details about the + traversal over buttons in several widgets. + + modify checklist.c and menubox.c to verify if both --help-button and + --item-help are specified before assuming that selecting the help + button should cause the "HELP {item-help}" message to be printed + (reported by Marcel Ritter). + + modify init_dialog() to work around HP's broken tty driver (report by + John Mudd). Specifically, the problem is that when opening /dev/tty + directly (to support the --stdout option), the terminal does not + change to raw mode. The workaround opens /dev/tty only as needed; + the --stdout option does not work on HPUX but otherwise dialog works. + + updated el.po (patch by kromJx ). + +2002/05/19 - release 0.9b + + add --no-collapse option to allow one to retain tabs and repeated + blanks in a message box (request by Roberto Simoni). + + use DLG_EXIT_ESC constant rather than -1's in several places. This + has the effect of changing some exit-with-error cases to denote that + the exit was because ESC was pressed (patch by Diego Alvarez, + forward by Santiago Vila). + + bump package version to 0.9b (with patch-date, as usual). + + add --exit-label option (request by Roberto Simoni). + + updated de.po to correct translation for "Cancel" (from Michael + Piefel, Debian #146402). + + use definitions from autoconf macro AC_HEADER_TIME to ensure that + time() is properly prototyped. + + update pl.po, adding translation for "Help" (patch by Jaroslaw + Swierczynski ). + + update COPYING file, to reflect address change of FSF (reported by + Santiago Vila). + + update some configuration script macros: CF_CHECK_CACHE, + CF_CURSES_CPPFLAGS, CF_HEADER_PATH and CF_MAKEFLAGS. + + correct misuse of "$with_XXX" variables in the configure script, + which prevented configuration against curses library as opposed to + ncurses. + + update config.guess, config.sub + +2002/03/09 (a) + + modify geometry of samples/fselect scripts to allow them to run in + a 24x80 screen (report/patch by Santiago Vila). + + correct exit-code for menubox.c when Cancel is pressed. This was + unintentionally altered when adding --help-button (reported by + Patrick J Volkerding) + +2002/03/09 + + add --timeout option, which forces the program to exit with an error + if no user response is given within the specified number of seconds + (request by ). + + modify calendar widget to allow day/month/year values to default to + the current date (request by ). + + modify display of buttons in checklist.c and menubox.c to handle the + case where the button label is empty (Debian #134388). + + extended logic for ok/cancel/help to make this work with checklist + widget. + + revert pt_BT.po, apply changes to pt.po (report by Frederic L W + Meunier). + > several changes from Stanislav Ievlev: + + add options --help-button and --help-label to make menubox display a + third button which can be used to return an exit code causing the + calling script to show extended help information. + + use home/end keys in input string-editing, e.g., inputbox. + + add option --max-input to limit length of string returned by inputbox + and other widgets which allow the user to edit a string. + +2001/12/02 + + add --ok-label and --cancel-label options (request by Kyle Sallee). + + correct usage message for --fselect option (reported by Patrick J + Volkerding). + + add samples/debian.rc, for comparison with slackware.rc + + corrected samples/slackware.rc, which was just the compiled-in + default values (patch by Patrick J Volkerding). + + modify search rule for rc-file to add a global rc file /etc/dialogrc + (patch by Patrick J Volkerding). + + updated pt_BR.po with modified entries for fselect.c (Frederic L W + Meunier). + + add pl.po (Swiergot ). + +2001/11/11 + + modify command-line parsing to allow a "--" argument to act as an + escape, so the next argument is not recognized as an option if it + begins with "--". This is apparently one of popt's undocumented + features, upon which some Debian scripts depend (Debian #116642). + + add da.po (Morten Brix Pedersen ). + + add an install-strip rule to makefile, changing the normal install + rule to not strip the installed executable (based on discussion with + Santiago Vila). + + initialize my_output variable if user cannot open /dev/tty, e.g., if + su'd to another user (patch by Richard Braakman (), Debian + #117177). + + add configure option --with-ncursesw, to allow configure/build with + wide-character version of ncurses. + +2001/10/14 + + add option --ignore, to make dialog be ignore options that it does + not recognize. + + add option --trim, to trim literal newlines and repeated spaces from + text that will be displayed. Add samples/msgbox2, which is the + same as msgbox1, but using --trim (cf: change for Debian #102942). + + minor correction to attributes for buttons.c to use active_attr on + the right-side of a button. + + add a sample dialog rc-file slackware.rc based on diffs in hdasetup + package at + http://ftp1.sourceforge.net/pub/mirrors/slackware/slackware/source/a/hdsetup/ + (discussion with Frederic L W Meunier). + + modify dialog.pl to avoid using a statically-named tempfile, allowing + multiple processes to use this script (patch by James Ranson + (), Debian #110609). + + correct fprintf() call in j_menu() function, i.e., "--menu" option, + which did not guard against expanding '%' embedded in the parameters + (Stavros Chatzistefanidis ). + + add et.po (Ivar Smolin ). + + update fr.po (Frederic L W Meunier). + + modify to allow scripts to alter the exit codes, mainly to + distinguish ESC and ERROR exits. This is done by setting a shell + variable such as DIALOG_ESC to a new value (request by Petr Vandrovec + (), Debian #99264) + +2001/08/27 + + use VPATH in makefile to support build with configure --srcdir, if + the make program supports that. Note that samples/install/makefile + is not generated, due to awkward limitation of autoconf script + (reported by Frederic L W Meunier <0@pervalidus.net>). + + add po/pt_BR.po (Frederic L W Meunier <0@pervalidus.net>). + + correct sense of --enable/--disable shown in configure --help (report + by Frederic L W Meunier <0@pervalidus.net>). + + correct logic for --clear option, broken in 2000/07/02 (fixes Debian + #110254). + +2001/08/11 + + porting fixes to work on AIX: flush output to work around bug in + curses library, use ./killall in scripts to avoid conflict with + AIX program by that name. + + modify dlg_trim_string() to retain literal newlines if the string + does not contain "\\n" strings, and to retain leading blanks on the + resulting lines, for compatibility with older scripts (Debian + #102942). + + add charset specification to cs.po + + change dates in CHANGES to consistent format, add el.po for Greek + (patch by kromJx ). + + eliminate static globals (bss, data) from modules rc, tailbox, + textbox using better parameter-passing convention, and const. + + cleanup temporary files in a few of the sample scripts. + + rewrote tailboxbg using select() rather than fork(), thereby + eliminating lock-files. Only one process should be trying to display + on the screen at any given time. + + add error check to ensure that numeric parameters are really numbers. + + correct off-by-one in error messages reporting too-few or too-many + tokens for a given option (reported by George Mirchev). + + fix typo in manpage, "textboxbg" where "tailboxbg" was meant + (reported by George Mirchev ). + + use DLG_EXIT_xxx symbols consistently for all exit codes. + + updated es.po (patch by Santiago Vila). + + updates for some configure script macros from lynx: CF_MAKEFLAGS, + CF_NCURSES_VERSION, CF_PROG_EXT. + + fixes to compile if is included, e.g., when building with + AIX curses (report by Suzi Dowson ). + +2001/05/27 + + updated dialog.pot + + modify fselect.c to work with autosize, i.e., given height and width + zero (report by Martin Povolny). + + add a null-pointer check in justify_text(), needed by fselect.c + + add several more options which dialog can safely ignore, from + Xdialog 2.0.2 + + refinements for configure macros checking for $CPPFLAGS, from lynx. + + update config.guess, config.sub to match autoconf 2.50 + > Martin Povolny : + + add cs.po + + use nl_langinfo() to customize names for day-of-week, and month + +2001/05/11 + > Vincent Stemen : + Fixed dialog.c to not pass menu items through dlg_trim_string(). + Stripping extra spaces out of the menu items broke some of my + scripts by altering the string that it compared to know which menu + item was selected. There should be no need to do justification on + the menu items, which are always one line, anyway. + +2001/04/29 + > Vincent Stemen : + + rewrote the text justification code to be able to have preformatted + text in the prompts with extra spaces like the older versions of + dialog. If there are "\n" strings in the text, then extra spaces are + preserved. Lines are always wrapped on word boundaries. + + fixed --cr-wrap to break lines on '\n' (newline) characters and not + add an extra line at the top and bottom of the text. It now works + as the manual says it should. + + it is no longer necessary to use "\n\" at the end of lines to escape + the '\n' character. "\n" now works. However, the old way, "\n\" + still works. + + the fixes involved the following changes: + - rewrote dlg_trim_string() to recognize preformatted text (know + when not to strip extra spaces) and to pay attention to --cr-wrap. + - rewrote justify_text() which now calls a new function in util.c, + print_line(), to print each line and end it on a word boundary. + - modified real_auto_size() to call a new function + auto_size_preformated() to calculate the box size for preformatted + text. + - removed skip_blanks() and skip_text() since they are not used by + the new justify_text(). + - modified dialog.c to not call dlg_trim_string() on title strings + so that titles retain their spaces. + + modified the following demo files in the sample directory: + - inputbox + changed all "\n\" strings to "\n" to demonstrate the extra + backslash is no longer needed. + - inputbox1 + removed all the "\n\" strings from the end of the lines to + properly demonstrate --cr-wrap. + - msgbox1 + this sample was using "--aspect 9 --cr-wrap". Rewrote it to + properly demonstrate --aspect. 9 is already dialog's default + aspect ratio. It now creates several dialogs in sequence, + demonstrating aspect ratios of 9, 12 and 6 and properly + demonstrates --cr-wrap. + + made the following changes to the manual (dialog.1). + - rewrote the description of --aspect to be more understandable. + - rewrote the description of --cr-wrap to be more correct and more + detailed. It did say, "Otherwise, the text for each dialog will + display on a single line.", which is not correct. It wraps the + text to fit in the box. + > T.Dickey: + + use logic from menubox dialog in checklist to handle autosizing when + list height is given as zero (fixes problem reported by Eric Veltman + ). + + modify checklist and menubox dialogs to check for too-wide data, and + truncate one or both of the name and text fields to fit (also + reported by Eric Veltman). + + corrected a few items from Vincent's patch: + - use C89-style comments rather than C++ + - restore logic in justify_text() which checks for win==0, needed to + work with standard curses implementations other than ncurses. + The first call on justify_text() passes a null pointer as a flag + to indicate that checking should be done, but no screen updates. + - avoid modifying the buffer in decode_percent(), otherwise a message + containing a space or newline would be truncated at the whitespace. + - modify dlg_button_x_step() and dlg_button_layout() slightly to + work with altered print_autowrap(), etc. + + fixes to build/work with SunOS 4.x 5lib curses + +2001/04/15 + + fix a memory leak in mouse_region(). + + simplify handling of optional parameters with new functions + optional_str() and optional_num(). + + add calendar and timebox dialogs (compatible with Xdialog). + + correct typo in fallback definition for getparyx, and remove void + cast for mouse_open and mouse_close which prevented build with + Sun's Solaris compiler. + + rename --enable-lxdialog configure option to --enable-Xdialog + + modify CF_NCURSES_CPPFLAGS macro to match more variations of ncurses + header files. + + update config.guess, config.sub + + modify some configure script macros to avoid problems with buggy + autoconf 2.49c which breaks changequote(). + +2001/01/15 + + small fix to revised real_auto_size() and justify_text() to avoid + adding origin to box-width, which broke samples/wheel. + + apply 1999/12/25 tempfile change to wheel and copismall samples. + + add sample script for tailboxbg. + + revised lock-file management to better ensure that locks are actually + created by the tailbox subprocess(es). + + correct hardcoded signal 15 in tailbox to SIGHUP to match + documentation. Signal 15 is usually SIGTERM, which cannot be caught. + + correct off-by-one comparison of return-value for arg_rest() which + made + dialog --gauge test 10 50 + dump core because it expected a 4th parameter (fixes Debian #80641). + + resync config.sub, config.guess from + http://subversions.gnu.org/cgi-bin/cvsweb/config/ (which finally have + cases for OS/2 EMX), minor tweaks to related configure script macros. + +2000/12/17 + + restore treatment of predefined height/width in real_auto_size() + which was lost in 2000/12/12 rewrite (report by Raphael Halimi + ). + + updates for configure script macros AM_PATH_PROG_WITH_TEST, + CF_CURSES_LIBS, CF_LIB_PREFIX, CF_PROG_EXT for $PATHSEP and $CFLAGS + fixes. + +2000/12/13 + + correct change for create_lock(), which resulted in an infinite loop + (patch by Chris Butler, ). + +2000/12/12 + + rewrote print_autowrap() and real_auto_size() to share common code + justify_text(), which now does text flow even when the string + contains newlines (fixes Debian #77199). + + improve create_lock() function using open() with O_EXCL rather than + fopen() (patch by Matt Kraai (), Debian #78951). + + correct description of --fselect in man page (patch by Tomas Pospisek + (), Debian #77200). + + add --no-cancel as alias for --nocancel for compatibility with + Xdialog (report by Luis E Limon ). + +2000/10/27 + + some lint fixes using lclint (mostly void-casts, but some + sign-extension fixes e.g., for ctype.h macros, and loop in + dlg_char_to_button()). + + modified to build/run on OS/2 EMX with ncurses. + + minor changes to po/*.po (trim trailing blanks, provide explicit + translation for "OK"), to work with Solaris gettext. + + modified to allow this to build with archaic version (1.8.6) + of ncurses on FreeBSD 3.1 (does not run). + + update config.guess, config.sub from subversions.gnu.org + +2000/10/17 + + use new function sub_window() to check success/failure of calls to + subwin(), printing an error message if it fails (fixes Debian #74903). + + use combination of isatty/ttyname to look for workable tty device + on systems which have no /dev/tty, e.g., BeOS. + +2000/10/08 + + change exiterr() to use stdarg.h, make some messages easier to + understand. + + add dialog_clear() + + make samples/install/setup build. + + implemented mouse support for buttons, e.g., in yesno dialog using + ncurses (the gpm support no longer works, but is useful for reference) + + add a configure check for chtype. + + updates for configure script macros (CF_BUNDLED_INTL, CF_CURSES_LIBS, + CF_GCC_ATTRIBUTES, CF_GCC_WARNINGS, CF_INCLUDE_DIRS), and scripts + config.guess, config.sub + + cleanup of item-help change, integrate with checklist and radiobox. + + add ja.po, from Hirofumi Takeda . + > patch by Marco Mariani + + add --item-help option, which makes menubox data interpreted as + 3 columns rather than 2. The third column is displayed on the + last line of the screen as a help/status message for the currently + selected item. + + add it.po, pt.po + + change TAG_KEY_HL to FALSE, making unselected items in checklist + easier to read on Linux console. + +2000/07/30 + + change real_auto_size() to allow it to be used for dialogs that have + no prompt, e.g., fselect. Also, rather than requiring both height + and width to be given as -1 for maximizing the dialog, allow either + alone. + + increase minimum height needed for autosized yesno dialog. + + add --version as an alias for --print-version. + + fix for build on Solaris without NLS (cannot redefine 'gettext()'). + + add fselect dialog (compatible with Xdialog). + + add --enable-lxdialog configure option. + + use new configure macro CF_ARG_MSG_ENABLE to show progress with + enable/disable switches. + +2000/07/02 + + implement --stdout and --stderr options as in Xdialog. + + move logic that translates "\\n" into '\n' into main program to + simplify logic that formats text. + + make ifdef's for rc-file not specific to ncurses. + + correct logic making percent parameter of gauge optional. + +2000/06/29 + + add alternate test-script for gauge, adapted from Xdialog. + + modify gauge to make optional a percentage which was read at the + beginning of the XXX-delimited message text, since clones of dialog + are written to assume this is text. If the line is not a simple + integer, dialog will treat it as text. + + make the percent parameter of gauge optional, as in Xdialog. + + undo one use of CharOf() in guage.c, an error. + + fix configure macro AM_WITH_NLS to refrain from attempting to make a + symbolic link into/libintl.h if we are not using the bundled intl + directory from gettext (reported by Julian Coleman + ). + + add ru.po, from Michael Sobolev + + updates for config.guess, config.sub from tin. + + updates for configure script macros: CF_MATH_LIB (improperly nested + brackets/parenthesis) and CF_XOPEN_CURSES (make include of + <*curses.h> depend on configure tests). + +2000/04/25 + + repaint screen when a control/L is pressed. + + apply CharOf() macro to avoid sign-extension on calls to waddch(), + fixes a problem with accented characters (reported by Santiago Vila). + + add es.po, from Santiago Vila + +2000/04/23 + + modified to use gettext (configure option --enable-nls). This uses + gettext 0.10.35, which must be previously installed. (It can also + use an included intl library, but I consider that to be a waste of + disk space). + + remove code in checklist/radiobox, menubox that try to use + abbreviations for the OK/Cancel buttons since those conflict with the + check for abbreviations in list entries, which are more useful. + + moved padding of button labels out of string literals, into the + logic of dlg_draw_buttons(). + + resync/update with configure macros CF_CURSES_LIBS, CF_FIND_LIBRARY, + CF_HEADER_PATH, CF_LIBRARY_PATH and CF_NCURSES_LIBS, as well as + mkdirs.sh and config.guess. + +2000/02/22 + + add --default-item option, for menubox to set the default selection + (fixes Debian #49796). + + add sample scripts for --nocancel and --fb options with inputbox. + + modify inputbox* sample scripts to show application errors, if any. + + add --nocancel option, and ignore --noitem, --fb, --fullbutton, to + make this compatible with whiptail scripts. (whiptail does not + handle many dialog scripts however). + + modify checklist/radiobox to handle home, end, nextpage, prevpage + keys, as well as make the abbreviation search work for the whole + list, not only the current page. + + treat KEY_LL the same as KEY_END in checklist and textbox. + + add logic for KEY_BTAB. + + use new function dlg_draw_buttons() to better manage the layout of + yes/no/ok/cancel buttons. + + another pass of cleanup of dialog.c, makes it use a single table for + lookup of option names and help-message. Eliminated numerous + adjustments to 'offset' variable. + + on initialization, check if standard input is from a terminal. If + not, open /dev/tty (fixes Debian #57771) + +2000/02/05 + + implement inline editing in textbox.c search dialog. + + revise inputbox.c, allowing inline editing with arrow-keys. removed + redundant logic in that module. + + correct a typo that prevented rc-file configuration from building. + + correct ifdef's to compile/run if the curses implementation does not + support color. + +2000/01/23 + + improve test-case for gauge. + + change gauge.c to show progress in reverse-video, add a check for + end-of-file in the loop for reading new messages. + + use curses whline() function to simplify print_arrows() logic in + checklist.c and menubox.c + + use curses beep() function rather than hardcoded strings. + + correct several compiler warnings for gcc -pedantic (mismatch of + const, signed/unsigned). + + modify exiterr() to avoid possible expansion of '%'. + + change CF_MATH_LIB configure macro to allow specifying a particular + test-function. For dialog, this should be sqrt(). The macro was + originally written for ncurses, which needs sin(). However, that is + a builtin function on the m68k port (reported by Roman Hodek + , this fixes Debian #55553). + +2000/01/18 + + update manpage (Debian #25648). + + modify configure test for math library to avoid using a constant + parameter to the test function, lest gcc optimize the call away + (fixes Debian #55553). + + restructure help-message so actual problem is indicated. The original + help-message is shown if no parameters are given, or if the --help + option is specified alone. + + suppress xterm's alternate screen mode by sending an exit_ca_mode + after initscr if the terminal looks like xterm, e.g., has key_mouse + defined, and has private-mode escapes in both enter_ca_mode and + exit_ca_mode (fixes Debian #55181). + + change yellow lettering on white to blue on white, since it offers + better contrast (fixes Debian #51196). + + use napms() rather than sleep(). + + some cleanup/simplification of main program. Indent'd dialog.c and + util.c + + eliminate several places where repeated options are treated as + an error, since they are really executed once anyway. + +2000/01/15 + + remove pre-autoconf Makefile + + remove sleep's from a few of the sample scripts, which left users + thinking that dialog was slow to complete an action. + + rewrote infobox sample script, using dialog's --sleep option and + a loop in the script. + + change 'ch' variable in tailbox.c to an integer, because it is + compared against EOF (fixes Debian #53157). + + corrected mandir variable in makefile.in (reported by Santiago Vila). + + small changes to sample scripts, from Debian: rename "guage" script + to "gauge", change path to copy of GPL used in textbox. + + add uninstall rule to makefile.in, fixed some dependencies so + "make install" works without first doing "make all". + +1999/12/25 + + use more portable scheme for tempfile generation in samples. + + add a configure script, prefer to not use the original Makefile + because it works only with GNU make. + + correct prototype of 'main()', which misused const. + + modify guage.c to use fgets() rather than gets(). + + merge changes from Debian package maintainer + Santiago Vila : + + 1999/10/07 + + add a password dialog box (Debian #45964, patch by Joey Hess). + + implement "--defaultno" option to specify if the default for + the yes/no box is "No" (Debian #46076, patch by Joey Hess). + 1999/03/10 + + modify input.c to clear the input field to the right of the + given string, to help with screen-refresh + 1998/12/08 + + check for list_height less than one in checklist.c (Debian + #22239). + 1998/10/21 + + use function wscrl() in preference to scroll() in checklist.c + and menubox.c (unclear: in ncurses, scroll() is a macro that + uses wscrl()). + + remove the "-I/usr/include/ncurses" option from Makefile + since Debian does not install ncurses' header files into + that directory. + 1998/09/12 + + simplify menubox.c using new functions print_arrows() and + print_items(). add logic to handle KEY_NPAGE and KEY_PPAGE + (Debian #26326). + + modifications to provide sample scripts (Debian #26211): + + change sample scripts to use Debian tempfile utility rather + than putting files into /tmp. + + change sample scripts to use 'dialog' from user's path + rather than in the parent directory as in the build + directory. + + use the system copy of GPL rather than that in the build + directory as an example for the textbox script. + +1999/11/27 + + fix some gcc warnings about ambiguous use of "else" + +1999/05/01 + + cleaned up some of the redundant code with new functions: + box_x_ordinate + box_y_ordinate + draw_title + draw_bottom_box + new_window + + + modified msgbox.c and yesno.c to work with the KEY_RESIZE sigwinch + handling in ncurses 4.2 + + + corrected spelling of "gauge" + +The relevant portions of the Debian change log for the original version +(dialog-0.9a-12) are abstracted here, omitting details of their packaging: + +1998/05/24 + + + Replaced guage.c by the one in dialog 0.6z, which is known to work. + Fixes Debian #18284: unstable dialog. + +1997/12/16 + + + dialog.c: dialog_input_result printed with "%s" format. This was + Debian #9913, fixed by Bill Mitchell, but the change was lost. + + Pristine source, .depend is not removed in clean target. Instead, it + is made zero length (otherwise it would not work *without* fakeroot). + + Added '^U' support in input box (Debian #9915, patch by Joey Hess). + + Wrote patch to fix core-dumping problem (Debian #13170). Sven Rudolph + : + +-- vile:fk=8bit Index: vendor/dialog/1.3-20180621/VERSION =================================================================== --- vendor/dialog/1.3-20180621/VERSION (nonexistent) +++ vendor/dialog/1.3-20180621/VERSION (revision 339483) @@ -0,0 +1 @@ +15:0:0 1.3 20180621 Index: vendor/dialog/1.3-20180621/aclocal.m4 =================================================================== --- vendor/dialog/1.3-20180621/aclocal.m4 (nonexistent) +++ vendor/dialog/1.3-20180621/aclocal.m4 (revision 339483) @@ -0,0 +1,6536 @@ +dnl macros used for DIALOG configure script +dnl $Id: aclocal.m4,v 1.120 2018/06/21 00:30:26 tom Exp $ +dnl --------------------------------------------------------------------------- +dnl Copyright 1999-2017,2018 -- Thomas E. Dickey +dnl +dnl Permission is hereby granted, free of charge, to any person obtaining a +dnl copy of this software and associated documentation files (the +dnl "Software"), to deal in the Software without restriction, including +dnl without limitation the rights to use, copy, modify, merge, publish, +dnl distribute, distribute with modifications, sublicense, and/or sell +dnl copies of the Software, and to permit persons to whom the Software is +dnl furnished to do so, subject to the following conditions: +dnl +dnl The above copyright notice and this permission notice shall be included +dnl in all copies or portions of the Software. +dnl +dnl THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS +dnl OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +dnl MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +dnl IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, +dnl DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR +dnl OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR +dnl THE USE OR OTHER DEALINGS IN THE SOFTWARE. +dnl +dnl Except as contained in this notice, the name(s) of the above copyright +dnl holders shall not be used in advertising or otherwise to promote the +dnl sale, use or other dealings in this Software without prior written +dnl authorization. +dnl +dnl see +dnl http://invisible-island.net/autoconf/ +dnl --------------------------------------------------------------------------- +dnl --------------------------------------------------------------------------- +dnl AM_GNU_GETTEXT version: 14 updated: 2015/04/15 19:08:48 +dnl -------------- +dnl Usage: Just like AM_WITH_NLS, which see. +AC_DEFUN([AM_GNU_GETTEXT], + [AC_REQUIRE([AC_PROG_MAKE_SET])dnl + AC_REQUIRE([AC_CANONICAL_HOST])dnl + AC_REQUIRE([AC_PROG_RANLIB])dnl + AC_REQUIRE([AC_HEADER_STDC])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_REQUIRE([CF_PROG_CC])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],[$4]) + + 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 Enable libtool support if the surrounding package wishes it. + INTL_LIBTOOL_SUFFIX_PREFIX=ifelse([$1], use-libtool, [l], []) + AC_SUBST(INTL_LIBTOOL_SUFFIX_PREFIX) +])dnl +dnl --------------------------------------------------------------------------- +dnl AM_ICONV version: 12 updated: 2007/07/30 19:12:03 +dnl -------- +dnl Inserted as requested by gettext 0.10.40 +dnl File from /usr/share/aclocal +dnl iconv.m4 +dnl ==================== +dnl serial AM2 +dnl +dnl From Bruno Haible. +dnl +dnl ==================== +dnl Modified to use CF_FIND_LINKAGE and CF_ADD_SEARCHPATH, to broaden the +dnl range of locations searched. Retain the same cache-variable naming to +dnl allow reuse with the other gettext macros -Thomas E Dickey +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], [ + CF_ADD_OPTIONAL_PATH($withval, libiconv) + ]) + + AC_CACHE_CHECK(for iconv, am_cv_func_iconv, [ + CF_FIND_LINKAGE(CF__ICONV_HEAD, + CF__ICONV_BODY, + iconv, + am_cv_func_iconv=yes, + am_cv_func_iconv=["no, consider installing GNU libiconv"])]) + + if test "$am_cv_func_iconv" = yes; then + AC_DEFINE(HAVE_ICONV, 1, [Define if you have the iconv() function.]) + + AC_CACHE_CHECK([if the declaration of iconv() needs const.], + am_cv_proto_iconv_const,[ + AC_TRY_COMPILE(CF__ICONV_HEAD [ +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_const=no, + am_cv_proto_iconv_const=yes)]) + + if test "$am_cv_proto_iconv_const" = yes ; then + am_cv_proto_iconv_arg1="const" + else + am_cv_proto_iconv_arg1="" + fi + + AC_DEFINE_UNQUOTED(ICONV_CONST, $am_cv_proto_iconv_arg1, + [Define as const if the declaration of iconv() needs const.]) + fi + + LIBICONV= + if test "$cf_cv_find_linkage_iconv" = yes; then + CF_ADD_INCDIR($cf_cv_header_path_iconv) + if test -n "$cf_cv_library_file_iconv" ; then + LIBICONV="-liconv" + CF_ADD_LIBDIR($cf_cv_library_path_iconv) + fi + fi + + AC_SUBST(LIBICONV) +])dnl +dnl --------------------------------------------------------------------------- +dnl AM_LANGINFO_CODESET version: 4 updated: 2015/04/18 08:56:57 +dnl ------------------- +dnl Inserted as requested by gettext 0.10.40 +dnl File from /usr/share/aclocal +dnl codeset.m4 +dnl ==================== +dnl serial AM1 +dnl +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 +])dnl +dnl --------------------------------------------------------------------------- +dnl AM_LC_MESSAGES version: 5 updated: 2015/05/10 19:52:14 +dnl -------------- +dnl Inserted as requested by gettext 0.10.40 +dnl File from /usr/share/aclocal +dnl lcmessage.m4 +dnl ==================== +dnl Check whether LC_MESSAGES is available in . +dnl Ulrich Drepper , 1995. +dnl +dnl This file can be copied and used freely without restrictions. It can +dnl be used in projects which are not available under the GNU General Public +dnl License or the GNU Library General Public License but which still want +dnl to provide support for the GNU gettext functionality. +dnl Please note that the actual code of the GNU gettext library is covered +dnl by the GNU Library General Public License, and the rest of the GNU +dnl gettext package package is covered by the GNU General Public License. +dnl They are *not* in the public domain. +dnl +dnl serial 2 +dnl +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])dnl +dnl --------------------------------------------------------------------------- +dnl AM_PATH_PROG_WITH_TEST version: 9 updated: 2015/04/15 19:08:48 +dnl ---------------------- +dnl Inserted as requested by gettext 0.10.40 +dnl File from /usr/share/aclocal +dnl progtest.m4 +dnl ==================== +dnl Search path for a program which passes the given test. +dnl Ulrich Drepper , 1996. +dnl +dnl This file can be copied and used freely without restrictions. It can +dnl be used in projects which are not available under the GNU General Public +dnl License or the GNU Library General Public License but which still want +dnl to provide support for the GNU gettext functionality. +dnl Please note that the actual code of the GNU gettext library is covered +dnl by the GNU Library General Public License, and the rest of the GNU +dnl gettext package package is covered by the GNU General Public License. +dnl They are *not* in the public domain. +dnl +dnl serial 2 +dnl +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. +AC_REQUIRE([CF_PATHSEP]) +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}${PATH_SEPARATOR}" + for ac_dir in ifelse([$5], , $PATH, [$5]); do + test -z "$ac_dir" && ac_dir=. + if test -f $ac_dir/$ac_word$ac_exeext; then + if [$3]; then + ac_cv_path_$1="$ac_dir/$ac_word$ac_exeext" + 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 +])dnl +dnl --------------------------------------------------------------------------- +dnl AM_WITH_NLS version: 29 updated: 2018/02/21 21:26:03 +dnl ----------- +dnl Inserted as requested by gettext 0.10.40 +dnl File from /usr/share/aclocal +dnl gettext.m4 +dnl ==================== +dnl Macro to add for using GNU gettext. +dnl Ulrich Drepper , 1995. +dnl ==================== +dnl Modified to use CF_FIND_LINKAGE and CF_ADD_SEARCHPATH, to broaden the +dnl range of locations searched. Retain the same cache-variable naming to +dnl allow reuse with the other gettext macros -Thomas E Dickey +dnl ==================== +dnl +dnl This file can be copied and used freely without restrictions. It can +dnl be used in projects which are not available under the GNU General Public +dnl License or the GNU Library General Public License but which still want +dnl to provide support for the GNU gettext functionality. +dnl Please note that the actual code of the GNU gettext library is covered +dnl by the GNU Library General Public License, and the rest of the GNU +dnl gettext package package is covered by the GNU General Public License. +dnl They are *not* in the public domain. +dnl +dnl serial 10 +dnl +dnl Usage: AM_WITH_NLS([TOOLSYMBOL], [NEEDSYMBOL], [LIBDIR], [ENABLED]). +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 ENABLED is used to control the default for the related --enable-nls, since +dnl not all application developers want this feature by default, e.g., lynx. +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 + ifelse([$4],,[ + AC_ARG_ENABLE(nls, + [ --disable-nls do not use Native Language Support], + USE_NLS=$enableval, USE_NLS=yes)],[ + AC_ARG_ENABLE(nls, + [ --enable-nls use Native Language Support], + USE_NLS=$enableval, USE_NLS=no)]) + 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 + dnl We need to process the po/ directory. + POSUB=po + 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 may have + dnl to fall back to GNU NLS library. + CATOBJEXT=NONE + + dnl Save these (possibly-set) variables for reference. If the user + dnl overrode these to provide full pathnames, then warn if not actually + dnl GNU gettext, but do not override their values. Also, if they were + dnl overridden, suppress the part of the library test which prevents it + dnl from finding anything other than GNU gettext. Doing this also + dnl suppresses a bogus search for the intl library. + cf_save_msgfmt_path="$MSGFMT" + cf_save_xgettext_path="$XGETTEXT" + + 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) + AC_SUBST(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], :) + + cf_save_OPTS_1="$CPPFLAGS" + if test "x$cf_save_msgfmt_path" = "x$MSGFMT" && \ + test "x$cf_save_xgettext_path" = "x$XGETTEXT" ; then + CF_ADD_CFLAGS(-DIGNORE_MSGFMT_HACK) + fi + + cf_save_LIBS_1="$LIBS" + CF_ADD_LIBS($LIBICONV) + + CF_FIND_LINKAGE(CF__INTL_HEAD, + CF__INTL_BODY($2), + intl, + cf_cv_func_gettext=yes, + cf_cv_func_gettext=no) + + AC_MSG_CHECKING([for libintl.h and gettext()]) + AC_MSG_RESULT($cf_cv_func_gettext) + + LIBS="$cf_save_LIBS_1" + CPPFLAGS="$cf_save_OPTS_1" + + if test "$cf_cv_func_gettext" = yes ; then + AC_DEFINE(HAVE_LIBINTL_H,1,[Define to 1 if we have libintl.h]) + + 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 "$PACKAGE" != gettext; then + AC_DEFINE(HAVE_GETTEXT, 1, + [Define if the GNU gettext() function is already present or preinstalled.]) + + CF_ADD_INCDIR($cf_cv_header_path_intl) + + if test -n "$cf_cv_library_file_intl" ; 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="$cf_cv_library_file_intl $LIBICONV" + CF_ADD_LIBDIR($cf_cv_library_path_intl,INTLLIBS) + fi + + gt_save_LIBS="$LIBS" + LIBS="$LIBS $INTLLIBS" + AC_CHECK_FUNCS(dcgettext) + LIBS="$gt_save_LIBS" + + CATOBJEXT=.gmo + fi + elif test -z "$MSGFMT" || test -z "$XGETTEXT" ; then + AC_MSG_WARN(disabling NLS feature) + sed -e /ENABLE_NLS/d confdefs.h >confdefs.tmp + mv confdefs.tmp confdefs.h + ALL_LINGUAS= + CATOBJEXT=.ignored + MSGFMT=":" + GMSGFMT=":" + XGETTEXT=":" + POSUB= + BUILD_INCLUDED_LIBINTL=no + USE_INCLUDED_LIBINTL=no + USE_NLS=no + nls_cv_use_gnu_gettext=no + 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=maybe + fi + fi + + if test "$nls_cv_use_gnu_gettext" != "no"; then + CATOBJEXT=.gmo + if test -f $srcdir/intl/libintl.h ; then + dnl Mark actions used to generate GNU NLS library. + INTLOBJS="\$(GETTOBJS)" + BUILD_INCLUDED_LIBINTL=yes + USE_INCLUDED_LIBINTL=yes + 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/ $//'` + elif test "$nls_cv_use_gnu_gettext" = "yes"; then + nls_cv_use_gnu_gettext=no + AC_MSG_WARN(no NLS library is packaged with this application) + fi + fi + + dnl Test whether we really found GNU msgfmt. + if test "$GMSGFMT" != ":"; then + if $GMSGFMT --statistics /dev/null >/dev/null 2>&1; then + : ; + else + AC_MSG_WARN([found msgfmt program is not GNU msgfmt]) + fi + fi + + dnl Test whether we really found GNU xgettext. + if test "$XGETTEXT" != ":"; then + if $XGETTEXT --omit-header /dev/null >/dev/null 2>&1; then + : ; + else + AC_MSG_WARN([found xgettext program is not GNU xgettext]) + fi + fi + fi + + if test "$XGETTEXT" != ":"; then + 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.inn. + case "$ac_file" in + (*/[Mm]akefile.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'` + ac_base=`basename $ac_file .in` + # 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/$ac_base" || echo "creating $ac_dir/$ac_base" + sed -e "/POTFILES =/r $ac_dir/POTFILES" "$ac_dir/$ac_base.in" > "$ac_dir/$ac_base" + 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. + if test "$nls_cv_use_gnu_gettext" = "yes"; then + 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 + 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 + fi + + 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 +dnl --------------------------------------------------------------------------- +dnl CF_ACVERSION_CHECK version: 5 updated: 2014/06/04 19:11:49 +dnl ------------------ +dnl Conditionally generate script according to whether we're using a given autoconf. +dnl +dnl $1 = version to compare against +dnl $2 = code to use if AC_ACVERSION is at least as high as $1. +dnl $3 = code to use if AC_ACVERSION is older than $1. +define([CF_ACVERSION_CHECK], +[ +ifdef([AC_ACVERSION], ,[ifdef([AC_AUTOCONF_VERSION],[m4_copy([AC_AUTOCONF_VERSION],[AC_ACVERSION])],[m4_copy([m4_PACKAGE_VERSION],[AC_ACVERSION])])])dnl +ifdef([m4_version_compare], +[m4_if(m4_version_compare(m4_defn([AC_ACVERSION]), [$1]), -1, [$3], [$2])], +[CF_ACVERSION_COMPARE( +AC_PREREQ_CANON(AC_PREREQ_SPLIT([$1])), +AC_PREREQ_CANON(AC_PREREQ_SPLIT(AC_ACVERSION)), AC_ACVERSION, [$2], [$3])])])dnl +dnl --------------------------------------------------------------------------- +dnl CF_ACVERSION_COMPARE version: 3 updated: 2012/10/03 18:39:53 +dnl -------------------- +dnl CF_ACVERSION_COMPARE(MAJOR1, MINOR1, TERNARY1, +dnl MAJOR2, MINOR2, TERNARY2, +dnl PRINTABLE2, not FOUND, FOUND) +define([CF_ACVERSION_COMPARE], +[ifelse(builtin([eval], [$2 < $5]), 1, +[ifelse([$8], , ,[$8])], +[ifelse([$9], , ,[$9])])])dnl +dnl --------------------------------------------------------------------------- +dnl CF_ADD_CFLAGS version: 13 updated: 2017/02/25 18:57:40 +dnl ------------- +dnl Copy non-preprocessor flags to $CFLAGS, preprocessor flags to $CPPFLAGS +dnl The second parameter if given makes this macro verbose. +dnl +dnl Put any preprocessor definitions that use quoted strings in $EXTRA_CPPFLAGS, +dnl to simplify use of $CPPFLAGS in compiler checks, etc., that are easily +dnl confused by the quotes (which require backslashes to keep them usable). +AC_DEFUN([CF_ADD_CFLAGS], +[ +cf_fix_cppflags=no +cf_new_cflags= +cf_new_cppflags= +cf_new_extra_cppflags= + +for cf_add_cflags in $1 +do +case $cf_fix_cppflags in +(no) + case $cf_add_cflags in + (-undef|-nostdinc*|-I*|-D*|-U*|-E|-P|-C) + case $cf_add_cflags in + (-D*) + cf_tst_cflags=`echo ${cf_add_cflags} |sed -e 's/^-D[[^=]]*='\''\"[[^"]]*//'` + + test "x${cf_add_cflags}" != "x${cf_tst_cflags}" \ + && test -z "${cf_tst_cflags}" \ + && cf_fix_cppflags=yes + + if test $cf_fix_cppflags = yes ; then + CF_APPEND_TEXT(cf_new_extra_cppflags,$cf_add_cflags) + continue + elif test "${cf_tst_cflags}" = "\"'" ; then + CF_APPEND_TEXT(cf_new_extra_cppflags,$cf_add_cflags) + continue + fi + ;; + esac + case "$CPPFLAGS" in + (*$cf_add_cflags) + ;; + (*) + case $cf_add_cflags in + (-D*) + cf_tst_cppflags=`echo "x$cf_add_cflags" | sed -e 's/^...//' -e 's/=.*//'` + CF_REMOVE_DEFINE(CPPFLAGS,$CPPFLAGS,$cf_tst_cppflags) + ;; + esac + CF_APPEND_TEXT(cf_new_cppflags,$cf_add_cflags) + ;; + esac + ;; + (*) + CF_APPEND_TEXT(cf_new_cflags,$cf_add_cflags) + ;; + esac + ;; +(yes) + CF_APPEND_TEXT(cf_new_extra_cppflags,$cf_add_cflags) + + cf_tst_cflags=`echo ${cf_add_cflags} |sed -e 's/^[[^"]]*"'\''//'` + + test "x${cf_add_cflags}" != "x${cf_tst_cflags}" \ + && test -z "${cf_tst_cflags}" \ + && cf_fix_cppflags=no + ;; +esac +done + +if test -n "$cf_new_cflags" ; then + ifelse([$2],,,[CF_VERBOSE(add to \$CFLAGS $cf_new_cflags)]) + CF_APPEND_TEXT(CFLAGS,$cf_new_cflags) +fi + +if test -n "$cf_new_cppflags" ; then + ifelse([$2],,,[CF_VERBOSE(add to \$CPPFLAGS $cf_new_cppflags)]) + CF_APPEND_TEXT(CPPFLAGS,$cf_new_cppflags) +fi + +if test -n "$cf_new_extra_cppflags" ; then + ifelse([$2],,,[CF_VERBOSE(add to \$EXTRA_CPPFLAGS $cf_new_extra_cppflags)]) + CF_APPEND_TEXT(EXTRA_CPPFLAGS,$cf_new_extra_cppflags) +fi + +AC_SUBST(EXTRA_CPPFLAGS) + +])dnl +dnl --------------------------------------------------------------------------- +dnl CF_ADD_INCDIR version: 15 updated: 2018/06/20 20:23:13 +dnl ------------- +dnl Add an include-directory to $CPPFLAGS. Don't add /usr/include, since it's +dnl redundant. We don't normally need to add -I/usr/local/include for gcc, +dnl but old versions (and some misinstalled ones) need that. To make things +dnl worse, gcc 3.x may give error messages if -I/usr/local/include is added to +dnl the include-path). +AC_DEFUN([CF_ADD_INCDIR], +[ +if test -n "$1" ; then + for cf_add_incdir in $1 + do + while test $cf_add_incdir != /usr/include + do + if test -d $cf_add_incdir + then + cf_have_incdir=no + if test -n "$CFLAGS$CPPFLAGS" ; then + # a loop is needed to ensure we can add subdirs of existing dirs + for cf_test_incdir in $CFLAGS $CPPFLAGS ; do + if test ".$cf_test_incdir" = ".-I$cf_add_incdir" ; then + cf_have_incdir=yes; break + fi + done + fi + + if test "$cf_have_incdir" = no ; then + if test "$cf_add_incdir" = /usr/local/include ; then + if test "$GCC" = yes + then + cf_save_CPPFLAGS=$CPPFLAGS + CF_APPEND_TEXT(CPPFLAGS,-I$cf_add_incdir) + AC_TRY_COMPILE([#include ], + [printf("Hello")], + [], + [cf_have_incdir=yes]) + CPPFLAGS=$cf_save_CPPFLAGS + fi + fi + fi + + if test "$cf_have_incdir" = no ; then + CF_VERBOSE(adding $cf_add_incdir to include-path) + ifelse([$2],,CPPFLAGS,[$2])="$ifelse([$2],,CPPFLAGS,[$2]) -I$cf_add_incdir" + + cf_top_incdir=`echo $cf_add_incdir | sed -e 's%/include/.*$%/include%'` + test "$cf_top_incdir" = "$cf_add_incdir" && break + cf_add_incdir="$cf_top_incdir" + else + break + fi + else + break + fi + done + done +fi +])dnl +dnl --------------------------------------------------------------------------- +dnl CF_ADD_LIB version: 2 updated: 2010/06/02 05:03:05 +dnl ---------- +dnl Add a library, used to enforce consistency. +dnl +dnl $1 = library to add, without the "-l" +dnl $2 = variable to update (default $LIBS) +AC_DEFUN([CF_ADD_LIB],[CF_ADD_LIBS(-l$1,ifelse($2,,LIBS,[$2]))])dnl +dnl --------------------------------------------------------------------------- +dnl CF_ADD_LIBDIR version: 10 updated: 2015/04/18 08:56:57 +dnl ------------- +dnl Adds to the library-path +dnl +dnl Some machines have trouble with multiple -L options. +dnl +dnl $1 is the (list of) directory(s) to add +dnl $2 is the optional name of the variable to update (default LDFLAGS) +dnl +AC_DEFUN([CF_ADD_LIBDIR], +[ +if test -n "$1" ; then + for cf_add_libdir in $1 + do + if test $cf_add_libdir = /usr/lib ; then + : + elif test -d $cf_add_libdir + then + cf_have_libdir=no + if test -n "$LDFLAGS$LIBS" ; then + # a loop is needed to ensure we can add subdirs of existing dirs + for cf_test_libdir in $LDFLAGS $LIBS ; do + if test ".$cf_test_libdir" = ".-L$cf_add_libdir" ; then + cf_have_libdir=yes; break + fi + done + fi + if test "$cf_have_libdir" = no ; then + CF_VERBOSE(adding $cf_add_libdir to library-path) + ifelse([$2],,LDFLAGS,[$2])="-L$cf_add_libdir $ifelse([$2],,LDFLAGS,[$2])" + fi + fi + done +fi +])dnl +dnl --------------------------------------------------------------------------- +dnl CF_ADD_LIBS version: 2 updated: 2014/07/13 14:33:27 +dnl ----------- +dnl Add one or more libraries, used to enforce consistency. Libraries are +dnl prepended to an existing list, since their dependencies are assumed to +dnl already exist in the list. +dnl +dnl $1 = libraries to add, with the "-l", etc. +dnl $2 = variable to update (default $LIBS) +AC_DEFUN([CF_ADD_LIBS],[ +cf_add_libs="$1" +# Filter out duplicates - this happens with badly-designed ".pc" files... +for cf_add_1lib in [$]ifelse($2,,LIBS,[$2]) +do + for cf_add_2lib in $cf_add_libs + do + if test "x$cf_add_1lib" = "x$cf_add_2lib" + then + cf_add_1lib= + break + fi + done + test -n "$cf_add_1lib" && cf_add_libs="$cf_add_libs $cf_add_1lib" +done +ifelse($2,,LIBS,[$2])="$cf_add_libs" +])dnl +dnl --------------------------------------------------------------------------- +dnl CF_ADD_LIB_AFTER version: 3 updated: 2013/07/09 21:27:22 +dnl ---------------- +dnl Add a given library after another, e.g., following the one it satisfies a +dnl dependency for. +dnl +dnl $1 = the first library +dnl $2 = its dependency +AC_DEFUN([CF_ADD_LIB_AFTER],[ +CF_VERBOSE(...before $LIBS) +LIBS=`echo "$LIBS" | sed -e "s/[[ ]][[ ]]*/ /g" -e "s%$1 %$1 $2 %" -e 's% % %g'` +CF_VERBOSE(...after $LIBS) +])dnl +dnl --------------------------------------------------------------------------- +dnl CF_ADD_OPTIONAL_PATH version: 3 updated: 2015/05/10 19:52:14 +dnl -------------------- +dnl Add an optional search-path to the compile/link variables. +dnl See CF_WITH_PATH +dnl +dnl $1 = shell variable containing the result of --with-XXX=[DIR] +dnl $2 = module to look for. +AC_DEFUN([CF_ADD_OPTIONAL_PATH],[ +case "$1" in +(no) + ;; +(yes) + ;; +(*) + CF_ADD_SEARCHPATH([$1], [AC_MSG_ERROR(cannot find $2 under $1)]) + ;; +esac +])dnl +dnl --------------------------------------------------------------------------- +dnl CF_ADD_SEARCHPATH version: 5 updated: 2009/01/11 20:40:21 +dnl ----------------- +dnl Set $CPPFLAGS and $LDFLAGS with the directories given via the parameter. +dnl They can be either the common root of include- and lib-directories, or the +dnl lib-directory (to allow for things like lib64 directories). +dnl See also CF_FIND_LINKAGE. +dnl +dnl $1 is the list of colon-separated directory names to search. +dnl $2 is the action to take if a parameter does not yield a directory. +AC_DEFUN([CF_ADD_SEARCHPATH], +[ +AC_REQUIRE([CF_PATHSEP]) +for cf_searchpath in `echo "$1" | tr $PATH_SEPARATOR ' '`; do + if test -d $cf_searchpath/include; then + CF_ADD_INCDIR($cf_searchpath/include) + elif test -d $cf_searchpath/../include ; then + CF_ADD_INCDIR($cf_searchpath/../include) + ifelse([$2],,,[else +$2]) + fi + if test -d $cf_searchpath/lib; then + CF_ADD_LIBDIR($cf_searchpath/lib) + elif test -d $cf_searchpath ; then + CF_ADD_LIBDIR($cf_searchpath) + ifelse([$2],,,[else +$2]) + fi +done +]) +dnl --------------------------------------------------------------------------- +dnl CF_ADD_SUBDIR_PATH version: 4 updated: 2013/10/08 17:47:05 +dnl ------------------ +dnl Append to a search-list for a nonstandard header/lib-file +dnl $1 = the variable to return as result +dnl $2 = the package name +dnl $3 = the subdirectory, e.g., bin, include or lib +dnl $4 = the directory under which we will test for subdirectories +dnl $5 = a directory that we do not want $4 to match +AC_DEFUN([CF_ADD_SUBDIR_PATH], +[ +test "x$4" != "x$5" && \ +test -d "$4" && \ +ifelse([$5],NONE,,[(test -z "$5" || test x$5 = xNONE || test "x$4" != "x$5") &&]) { + test -n "$verbose" && echo " ... testing for $3-directories under $4" + test -d $4/$3 && $1="[$]$1 $4/$3" + test -d $4/$3/$2 && $1="[$]$1 $4/$3/$2" + test -d $4/$3/$2/$3 && $1="[$]$1 $4/$3/$2/$3" + test -d $4/$2/$3 && $1="[$]$1 $4/$2/$3" + test -d $4/$2/$3/$2 && $1="[$]$1 $4/$2/$3/$2" +} +])dnl +dnl --------------------------------------------------------------------------- +dnl CF_APPEND_TEXT version: 1 updated: 2017/02/25 18:58:55 +dnl -------------- +dnl use this macro for appending text without introducing an extra blank at +dnl the beginning +define([CF_APPEND_TEXT], +[ + test -n "[$]$1" && $1="[$]$1 " + $1="[$]{$1}$2" +])dnl +dnl --------------------------------------------------------------------------- +dnl CF_ARG_DISABLE version: 3 updated: 1999/03/30 17:24:31 +dnl -------------- +dnl Allow user to disable a normally-on option. +AC_DEFUN([CF_ARG_DISABLE], +[CF_ARG_OPTION($1,[$2],[$3],[$4],yes)])dnl +dnl --------------------------------------------------------------------------- +dnl CF_ARG_MSG_ENABLE version: 2 updated: 2000/07/29 19:32:03 +dnl ----------------- +dnl Verbose form of AC_ARG_ENABLE: +dnl +dnl Parameters: +dnl $1 = message +dnl $2 = option name +dnl $3 = help-string +dnl $4 = action to perform if option is enabled +dnl $5 = action if perform if option is disabled +dnl $6 = default option value (either 'yes' or 'no') +AC_DEFUN([CF_ARG_MSG_ENABLE],[ +AC_MSG_CHECKING($1) +AC_ARG_ENABLE($2,[$3],,enableval=ifelse($6,,no,$6)) +AC_MSG_RESULT($enableval) +if test "$enableval" != no ; then +ifelse($4,,[ :],$4) +else +ifelse($5,,[ :],$5) +fi +])dnl +dnl --------------------------------------------------------------------------- +dnl CF_ARG_OPTION version: 5 updated: 2015/05/10 19:52:14 +dnl ------------- +dnl Restricted form of AC_ARG_ENABLE that ensures user doesn't give bogus +dnl values. +dnl +dnl Parameters: +dnl $1 = option name +dnl $2 = help-string +dnl $3 = action to perform if option is not default +dnl $4 = action if perform if option is default +dnl $5 = default option value (either 'yes' or 'no') +AC_DEFUN([CF_ARG_OPTION], +[AC_ARG_ENABLE([$1],[$2],[test "$enableval" != ifelse([$5],no,yes,no) && enableval=ifelse([$5],no,no,yes) + if test "$enableval" != "$5" ; then +ifelse([$3],,[ :]dnl +,[ $3]) ifelse([$4],,,[ + else + $4]) + fi],[enableval=$5 ifelse([$4],,,[ + $4 +])dnl +])])dnl +dnl --------------------------------------------------------------------------- +dnl CF_AR_FLAGS version: 6 updated: 2015/10/10 15:25:05 +dnl ----------- +dnl Check for suitable "ar" (archiver) options for updating an archive. +dnl +dnl In particular, handle some obsolete cases where the "-" might be omitted, +dnl as well as a workaround for breakage of make's archive rules by the GNU +dnl binutils "ar" program. +AC_DEFUN([CF_AR_FLAGS],[ +AC_REQUIRE([CF_PROG_AR]) + +AC_CACHE_CHECK(for options to update archives, cf_cv_ar_flags,[ + cf_cv_ar_flags=unknown + for cf_ar_flags in -curvU -curv curv -crv crv -cqv cqv -rv rv + do + + # check if $ARFLAGS already contains this choice + if test "x$ARFLAGS" != "x" ; then + cf_check_ar_flags=`echo "x$ARFLAGS" | sed -e "s/$cf_ar_flags\$//" -e "s/$cf_ar_flags / /"` + if test "x$ARFLAGS" != "$cf_check_ar_flags" ; then + cf_cv_ar_flags= + break + fi + fi + + rm -f conftest.$ac_cv_objext + rm -f conftest.a + + cat >conftest.$ac_ext <&AC_FD_CC + $AR $ARFLAGS $cf_ar_flags conftest.a conftest.$ac_cv_objext 2>&AC_FD_CC 1>/dev/null + if test -f conftest.a ; then + cf_cv_ar_flags=$cf_ar_flags + break + fi + else + CF_VERBOSE(cannot compile test-program) + break + fi + done + rm -f conftest.a conftest.$ac_ext conftest.$ac_cv_objext +]) + +if test -n "$ARFLAGS" ; then + if test -n "$cf_cv_ar_flags" ; then + ARFLAGS="$ARFLAGS $cf_cv_ar_flags" + fi +else + ARFLAGS=$cf_cv_ar_flags +fi + +AC_SUBST(ARFLAGS) +]) +dnl --------------------------------------------------------------------------- +dnl CF_BUNDLED_INTL version: 19 updated: 2018/06/20 20:23:13 +dnl --------------- +dnl Top-level macro for configuring an application with a bundled copy of +dnl the intl and po directories for gettext. +dnl +dnl $1 specifies either Makefile or makefile, defaulting to the former. +dnl $2 if nonempty sets the option to --enable-nls rather than to --disable-nls +dnl +dnl Sets variables which can be used to substitute in makefiles: +dnl GT_YES - "#" comment unless building intl library, otherwise empty +dnl GT_NO - "#" comment if building intl library, otherwise empty +dnl INTLDIR_MAKE - to make ./intl directory +dnl MSG_DIR_MAKE - to make ./po directory +dnl SUB_MAKEFILE - list of makefiles in ./intl, ./po directories +dnl +dnl Defines: +dnl HAVE_LIBGETTEXT_H if we're using ./intl +dnl NLS_TEXTDOMAIN +dnl +dnl Environment: +dnl ALL_LINGUAS if set, lists the root names of the ".po" files. +dnl CONFIG_H assumed to be "config.h" +dnl PACKAGE must be set, used as default for textdomain +dnl VERSION may be set, otherwise extract from "VERSION" file. +dnl +AC_DEFUN([CF_BUNDLED_INTL],[ +cf_makefile=ifelse($1,,Makefile,$1) + +dnl Set of available languages (based on source distribution). Note that +dnl setting $LINGUAS overrides $ALL_LINGUAS. Some environments set $LINGUAS +dnl rather than $LC_ALL +test -z "$ALL_LINGUAS" && ALL_LINGUAS=`test -d $srcdir/po && cd $srcdir/po && echo *.po|sed -e 's/\.po//g' -e 's/*//'` + +# Allow override of "config.h" definition: +: ${CONFIG_H:=config.h} +AC_SUBST(CONFIG_H) + +if test -z "$PACKAGE" ; then + AC_MSG_ERROR([[CF_BUNDLED_INTL] used without setting [PACKAGE] variable]) +fi + +if test -z "$VERSION" ; then +if test -f $srcdir/VERSION ; then + VERSION=`sed -e '2,$d' $srcdir/VERSION|cut -f1` +else + VERSION=unknown +fi +fi +AC_SUBST(VERSION) + +AM_GNU_GETTEXT(,,,[$2]) + +if test "$USE_NLS" = yes ; then + AC_ARG_WITH(textdomain, + [ --with-textdomain=PKG NLS text-domain (default is package name)], + [NLS_TEXTDOMAIN=$withval], + [NLS_TEXTDOMAIN=$PACKAGE]) + AC_DEFINE_UNQUOTED(NLS_TEXTDOMAIN,"$NLS_TEXTDOMAIN",[Define to the nls textdomain value]) + AC_SUBST(NLS_TEXTDOMAIN) +fi + +INTLDIR_MAKE= +MSG_DIR_MAKE= +SUB_MAKEFILE= + +dnl this updates SUB_MAKEFILE and MSG_DIR_MAKE: +CF_OUR_MESSAGES($1) + +if test "$USE_INCLUDED_LIBINTL" = yes ; then + if test "$nls_cv_force_use_gnu_gettext" = yes ; then + : + elif test "$nls_cv_use_gnu_gettext" = yes ; then + : + else + INTLDIR_MAKE="#" + fi + if test -z "$INTLDIR_MAKE"; then + AC_DEFINE(HAVE_LIBGETTEXT_H,1,[Define to 1 if we have libgettext.h]) + for cf_makefile in \ + $srcdir/intl/Makefile.in \ + $srcdir/intl/makefile.in + do + if test -f "$cf_makefile" ; then + SUB_MAKEFILE="$SUB_MAKEFILE `echo \"${cf_makefile}\"|sed -e 's,^'$srcdir/',,' -e 's/\.in$//'`:${cf_makefile}" + break + fi + done + fi +else + INTLDIR_MAKE="#" + if test "$USE_NLS" = yes ; then + AC_CHECK_HEADERS(libintl.h) + fi +fi + +if test -z "$INTLDIR_MAKE" ; then + CF_APPEND_TEXT(CPPFLAGS,-I../intl) +fi + +dnl FIXME: we use this in lynx (the alternative is a spurious dependency upon +dnl GNU make) +if test "$BUILD_INCLUDED_LIBINTL" = yes ; then + GT_YES="#" + GT_NO= +else + GT_YES= + GT_NO="#" +fi + +AC_SUBST(INTLDIR_MAKE) +AC_SUBST(MSG_DIR_MAKE) +AC_SUBST(GT_YES) +AC_SUBST(GT_NO) + +dnl FIXME: the underlying AM_GNU_GETTEXT macro either needs some fixes or a +dnl little documentation. It doesn't define anything so that we can ifdef our +dnl own code, except ENABLE_NLS, which is too vague to be of any use. + +if test "$USE_INCLUDED_LIBINTL" = yes ; then + if test "$nls_cv_force_use_gnu_gettext" = yes ; then + AC_DEFINE(HAVE_GETTEXT,1,[Define to 1 if we have gettext function]) + elif test "$nls_cv_use_gnu_gettext" = yes ; then + AC_DEFINE(HAVE_GETTEXT,1,[Define to 1 if we have gettext function]) + fi + if test -n "$nls_cv_header_intl" ; then + AC_DEFINE(HAVE_LIBINTL_H,1,[Define to 1 if we have header-file for libintl]) + fi +fi +])dnl +dnl --------------------------------------------------------------------------- +dnl CF_CC_ENV_FLAGS version: 8 updated: 2017/09/23 08:50:24 +dnl --------------- +dnl Check for user's environment-breakage by stuffing CFLAGS/CPPFLAGS content +dnl into CC. This will not help with broken scripts that wrap the compiler +dnl with options, but eliminates a more common category of user confusion. +dnl +dnl In particular, it addresses the problem of being able to run the C +dnl preprocessor in a consistent manner. +dnl +dnl Caveat: this also disallows blanks in the pathname for the compiler, but +dnl the nuisance of having inconsistent settings for compiler and preprocessor +dnl outweighs that limitation. +AC_DEFUN([CF_CC_ENV_FLAGS], +[ +# This should have been defined by AC_PROG_CC +: ${CC:=cc} + +AC_MSG_CHECKING(\$CC variable) +case "$CC" in +(*[[\ \ ]]-*) + AC_MSG_RESULT(broken) + AC_MSG_WARN(your environment misuses the CC variable to hold CFLAGS/CPPFLAGS options) + # humor him... + cf_prog=`echo "$CC" | sed -e 's/ / /g' -e 's/[[ ]]* / /g' -e 's/[[ ]]*[[ ]]-[[^ ]].*//'` + cf_flags=`echo "$CC" | ${AWK:-awk} -v prog="$cf_prog" '{ printf("%s", [substr]([$]0,1+length(prog))); }'` + CC="$cf_prog" + for cf_arg in $cf_flags + do + case "x$cf_arg" in + (x-[[IUDfgOW]]*) + CF_ADD_CFLAGS($cf_arg) + ;; + (*) + CC="$CC $cf_arg" + ;; + esac + done + CF_VERBOSE(resulting CC: '$CC') + CF_VERBOSE(resulting CFLAGS: '$CFLAGS') + CF_VERBOSE(resulting CPPFLAGS: '$CPPFLAGS') + ;; +(*) + AC_MSG_RESULT(ok) + ;; +esac +])dnl +dnl --------------------------------------------------------------------------- +dnl CF_CHECK_CACHE version: 12 updated: 2012/10/02 20:55:03 +dnl -------------- +dnl Check if we're accidentally using a cache from a different machine. +dnl Derive the system name, as a check for reusing the autoconf cache. +dnl +dnl If we've packaged config.guess and config.sub, run that (since it does a +dnl better job than uname). Normally we'll use AC_CANONICAL_HOST, but allow +dnl an extra parameter that we may override, e.g., for AC_CANONICAL_SYSTEM +dnl which is useful in cross-compiles. +dnl +dnl Note: we would use $ac_config_sub, but that is one of the places where +dnl autoconf 2.5x broke compatibility with autoconf 2.13 +AC_DEFUN([CF_CHECK_CACHE], +[ +if test -f $srcdir/config.guess || test -f $ac_aux_dir/config.guess ; then + ifelse([$1],,[AC_CANONICAL_HOST],[$1]) + system_name="$host_os" +else + system_name="`(uname -s -r) 2>/dev/null`" + if test -z "$system_name" ; then + system_name="`(hostname) 2>/dev/null`" + fi +fi +test -n "$system_name" && AC_DEFINE_UNQUOTED(SYSTEM_NAME,"$system_name",[Define to the system name.]) +AC_CACHE_VAL(cf_cv_system_name,[cf_cv_system_name="$system_name"]) + +test -z "$system_name" && system_name="$cf_cv_system_name" +test -n "$cf_cv_system_name" && AC_MSG_RESULT(Configuring for $cf_cv_system_name) + +if test ".$system_name" != ".$cf_cv_system_name" ; then + AC_MSG_RESULT(Cached system name ($system_name) does not agree with actual ($cf_cv_system_name)) + AC_MSG_ERROR("Please remove config.cache and try again.") +fi +])dnl +dnl --------------------------------------------------------------------------- +dnl CF_CHECK_CFLAGS version: 3 updated: 2014/07/22 05:32:57 +dnl --------------- +dnl Conditionally add to $CFLAGS and $CPPFLAGS values which are derived from +dnl a build-configuration such as imake. These have the pitfall that they +dnl often contain compiler-specific options which we cannot use, mixed with +dnl preprocessor options that we usually can. +AC_DEFUN([CF_CHECK_CFLAGS], +[ +CF_VERBOSE(checking additions to CFLAGS) +cf_check_cflags="$CFLAGS" +cf_check_cppflags="$CPPFLAGS" +CF_ADD_CFLAGS($1,yes) +if test "x$cf_check_cflags" != "x$CFLAGS" ; then +AC_TRY_LINK([#include ],[printf("Hello world");],, + [CF_VERBOSE(test-compile failed. Undoing change to \$CFLAGS) + if test "x$cf_check_cppflags" != "x$CPPFLAGS" ; then + CF_VERBOSE(but keeping change to \$CPPFLAGS) + fi + CFLAGS="$cf_check_flags"]) +fi +])dnl +dnl --------------------------------------------------------------------------- +dnl CF_CHECK_LIBTOOL_VERSION version: 1 updated: 2013/04/06 18:03:09 +dnl ------------------------ +dnl Show the version of libtool +dnl +dnl Save the version in a cache variable - this is not entirely a good thing, +dnl but the version string from libtool is very ugly, and for bug reports it +dnl might be useful to have the original string. +AC_DEFUN([CF_CHECK_LIBTOOL_VERSION],[ +if test -n "$LIBTOOL" && test "$LIBTOOL" != none +then + AC_MSG_CHECKING(version of $LIBTOOL) + CF_LIBTOOL_VERSION + AC_MSG_RESULT($cf_cv_libtool_version) + if test -z "$cf_cv_libtool_version" ; then + AC_MSG_ERROR(This is not GNU libtool) + fi +else + AC_MSG_ERROR(GNU libtool has not been found) +fi +])dnl +dnl --------------------------------------------------------------------------- +dnl CF_CLANG_COMPILER version: 2 updated: 2013/11/19 19:23:35 +dnl ----------------- +dnl Check if the given compiler is really clang. clang's C driver defines +dnl __GNUC__ (fooling the configure script into setting $GCC to yes) but does +dnl not ignore some gcc options. +dnl +dnl This macro should be run "soon" after AC_PROG_CC or AC_PROG_CPLUSPLUS, to +dnl ensure that it is not mistaken for gcc/g++. It is normally invoked from +dnl the wrappers for gcc and g++ warnings. +dnl +dnl $1 = GCC (default) or GXX +dnl $2 = CLANG_COMPILER (default) +dnl $3 = CFLAGS (default) or CXXFLAGS +AC_DEFUN([CF_CLANG_COMPILER],[ +ifelse([$2],,CLANG_COMPILER,[$2])=no + +if test "$ifelse([$1],,[$1],GCC)" = yes ; then + AC_MSG_CHECKING(if this is really Clang ifelse([$1],GXX,C++,C) compiler) + cf_save_CFLAGS="$ifelse([$3],,CFLAGS,[$3])" + ifelse([$3],,CFLAGS,[$3])="$ifelse([$3],,CFLAGS,[$3]) -Qunused-arguments" + AC_TRY_COMPILE([],[ +#ifdef __clang__ +#else +make an error +#endif +],[ifelse([$2],,CLANG_COMPILER,[$2])=yes +cf_save_CFLAGS="$cf_save_CFLAGS -Qunused-arguments" +],[]) + ifelse([$3],,CFLAGS,[$3])="$cf_save_CFLAGS" + AC_MSG_RESULT($ifelse([$2],,CLANG_COMPILER,[$2])) +fi +]) +dnl --------------------------------------------------------------------------- +dnl CF_CURSES_CHTYPE version: 8 updated: 2012/10/06 08:57:51 +dnl ---------------- +dnl Test if curses defines 'chtype' (usually a 'long' type for SysV curses). +AC_DEFUN([CF_CURSES_CHTYPE], +[ +AC_REQUIRE([CF_CURSES_CPPFLAGS])dnl +AC_CACHE_CHECK(for chtype typedef,cf_cv_chtype_decl,[ + AC_TRY_COMPILE([#include <${cf_cv_ncurses_header:-curses.h}>], + [chtype foo], + [cf_cv_chtype_decl=yes], + [cf_cv_chtype_decl=no])]) +if test $cf_cv_chtype_decl = yes ; then + AC_DEFINE(HAVE_TYPE_CHTYPE,1,[Define to 1 if chtype is declared]) + AC_CACHE_CHECK(if chtype is scalar or struct,cf_cv_chtype_type,[ + AC_TRY_COMPILE([#include <${cf_cv_ncurses_header:-curses.h}>], + [chtype foo; long x = foo], + [cf_cv_chtype_type=scalar], + [cf_cv_chtype_type=struct])]) + if test $cf_cv_chtype_type = scalar ; then + AC_DEFINE(TYPE_CHTYPE_IS_SCALAR,1,[Define to 1 if chtype is a scaler/integer]) + fi +fi +])dnl +dnl --------------------------------------------------------------------------- +dnl CF_CURSES_CONFIG version: 2 updated: 2006/10/29 11:06:27 +dnl ---------------- +dnl Tie together the configure-script macros for curses. It may be ncurses, +dnl but unless asked, we do not make a special search for ncurses. However, +dnl still check for the ncurses version number, for use in other macros. +AC_DEFUN([CF_CURSES_CONFIG], +[ +CF_CURSES_CPPFLAGS +CF_NCURSES_VERSION +CF_CURSES_LIBS +])dnl +dnl --------------------------------------------------------------------------- +dnl CF_CURSES_CPPFLAGS version: 13 updated: 2018/06/20 20:23:13 +dnl ------------------ +dnl Look for the curses headers. +AC_DEFUN([CF_CURSES_CPPFLAGS],[ + +AC_CACHE_CHECK(for extra include directories,cf_cv_curses_incdir,[ +cf_cv_curses_incdir=no +case $host_os in +(hpux10.*) + if test "x$cf_cv_screen" = "xcurses_colr" + then + test -d /usr/include/curses_colr && \ + cf_cv_curses_incdir="-I/usr/include/curses_colr" + fi + ;; +(sunos3*|sunos4*) + if test "x$cf_cv_screen" = "xcurses_5lib" + then + test -d /usr/5lib && \ + test -d /usr/5include && \ + cf_cv_curses_incdir="-I/usr/5include" + fi + ;; +esac +]) +if test "$cf_cv_curses_incdir" != no +then + CF_APPEND_TEXT(CPPFLAGS,$cf_cv_curses_incdir) +fi + +CF_CURSES_HEADER +CF_TERM_HEADER +])dnl +dnl --------------------------------------------------------------------------- +dnl CF_CURSES_FUNCS version: 19 updated: 2018/01/03 04:47:33 +dnl --------------- +dnl Curses-functions are a little complicated, since a lot of them are macros. +AC_DEFUN([CF_CURSES_FUNCS], +[ +AC_REQUIRE([CF_CURSES_CPPFLAGS])dnl +AC_REQUIRE([CF_XOPEN_CURSES]) +AC_REQUIRE([CF_CURSES_TERM_H]) +AC_REQUIRE([CF_CURSES_UNCTRL_H]) +for cf_func in $1 +do + CF_UPPER(cf_tr_func,$cf_func) + AC_MSG_CHECKING(for ${cf_func}) + CF_MSG_LOG(${cf_func}) + AC_CACHE_VAL(cf_cv_func_$cf_func,[ + eval cf_result='$ac_cv_func_'$cf_func + if test ".$cf_result" != ".no"; then + AC_TRY_LINK(CF__CURSES_HEAD, + [ +#ifndef ${cf_func} +long foo = (long)(&${cf_func}); +fprintf(stderr, "testing linkage of $cf_func:%p\n", (void *)foo); +if (foo + 1234L > 5678L) + ${cf_cv_main_return:-return}(foo != 0); +#endif + ], + [cf_result=yes], + [cf_result=no]) + fi + eval 'cf_cv_func_'$cf_func'=$cf_result' + ]) + # use the computed/retrieved cache-value: + eval 'cf_result=$cf_cv_func_'$cf_func + AC_MSG_RESULT($cf_result) + if test $cf_result != no; then + AC_DEFINE_UNQUOTED(HAVE_${cf_tr_func}) + fi +done +])dnl +dnl --------------------------------------------------------------------------- +dnl CF_CURSES_HEADER version: 5 updated: 2015/04/23 20:35:30 +dnl ---------------- +dnl Find a "curses" header file, e.g,. "curses.h", or one of the more common +dnl variations of ncurses' installs. +dnl +dnl $1 = ncurses when looking for ncurses, or is empty +AC_DEFUN([CF_CURSES_HEADER],[ +AC_CACHE_CHECK(if we have identified curses headers,cf_cv_ncurses_header,[ +cf_cv_ncurses_header=none +for cf_header in \ + ncurses.h ifelse($1,,,[$1/ncurses.h]) \ + curses.h ifelse($1,,,[$1/curses.h]) ifelse($1,,[ncurses/ncurses.h ncurses/curses.h]) +do +AC_TRY_COMPILE([#include <${cf_header}>], + [initscr(); tgoto("?", 0,0)], + [cf_cv_ncurses_header=$cf_header; break],[]) +done +]) + +if test "$cf_cv_ncurses_header" = none ; then + AC_MSG_ERROR(No curses header-files found) +fi + +# cheat, to get the right #define's for HAVE_NCURSES_H, etc. +AC_CHECK_HEADERS($cf_cv_ncurses_header) +])dnl +dnl --------------------------------------------------------------------------- +dnl CF_CURSES_LIBS version: 42 updated: 2018/06/20 20:23:13 +dnl -------------- +dnl Look for the curses libraries. Older curses implementations may require +dnl termcap/termlib to be linked as well. Call CF_CURSES_CPPFLAGS first. +AC_DEFUN([CF_CURSES_LIBS],[ + +AC_REQUIRE([CF_CURSES_CPPFLAGS])dnl +AC_MSG_CHECKING(if we have identified curses libraries) +AC_TRY_LINK([#include <${cf_cv_ncurses_header:-curses.h}>], + [initscr(); tgoto("?", 0,0)], + cf_result=yes, + cf_result=no) +AC_MSG_RESULT($cf_result) + +if test "$cf_result" = no ; then +case $host_os in +(freebsd*) + AC_CHECK_LIB(mytinfo,tgoto,[CF_ADD_LIBS(-lmytinfo)]) + ;; +(hpux10.*) + # Looking at HPUX 10.20, the Hcurses library is the oldest (1997), cur_colr + # next (1998), and xcurses "newer" (2000). There is no header file for + # Hcurses; the subdirectory curses_colr has the headers (curses.h and + # term.h) for cur_colr + if test "x$cf_cv_screen" = "xcurses_colr" + then + AC_CHECK_LIB(cur_colr,initscr,[ + CF_ADD_LIBS(-lcur_colr) + ac_cv_func_initscr=yes + ],[ + AC_CHECK_LIB(Hcurses,initscr,[ + # HP's header uses __HP_CURSES, but user claims _HP_CURSES. + CF_ADD_LIBS(-lHcurses) + CF_APPEND_TEXT(CPPFLAGS,-D__HP_CURSES -D_HP_CURSES) + ac_cv_func_initscr=yes + ])]) + fi + ;; +(linux*) + case `arch 2>/dev/null` in + (x86_64) + if test -d /lib64 + then + CF_ADD_LIBDIR(/lib64) + else + CF_ADD_LIBDIR(/lib) + fi + ;; + (*) + CF_ADD_LIBDIR(/lib) + ;; + esac + ;; +(sunos3*|sunos4*) + if test "x$cf_cv_screen" = "xcurses_5lib" + then + if test -d /usr/5lib ; then + CF_ADD_LIBDIR(/usr/5lib) + CF_ADD_LIBS(-lcurses -ltermcap) + fi + fi + ac_cv_func_initscr=yes + ;; +esac + +if test ".$ac_cv_func_initscr" != .yes ; then + cf_save_LIBS="$LIBS" + + if test ".${cf_cv_ncurses_version:-no}" != .no + then + cf_check_list="ncurses curses cursesX" + else + cf_check_list="cursesX curses ncurses" + fi + + # Check for library containing tgoto. Do this before curses library + # because it may be needed to link the test-case for initscr. + if test "x$cf_term_lib" = x + then + AC_CHECK_FUNC(tgoto,[cf_term_lib=predefined],[ + for cf_term_lib in $cf_check_list otermcap termcap tinfo termlib unknown + do + AC_CHECK_LIB($cf_term_lib,tgoto,[ + : ${cf_nculib_root:=$cf_term_lib} + break + ]) + done + ]) + fi + + # Check for library containing initscr + test "$cf_term_lib" != predefined && test "$cf_term_lib" != unknown && LIBS="-l$cf_term_lib $cf_save_LIBS" + if test "x$cf_curs_lib" = x + then + for cf_curs_lib in $cf_check_list xcurses jcurses pdcurses unknown + do + LIBS="-l$cf_curs_lib $cf_save_LIBS" + if test "$cf_term_lib" = unknown || test "$cf_term_lib" = "$cf_curs_lib" ; then + AC_MSG_CHECKING(if we can link with $cf_curs_lib library) + AC_TRY_LINK([#include <${cf_cv_ncurses_header:-curses.h}>], + [initscr()], + [cf_result=yes], + [cf_result=no]) + AC_MSG_RESULT($cf_result) + test $cf_result = yes && break + elif test "$cf_curs_lib" = "$cf_term_lib" ; then + cf_result=no + elif test "$cf_term_lib" != predefined ; then + AC_MSG_CHECKING(if we need both $cf_curs_lib and $cf_term_lib libraries) + AC_TRY_LINK([#include <${cf_cv_ncurses_header:-curses.h}>], + [initscr(); tgoto((char *)0, 0, 0);], + [cf_result=no], + [ + LIBS="-l$cf_curs_lib -l$cf_term_lib $cf_save_LIBS" + AC_TRY_LINK([#include <${cf_cv_ncurses_header:-curses.h}>], + [initscr()], + [cf_result=yes], + [cf_result=error]) + ]) + AC_MSG_RESULT($cf_result) + test $cf_result != error && break + fi + done + fi + test $cf_curs_lib = unknown && AC_MSG_ERROR(no curses library found) +fi +fi + +])dnl +dnl --------------------------------------------------------------------------- +dnl CF_CURSES_TERM_H version: 11 updated: 2015/04/15 19:08:48 +dnl ---------------- +dnl SVr4 curses should have term.h as well (where it puts the definitions of +dnl the low-level interface). This may not be true in old/broken implementations, +dnl as well as in misconfigured systems (e.g., gcc configured for Solaris 2.4 +dnl running with Solaris 2.5.1). +AC_DEFUN([CF_CURSES_TERM_H], +[ +AC_REQUIRE([CF_CURSES_CPPFLAGS])dnl + +AC_CACHE_CHECK(for term.h, cf_cv_term_header,[ + +# If we found , look for , but always look +# for if we do not find the variant. + +cf_header_list="term.h ncurses/term.h ncursesw/term.h" + +case ${cf_cv_ncurses_header:-curses.h} in +(*/*) + cf_header_item=`echo ${cf_cv_ncurses_header:-curses.h} | sed -e 's%\..*%%' -e 's%/.*%/%'`term.h + cf_header_list="$cf_header_item $cf_header_list" + ;; +esac + +for cf_header in $cf_header_list +do + AC_TRY_COMPILE([ +#include <${cf_cv_ncurses_header:-curses.h}> +#include <${cf_header}>], + [WINDOW *x], + [cf_cv_term_header=$cf_header + break], + [cf_cv_term_header=no]) +done + +case $cf_cv_term_header in +(no) + # If curses is ncurses, some packagers still mess it up by trying to make + # us use GNU termcap. This handles the most common case. + for cf_header in ncurses/term.h ncursesw/term.h + do + AC_TRY_COMPILE([ +#include <${cf_cv_ncurses_header:-curses.h}> +#ifdef NCURSES_VERSION +#include <${cf_header}> +#else +make an error +#endif], + [WINDOW *x], + [cf_cv_term_header=$cf_header + break], + [cf_cv_term_header=no]) + done + ;; +esac +]) + +case $cf_cv_term_header in +(term.h) + AC_DEFINE(HAVE_TERM_H,1,[Define to 1 if we have term.h]) + ;; +(ncurses/term.h) + AC_DEFINE(HAVE_NCURSES_TERM_H,1,[Define to 1 if we have ncurses/term.h]) + ;; +(ncursesw/term.h) + AC_DEFINE(HAVE_NCURSESW_TERM_H,1,[Define to 1 if we have ncursesw/term.h]) + ;; +esac +])dnl +dnl --------------------------------------------------------------------------- +dnl CF_CURSES_UNCTRL_H version: 4 updated: 2015/04/15 19:08:48 +dnl ------------------ +dnl Any X/Open curses implementation must have unctrl.h, but ncurses packages +dnl may put it in a subdirectory (along with ncurses' other headers, of +dnl course). Packages which put the headers in inconsistent locations are +dnl broken). +AC_DEFUN([CF_CURSES_UNCTRL_H], +[ +AC_REQUIRE([CF_CURSES_CPPFLAGS])dnl + +AC_CACHE_CHECK(for unctrl.h, cf_cv_unctrl_header,[ + +# If we found , look for , but always look +# for if we do not find the variant. + +cf_header_list="unctrl.h ncurses/unctrl.h ncursesw/unctrl.h" + +case ${cf_cv_ncurses_header:-curses.h} in +(*/*) + cf_header_item=`echo ${cf_cv_ncurses_header:-curses.h} | sed -e 's%\..*%%' -e 's%/.*%/%'`unctrl.h + cf_header_list="$cf_header_item $cf_header_list" + ;; +esac + +for cf_header in $cf_header_list +do + AC_TRY_COMPILE([ +#include <${cf_cv_ncurses_header:-curses.h}> +#include <${cf_header}>], + [WINDOW *x], + [cf_cv_unctrl_header=$cf_header + break], + [cf_cv_unctrl_header=no]) +done +]) + +case $cf_cv_unctrl_header in +(no) + AC_MSG_WARN(unctrl.h header not found) + ;; +esac + +case $cf_cv_unctrl_header in +(unctrl.h) + AC_DEFINE(HAVE_UNCTRL_H,1,[Define to 1 if we have unctrl.h]) + ;; +(ncurses/unctrl.h) + AC_DEFINE(HAVE_NCURSES_UNCTRL_H,1,[Define to 1 if we have ncurses/unctrl.h]) + ;; +(ncursesw/unctrl.h) + AC_DEFINE(HAVE_NCURSESW_UNCTRL_H,1,[Define to 1 if we have ncursesw/unctrl.h]) + ;; +esac +])dnl +dnl --------------------------------------------------------------------------- +dnl CF_CURSES_WACS_MAP version: 6 updated: 2012/10/06 08:57:51 +dnl ------------------ +dnl Check for likely values of wacs_map[]. +AC_DEFUN([CF_CURSES_WACS_MAP], +[ +AC_CACHE_CHECK(for wide alternate character set array, cf_cv_curses_wacs_map,[ + cf_cv_curses_wacs_map=unknown + for name in wacs_map _wacs_map __wacs_map _nc_wacs _wacs_char + do + AC_TRY_LINK([ +#ifndef _XOPEN_SOURCE_EXTENDED +#define _XOPEN_SOURCE_EXTENDED +#endif +#include <${cf_cv_ncurses_header:-curses.h}>], + [void *foo = &($name['k'])], + [cf_cv_curses_wacs_map=$name + break]) + done]) + +test "$cf_cv_curses_wacs_map" != unknown && AC_DEFINE_UNQUOTED(CURSES_WACS_ARRAY,$cf_cv_curses_wacs_map,[Define to name of (n)curses wide-character array]) +])dnl +dnl --------------------------------------------------------------------------- +dnl CF_CURSES_WACS_SYMBOLS version: 2 updated: 2012/10/06 08:57:51 +dnl ---------------------- +dnl Do a check to see if the WACS_xxx constants are defined compatibly with +dnl X/Open Curses. In particular, NetBSD's implementation of the WACS_xxx +dnl constants is broken since those constants do not point to cchar_t's. +AC_DEFUN([CF_CURSES_WACS_SYMBOLS], +[ +AC_REQUIRE([CF_CURSES_WACS_MAP]) + +AC_CACHE_CHECK(for wide alternate character constants, cf_cv_curses_wacs_symbols,[ +cf_cv_curses_wacs_symbols=no +if test "$cf_cv_curses_wacs_map" != unknown +then + AC_TRY_LINK([ +#ifndef _XOPEN_SOURCE_EXTENDED +#define _XOPEN_SOURCE_EXTENDED +#endif +#include <${cf_cv_ncurses_header:-curses.h}>], + [cchar_t *foo = WACS_PLUS; + $cf_cv_curses_wacs_map['k'] = *WACS_PLUS], + [cf_cv_curses_wacs_symbols=yes]) +else + AC_TRY_LINK([ +#ifndef _XOPEN_SOURCE_EXTENDED +#define _XOPEN_SOURCE_EXTENDED +#endif +#include <${cf_cv_ncurses_header:-curses.h}>], + [cchar_t *foo = WACS_PLUS], + [cf_cv_curses_wacs_symbols=yes]) +fi +]) + +test "$cf_cv_curses_wacs_symbols" != no && AC_DEFINE(CURSES_WACS_SYMBOLS,1,[Define to 1 if (n)curses supports wide-character WACS_ symbols]) +])dnl +dnl --------------------------------------------------------------------------- +dnl CF_CURSES_WGETPARENT version: 3 updated: 2012/10/06 08:57:51 +dnl -------------------- +dnl Check for curses support for directly determining the parent of a given +dnl window. Some implementations make this difficult, so we provide for +dnl defining an application-specific function that gives this functionality. +dnl +dnl $1 = name of function to use if the feature is missing +AC_DEFUN([CF_CURSES_WGETPARENT],[ +CF_CURSES_FUNCS(wgetparent) +if test "x$cf_cv_func_wgetparent" != xyes +then + AC_MSG_CHECKING(if WINDOW has _parent member) + AC_TRY_COMPILE([#include <${cf_cv_ncurses_header:-curses.h}>], + [WINDOW *p = stdscr->_parent], + [cf_window__parent=yes], + [cf_window__parent=no]) + AC_MSG_RESULT($cf_window__parent) + if test "$cf_window__parent" = yes + then + AC_DEFINE(HAVE_WINDOW__PARENT,1,[Define to 1 if WINDOW struct has _parent member]) + fi +fi +])dnl +dnl --------------------------------------------------------------------------- +dnl CF_DIRNAME version: 4 updated: 2002/12/21 19:25:52 +dnl ---------- +dnl "dirname" is not portable, so we fake it with a shell script. +AC_DEFUN([CF_DIRNAME],[$1=`echo $2 | sed -e 's%/[[^/]]*$%%'`])dnl +dnl --------------------------------------------------------------------------- +dnl CF_DISABLE_ECHO version: 13 updated: 2015/04/18 08:56:57 +dnl --------------- +dnl You can always use "make -n" to see the actual options, but it's hard to +dnl pick out/analyze warning messages when the compile-line is long. +dnl +dnl Sets: +dnl ECHO_LT - symbol to control if libtool is verbose +dnl ECHO_LD - symbol to prefix "cc -o" lines +dnl RULE_CC - symbol to put before implicit "cc -c" lines (e.g., .c.o) +dnl SHOW_CC - symbol to put before explicit "cc -c" lines +dnl ECHO_CC - symbol to put before any "cc" line +dnl +AC_DEFUN([CF_DISABLE_ECHO],[ +AC_MSG_CHECKING(if you want to see long compiling messages) +CF_ARG_DISABLE(echo, + [ --disable-echo do not display "compiling" commands], + [ + ECHO_LT='--silent' + ECHO_LD='@echo linking [$]@;' + RULE_CC='@echo compiling [$]<' + SHOW_CC='@echo compiling [$]@' + ECHO_CC='@' +],[ + ECHO_LT='' + ECHO_LD='' + RULE_CC='' + SHOW_CC='' + ECHO_CC='' +]) +AC_MSG_RESULT($enableval) +AC_SUBST(ECHO_LT) +AC_SUBST(ECHO_LD) +AC_SUBST(RULE_CC) +AC_SUBST(SHOW_CC) +AC_SUBST(ECHO_CC) +])dnl +dnl --------------------------------------------------------------------------- +dnl CF_DISABLE_LIBTOOL_VERSION version: 3 updated: 2015/04/17 21:13:04 +dnl -------------------------- +dnl Check if we should use the libtool 1.5 feature "-version-number" instead of +dnl the older "-version-info" feature. The newer feature allows us to use +dnl version numbering on shared libraries which make them compatible with +dnl various systems. +AC_DEFUN([CF_DISABLE_LIBTOOL_VERSION], +[ +AC_MSG_CHECKING(if libtool -version-number should be used) +CF_ARG_DISABLE(libtool-version, + [ --disable-libtool-version enable to use libtool's incompatible naming scheme], + [cf_libtool_version=no], + [cf_libtool_version=yes]) +AC_MSG_RESULT($cf_libtool_version) + +if test "$cf_libtool_version" = yes ; then + LIBTOOL_VERSION="-version-number" +else + LIBTOOL_VERSION="-version-info" + case "x$VERSION" in + (x) + AC_MSG_WARN(VERSION was not set) + ;; + (x*.*.*) + ABI_VERSION="$VERSION" + CF_VERBOSE(ABI_VERSION: $ABI_VERSION) + ;; + (x*:*:*) + ABI_VERSION=`echo "$VERSION" | sed -e 's/:/./g'` + CF_VERBOSE(ABI_VERSION: $ABI_VERSION) + ;; + (*) + AC_MSG_WARN(unexpected VERSION value: $VERSION) + ;; + esac +fi + +AC_SUBST(ABI_VERSION) +AC_SUBST(LIBTOOL_VERSION) +])dnl +dnl --------------------------------------------------------------------------- +dnl CF_DISABLE_RPATH_HACK version: 2 updated: 2011/02/13 13:31:33 +dnl --------------------- +dnl The rpath-hack makes it simpler to build programs, particularly with the +dnl *BSD ports which may have essential libraries in unusual places. But it +dnl can interfere with building an executable for the base system. Use this +dnl option in that case. +AC_DEFUN([CF_DISABLE_RPATH_HACK], +[ +AC_MSG_CHECKING(if rpath-hack should be disabled) +CF_ARG_DISABLE(rpath-hack, + [ --disable-rpath-hack don't add rpath options for additional libraries], + [cf_disable_rpath_hack=yes], + [cf_disable_rpath_hack=no]) +AC_MSG_RESULT($cf_disable_rpath_hack) +if test "$cf_disable_rpath_hack" = no ; then + CF_RPATH_HACK +fi +]) +dnl --------------------------------------------------------------------------- +dnl CF_ENABLE_RPATH version: 2 updated: 2010/03/27 18:39:42 +dnl --------------- +dnl Check if the rpath option should be used, setting cache variable +dnl cf_cv_enable_rpath if so. +AC_DEFUN([CF_ENABLE_RPATH], +[ +AC_MSG_CHECKING(if rpath option should be used) +AC_ARG_ENABLE(rpath, +[ --enable-rpath use rpath option when generating shared libraries], +[cf_cv_enable_rpath=$enableval], +[cf_cv_enable_rpath=no]) +AC_MSG_RESULT($cf_cv_enable_rpath) +])dnl +dnl --------------------------------------------------------------------------- +dnl CF_FIND_LIBRARY version: 9 updated: 2008/03/23 14:48:54 +dnl --------------- +dnl Look for a non-standard library, given parameters for AC_TRY_LINK. We +dnl prefer a standard location, and use -L options only if we do not find the +dnl library in the standard library location(s). +dnl $1 = library name +dnl $2 = library class, usually the same as library name +dnl $3 = includes +dnl $4 = code fragment to compile/link +dnl $5 = corresponding function-name +dnl $6 = flag, nonnull if failure should not cause an error-exit +dnl +dnl Sets the variable "$cf_libdir" as a side-effect, so we can see if we had +dnl to use a -L option. +AC_DEFUN([CF_FIND_LIBRARY], +[ + eval 'cf_cv_have_lib_'$1'=no' + cf_libdir="" + AC_CHECK_FUNC($5, + eval 'cf_cv_have_lib_'$1'=yes',[ + cf_save_LIBS="$LIBS" + AC_MSG_CHECKING(for $5 in -l$1) + LIBS="-l$1 $LIBS" + AC_TRY_LINK([$3],[$4], + [AC_MSG_RESULT(yes) + eval 'cf_cv_have_lib_'$1'=yes' + ], + [AC_MSG_RESULT(no) + CF_LIBRARY_PATH(cf_search,$2) + for cf_libdir in $cf_search + do + AC_MSG_CHECKING(for -l$1 in $cf_libdir) + LIBS="-L$cf_libdir -l$1 $cf_save_LIBS" + AC_TRY_LINK([$3],[$4], + [AC_MSG_RESULT(yes) + eval 'cf_cv_have_lib_'$1'=yes' + break], + [AC_MSG_RESULT(no) + LIBS="$cf_save_LIBS"]) + done + ]) + ]) +eval 'cf_found_library=[$]cf_cv_have_lib_'$1 +ifelse($6,,[ +if test $cf_found_library = no ; then + AC_MSG_ERROR(Cannot link $1 library) +fi +]) +])dnl +dnl --------------------------------------------------------------------------- +dnl CF_FIND_LINKAGE version: 21 updated: 2018/06/20 20:23:13 +dnl --------------- +dnl Find a library (specifically the linkage used in the code fragment), +dnl searching for it if it is not already in the library path. +dnl See also CF_ADD_SEARCHPATH. +dnl +dnl Parameters (4-on are optional): +dnl $1 = headers for library entrypoint +dnl $2 = code fragment for library entrypoint +dnl $3 = the library name without the "-l" option or ".so" suffix. +dnl $4 = action to perform if successful (default: update CPPFLAGS, etc) +dnl $5 = action to perform if not successful +dnl $6 = module name, if not the same as the library name +dnl $7 = extra libraries +dnl +dnl Sets these variables: +dnl $cf_cv_find_linkage_$3 - yes/no according to whether linkage is found +dnl $cf_cv_header_path_$3 - include-directory if needed +dnl $cf_cv_library_path_$3 - library-directory if needed +dnl $cf_cv_library_file_$3 - library-file if needed, e.g., -l$3 +AC_DEFUN([CF_FIND_LINKAGE],[ + +# If the linkage is not already in the $CPPFLAGS/$LDFLAGS configuration, these +# will be set on completion of the AC_TRY_LINK below. +cf_cv_header_path_$3= +cf_cv_library_path_$3= + +CF_MSG_LOG([Starting [FIND_LINKAGE]($3,$6)]) + +cf_save_LIBS="$LIBS" + +AC_TRY_LINK([$1],[$2],[ + cf_cv_find_linkage_$3=yes + cf_cv_header_path_$3=/usr/include + cf_cv_library_path_$3=/usr/lib +],[ + +LIBS="-l$3 $7 $cf_save_LIBS" + +AC_TRY_LINK([$1],[$2],[ + cf_cv_find_linkage_$3=yes + cf_cv_header_path_$3=/usr/include + cf_cv_library_path_$3=/usr/lib + cf_cv_library_file_$3="-l$3" +],[ + cf_cv_find_linkage_$3=no + LIBS="$cf_save_LIBS" + + CF_VERBOSE(find linkage for $3 library) + CF_MSG_LOG([Searching for headers in [FIND_LINKAGE]($3,$6)]) + + cf_save_CPPFLAGS="$CPPFLAGS" + cf_test_CPPFLAGS="$CPPFLAGS" + + CF_HEADER_PATH(cf_search,ifelse([$6],,[$3],[$6])) + for cf_cv_header_path_$3 in $cf_search + do + if test -d $cf_cv_header_path_$3 ; then + CF_VERBOSE(... testing $cf_cv_header_path_$3) + CPPFLAGS="$cf_save_CPPFLAGS" + CF_APPEND_TEXT(CPPFLAGS,-I$cf_cv_header_path_$3) + AC_TRY_COMPILE([$1],[$2],[ + CF_VERBOSE(... found $3 headers in $cf_cv_header_path_$3) + cf_cv_find_linkage_$3=maybe + cf_test_CPPFLAGS="$CPPFLAGS" + break],[ + CPPFLAGS="$cf_save_CPPFLAGS" + ]) + fi + done + + if test "$cf_cv_find_linkage_$3" = maybe ; then + + CF_MSG_LOG([Searching for $3 library in [FIND_LINKAGE]($3,$6)]) + + cf_save_LIBS="$LIBS" + cf_save_LDFLAGS="$LDFLAGS" + + ifelse([$6],,,[ + CPPFLAGS="$cf_test_CPPFLAGS" + LIBS="-l$3 $7 $cf_save_LIBS" + AC_TRY_LINK([$1],[$2],[ + CF_VERBOSE(... found $3 library in system) + cf_cv_find_linkage_$3=yes]) + CPPFLAGS="$cf_save_CPPFLAGS" + LIBS="$cf_save_LIBS" + ]) + + if test "$cf_cv_find_linkage_$3" != yes ; then + CF_LIBRARY_PATH(cf_search,$3) + for cf_cv_library_path_$3 in $cf_search + do + if test -d $cf_cv_library_path_$3 ; then + CF_VERBOSE(... testing $cf_cv_library_path_$3) + CPPFLAGS="$cf_test_CPPFLAGS" + LIBS="-l$3 $7 $cf_save_LIBS" + LDFLAGS="$cf_save_LDFLAGS -L$cf_cv_library_path_$3" + AC_TRY_LINK([$1],[$2],[ + CF_VERBOSE(... found $3 library in $cf_cv_library_path_$3) + cf_cv_find_linkage_$3=yes + cf_cv_library_file_$3="-l$3" + break],[ + CPPFLAGS="$cf_save_CPPFLAGS" + LIBS="$cf_save_LIBS" + LDFLAGS="$cf_save_LDFLAGS" + ]) + fi + done + CPPFLAGS="$cf_save_CPPFLAGS" + LDFLAGS="$cf_save_LDFLAGS" + fi + + else + cf_cv_find_linkage_$3=no + fi + ],$7) +]) + +LIBS="$cf_save_LIBS" + +if test "$cf_cv_find_linkage_$3" = yes ; then +ifelse([$4],,[ + CF_ADD_INCDIR($cf_cv_header_path_$3) + CF_ADD_LIBDIR($cf_cv_library_path_$3) + CF_ADD_LIB($3) +],[$4]) +else +ifelse([$5],,AC_MSG_WARN(Cannot find $3 library),[$5]) +fi +])dnl +dnl --------------------------------------------------------------------------- +dnl CF_FORGET_TOOL version: 1 updated: 2013/04/06 18:03:09 +dnl -------------- +dnl Forget that we saw the given tool. +AC_DEFUN([CF_FORGET_TOOL],[ +unset ac_cv_prog_ac_ct_$1 +unset ac_ct_$1 +unset $1 +])dnl +dnl --------------------------------------------------------------------------- +dnl CF_FUNC_WAIT version: 3 updated: 2012/10/06 08:57:51 +dnl ------------ +dnl Test for the presence of , 'union wait', arg-type of 'wait()' +dnl and/or 'waitpid()'. +dnl +dnl Note that we cannot simply grep for 'union wait' in the wait.h file, +dnl because some Posix systems turn this on only when a BSD variable is +dnl defined. +dnl +dnl I don't use AC_HEADER_SYS_WAIT, because it defines HAVE_SYS_WAIT_H, which +dnl would conflict with an attempt to test that header directly. +dnl +AC_DEFUN([CF_FUNC_WAIT], +[ +AC_REQUIRE([CF_UNION_WAIT]) +if test $cf_cv_type_unionwait = yes; then + + AC_MSG_CHECKING(if union wait can be used as wait-arg) + AC_CACHE_VAL(cf_cv_arg_union_wait,[ + AC_TRY_COMPILE($cf_wait_headers, + [union wait x; wait(&x)], + [cf_cv_arg_union_wait=yes], + [cf_cv_arg_union_wait=no]) + ]) + AC_MSG_RESULT($cf_cv_arg_union_wait) + test $cf_cv_arg_union_wait = yes && AC_DEFINE(WAIT_USES_UNION,1,[Define to 1 if wait() uses a union parameter]) + + AC_MSG_CHECKING(if union wait can be used as waitpid-arg) + AC_CACHE_VAL(cf_cv_arg_union_waitpid,[ + AC_TRY_COMPILE($cf_wait_headers, + [union wait x; waitpid(0, &x, 0)], + [cf_cv_arg_union_waitpid=yes], + [cf_cv_arg_union_waitpid=no]) + ]) + AC_MSG_RESULT($cf_cv_arg_union_waitpid) + test $cf_cv_arg_union_waitpid = yes && AC_DEFINE(WAITPID_USES_UNION,1,[Define to 1 if waitpid() uses a union parameter]) + +fi +])dnl +dnl --------------------------------------------------------------------------- +dnl CF_GCC_ATTRIBUTES version: 17 updated: 2015/04/12 15:39:00 +dnl ----------------- +dnl Test for availability of useful gcc __attribute__ directives to quiet +dnl compiler warnings. Though useful, not all are supported -- and contrary +dnl to documentation, unrecognized directives cause older compilers to barf. +AC_DEFUN([CF_GCC_ATTRIBUTES], +[ +if test "$GCC" = yes +then +cat > conftest.i < conftest.$ac_ext <&AC_FD_CC + + case $cf_attribute in + (printf) + cf_printf_attribute=yes + cat >conftest.h <conftest.h <conftest.h <>confdefs.h + case $cf_attribute in + (noreturn) + AC_DEFINE_UNQUOTED(GCC_NORETURN,$cf_directive,[Define to noreturn-attribute for gcc]) + ;; + (printf) + cf_value='/* nothing */' + if test "$cf_printf_attribute" != no ; then + cf_value='__attribute__((format(printf,fmt,var)))' + AC_DEFINE(GCC_PRINTF,1,[Define to 1 if the compiler supports gcc-like printf attribute.]) + fi + AC_DEFINE_UNQUOTED(GCC_PRINTFLIKE(fmt,var),$cf_value,[Define to printf-attribute for gcc]) + ;; + (scanf) + cf_value='/* nothing */' + if test "$cf_scanf_attribute" != no ; then + cf_value='__attribute__((format(scanf,fmt,var)))' + AC_DEFINE(GCC_SCANF,1,[Define to 1 if the compiler supports gcc-like scanf attribute.]) + fi + AC_DEFINE_UNQUOTED(GCC_SCANFLIKE(fmt,var),$cf_value,[Define to sscanf-attribute for gcc]) + ;; + (unused) + AC_DEFINE_UNQUOTED(GCC_UNUSED,$cf_directive,[Define to unused-attribute for gcc]) + ;; + esac + fi + done +else + fgrep define conftest.i >>confdefs.h +fi +rm -rf conftest* +fi +])dnl +dnl --------------------------------------------------------------------------- +dnl CF_GCC_VERSION version: 7 updated: 2012/10/18 06:46:33 +dnl -------------- +dnl Find version of gcc +AC_DEFUN([CF_GCC_VERSION],[ +AC_REQUIRE([AC_PROG_CC]) +GCC_VERSION=none +if test "$GCC" = yes ; then + AC_MSG_CHECKING(version of $CC) + GCC_VERSION="`${CC} --version 2>/dev/null | sed -e '2,$d' -e 's/^.*(GCC[[^)]]*) //' -e 's/^.*(Debian[[^)]]*) //' -e 's/^[[^0-9.]]*//' -e 's/[[^0-9.]].*//'`" + test -z "$GCC_VERSION" && GCC_VERSION=unknown + AC_MSG_RESULT($GCC_VERSION) +fi +])dnl +dnl --------------------------------------------------------------------------- +dnl CF_GCC_WARNINGS version: 33 updated: 2018/06/20 20:23:13 +dnl --------------- +dnl Check if the compiler supports useful warning options. There's a few that +dnl we don't use, simply because they're too noisy: +dnl +dnl -Wconversion (useful in older versions of gcc, but not in gcc 2.7.x) +dnl -Wredundant-decls (system headers make this too noisy) +dnl -Wtraditional (combines too many unrelated messages, only a few useful) +dnl -Wwrite-strings (too noisy, but should review occasionally). This +dnl is enabled for ncurses using "--enable-const". +dnl -pedantic +dnl +dnl Parameter: +dnl $1 is an optional list of gcc warning flags that a particular +dnl application might want to use, e.g., "no-unused" for +dnl -Wno-unused +dnl Special: +dnl If $with_ext_const is "yes", add a check for -Wwrite-strings +dnl +AC_DEFUN([CF_GCC_WARNINGS], +[ +AC_REQUIRE([CF_GCC_VERSION]) +CF_INTEL_COMPILER(GCC,INTEL_COMPILER,CFLAGS) +CF_CLANG_COMPILER(GCC,CLANG_COMPILER,CFLAGS) + +cat > conftest.$ac_ext <],[ + #if __GLIBC__ > 0 && __GLIBC_MINOR__ >= 0 + return 0; + #else + # error not GNU C library + #endif], + [cf_cv_gnu_library=yes], + [cf_cv_gnu_library=no]) +]) + +if test x$cf_cv_gnu_library = xyes; then + + # With glibc 2.19 (13 years after this check was begun), _DEFAULT_SOURCE + # was changed to help a little... + AC_CACHE_CHECK(if _DEFAULT_SOURCE can be used as a basis,cf_cv_gnu_library_219,[ + cf_save="$CPPFLAGS" + CF_APPEND_TEXT(CPPFLAGS,-D_DEFAULT_SOURCE) + AC_TRY_COMPILE([#include ],[ + #if (__GLIBC__ == 2 && __GLIBC_MINOR__ >= 19) || (__GLIBC__ > 2) + return 0; + #else + # error GNU C library __GLIBC__.__GLIBC_MINOR__ is too old + #endif], + [cf_cv_gnu_library_219=yes], + [cf_cv_gnu_library_219=no]) + CPPFLAGS="$cf_save" + ]) + + if test "x$cf_cv_gnu_library_219" = xyes; then + cf_save="$CPPFLAGS" + AC_CACHE_CHECK(if _XOPEN_SOURCE=$cf_gnu_xopen_source works with _DEFAULT_SOURCE,cf_cv_gnu_dftsrc_219,[ + CF_ADD_CFLAGS(-D_DEFAULT_SOURCE -D_XOPEN_SOURCE=$cf_gnu_xopen_source) + AC_TRY_COMPILE([ + #include + #include + ],[ + #if (_XOPEN_SOURCE >= $cf_gnu_xopen_source) && (MB_LEN_MAX > 1) + return 0; + #else + # error GNU C library is too old + #endif], + [cf_cv_gnu_dftsrc_219=yes], + [cf_cv_gnu_dftsrc_219=no]) + ]) + test "x$cf_cv_gnu_dftsrc_219" = "xyes" || CPPFLAGS="$cf_save" + else + cf_cv_gnu_dftsrc_219=maybe + fi + + if test "x$cf_cv_gnu_dftsrc_219" != xyes; then + + AC_CACHE_CHECK(if we must define _GNU_SOURCE,cf_cv_gnu_source,[ + AC_TRY_COMPILE([#include ],[ + #ifndef _XOPEN_SOURCE + #error expected _XOPEN_SOURCE to be defined + #endif], + [cf_cv_gnu_source=no], + [cf_save="$CPPFLAGS" + CF_ADD_CFLAGS(-D_GNU_SOURCE) + AC_TRY_COMPILE([#include ],[ + #ifdef _XOPEN_SOURCE + #error expected _XOPEN_SOURCE to be undefined + #endif], + [cf_cv_gnu_source=no], + [cf_cv_gnu_source=yes]) + CPPFLAGS="$cf_save" + ]) + ]) + + if test "$cf_cv_gnu_source" = yes + then + AC_CACHE_CHECK(if we should also define _DEFAULT_SOURCE,cf_cv_default_source,[ + CF_APPEND_TEXT(CPPFLAGS,-D_GNU_SOURCE) + AC_TRY_COMPILE([#include ],[ + #ifdef _DEFAULT_SOURCE + #error expected _DEFAULT_SOURCE to be undefined + #endif], + [cf_cv_default_source=no], + [cf_cv_default_source=yes]) + ]) + if test "$cf_cv_default_source" = yes + then + CF_APPEND_TEXT(CPPFLAGS,-D_DEFAULT_SOURCE) + fi + fi + fi + +fi +])dnl +dnl --------------------------------------------------------------------------- +dnl CF_HEADERS_SH version: 1 updated: 2007/07/04 15:37:05 +dnl ------------- +dnl Setup variables needed to construct headers-sh +AC_DEFUN([CF_HEADERS_SH],[ +PACKAGE_PREFIX=$1 +PACKAGE_CONFIG=$2 +AC_SUBST(PACKAGE_PREFIX) +AC_SUBST(PACKAGE_CONFIG) +EXTRA_OUTPUT="$EXTRA_OUTPUT headers-sh:$srcdir/headers-sh.in" +]) +dnl --------------------------------------------------------------------------- +dnl CF_HEADER_PATH version: 13 updated: 2015/04/15 19:08:48 +dnl -------------- +dnl Construct a search-list of directories for a nonstandard header-file +dnl +dnl Parameters +dnl $1 = the variable to return as result +dnl $2 = the package name +AC_DEFUN([CF_HEADER_PATH], +[ +$1= + +# collect the current set of include-directories from compiler flags +cf_header_path_list="" +if test -n "${CFLAGS}${CPPFLAGS}" ; then + for cf_header_path in $CPPFLAGS $CFLAGS + do + case $cf_header_path in + (-I*) + cf_header_path=`echo ".$cf_header_path" |sed -e 's/^...//' -e 's,/include$,,'` + CF_ADD_SUBDIR_PATH($1,$2,include,$cf_header_path,NONE) + cf_header_path_list="$cf_header_path_list [$]$1" + ;; + esac + done +fi + +# add the variations for the package we are looking for +CF_SUBDIR_PATH($1,$2,include) + +test "$includedir" != NONE && \ +test "$includedir" != "/usr/include" && \ +test -d "$includedir" && { + test -d $includedir && $1="[$]$1 $includedir" + test -d $includedir/$2 && $1="[$]$1 $includedir/$2" +} + +test "$oldincludedir" != NONE && \ +test "$oldincludedir" != "/usr/include" && \ +test -d "$oldincludedir" && { + test -d $oldincludedir && $1="[$]$1 $oldincludedir" + test -d $oldincludedir/$2 && $1="[$]$1 $oldincludedir/$2" +} + +$1="[$]$1 $cf_header_path_list" +])dnl +dnl --------------------------------------------------------------------------- +dnl CF_INTEL_COMPILER version: 7 updated: 2015/04/12 15:39:00 +dnl ----------------- +dnl Check if the given compiler is really the Intel compiler for Linux. It +dnl tries to imitate gcc, but does not return an error when it finds a mismatch +dnl between prototypes, e.g., as exercised by CF_MISSING_CHECK. +dnl +dnl This macro should be run "soon" after AC_PROG_CC or AC_PROG_CPLUSPLUS, to +dnl ensure that it is not mistaken for gcc/g++. It is normally invoked from +dnl the wrappers for gcc and g++ warnings. +dnl +dnl $1 = GCC (default) or GXX +dnl $2 = INTEL_COMPILER (default) or INTEL_CPLUSPLUS +dnl $3 = CFLAGS (default) or CXXFLAGS +AC_DEFUN([CF_INTEL_COMPILER],[ +AC_REQUIRE([AC_CANONICAL_HOST]) +ifelse([$2],,INTEL_COMPILER,[$2])=no + +if test "$ifelse([$1],,[$1],GCC)" = yes ; then + case $host_os in + (linux*|gnu*) + AC_MSG_CHECKING(if this is really Intel ifelse([$1],GXX,C++,C) compiler) + cf_save_CFLAGS="$ifelse([$3],,CFLAGS,[$3])" + ifelse([$3],,CFLAGS,[$3])="$ifelse([$3],,CFLAGS,[$3]) -no-gcc" + AC_TRY_COMPILE([],[ +#ifdef __INTEL_COMPILER +#else +make an error +#endif +],[ifelse([$2],,INTEL_COMPILER,[$2])=yes +cf_save_CFLAGS="$cf_save_CFLAGS -we147" +],[]) + ifelse([$3],,CFLAGS,[$3])="$cf_save_CFLAGS" + AC_MSG_RESULT($ifelse([$2],,INTEL_COMPILER,[$2])) + ;; + esac +fi +])dnl +dnl --------------------------------------------------------------------------- +dnl CF_LARGEFILE version: 11 updated: 2018/06/20 20:23:13 +dnl ------------ +dnl Add checks for large file support. +AC_DEFUN([CF_LARGEFILE],[ +ifdef([AC_FUNC_FSEEKO],[ + AC_SYS_LARGEFILE + if test "$enable_largefile" != no ; then + AC_FUNC_FSEEKO + + # Normally we would collect these definitions in the config.h, + # but (like _XOPEN_SOURCE), some environments rely on having these + # defined before any of the system headers are included. Another + # case comes up with C++, e.g., on AIX the compiler compiles the + # header files by themselves before looking at the body files it is + # told to compile. For ncurses, those header files do not include + # the config.h + if test "$ac_cv_sys_large_files" != no + then + CF_APPEND_TEXT(CPPFLAGS,-D_LARGE_FILES) + fi + if test "$ac_cv_sys_largefile_source" != no + then + CF_APPEND_TEXT(CPPFLAGS,-D_LARGEFILE_SOURCE) + fi + if test "$ac_cv_sys_file_offset_bits" != no + then + CF_APPEND_TEXT(CPPFLAGS,-D_FILE_OFFSET_BITS=$ac_cv_sys_file_offset_bits) + fi + + AC_CACHE_CHECK(whether to use struct dirent64, cf_cv_struct_dirent64,[ + AC_TRY_COMPILE([ +#pragma GCC diagnostic error "-Wincompatible-pointer-types" +#include +#include + ],[ + /* if transitional largefile support is setup, this is true */ + extern struct dirent64 * readdir(DIR *); + struct dirent64 *x = readdir((DIR *)0); + struct dirent *y = readdir((DIR *)0); + int z = x - y; + ], + [cf_cv_struct_dirent64=yes], + [cf_cv_struct_dirent64=no]) + ]) + test "$cf_cv_struct_dirent64" = yes && AC_DEFINE(HAVE_STRUCT_DIRENT64,1,[Define to 1 if we have struct dirent64]) + fi +]) +]) +dnl --------------------------------------------------------------------------- +dnl CF_LD_RPATH_OPT version: 7 updated: 2016/02/20 18:01:19 +dnl --------------- +dnl For the given system and compiler, find the compiler flags to pass to the +dnl loader to use the "rpath" feature. +AC_DEFUN([CF_LD_RPATH_OPT], +[ +AC_REQUIRE([CF_CHECK_CACHE]) + +LD_RPATH_OPT= +AC_MSG_CHECKING(for an rpath option) +case $cf_cv_system_name in +(irix*) + if test "$GCC" = yes; then + LD_RPATH_OPT="-Wl,-rpath," + else + LD_RPATH_OPT="-rpath " + fi + ;; +(linux*|gnu*|k*bsd*-gnu|freebsd*) + LD_RPATH_OPT="-Wl,-rpath," + ;; +(openbsd[[2-9]].*|mirbsd*) + LD_RPATH_OPT="-Wl,-rpath," + ;; +(dragonfly*) + LD_RPATH_OPT="-rpath " + ;; +(netbsd*) + LD_RPATH_OPT="-Wl,-rpath," + ;; +(osf*|mls+*) + LD_RPATH_OPT="-rpath " + ;; +(solaris2*) + LD_RPATH_OPT="-R" + ;; +(*) + ;; +esac +AC_MSG_RESULT($LD_RPATH_OPT) + +case "x$LD_RPATH_OPT" in +(x-R*) + AC_MSG_CHECKING(if we need a space after rpath option) + cf_save_LIBS="$LIBS" + CF_ADD_LIBS(${LD_RPATH_OPT}$libdir) + AC_TRY_LINK(, , cf_rpath_space=no, cf_rpath_space=yes) + LIBS="$cf_save_LIBS" + AC_MSG_RESULT($cf_rpath_space) + test "$cf_rpath_space" = yes && LD_RPATH_OPT="$LD_RPATH_OPT " + ;; +esac +])dnl +dnl --------------------------------------------------------------------------- +dnl CF_LIBRARY_PATH version: 10 updated: 2015/04/15 19:08:48 +dnl --------------- +dnl Construct a search-list of directories for a nonstandard library-file +dnl +dnl Parameters +dnl $1 = the variable to return as result +dnl $2 = the package name +AC_DEFUN([CF_LIBRARY_PATH], +[ +$1= +cf_library_path_list="" +if test -n "${LDFLAGS}${LIBS}" ; then + for cf_library_path in $LDFLAGS $LIBS + do + case $cf_library_path in + (-L*) + cf_library_path=`echo ".$cf_library_path" |sed -e 's/^...//' -e 's,/lib$,,'` + CF_ADD_SUBDIR_PATH($1,$2,lib,$cf_library_path,NONE) + cf_library_path_list="$cf_library_path_list [$]$1" + ;; + esac + done +fi + +CF_SUBDIR_PATH($1,$2,lib) + +$1="$cf_library_path_list [$]$1" +])dnl +dnl --------------------------------------------------------------------------- +dnl CF_LIBTOOL_VERSION version: 1 updated: 2013/04/06 18:03:09 +dnl ------------------ +AC_DEFUN([CF_LIBTOOL_VERSION],[ +if test -n "$LIBTOOL" && test "$LIBTOOL" != none +then + cf_cv_libtool_version=`$LIBTOOL --version 2>&1 | sed -e '/^$/d' |sed -e '2,$d' -e 's/([[^)]]*)//g' -e 's/^[[^1-9]]*//' -e 's/[[^0-9.]].*//'` +else + cf_cv_libtool_version= +fi +test -z "$cf_cv_libtool_version" && unset cf_cv_libtool_version +])dnl +dnl --------------------------------------------------------------------------- +dnl CF_LIB_PREFIX version: 12 updated: 2015/10/17 19:03:33 +dnl ------------- +dnl Compute the library-prefix for the given host system +dnl $1 = variable to set +define([CF_LIB_PREFIX], +[ + case $cf_cv_system_name in + (OS/2*|os2*) + if test "$DFT_LWR_MODEL" = libtool; then + LIB_PREFIX='lib' + else + LIB_PREFIX='' + fi + ;; + (*) LIB_PREFIX='lib' + ;; + esac +ifelse($1,,,[$1=$LIB_PREFIX]) + AC_SUBST(LIB_PREFIX) +])dnl +dnl --------------------------------------------------------------------------- +dnl CF_LIB_SUFFIX version: 25 updated: 2015/04/17 21:13:04 +dnl ------------- +dnl Compute the library file-suffix from the given model name +dnl $1 = model name +dnl $2 = variable to set (the nominal library suffix) +dnl $3 = dependency variable to set (actual filename) +dnl The variable $LIB_SUFFIX, if set, prepends the variable to set. +AC_DEFUN([CF_LIB_SUFFIX], +[ + case X$1 in + (Xlibtool) + $2='.la' + $3=[$]$2 + ;; + (Xdebug) + $2='_g.a' + $3=[$]$2 + ;; + (Xprofile) + $2='_p.a' + $3=[$]$2 + ;; + (Xshared) + case $cf_cv_system_name in + (aix[[5-7]]*) + $2='.so' + $3=[$]$2 + ;; + (cygwin*|msys*|mingw*) + $2='.dll' + $3='.dll.a' + ;; + (darwin*) + $2='.dylib' + $3=[$]$2 + ;; + (hpux*) + case $target in + (ia64*) + $2='.so' + $3=[$]$2 + ;; + (*) + $2='.sl' + $3=[$]$2 + ;; + esac + ;; + (*) + $2='.so' + $3=[$]$2 + ;; + esac + ;; + (*) + $2='.a' + $3=[$]$2 + ;; + esac + if test -n "${LIB_SUFFIX}${EXTRA_SUFFIX}" + then + $2="${LIB_SUFFIX}${EXTRA_SUFFIX}[$]{$2}" + $3="${LIB_SUFFIX}${EXTRA_SUFFIX}[$]{$3}" + fi +])dnl +dnl --------------------------------------------------------------------------- +dnl CF_MAKEFLAGS version: 18 updated: 2018/02/21 21:26:03 +dnl ------------ +dnl Some 'make' programs support ${MAKEFLAGS}, some ${MFLAGS}, to pass 'make' +dnl options to lower-levels. It's very useful for "make -n" -- if we have it. +dnl (GNU 'make' does both, something POSIX 'make', which happens to make the +dnl ${MAKEFLAGS} variable incompatible because it adds the assignments :-) +AC_DEFUN([CF_MAKEFLAGS], +[ +AC_CACHE_CHECK(for makeflags variable, cf_cv_makeflags,[ + cf_cv_makeflags='' + for cf_option in '-${MAKEFLAGS}' '${MFLAGS}' + do + cat >cf_makeflags.tmp </dev/null | fgrep -v "ing directory" | sed -e 's,[[ ]]*$,,'` + case "$cf_result" in + (.*k|.*kw) + cf_result=`${MAKE:-make} -k -f cf_makeflags.tmp CC=cc 2>/dev/null` + case "$cf_result" in + (.*CC=*) cf_cv_makeflags= + ;; + (*) cf_cv_makeflags=$cf_option + ;; + esac + break + ;; + (.-) + ;; + (*) + CF_MSG_LOG(given option \"$cf_option\", no match \"$cf_result\") + ;; + esac + done + rm -f cf_makeflags.tmp +]) + +AC_SUBST(cf_cv_makeflags) +])dnl +dnl --------------------------------------------------------------------------- +dnl CF_MAKE_TAGS version: 6 updated: 2010/10/23 15:52:32 +dnl ------------ +dnl Generate tags/TAGS targets for makefiles. Do not generate TAGS if we have +dnl a monocase filesystem. +AC_DEFUN([CF_MAKE_TAGS],[ +AC_REQUIRE([CF_MIXEDCASE_FILENAMES]) + +AC_CHECK_PROGS(CTAGS, exctags ctags) +AC_CHECK_PROGS(ETAGS, exetags etags) + +AC_CHECK_PROG(MAKE_LOWER_TAGS, ${CTAGS:-ctags}, yes, no) + +if test "$cf_cv_mixedcase" = yes ; then + AC_CHECK_PROG(MAKE_UPPER_TAGS, ${ETAGS:-etags}, yes, no) +else + MAKE_UPPER_TAGS=no +fi + +if test "$MAKE_UPPER_TAGS" = yes ; then + MAKE_UPPER_TAGS= +else + MAKE_UPPER_TAGS="#" +fi + +if test "$MAKE_LOWER_TAGS" = yes ; then + MAKE_LOWER_TAGS= +else + MAKE_LOWER_TAGS="#" +fi + +AC_SUBST(CTAGS) +AC_SUBST(ETAGS) + +AC_SUBST(MAKE_UPPER_TAGS) +AC_SUBST(MAKE_LOWER_TAGS) +])dnl +dnl --------------------------------------------------------------------------- +dnl CF_MATH_LIB version: 9 updated: 2017/01/21 11:06:25 +dnl ----------- +dnl Checks for libraries. At least one UNIX system, Apple Macintosh +dnl Rhapsody 5.5, does not have -lm. We cannot use the simpler +dnl AC_CHECK_LIB(m,sin), because that fails for C++. +AC_DEFUN([CF_MATH_LIB], +[ +AC_CACHE_CHECK(if -lm needed for math functions, + cf_cv_need_libm,[ + AC_TRY_LINK([ + #include + #include + #include + ], + [double x = rand(); printf("result = %g\n", ]ifelse([$2],,sin(x),$2)[)], + [cf_cv_need_libm=no], + [cf_cv_need_libm=yes])]) +if test "$cf_cv_need_libm" = yes +then +ifelse($1,,[ + CF_ADD_LIB(m) +],[$1=-lm]) +fi +]) +dnl --------------------------------------------------------------------------- +dnl CF_MBSTATE_T version: 4 updated: 2012/10/06 08:57:51 +dnl ------------ +dnl Check if mbstate_t is declared, and if so, which header file. +dnl This (including wchar.h) is needed on Tru64 5.0 to declare mbstate_t, +dnl as well as include stdio.h to work around a misuse of varargs in wchar.h +AC_DEFUN([CF_MBSTATE_T], +[ +AC_CACHE_CHECK(if we must include wchar.h to declare mbstate_t,cf_cv_mbstate_t,[ +AC_TRY_COMPILE([ +#include +#include +#ifdef HAVE_LIBUTF8_H +#include +#endif], + [mbstate_t state], + [cf_cv_mbstate_t=no], + [AC_TRY_COMPILE([ +#include +#include +#include +#ifdef HAVE_LIBUTF8_H +#include +#endif], + [mbstate_t value], + [cf_cv_mbstate_t=yes], + [cf_cv_mbstate_t=unknown])])]) + +if test "$cf_cv_mbstate_t" = yes ; then + AC_DEFINE(NEED_WCHAR_H,1,[Define to 1 if we must include wchar.h]) +fi + +if test "$cf_cv_mbstate_t" != unknown ; then + AC_DEFINE(HAVE_MBSTATE_T,1,[Define to 1 if mbstate_t is declared]) +fi +])dnl +dnl --------------------------------------------------------------------------- +dnl CF_MIXEDCASE_FILENAMES version: 7 updated: 2015/04/12 15:39:00 +dnl ---------------------- +dnl Check if the file-system supports mixed-case filenames. If we're able to +dnl create a lowercase name and see it as uppercase, it doesn't support that. +AC_DEFUN([CF_MIXEDCASE_FILENAMES], +[ +AC_CACHE_CHECK(if filesystem supports mixed-case filenames,cf_cv_mixedcase,[ +if test "$cross_compiling" = yes ; then + case $target_alias in + (*-os2-emx*|*-msdosdjgpp*|*-cygwin*|*-msys*|*-mingw*|*-uwin*) + cf_cv_mixedcase=no + ;; + (*) + cf_cv_mixedcase=yes + ;; + esac +else + rm -f conftest CONFTEST + echo test >conftest + if test -f CONFTEST ; then + cf_cv_mixedcase=no + else + cf_cv_mixedcase=yes + fi + rm -f conftest CONFTEST +fi +]) +test "$cf_cv_mixedcase" = yes && AC_DEFINE(MIXEDCASE_FILENAMES,1,[Define to 1 if filesystem supports mixed-case filenames.]) +])dnl +dnl --------------------------------------------------------------------------- +dnl CF_MSG_LOG version: 5 updated: 2010/10/23 15:52:32 +dnl ---------- +dnl Write a debug message to config.log, along with the line number in the +dnl configure script. +AC_DEFUN([CF_MSG_LOG],[ +echo "${as_me:-configure}:__oline__: testing $* ..." 1>&AC_FD_CC +])dnl +dnl --------------------------------------------------------------------------- +dnl CF_NCURSES_CC_CHECK version: 4 updated: 2007/07/29 10:39:05 +dnl ------------------- +dnl Check if we can compile with ncurses' header file +dnl $1 is the cache variable to set +dnl $2 is the header-file to include +dnl $3 is the root name (ncurses or ncursesw) +AC_DEFUN([CF_NCURSES_CC_CHECK],[ + AC_TRY_COMPILE([ +]ifelse($3,ncursesw,[ +#define _XOPEN_SOURCE_EXTENDED +#undef HAVE_LIBUTF8_H /* in case we used CF_UTF8_LIB */ +#define HAVE_LIBUTF8_H /* to force ncurses' header file to use cchar_t */ +])[ +#include <$2>],[ +#ifdef NCURSES_VERSION +]ifelse($3,ncursesw,[ +#ifndef WACS_BSSB + make an error +#endif +])[ +printf("%s\n", NCURSES_VERSION); +#else +#ifdef __NCURSES_H +printf("old\n"); +#else + make an error +#endif +#endif + ] + ,[$1=$2] + ,[$1=no]) +])dnl +dnl --------------------------------------------------------------------------- +dnl CF_NCURSES_CONFIG version: 21 updated: 2018/06/20 20:23:13 +dnl ----------------- +dnl Tie together the configure-script macros for ncurses, preferring these in +dnl order: +dnl a) ".pc" files for pkg-config, using $NCURSES_CONFIG_PKG +dnl b) the "-config" script from ncurses, using $NCURSES_CONFIG +dnl c) just plain libraries +dnl +dnl $1 is the root library name (default: "ncurses") +AC_DEFUN([CF_NCURSES_CONFIG],[ +AC_REQUIRE([CF_PKG_CONFIG]) +cf_ncuconfig_root=ifelse($1,,ncurses,$1) +cf_have_ncuconfig=no + +if test "x${PKG_CONFIG:=none}" != xnone; then + AC_MSG_CHECKING(pkg-config for $cf_ncuconfig_root) + if "$PKG_CONFIG" --exists $cf_ncuconfig_root ; then + AC_MSG_RESULT(yes) + + AC_MSG_CHECKING(if the $cf_ncuconfig_root package files work) + cf_have_ncuconfig=unknown + + cf_save_CPPFLAGS="$CPPFLAGS" + cf_save_LIBS="$LIBS" + + CF_ADD_CFLAGS(`$PKG_CONFIG --cflags $cf_ncuconfig_root`) + CF_ADD_LIBS(`$PKG_CONFIG --libs $cf_ncuconfig_root`) + + AC_TRY_LINK([#include <${cf_cv_ncurses_header:-curses.h}>], + [initscr(); mousemask(0,0); tgoto((char *)0, 0, 0);], + [AC_TRY_RUN([#include <${cf_cv_ncurses_header:-curses.h}> + int main(void) + { char *xx = curses_version(); return (xx == 0); }], + [cf_have_ncuconfig=yes], + [cf_have_ncuconfig=no], + [cf_have_ncuconfig=maybe])], + [cf_have_ncuconfig=no]) + AC_MSG_RESULT($cf_have_ncuconfig) + test "$cf_have_ncuconfig" = maybe && cf_have_ncuconfig=yes + if test "$cf_have_ncuconfig" != "yes" + then + CPPFLAGS="$cf_save_CPPFLAGS" + LIBS="$cf_save_LIBS" + NCURSES_CONFIG_PKG=none + else + AC_DEFINE(NCURSES,1,[Define to 1 if we are using ncurses headers/libraries]) + NCURSES_CONFIG_PKG=$cf_ncuconfig_root + CF_TERM_HEADER + fi + + else + AC_MSG_RESULT(no) + NCURSES_CONFIG_PKG=none + fi +else + NCURSES_CONFIG_PKG=none +fi + +if test "x$cf_have_ncuconfig" = "xno"; then + cf_ncurses_config="${cf_ncuconfig_root}${NCURSES_CONFIG_SUFFIX}-config"; echo "Looking for ${cf_ncurses_config}" + + CF_ACVERSION_CHECK(2.52, + [AC_CHECK_TOOLS(NCURSES_CONFIG, ${cf_ncurses_config} ${cf_ncuconfig_root}6-config ${cf_ncuconfig_root}6-config ${cf_ncuconfig_root}5-config, none)], + [AC_PATH_PROGS(NCURSES_CONFIG, ${cf_ncurses_config} ${cf_ncuconfig_root}6-config ${cf_ncuconfig_root}6-config ${cf_ncuconfig_root}5-config, none)]) + + if test "$NCURSES_CONFIG" != none ; then + + CF_ADD_CFLAGS(`$NCURSES_CONFIG --cflags`) + CF_ADD_LIBS(`$NCURSES_CONFIG --libs`) + + # even with config script, some packages use no-override for curses.h + CF_CURSES_HEADER(ifelse($1,,ncurses,$1)) + + dnl like CF_NCURSES_CPPFLAGS + AC_DEFINE(NCURSES,1,[Define to 1 if we are using ncurses headers/libraries]) + + dnl like CF_NCURSES_LIBS + CF_UPPER(cf_nculib_ROOT,HAVE_LIB$cf_ncuconfig_root) + AC_DEFINE_UNQUOTED($cf_nculib_ROOT) + + dnl like CF_NCURSES_VERSION + cf_cv_ncurses_version=`$NCURSES_CONFIG --version` + + else + + CF_NCURSES_CPPFLAGS(ifelse($1,,ncurses,$1)) + CF_NCURSES_LIBS(ifelse($1,,ncurses,$1)) + + fi +else + NCURSES_CONFIG=none +fi +])dnl +dnl --------------------------------------------------------------------------- +dnl CF_NCURSES_CPPFLAGS version: 21 updated: 2012/10/06 08:57:51 +dnl ------------------- +dnl Look for the SVr4 curses clone 'ncurses' in the standard places, adjusting +dnl the CPPFLAGS variable so we can include its header. +dnl +dnl The header files may be installed as either curses.h, or ncurses.h (would +dnl be obsolete, except that some packagers prefer this name to distinguish it +dnl from a "native" curses implementation). If not installed for overwrite, +dnl the curses.h file would be in an ncurses subdirectory (e.g., +dnl /usr/include/ncurses), but someone may have installed overwriting the +dnl vendor's curses. Only very old versions (pre-1.9.2d, the first autoconf'd +dnl version) of ncurses don't define either __NCURSES_H or NCURSES_VERSION in +dnl the header. +dnl +dnl If the installer has set $CFLAGS or $CPPFLAGS so that the ncurses header +dnl is already in the include-path, don't even bother with this, since we cannot +dnl easily determine which file it is. In this case, it has to be . +dnl +dnl The optional parameter gives the root name of the library, in case it is +dnl not installed as the default curses library. That is how the +dnl wide-character version of ncurses is installed. +AC_DEFUN([CF_NCURSES_CPPFLAGS], +[AC_REQUIRE([CF_WITH_CURSES_DIR]) + +AC_PROVIDE([CF_CURSES_CPPFLAGS])dnl +cf_ncuhdr_root=ifelse($1,,ncurses,$1) + +test -n "$cf_cv_curses_dir" && \ +test "$cf_cv_curses_dir" != "no" && { \ + CF_ADD_INCDIR($cf_cv_curses_dir/include/$cf_ncuhdr_root) +} + +AC_CACHE_CHECK(for $cf_ncuhdr_root header in include-path, cf_cv_ncurses_h,[ + cf_header_list="$cf_ncuhdr_root/curses.h $cf_ncuhdr_root/ncurses.h" + ( test "$cf_ncuhdr_root" = ncurses || test "$cf_ncuhdr_root" = ncursesw ) && cf_header_list="$cf_header_list curses.h ncurses.h" + for cf_header in $cf_header_list + do + CF_NCURSES_CC_CHECK(cf_cv_ncurses_h,$cf_header,$1) + test "$cf_cv_ncurses_h" != no && break + done +]) + +CF_NCURSES_HEADER +CF_TERM_HEADER + +# some applications need this, but should check for NCURSES_VERSION +AC_DEFINE(NCURSES,1,[Define to 1 if we are using ncurses headers/libraries]) + +CF_NCURSES_VERSION +])dnl +dnl --------------------------------------------------------------------------- +dnl CF_NCURSES_HEADER version: 4 updated: 2015/04/15 19:08:48 +dnl ----------------- +dnl Find a "curses" header file, e.g,. "curses.h", or one of the more common +dnl variations of ncurses' installs. +dnl +dnl See also CF_CURSES_HEADER, which sets the same cache variable. +AC_DEFUN([CF_NCURSES_HEADER],[ + +if test "$cf_cv_ncurses_h" != no ; then + cf_cv_ncurses_header=$cf_cv_ncurses_h +else + +AC_CACHE_CHECK(for $cf_ncuhdr_root include-path, cf_cv_ncurses_h2,[ + test -n "$verbose" && echo + CF_HEADER_PATH(cf_search,$cf_ncuhdr_root) + test -n "$verbose" && echo search path $cf_search + cf_save2_CPPFLAGS="$CPPFLAGS" + for cf_incdir in $cf_search + do + CF_ADD_INCDIR($cf_incdir) + for cf_header in \ + ncurses.h \ + curses.h + do + CF_NCURSES_CC_CHECK(cf_cv_ncurses_h2,$cf_header,$1) + if test "$cf_cv_ncurses_h2" != no ; then + cf_cv_ncurses_h2=$cf_incdir/$cf_header + test -n "$verbose" && echo $ac_n " ... found $ac_c" 1>&AC_FD_MSG + break + fi + test -n "$verbose" && echo " ... tested $cf_incdir/$cf_header" 1>&AC_FD_MSG + done + CPPFLAGS="$cf_save2_CPPFLAGS" + test "$cf_cv_ncurses_h2" != no && break + done + test "$cf_cv_ncurses_h2" = no && AC_MSG_ERROR(not found) + ]) + + CF_DIRNAME(cf_1st_incdir,$cf_cv_ncurses_h2) + cf_cv_ncurses_header=`basename $cf_cv_ncurses_h2` + if test `basename $cf_1st_incdir` = $cf_ncuhdr_root ; then + cf_cv_ncurses_header=$cf_ncuhdr_root/$cf_cv_ncurses_header + fi + CF_ADD_INCDIR($cf_1st_incdir) + +fi + +# Set definitions to allow ifdef'ing for ncurses.h + +case $cf_cv_ncurses_header in +(*ncurses.h) + AC_DEFINE(HAVE_NCURSES_H,1,[Define to 1 if we have ncurses.h]) + ;; +esac + +case $cf_cv_ncurses_header in +(ncurses/curses.h|ncurses/ncurses.h) + AC_DEFINE(HAVE_NCURSES_NCURSES_H,1,[Define to 1 if we have ncurses/ncurses.h]) + ;; +(ncursesw/curses.h|ncursesw/ncurses.h) + AC_DEFINE(HAVE_NCURSESW_NCURSES_H,1,[Define to 1 if we have ncursesw/ncurses.h]) + ;; +esac + +])dnl +dnl --------------------------------------------------------------------------- +dnl CF_NCURSES_LIBS version: 17 updated: 2015/04/15 19:08:48 +dnl --------------- +dnl Look for the ncurses library. This is a little complicated on Linux, +dnl because it may be linked with the gpm (general purpose mouse) library. +dnl Some distributions have gpm linked with (bsd) curses, which makes it +dnl unusable with ncurses. However, we don't want to link with gpm unless +dnl ncurses has a dependency, since gpm is normally set up as a shared library, +dnl and the linker will record a dependency. +dnl +dnl The optional parameter gives the root name of the library, in case it is +dnl not installed as the default curses library. That is how the +dnl wide-character version of ncurses is installed. +AC_DEFUN([CF_NCURSES_LIBS], +[AC_REQUIRE([CF_NCURSES_CPPFLAGS]) + +cf_nculib_root=ifelse($1,,ncurses,$1) + # This works, except for the special case where we find gpm, but + # ncurses is in a nonstandard location via $LIBS, and we really want + # to link gpm. +cf_ncurses_LIBS="" +cf_ncurses_SAVE="$LIBS" +AC_CHECK_LIB(gpm,Gpm_Open, + [AC_CHECK_LIB(gpm,initscr, + [LIBS="$cf_ncurses_SAVE"], + [cf_ncurses_LIBS="-lgpm"])]) + +case $host_os in +(freebsd*) + # This is only necessary if you are linking against an obsolete + # version of ncurses (but it should do no harm, since it's static). + if test "$cf_nculib_root" = ncurses ; then + AC_CHECK_LIB(mytinfo,tgoto,[cf_ncurses_LIBS="-lmytinfo $cf_ncurses_LIBS"]) + fi + ;; +esac + +CF_ADD_LIBS($cf_ncurses_LIBS) + +if ( test -n "$cf_cv_curses_dir" && test "$cf_cv_curses_dir" != "no" ) +then + CF_ADD_LIBS(-l$cf_nculib_root) +else + CF_FIND_LIBRARY($cf_nculib_root,$cf_nculib_root, + [#include <${cf_cv_ncurses_header:-curses.h}>], + [initscr()], + initscr) +fi + +if test -n "$cf_ncurses_LIBS" ; then + AC_MSG_CHECKING(if we can link $cf_nculib_root without $cf_ncurses_LIBS) + cf_ncurses_SAVE="$LIBS" + for p in $cf_ncurses_LIBS ; do + q=`echo $LIBS | sed -e "s%$p %%" -e "s%$p$%%"` + if test "$q" != "$LIBS" ; then + LIBS="$q" + fi + done + AC_TRY_LINK([#include <${cf_cv_ncurses_header:-curses.h}>], + [initscr(); mousemask(0,0); tgoto((char *)0, 0, 0);], + [AC_MSG_RESULT(yes)], + [AC_MSG_RESULT(no) + LIBS="$cf_ncurses_SAVE"]) +fi + +CF_UPPER(cf_nculib_ROOT,HAVE_LIB$cf_nculib_root) +AC_DEFINE_UNQUOTED($cf_nculib_ROOT) +])dnl +dnl --------------------------------------------------------------------------- +dnl CF_NCURSES_PTHREADS version: 2 updated: 2016/04/22 05:07:41 +dnl ------------------- +dnl Use this followup check to ensure that we link with pthreads if ncurses +dnl uses it. +AC_DEFUN([CF_NCURSES_PTHREADS],[ +: ${cf_nculib_root:=ifelse($1,,ncurses,$1)} +AC_CHECK_LIB($cf_nculib_root,_nc_init_pthreads, + cf_cv_ncurses_pthreads=yes, + cf_cv_ncurses_pthreads=no) +if test "$cf_cv_ncurses_pthreads" = yes +then + CF_ADD_LIBS(-lpthread) +fi +])dnl +dnl --------------------------------------------------------------------------- +dnl CF_NCURSES_VERSION version: 15 updated: 2017/05/09 19:26:10 +dnl ------------------ +dnl Check for the version of ncurses, to aid in reporting bugs, etc. +dnl Call CF_CURSES_CPPFLAGS first, or CF_NCURSES_CPPFLAGS. We don't use +dnl AC_REQUIRE since that does not work with the shell's if/then/else/fi. +AC_DEFUN([CF_NCURSES_VERSION], +[ +AC_REQUIRE([CF_CURSES_CPPFLAGS])dnl +AC_CACHE_CHECK(for ncurses version, cf_cv_ncurses_version,[ + cf_cv_ncurses_version=no + cf_tempfile=out$$ + rm -f $cf_tempfile + AC_TRY_RUN([ +#include <${cf_cv_ncurses_header:-curses.h}> +#include +int main(void) +{ + FILE *fp = fopen("$cf_tempfile", "w"); +#ifdef NCURSES_VERSION +# ifdef NCURSES_VERSION_PATCH + fprintf(fp, "%s.%d\n", NCURSES_VERSION, NCURSES_VERSION_PATCH); +# else + fprintf(fp, "%s\n", NCURSES_VERSION); +# endif +#else +# ifdef __NCURSES_H + fprintf(fp, "old\n"); +# else + make an error +# endif +#endif + ${cf_cv_main_return:-return}(0); +}],[ + cf_cv_ncurses_version=`cat $cf_tempfile`],,[ + + # This will not work if the preprocessor splits the line after the + # Autoconf token. The 'unproto' program does that. + cat > conftest.$ac_ext < +#undef Autoconf +#ifdef NCURSES_VERSION +Autoconf NCURSES_VERSION +#else +#ifdef __NCURSES_H +Autoconf "old" +#endif +; +#endif +EOF + cf_try="$ac_cpp conftest.$ac_ext 2>&AC_FD_CC | grep '^Autoconf ' >conftest.out" + AC_TRY_EVAL(cf_try) + if test -f conftest.out ; then + cf_out=`cat conftest.out | sed -e 's%^Autoconf %%' -e 's%^[[^"]]*"%%' -e 's%".*%%'` + test -n "$cf_out" && cf_cv_ncurses_version="$cf_out" + rm -f conftest.out + fi +]) + rm -f $cf_tempfile +]) +test "$cf_cv_ncurses_version" = no || AC_DEFINE(NCURSES,1,[Define to 1 if we are using ncurses headers/libraries]) +])dnl +dnl --------------------------------------------------------------------------- +dnl CF_NL_LANGINFO_1STDAY version: 1 updated: 2016/02/08 19:06:25 +dnl --------------------- +dnl glibc locale support has runtime extensions which might be implemented in +dnl other systems. +AC_DEFUN([CF_NL_LANGINFO_1STDAY],[ +AC_CACHE_CHECK(if runtime has nl_langinfo support for first weekday, + cf_nl_langinfo_1stday,[ + AC_TRY_COMPILE([ +#include +#include +],[ + int first_weekday = nl_langinfo (_NL_TIME_FIRST_WEEKDAY)[0]; + long week_1stday_l = (long) nl_langinfo (_NL_TIME_WEEK_1STDAY); +],[cf_nl_langinfo_1stday=yes +],[cf_nl_langinfo_1stday=no +]) +]) +test "x$cf_nl_langinfo_1stday" = xyes && AC_DEFINE(HAVE_NL_LANGINFO_1STDAY) +])dnl +dnl --------------------------------------------------------------------------- +dnl CF_NO_LEAKS_OPTION version: 6 updated: 2015/04/12 15:39:00 +dnl ------------------ +dnl see CF_WITH_NO_LEAKS +AC_DEFUN([CF_NO_LEAKS_OPTION],[ +AC_MSG_CHECKING(if you want to use $1 for testing) +AC_ARG_WITH($1, + [$2], + [AC_DEFINE_UNQUOTED($3,1,"Define to 1 if you want to use $1 for testing.")ifelse([$4],,[ + $4 +]) + : ${with_cflags:=-g} + : ${with_no_leaks:=yes} + with_$1=yes], + [with_$1=]) +AC_MSG_RESULT(${with_$1:-no}) + +case .$with_cflags in +(.*-g*) + case .$CFLAGS in + (.*-g*) + ;; + (*) + CF_ADD_CFLAGS([-g]) + ;; + esac + ;; +esac +])dnl +dnl --------------------------------------------------------------------------- +dnl CF_NUMBER_SYNTAX version: 2 updated: 2015/04/17 21:13:04 +dnl ---------------- +dnl Check if the given variable is a number. If not, report an error. +dnl $1 is the variable +dnl $2 is the message +AC_DEFUN([CF_NUMBER_SYNTAX],[ +if test -n "$1" ; then + case $1 in + ([[0-9]]*) + ;; + (*) + AC_MSG_ERROR($2 is not a number: $1) + ;; + esac +else + AC_MSG_ERROR($2 value is empty) +fi +])dnl +dnl --------------------------------------------------------------------------- +dnl CF_OUR_MESSAGES version: 7 updated: 2004/09/12 19:45:55 +dnl --------------- +dnl Check if we use the messages included with this program +dnl +dnl $1 specifies either Makefile or makefile, defaulting to the former. +dnl +dnl Sets variables which can be used to substitute in makefiles: +dnl MSG_DIR_MAKE - to make ./po directory +dnl SUB_MAKEFILE - makefile in ./po directory (see CF_BUNDLED_INTL) +dnl +AC_DEFUN([CF_OUR_MESSAGES], +[ +cf_makefile=ifelse($1,,Makefile,$1) + +use_our_messages=no +if test "$USE_NLS" = yes ; then +if test -d $srcdir/po ; then +AC_MSG_CHECKING(if we should use included message-library) + AC_ARG_ENABLE(included-msgs, + [ --disable-included-msgs use included messages, for i18n support], + [use_our_messages=$enableval], + [use_our_messages=yes]) +fi +AC_MSG_RESULT($use_our_messages) +fi + +MSG_DIR_MAKE="#" +if test "$use_our_messages" = yes +then + SUB_MAKEFILE="$SUB_MAKEFILE po/$cf_makefile.in:$srcdir/po/$cf_makefile.inn" + MSG_DIR_MAKE= +fi + +AC_SUBST(MSG_DIR_MAKE) +AC_SUBST(SUB_MAKEFILE) +])dnl +dnl --------------------------------------------------------------------------- +dnl CF_PATHSEP version: 7 updated: 2015/04/12 15:39:00 +dnl ---------- +dnl Provide a value for the $PATH and similar separator (or amend the value +dnl as provided in autoconf 2.5x). +AC_DEFUN([CF_PATHSEP], +[ + AC_MSG_CHECKING(for PATH separator) + case $cf_cv_system_name in + (os2*) PATH_SEPARATOR=';' ;; + (*) ${PATH_SEPARATOR:=':'} ;; + esac +ifelse([$1],,,[$1=$PATH_SEPARATOR]) + AC_SUBST(PATH_SEPARATOR) + AC_MSG_RESULT($PATH_SEPARATOR) +])dnl +dnl --------------------------------------------------------------------------- +dnl CF_PATH_SYNTAX version: 16 updated: 2015/04/18 08:56:57 +dnl -------------- +dnl Check the argument to see that it looks like a pathname. Rewrite it if it +dnl begins with one of the prefix/exec_prefix variables, and then again if the +dnl result begins with 'NONE'. This is necessary to work around autoconf's +dnl delayed evaluation of those symbols. +AC_DEFUN([CF_PATH_SYNTAX],[ +if test "x$prefix" != xNONE; then + cf_path_syntax="$prefix" +else + cf_path_syntax="$ac_default_prefix" +fi + +case ".[$]$1" in +(.\[$]\(*\)*|.\'*\'*) + ;; +(..|./*|.\\*) + ;; +(.[[a-zA-Z]]:[[\\/]]*) # OS/2 EMX + ;; +(.\[$]{*prefix}*|.\[$]{*dir}*) + eval $1="[$]$1" + case ".[$]$1" in + (.NONE/*) + $1=`echo [$]$1 | sed -e s%NONE%$cf_path_syntax%` + ;; + esac + ;; +(.no|.NONE/*) + $1=`echo [$]$1 | sed -e s%NONE%$cf_path_syntax%` + ;; +(*) + ifelse([$2],,[AC_MSG_ERROR([expected a pathname, not \"[$]$1\"])],$2) + ;; +esac +])dnl +dnl --------------------------------------------------------------------------- +dnl CF_PDCURSES_X11 version: 14 updated: 2018/06/20 20:23:13 +dnl --------------- +dnl Configure for PDCurses' X11 library +AC_DEFUN([CF_PDCURSES_X11],[ +AC_REQUIRE([CF_X_ATHENA]) + +CF_ACVERSION_CHECK(2.52, + [AC_CHECK_TOOLS(XCURSES_CONFIG, xcurses-config, none)], + [AC_PATH_PROGS(XCURSES_CONFIG, xcurses-config, none)]) + +if test "$XCURSES_CONFIG" != none ; then + +CF_ADD_CFLAGS(`$XCURSES_CONFIG --cflags`) +CF_ADD_LIBS(`$XCURSES_CONFIG --libs`) + +cf_cv_lib_XCurses=yes + +else + +LDFLAGS="$LDFLAGS $X_LIBS" +CF_CHECK_CFLAGS($X_CFLAGS) +AC_CHECK_LIB(X11,XOpenDisplay, + [CF_ADD_LIBS(-lX11)],, + [$X_PRE_LIBS $LIBS $X_EXTRA_LIBS]) +AC_CACHE_CHECK(for XCurses library,cf_cv_lib_XCurses,[ +CF_ADD_LIBS(-lXCurses) +AC_TRY_LINK([ +#include +char *XCursesProgramName = "test"; +],[XCursesExit();], +[cf_cv_lib_XCurses=yes], +[cf_cv_lib_XCurses=no]) +]) + +fi + +if test $cf_cv_lib_XCurses = yes ; then + AC_DEFINE(UNIX,1,[Define to 1 if using PDCurses on Unix]) + AC_DEFINE(XCURSES,1,[Define to 1 if using PDCurses on Unix]) + AC_CHECK_HEADER(xcurses.h, AC_DEFINE(HAVE_XCURSES,1,[Define to 1 if using PDCurses on Unix])) +else + AC_MSG_ERROR(Cannot link with XCurses) +fi +])dnl +dnl --------------------------------------------------------------------------- +dnl CF_PKG_CONFIG version: 10 updated: 2015/04/26 18:06:58 +dnl ------------- +dnl Check for the package-config program, unless disabled by command-line. +AC_DEFUN([CF_PKG_CONFIG], +[ +AC_MSG_CHECKING(if you want to use pkg-config) +AC_ARG_WITH(pkg-config, + [ --with-pkg-config{=path} enable/disable use of pkg-config], + [cf_pkg_config=$withval], + [cf_pkg_config=yes]) +AC_MSG_RESULT($cf_pkg_config) + +case $cf_pkg_config in +(no) + PKG_CONFIG=none + ;; +(yes) + CF_ACVERSION_CHECK(2.52, + [AC_PATH_TOOL(PKG_CONFIG, pkg-config, none)], + [AC_PATH_PROG(PKG_CONFIG, pkg-config, none)]) + ;; +(*) + PKG_CONFIG=$withval + ;; +esac + +test -z "$PKG_CONFIG" && PKG_CONFIG=none +if test "$PKG_CONFIG" != none ; then + CF_PATH_SYNTAX(PKG_CONFIG) +elif test "x$cf_pkg_config" != xno ; then + AC_MSG_WARN(pkg-config is not installed) +fi + +AC_SUBST(PKG_CONFIG) +])dnl +dnl --------------------------------------------------------------------------- +dnl CF_POSIX_C_SOURCE version: 10 updated: 2018/06/20 20:23:13 +dnl ----------------- +dnl Define _POSIX_C_SOURCE to the given level, and _POSIX_SOURCE if needed. +dnl +dnl POSIX.1-1990 _POSIX_SOURCE +dnl POSIX.1-1990 and _POSIX_SOURCE and +dnl POSIX.2-1992 C-Language _POSIX_C_SOURCE=2 +dnl Bindings Option +dnl POSIX.1b-1993 _POSIX_C_SOURCE=199309L +dnl POSIX.1c-1996 _POSIX_C_SOURCE=199506L +dnl X/Open 2000 _POSIX_C_SOURCE=200112L +dnl +dnl Parameters: +dnl $1 is the nominal value for _POSIX_C_SOURCE +AC_DEFUN([CF_POSIX_C_SOURCE], +[ +cf_POSIX_C_SOURCE=ifelse([$1],,199506L,[$1]) + +cf_save_CFLAGS="$CFLAGS" +cf_save_CPPFLAGS="$CPPFLAGS" + +CF_REMOVE_DEFINE(cf_trim_CFLAGS,$cf_save_CFLAGS,_POSIX_C_SOURCE) +CF_REMOVE_DEFINE(cf_trim_CPPFLAGS,$cf_save_CPPFLAGS,_POSIX_C_SOURCE) + +AC_CACHE_CHECK(if we should define _POSIX_C_SOURCE,cf_cv_posix_c_source,[ + CF_MSG_LOG(if the symbol is already defined go no further) + AC_TRY_COMPILE([#include ],[ +#ifndef _POSIX_C_SOURCE +make an error +#endif], + [cf_cv_posix_c_source=no], + [cf_want_posix_source=no + case .$cf_POSIX_C_SOURCE in + (.[[12]]??*) + cf_cv_posix_c_source="-D_POSIX_C_SOURCE=$cf_POSIX_C_SOURCE" + ;; + (.2) + cf_cv_posix_c_source="-D_POSIX_C_SOURCE=$cf_POSIX_C_SOURCE" + cf_want_posix_source=yes + ;; + (.*) + cf_want_posix_source=yes + ;; + esac + if test "$cf_want_posix_source" = yes ; then + AC_TRY_COMPILE([#include ],[ +#ifdef _POSIX_SOURCE +make an error +#endif],[], + cf_cv_posix_c_source="$cf_cv_posix_c_source -D_POSIX_SOURCE") + fi + CF_MSG_LOG(ifdef from value $cf_POSIX_C_SOURCE) + CFLAGS="$cf_trim_CFLAGS" + CPPFLAGS="$cf_trim_CPPFLAGS" + CF_APPEND_TEXT(CPPFLAGS,$cf_cv_posix_c_source) + CF_MSG_LOG(if the second compile does not leave our definition intact error) + AC_TRY_COMPILE([#include ],[ +#ifndef _POSIX_C_SOURCE +make an error +#endif],, + [cf_cv_posix_c_source=no]) + CFLAGS="$cf_save_CFLAGS" + CPPFLAGS="$cf_save_CPPFLAGS" + ]) +]) + +if test "$cf_cv_posix_c_source" != no ; then + CFLAGS="$cf_trim_CFLAGS" + CPPFLAGS="$cf_trim_CPPFLAGS" + CF_ADD_CFLAGS($cf_cv_posix_c_source) +fi + +])dnl +dnl --------------------------------------------------------------------------- +dnl CF_PROG_AR version: 1 updated: 2009/01/01 20:15:22 +dnl ---------- +dnl Check for archiver "ar". +AC_DEFUN([CF_PROG_AR],[ +AC_CHECK_TOOL(AR, ar, ar) +]) +dnl --------------------------------------------------------------------------- +dnl CF_PROG_CC version: 4 updated: 2014/07/12 18:57:58 +dnl ---------- +dnl standard check for CC, plus followup sanity checks +dnl $1 = optional parameter to pass to AC_PROG_CC to specify compiler name +AC_DEFUN([CF_PROG_CC],[ +ifelse($1,,[AC_PROG_CC],[AC_PROG_CC($1)]) +CF_GCC_VERSION +CF_ACVERSION_CHECK(2.52, + [AC_PROG_CC_STDC], + [CF_ANSI_CC_REQD]) +CF_CC_ENV_FLAGS +])dnl +dnl --------------------------------------------------------------------------- +dnl CF_PROG_EXT version: 14 updated: 2018/06/20 20:23:13 +dnl ----------- +dnl Compute $PROG_EXT, used for non-Unix ports, such as OS/2 EMX. +AC_DEFUN([CF_PROG_EXT], +[ +AC_REQUIRE([CF_CHECK_CACHE]) +case $cf_cv_system_name in +(os2*) + CFLAGS="$CFLAGS -Zmt" + CF_APPEND_TEXT(CPPFLAGS,-D__ST_MT_ERRNO__) + CXXFLAGS="$CXXFLAGS -Zmt" + # autoconf's macro sets -Zexe and suffix both, which conflict:w + LDFLAGS="$LDFLAGS -Zmt -Zcrtdll" + ac_cv_exeext=.exe + ;; +esac + +AC_EXEEXT +AC_OBJEXT + +PROG_EXT="$EXEEXT" +AC_SUBST(PROG_EXT) +test -n "$PROG_EXT" && AC_DEFINE_UNQUOTED(PROG_EXT,"$PROG_EXT",[Define to the program extension (normally blank)]) +])dnl +dnl --------------------------------------------------------------------------- +dnl CF_PROG_GROFF version: 3 updated: 2018/01/07 13:16:19 +dnl ------------- +dnl Check if groff is available, for cases (such as html output) where nroff +dnl is not enough. +AC_DEFUN([CF_PROG_GROFF],[ +AC_PATH_PROG(GROFF_PATH,groff,no) +AC_PATH_PROGS(NROFF_PATH,nroff mandoc,no) +AC_PATH_PROG(TBL_PATH,tbl,cat) +if test "x$GROFF_PATH" = xno +then + NROFF_NOTE= + GROFF_NOTE="#" +else + NROFF_NOTE="#" + GROFF_NOTE= +fi +AC_SUBST(GROFF_NOTE) +AC_SUBST(NROFF_NOTE) +])dnl +dnl --------------------------------------------------------------------------- +dnl CF_PROG_LINT version: 3 updated: 2016/05/22 15:25:54 +dnl ------------ +AC_DEFUN([CF_PROG_LINT], +[ +AC_CHECK_PROGS(LINT, lint cppcheck splint) +AC_SUBST(LINT_OPTS) +])dnl +dnl --------------------------------------------------------------------------- +dnl CF_PROG_LN_S version: 2 updated: 2010/08/14 18:25:37 +dnl ------------ +dnl Combine checks for "ln -s" and "ln -sf", updating $LN_S to include "-f" +dnl option if it is supported. +AC_DEFUN([CF_PROG_LN_S],[ +AC_PROG_LN_S +AC_MSG_CHECKING(if $LN_S -f options work) + +rm -f conf$$.src conf$$dst +echo >conf$$.dst +echo first >conf$$.src +if $LN_S -f conf$$.src conf$$.dst 2>/dev/null; then + cf_prog_ln_sf=yes +else + cf_prog_ln_sf=no +fi +rm -f conf$$.dst conf$$src +AC_MSG_RESULT($cf_prog_ln_sf) + +test "$cf_prog_ln_sf" = yes && LN_S="$LN_S -f" +])dnl +dnl --------------------------------------------------------------------------- +dnl CF_REMOVE_DEFINE version: 3 updated: 2010/01/09 11:05:50 +dnl ---------------- +dnl Remove all -U and -D options that refer to the given symbol from a list +dnl of C compiler options. This works around the problem that not all +dnl compilers process -U and -D options from left-to-right, so a -U option +dnl cannot be used to cancel the effect of a preceding -D option. +dnl +dnl $1 = target (which could be the same as the source variable) +dnl $2 = source (including '$') +dnl $3 = symbol to remove +define([CF_REMOVE_DEFINE], +[ +$1=`echo "$2" | \ + sed -e 's/-[[UD]]'"$3"'\(=[[^ ]]*\)\?[[ ]]/ /g' \ + -e 's/-[[UD]]'"$3"'\(=[[^ ]]*\)\?[$]//g'` +])dnl +dnl --------------------------------------------------------------------------- +dnl CF_RPATH_HACK version: 11 updated: 2013/09/01 13:02:00 +dnl ------------- +AC_DEFUN([CF_RPATH_HACK], +[ +AC_REQUIRE([CF_LD_RPATH_OPT]) +AC_MSG_CHECKING(for updated LDFLAGS) +if test -n "$LD_RPATH_OPT" ; then + AC_MSG_RESULT(maybe) + + AC_CHECK_PROGS(cf_ldd_prog,ldd,no) + cf_rpath_list="/usr/lib /lib" + if test "$cf_ldd_prog" != no + then + cf_rpath_oops= + +AC_TRY_LINK([#include ], + [printf("Hello");], + [cf_rpath_oops=`$cf_ldd_prog conftest$ac_exeext | fgrep ' not found' | sed -e 's% =>.*$%%' |sort | uniq` + cf_rpath_list=`$cf_ldd_prog conftest$ac_exeext | fgrep / | sed -e 's%^.*[[ ]]/%/%' -e 's%/[[^/]][[^/]]*$%%' |sort | uniq`]) + + # If we passed the link-test, but get a "not found" on a given library, + # this could be due to inept reconfiguration of gcc to make it only + # partly honor /usr/local/lib (or whatever). Sometimes this behavior + # is intentional, e.g., installing gcc in /usr/bin and suppressing the + # /usr/local libraries. + if test -n "$cf_rpath_oops" + then + for cf_rpath_src in $cf_rpath_oops + do + for cf_rpath_dir in \ + /usr/local \ + /usr/pkg \ + /opt/sfw + do + if test -f $cf_rpath_dir/lib/$cf_rpath_src + then + CF_VERBOSE(...adding -L$cf_rpath_dir/lib to LDFLAGS for $cf_rpath_src) + LDFLAGS="$LDFLAGS -L$cf_rpath_dir/lib" + break + fi + done + done + fi + fi + + CF_VERBOSE(...checking EXTRA_LDFLAGS $EXTRA_LDFLAGS) + + CF_RPATH_HACK_2(LDFLAGS) + CF_RPATH_HACK_2(LIBS) + + CF_VERBOSE(...checked EXTRA_LDFLAGS $EXTRA_LDFLAGS) +else + AC_MSG_RESULT(no) +fi +AC_SUBST(EXTRA_LDFLAGS) +])dnl +dnl --------------------------------------------------------------------------- +dnl CF_RPATH_HACK_2 version: 7 updated: 2015/04/12 15:39:00 +dnl --------------- +dnl Do one set of substitutions for CF_RPATH_HACK, adding an rpath option to +dnl EXTRA_LDFLAGS for each -L option found. +dnl +dnl $cf_rpath_list contains a list of directories to ignore. +dnl +dnl $1 = variable name to update. The LDFLAGS variable should be the only one, +dnl but LIBS often has misplaced -L options. +AC_DEFUN([CF_RPATH_HACK_2], +[ +CF_VERBOSE(...checking $1 [$]$1) + +cf_rpath_dst= +for cf_rpath_src in [$]$1 +do + case $cf_rpath_src in + (-L*) + + # check if this refers to a directory which we will ignore + cf_rpath_skip=no + if test -n "$cf_rpath_list" + then + for cf_rpath_item in $cf_rpath_list + do + if test "x$cf_rpath_src" = "x-L$cf_rpath_item" + then + cf_rpath_skip=yes + break + fi + done + fi + + if test "$cf_rpath_skip" = no + then + # transform the option + if test "$LD_RPATH_OPT" = "-R " ; then + cf_rpath_tmp=`echo "$cf_rpath_src" |sed -e "s%-L%-R %"` + else + cf_rpath_tmp=`echo "$cf_rpath_src" |sed -e "s%-L%$LD_RPATH_OPT%"` + fi + + # if we have not already added this, add it now + cf_rpath_tst=`echo "$EXTRA_LDFLAGS" | sed -e "s%$cf_rpath_tmp %%"` + if test "x$cf_rpath_tst" = "x$EXTRA_LDFLAGS" + then + CF_VERBOSE(...Filter $cf_rpath_src ->$cf_rpath_tmp) + EXTRA_LDFLAGS="$cf_rpath_tmp $EXTRA_LDFLAGS" + fi + fi + ;; + esac + cf_rpath_dst="$cf_rpath_dst $cf_rpath_src" +done +$1=$cf_rpath_dst + +CF_VERBOSE(...checked $1 [$]$1) +AC_SUBST(EXTRA_LDFLAGS) +])dnl +dnl --------------------------------------------------------------------------- +dnl CF_SHARED_OPTS version: 92 updated: 2017/12/30 17:26:05 +dnl -------------- +dnl -------------- +dnl Attempt to determine the appropriate CC/LD options for creating a shared +dnl library. +dnl +dnl Notes: +dnl a) ${LOCAL_LDFLAGS} is used to link executables that will run within +dnl the build-tree, i.e., by making use of the libraries that are compiled in +dnl $rel_builddir/lib We avoid compiling-in a $rel_builddir/lib path for the +dnl shared library since that can lead to unexpected results at runtime. +dnl b) ${LOCAL_LDFLAGS2} has the same intention but assumes that the shared +dnl libraries are compiled in ../../lib +dnl +dnl The variable 'cf_cv_do_symlinks' is used to control whether we configure +dnl to install symbolic links to the rel/abi versions of shared libraries. +dnl +dnl The variable 'cf_cv_shlib_version' controls whether we use the rel or abi +dnl version when making symbolic links. +dnl +dnl The variable 'cf_cv_shlib_version_infix' controls whether shared library +dnl version numbers are infix (ex: libncurses..dylib) or postfix +dnl (ex: libncurses.so.). +dnl +dnl Some loaders leave 'so_locations' lying around. It's nice to clean up. +AC_DEFUN([CF_SHARED_OPTS], +[ + AC_REQUIRE([CF_LD_RPATH_OPT]) + RM_SHARED_OPTS= + LOCAL_LDFLAGS= + LOCAL_LDFLAGS2= + LD_SHARED_OPTS= + INSTALL_LIB="-m 644" + : ${rel_builddir:=.} + + shlibdir=$libdir + AC_SUBST(shlibdir) + + MAKE_DLLS="#" + AC_SUBST(MAKE_DLLS) + + cf_cv_do_symlinks=no + cf_ld_rpath_opt= + test "$cf_cv_enable_rpath" = yes && cf_ld_rpath_opt="$LD_RPATH_OPT" + + AC_MSG_CHECKING(if release/abi version should be used for shared libs) + AC_ARG_WITH(shlib-version, + [ --with-shlib-version=X Specify rel or abi version for shared libs], + [test -z "$withval" && withval=auto + case $withval in + (yes) + cf_cv_shlib_version=auto + ;; + (rel|abi|auto) + cf_cv_shlib_version=$withval + ;; + (*) + AC_MSG_RESULT($withval) + AC_MSG_ERROR([option value must be one of: rel, abi, or auto]) + ;; + esac + ],[cf_cv_shlib_version=auto]) + AC_MSG_RESULT($cf_cv_shlib_version) + + cf_cv_rm_so_locs=no + cf_try_cflags= + + # Some less-capable ports of gcc support only -fpic + CC_SHARED_OPTS= + + cf_try_fPIC=no + if test "$GCC" = yes + then + cf_try_fPIC=yes + else + case $cf_cv_system_name in + (*linux*) # e.g., PGI compiler + cf_try_fPIC=yes + ;; + esac + fi + + if test "$cf_try_fPIC" = yes + then + AC_MSG_CHECKING(which $CC option to use) + cf_save_CFLAGS="$CFLAGS" + for CC_SHARED_OPTS in -fPIC -fpic '' + do + CFLAGS="$cf_save_CFLAGS $CC_SHARED_OPTS" + AC_TRY_COMPILE([#include ],[int x = 1],[break],[]) + done + AC_MSG_RESULT($CC_SHARED_OPTS) + CFLAGS="$cf_save_CFLAGS" + fi + + cf_cv_shlib_version_infix=no + + case $cf_cv_system_name in + (aix4.[3-9]*|aix[[5-7]]*) + if test "$GCC" = yes; then + CC_SHARED_OPTS='-Wl,-brtl' + MK_SHARED_LIB='${CC} ${LDFLAGS} ${CFLAGS} -shared -Wl,-brtl -Wl,-blibpath:${RPATH_LIST}:/usr/lib -o [$]@' + else + CC_SHARED_OPTS='-brtl' + # as well as '-qpic=large -G' or perhaps "-bM:SRE -bnoentry -bexpall" + MK_SHARED_LIB='${CC} ${LDFLAGS} ${CFLAGS} -G -Wl,-brtl -Wl,-blibpath:${RPATH_LIST}:/usr/lib -o [$]@' + fi + ;; + (beos*) + MK_SHARED_LIB='${CC} ${LDFLAGS} ${CFLAGS} -o $[@] -Xlinker -soname=`basename $[@]` -nostart -e 0' + ;; + (cygwin*) + CC_SHARED_OPTS= + MK_SHARED_LIB=$SHELL' '$rel_builddir'/mk_shared_lib.sh [$]@ [$]{CC} [$]{CFLAGS}' + RM_SHARED_OPTS="$RM_SHARED_OPTS $rel_builddir/mk_shared_lib.sh *.dll.a" + cf_cv_shlib_version=cygdll + cf_cv_shlib_version_infix=cygdll + shlibdir=$bindir + MAKE_DLLS= + cat >mk_shared_lib.sh <<-CF_EOF + #!$SHELL + SHARED_LIB=\[$]1 + IMPORT_LIB=\`echo "\[$]1" | sed -e 's/cyg/lib/' -e 's/[[0-9]]*\.dll[$]/.dll.a/'\` + shift + cat <<-EOF + Linking shared library + ** SHARED_LIB \[$]SHARED_LIB + ** IMPORT_LIB \[$]IMPORT_LIB +EOF + exec \[$]* ${LDFLAGS} -shared -Wl,--out-implib=\[$]{IMPORT_LIB} -Wl,--export-all-symbols -o \[$]{SHARED_LIB} +CF_EOF + chmod +x mk_shared_lib.sh + ;; + (msys*) + CC_SHARED_OPTS= + MK_SHARED_LIB=$SHELL' '$rel_builddir'/mk_shared_lib.sh [$]@ [$]{CC} [$]{CFLAGS}' + RM_SHARED_OPTS="$RM_SHARED_OPTS $rel_builddir/mk_shared_lib.sh *.dll.a" + cf_cv_shlib_version=msysdll + cf_cv_shlib_version_infix=msysdll + shlibdir=$bindir + MAKE_DLLS= + cat >mk_shared_lib.sh <<-CF_EOF + #!$SHELL + SHARED_LIB=\[$]1 + IMPORT_LIB=\`echo "\[$]1" | sed -e 's/msys-/lib/' -e 's/[[0-9]]*\.dll[$]/.dll.a/'\` + shift + cat <<-EOF + Linking shared library + ** SHARED_LIB \[$]SHARED_LIB + ** IMPORT_LIB \[$]IMPORT_LIB +EOF + exec \[$]* ${LDFLAGS} -shared -Wl,--out-implib=\[$]{IMPORT_LIB} -Wl,--export-all-symbols -o \[$]{SHARED_LIB} +CF_EOF + chmod +x mk_shared_lib.sh + ;; + (darwin*) + cf_try_cflags="no-cpp-precomp" + CC_SHARED_OPTS="-dynamic" + MK_SHARED_LIB='${CC} ${LDFLAGS} ${CFLAGS} -dynamiclib -install_name ${libdir}/`basename $[@]` -compatibility_version ${ABI_VERSION} -current_version ${ABI_VERSION} -o $[@]' + test "$cf_cv_shlib_version" = auto && cf_cv_shlib_version=abi + cf_cv_shlib_version_infix=yes + AC_CACHE_CHECK([if ld -search_paths_first works], cf_cv_ldflags_search_paths_first, [ + cf_save_LDFLAGS=$LDFLAGS + LDFLAGS="$LDFLAGS -Wl,-search_paths_first" + AC_TRY_LINK(, [int i;], cf_cv_ldflags_search_paths_first=yes, cf_cv_ldflags_search_paths_first=no) + LDFLAGS=$cf_save_LDFLAGS]) + if test $cf_cv_ldflags_search_paths_first = yes; then + LDFLAGS="$LDFLAGS -Wl,-search_paths_first" + fi + ;; + (hpux[[7-8]]*) + # HP-UX 8.07 ld lacks "+b" option used for libdir search-list + if test "$GCC" != yes; then + CC_SHARED_OPTS='+Z' + fi + MK_SHARED_LIB='${LD} ${LDFLAGS} -b -o $[@]' + INSTALL_LIB="-m 555" + ;; + (hpux*) + # (tested with gcc 2.7.2 -- I don't have c89) + if test "$GCC" = yes; then + LD_SHARED_OPTS='-Xlinker +b -Xlinker ${libdir}' + else + CC_SHARED_OPTS='+Z' + LD_SHARED_OPTS='-Wl,+b,${libdir}' + fi + MK_SHARED_LIB='${LD} ${LDFLAGS} +b ${libdir} -b -o $[@]' + # HP-UX shared libraries must be executable, and should be + # readonly to exploit a quirk in the memory manager. + INSTALL_LIB="-m 555" + ;; + (interix*) + test "$cf_cv_shlib_version" = auto && cf_cv_shlib_version=rel + if test "$cf_cv_shlib_version" = rel; then + cf_shared_soname='`basename $[@] .${REL_VERSION}`.${ABI_VERSION}' + else + cf_shared_soname='`basename $[@]`' + fi + CC_SHARED_OPTS= + MK_SHARED_LIB='${CC} ${LDFLAGS} ${CFLAGS} -shared -Wl,-rpath,${RPATH_LIST} -Wl,-h,'$cf_shared_soname' -o $[@]' + ;; + (irix*) + if test "$cf_cv_enable_rpath" = yes ; then + EXTRA_LDFLAGS="${cf_ld_rpath_opt}\${RPATH_LIST} $EXTRA_LDFLAGS" + fi + # tested with IRIX 5.2 and 'cc'. + if test "$GCC" != yes; then + CC_SHARED_OPTS='-KPIC' + MK_SHARED_LIB='${CC} ${LDFLAGS} ${CFLAGS} -shared -rdata_shared -soname `basename $[@]` -o $[@]' + else + MK_SHARED_LIB='${CC} ${LDFLAGS} ${CFLAGS} -shared -Wl,-soname,`basename $[@]` -o $[@]' + fi + cf_cv_rm_so_locs=yes + ;; + (linux*|gnu*|k*bsd*-gnu) + if test "$DFT_LWR_MODEL" = "shared" ; then + LOCAL_LDFLAGS="${LD_RPATH_OPT}\$(LOCAL_LIBDIR)" + LOCAL_LDFLAGS2="$LOCAL_LDFLAGS" + fi + if test "$cf_cv_enable_rpath" = yes ; then + EXTRA_LDFLAGS="${cf_ld_rpath_opt}\${RPATH_LIST} $EXTRA_LDFLAGS" + fi + CF_SHARED_SONAME + MK_SHARED_LIB='${CC} ${LDFLAGS} ${CFLAGS} -shared -Wl,-soname,'$cf_cv_shared_soname',-stats,-lc -o $[@]' + ;; + (mingw*) + cf_cv_shlib_version=mingw + cf_cv_shlib_version_infix=mingw + shlibdir=$bindir + MAKE_DLLS= + if test "$DFT_LWR_MODEL" = "shared" ; then + LOCAL_LDFLAGS="-Wl,--enable-auto-import" + LOCAL_LDFLAGS2="$LOCAL_LDFLAGS" + EXTRA_LDFLAGS="-Wl,--enable-auto-import $EXTRA_LDFLAGS" + fi + CC_SHARED_OPTS= + MK_SHARED_LIB=$SHELL' '$rel_builddir'/mk_shared_lib.sh [$]@ [$]{CC} [$]{CFLAGS}' + RM_SHARED_OPTS="$RM_SHARED_OPTS $rel_builddir/mk_shared_lib.sh *.dll.a" + cat >mk_shared_lib.sh <<-CF_EOF + #!$SHELL + SHARED_LIB=\[$]1 + IMPORT_LIB=\`echo "\[$]1" | sed -e 's/[[0-9]]*\.dll[$]/.dll.a/'\` + shift + cat <<-EOF + Linking shared library + ** SHARED_LIB \[$]SHARED_LIB + ** IMPORT_LIB \[$]IMPORT_LIB +EOF + exec \[$]* ${LDFLAGS} -shared -Wl,--enable-auto-import,--out-implib=\[$]{IMPORT_LIB} -Wl,--export-all-symbols -o \[$]{SHARED_LIB} +CF_EOF + chmod +x mk_shared_lib.sh + ;; + (openbsd[[2-9]].*|mirbsd*) + if test "$DFT_LWR_MODEL" = "shared" ; then + LOCAL_LDFLAGS="${LD_RPATH_OPT}\$(LOCAL_LIBDIR)" + LOCAL_LDFLAGS2="$LOCAL_LDFLAGS" + fi + if test "$cf_cv_enable_rpath" = yes ; then + EXTRA_LDFLAGS="${cf_ld_rpath_opt}\${RPATH_LIST} $EXTRA_LDFLAGS" + fi + CC_SHARED_OPTS="$CC_SHARED_OPTS -DPIC" + CF_SHARED_SONAME + MK_SHARED_LIB='${CC} ${LDFLAGS} ${CFLAGS} -shared -Wl,-Bshareable,-soname,'$cf_cv_shared_soname',-stats,-lc -o $[@]' + ;; + (nto-qnx*|openbsd*|freebsd[[12]].*) + CC_SHARED_OPTS="$CC_SHARED_OPTS -DPIC" + MK_SHARED_LIB='${LD} ${LDFLAGS} -Bshareable -o $[@]' + test "$cf_cv_shlib_version" = auto && cf_cv_shlib_version=rel + ;; + (dragonfly*|freebsd*) + CC_SHARED_OPTS="$CC_SHARED_OPTS -DPIC" + if test "$DFT_LWR_MODEL" = "shared" && test "$cf_cv_enable_rpath" = yes ; then + LOCAL_LDFLAGS="${cf_ld_rpath_opt}\$(LOCAL_LIBDIR)" + LOCAL_LDFLAGS2="${cf_ld_rpath_opt}\${RPATH_LIST} $LOCAL_LDFLAGS" + EXTRA_LDFLAGS="${cf_ld_rpath_opt}\${RPATH_LIST} $EXTRA_LDFLAGS" + fi + CF_SHARED_SONAME + MK_SHARED_LIB='${CC} ${LDFLAGS} ${CFLAGS} -shared -Wl,-soname,'$cf_cv_shared_soname',-stats,-lc -o $[@]' + ;; + (netbsd*) + CC_SHARED_OPTS="$CC_SHARED_OPTS -DPIC" + if test "$DFT_LWR_MODEL" = "shared" && test "$cf_cv_enable_rpath" = yes ; then + LOCAL_LDFLAGS="${cf_ld_rpath_opt}\$(LOCAL_LIBDIR)" + LOCAL_LDFLAGS2="$LOCAL_LDFLAGS" + EXTRA_LDFLAGS="${cf_ld_rpath_opt}\${RPATH_LIST} $EXTRA_LDFLAGS" + if test "$cf_cv_shlib_version" = auto; then + if test -f /usr/libexec/ld.elf_so; then + cf_cv_shlib_version=abi + else + cf_cv_shlib_version=rel + fi + fi + CF_SHARED_SONAME + MK_SHARED_LIB='${CC} ${LDFLAGS} ${CFLAGS} -shared -Wl,-soname,'$cf_cv_shared_soname' -o $[@]' + else + MK_SHARED_LIB='${CC} ${LDFLAGS} ${CFLAGS} -Wl,-shared -Wl,-Bshareable -o $[@]' + fi + ;; + (osf*|mls+*) + # tested with OSF/1 V3.2 and 'cc' + # tested with OSF/1 V3.2 and gcc 2.6.3 (but the c++ demo didn't + # link with shared libs). + MK_SHARED_LIB='${LD} ${LDFLAGS} -set_version ${REL_VERSION}:${ABI_VERSION} -expect_unresolved "*" -shared -soname `basename $[@]`' + case $host_os in + (osf4*) + MK_SHARED_LIB="${MK_SHARED_LIB} -msym" + ;; + esac + MK_SHARED_LIB="${MK_SHARED_LIB}"' -o $[@]' + if test "$DFT_LWR_MODEL" = "shared" ; then + LOCAL_LDFLAGS="${LD_RPATH_OPT}\$(LOCAL_LIBDIR)" + LOCAL_LDFLAGS2="$LOCAL_LDFLAGS" + fi + cf_cv_rm_so_locs=yes + ;; + (sco3.2v5*) # also uw2* and UW7: hops 13-Apr-98 + # tested with osr5.0.5 + if test "$GCC" != yes; then + CC_SHARED_OPTS='-belf -KPIC' + fi + MK_SHARED_LIB='${LD} ${LDFLAGS} -dy -G -h `basename $[@] .${REL_VERSION}`.${ABI_VERSION} -o [$]@' + if test "$cf_cv_enable_rpath" = yes ; then + # only way is to set LD_RUN_PATH but no switch for it + RUN_PATH=$libdir + fi + test "$cf_cv_shlib_version" = auto && cf_cv_shlib_version=rel + LINK_PROGS='LD_RUN_PATH=${libdir}' + LINK_TESTS='Pwd=`pwd`;LD_RUN_PATH=`dirname $${Pwd}`/lib' + ;; + (sunos4*) + # tested with SunOS 4.1.1 and gcc 2.7.0 + if test "$GCC" != yes; then + CC_SHARED_OPTS='-KPIC' + fi + MK_SHARED_LIB='${LD} ${LDFLAGS} -assert pure-text -o $[@]' + test "$cf_cv_shlib_version" = auto && cf_cv_shlib_version=rel + ;; + (solaris2*) + # tested with SunOS 5.5.1 (solaris 2.5.1) and gcc 2.7.2 + # tested with SunOS 5.10 (solaris 10) and gcc 3.4.3 + if test "$DFT_LWR_MODEL" = "shared" ; then + LOCAL_LDFLAGS="-R \$(LOCAL_LIBDIR):\${libdir}" + LOCAL_LDFLAGS2="$LOCAL_LDFLAGS" + fi + if test "$cf_cv_enable_rpath" = yes ; then + EXTRA_LDFLAGS="-R \${libdir} $EXTRA_LDFLAGS" + fi + CF_SHARED_SONAME + if test "$GCC" != yes; then + cf_save_CFLAGS="$CFLAGS" + for cf_shared_opts in -xcode=pic32 -xcode=pic13 -KPIC -Kpic -O + do + CFLAGS="$cf_shared_opts $cf_save_CFLAGS" + AC_TRY_COMPILE([#include ],[printf("Hello\n");],[break]) + done + CFLAGS="$cf_save_CFLAGS" + CC_SHARED_OPTS=$cf_shared_opts + MK_SHARED_LIB='${CC} ${LDFLAGS} ${CFLAGS} -dy -G -h '$cf_cv_shared_soname' -o $[@]' + else + MK_SHARED_LIB='${CC} ${LDFLAGS} ${CFLAGS} -shared -dy -G -h '$cf_cv_shared_soname' -o $[@]' + fi + ;; + (sysv5uw7*|unix_sv*) + # tested with UnixWare 7.1.0 (gcc 2.95.2 and cc) + if test "$GCC" != yes; then + CC_SHARED_OPTS='-KPIC' + fi + MK_SHARED_LIB='${LD} ${LDFLAGS} -d y -G -o [$]@' + ;; + (*) + CC_SHARED_OPTS='unknown' + MK_SHARED_LIB='echo unknown' + ;; + esac + + # This works if the last tokens in $MK_SHARED_LIB are the -o target. + case "$cf_cv_shlib_version" in + (rel|abi) + case "$MK_SHARED_LIB" in + (*'-o $[@]') + test "$cf_cv_do_symlinks" = no && cf_cv_do_symlinks=yes + ;; + (*) + AC_MSG_WARN(ignored --with-shlib-version) + ;; + esac + ;; + esac + + if test -n "$cf_try_cflags" + then +cat > conftest.$ac_ext < +int main(int argc, char *argv[[]]) +{ + printf("hello\n"); + return (argv[[argc-1]] == 0) ; +} +EOF + cf_save_CFLAGS="$CFLAGS" + for cf_opt in $cf_try_cflags + do + CFLAGS="$cf_save_CFLAGS -$cf_opt" + AC_MSG_CHECKING(if CFLAGS option -$cf_opt works) + if AC_TRY_EVAL(ac_compile); then + AC_MSG_RESULT(yes) + cf_save_CFLAGS="$CFLAGS" + else + AC_MSG_RESULT(no) + fi + done + CFLAGS="$cf_save_CFLAGS" + fi + + + # RPATH_LIST is a colon-separated list of directories + test -n "$cf_ld_rpath_opt" && MK_SHARED_LIB="$MK_SHARED_LIB $cf_ld_rpath_opt\${RPATH_LIST}" + test -z "$RPATH_LIST" && RPATH_LIST="\${libdir}" + + test $cf_cv_rm_so_locs = yes && RM_SHARED_OPTS="$RM_SHARED_OPTS so_locations" + + CF_VERBOSE(CC_SHARED_OPTS: $CC_SHARED_OPTS) + CF_VERBOSE(MK_SHARED_LIB: $MK_SHARED_LIB) + + AC_SUBST(CC_SHARED_OPTS) + AC_SUBST(LD_RPATH_OPT) + AC_SUBST(LD_SHARED_OPTS) + AC_SUBST(MK_SHARED_LIB) + AC_SUBST(RM_SHARED_OPTS) + + AC_SUBST(LINK_PROGS) + AC_SUBST(LINK_TESTS) + + AC_SUBST(EXTRA_LDFLAGS) + AC_SUBST(LOCAL_LDFLAGS) + AC_SUBST(LOCAL_LDFLAGS2) + + AC_SUBST(INSTALL_LIB) + AC_SUBST(RPATH_LIST) +])dnl +dnl --------------------------------------------------------------------------- +dnl CF_SHARED_SONAME version: 3 updated: 2008/09/08 18:34:43 +dnl ---------------- +dnl utility macro for CF_SHARED_OPTS, constructs "$cf_cv_shared_soname" for +dnl substitution into MK_SHARED_LIB string for the "-soname" (or similar) +dnl option. +dnl +dnl $1 is the default that should be used for "$cf_cv_shlib_version". +dnl If missing, use "rel". +define([CF_SHARED_SONAME], +[ + test "$cf_cv_shlib_version" = auto && cf_cv_shlib_version=ifelse($1,,rel,$1) + if test "$cf_cv_shlib_version" = rel; then + cf_cv_shared_soname='`basename $[@] .${REL_VERSION}`.${ABI_VERSION}' + else + cf_cv_shared_soname='`basename $[@]`' + fi +]) +dnl --------------------------------------------------------------------------- +dnl CF_SIZECHANGE version: 14 updated: 2018/06/20 20:23:13 +dnl ------------- +dnl Check for definitions & structures needed for window size-changing +dnl +dnl https://stackoverflow.com/questions/18878141/difference-between-structures-ttysize-and-winsize/50769952#50769952 +AC_DEFUN([CF_SIZECHANGE], +[ +AC_REQUIRE([CF_STRUCT_TERMIOS]) +AC_CACHE_CHECK(declaration of size-change, cf_cv_sizechange,[ + cf_cv_sizechange=unknown + cf_save_CPPFLAGS="$CPPFLAGS" + +for cf_opts in "" "NEED_PTEM_H" +do + + CPPFLAGS="$cf_save_CPPFLAGS" + if test -n "$cf_opts" + then + CF_APPEND_TEXT(CPPFLAGS,-D$cf_opts) + fi + AC_TRY_COMPILE([#include +#ifdef HAVE_TERMIOS_H +#include +#else +#ifdef HAVE_TERMIO_H +#include +#endif +#endif + +#ifdef NEED_PTEM_H +/* This is a workaround for SCO: they neglected to define struct winsize in + * termios.h -- it's only in termio.h and ptem.h + */ +#include +#include +#endif + +#ifdef HAVE_SYS_IOCTL_H +#include +#endif +],[ +#ifdef TIOCGSIZE + struct ttysize win; /* SunOS 3.0... */ + int y = win.ts_lines; + int x = win.ts_cols; +#else +#ifdef TIOCGWINSZ + struct winsize win; /* everything else */ + int y = win.ws_row; + int x = win.ws_col; +#else + no TIOCGSIZE or TIOCGWINSZ +#endif /* TIOCGWINSZ */ +#endif /* TIOCGSIZE */ + ], + [cf_cv_sizechange=yes], + [cf_cv_sizechange=no]) + + CPPFLAGS="$cf_save_CPPFLAGS" + if test "$cf_cv_sizechange" = yes ; then + echo "size-change succeeded ($cf_opts)" >&AC_FD_CC + test -n "$cf_opts" && cf_cv_sizechange="$cf_opts" + break + fi +done +]) +if test "$cf_cv_sizechange" != no ; then + AC_DEFINE(HAVE_SIZECHANGE,1,[Define to 1 if sizechange declarations are provided]) + case $cf_cv_sizechange in + (NEED*) + AC_DEFINE_UNQUOTED($cf_cv_sizechange ) + ;; + esac +fi +])dnl +dnl --------------------------------------------------------------------------- +dnl CF_STRUCT_TERMIOS version: 9 updated: 2018/06/08 21:57:23 +dnl ----------------- +dnl Some machines require _POSIX_SOURCE to completely define struct termios. +AC_DEFUN([CF_STRUCT_TERMIOS],[ +AC_REQUIRE([CF_XOPEN_SOURCE]) + +AC_CHECK_HEADERS( \ +termio.h \ +termios.h \ +unistd.h \ +sys/ioctl.h \ +sys/termio.h \ +) + +if test "$ac_cv_header_termios_h" = yes ; then + case "$CFLAGS $CPPFLAGS" in + (*-D_POSIX_SOURCE*) + termios_bad=dunno ;; + (*) termios_bad=maybe ;; + esac + if test "$termios_bad" = maybe ; then + AC_MSG_CHECKING(whether termios.h needs _POSIX_SOURCE) + AC_TRY_COMPILE([#include ], + [struct termios foo; int x = foo.c_iflag], + termios_bad=no, [ + AC_TRY_COMPILE([ +#define _POSIX_SOURCE +#include ], + [struct termios foo; int x = foo.c_iflag], + termios_bad=unknown, + termios_bad=yes AC_DEFINE(_POSIX_SOURCE,1,[Define to 1 if we must define _POSIX_SOURCE])) + ]) + AC_MSG_RESULT($termios_bad) + fi +fi +])dnl +dnl --------------------------------------------------------------------------- +dnl CF_SUBDIR_PATH version: 7 updated: 2014/12/04 04:33:06 +dnl -------------- +dnl Construct a search-list for a nonstandard header/lib-file +dnl $1 = the variable to return as result +dnl $2 = the package name +dnl $3 = the subdirectory, e.g., bin, include or lib +AC_DEFUN([CF_SUBDIR_PATH], +[ +$1= + +CF_ADD_SUBDIR_PATH($1,$2,$3,$prefix,NONE) + +for cf_subdir_prefix in \ + /usr \ + /usr/local \ + /usr/pkg \ + /opt \ + /opt/local \ + [$]HOME +do + CF_ADD_SUBDIR_PATH($1,$2,$3,$cf_subdir_prefix,$prefix) +done +])dnl +dnl --------------------------------------------------------------------------- +dnl CF_TERM_HEADER version: 4 updated: 2015/04/15 19:08:48 +dnl -------------- +dnl Look for term.h, which is part of X/Open curses. It defines the interface +dnl to terminfo database. Usually it is in the same include-path as curses.h, +dnl but some packagers change this, breaking various applications. +AC_DEFUN([CF_TERM_HEADER],[ +AC_CACHE_CHECK(for terminfo header, cf_cv_term_header,[ +case ${cf_cv_ncurses_header} in +(*/ncurses.h|*/ncursesw.h) + cf_term_header=`echo "$cf_cv_ncurses_header" | sed -e 's%ncurses[[^.]]*\.h$%term.h%'` + ;; +(*) + cf_term_header=term.h + ;; +esac + +for cf_test in $cf_term_header "ncurses/term.h" "ncursesw/term.h" +do +AC_TRY_COMPILE([#include +#include <${cf_cv_ncurses_header:-curses.h}> +#include <$cf_test> +],[int x = auto_left_margin],[ + cf_cv_term_header="$cf_test"],[ + cf_cv_term_header=unknown + ]) + test "$cf_cv_term_header" != unknown && break +done +]) + +# Set definitions to allow ifdef'ing to accommodate subdirectories + +case $cf_cv_term_header in +(*term.h) + AC_DEFINE(HAVE_TERM_H,1,[Define to 1 if we have term.h]) + ;; +esac + +case $cf_cv_term_header in +(ncurses/term.h) + AC_DEFINE(HAVE_NCURSES_TERM_H,1,[Define to 1 if we have ncurses/term.h]) + ;; +(ncursesw/term.h) + AC_DEFINE(HAVE_NCURSESW_TERM_H,1,[Define to 1 if we have ncursesw/term.h]) + ;; +esac +])dnl +dnl --------------------------------------------------------------------------- +dnl CF_TRIM_X_LIBS version: 3 updated: 2015/04/12 15:39:00 +dnl -------------- +dnl Trim extra base X libraries added as a workaround for inconsistent library +dnl dependencies returned by "new" pkg-config files. +AC_DEFUN([CF_TRIM_X_LIBS],[ + for cf_trim_lib in Xmu Xt X11 + do + case "$LIBS" in + (*-l$cf_trim_lib\ *-l$cf_trim_lib*) + LIBS=`echo "$LIBS " | sed -e 's/ / /g' -e 's%-l'"$cf_trim_lib"' %%' -e 's/ $//'` + CF_VERBOSE(..trimmed $LIBS) + ;; + esac + done +]) +dnl --------------------------------------------------------------------------- +dnl CF_TRY_PKG_CONFIG version: 5 updated: 2013/07/06 21:27:06 +dnl ----------------- +dnl This is a simple wrapper to use for pkg-config, for libraries which may be +dnl available in that form. +dnl +dnl $1 = package name +dnl $2 = extra logic to use, if any, after updating CFLAGS and LIBS +dnl $3 = logic to use if pkg-config does not have the package +AC_DEFUN([CF_TRY_PKG_CONFIG],[ +AC_REQUIRE([CF_PKG_CONFIG]) + +if test "$PKG_CONFIG" != none && "$PKG_CONFIG" --exists $1; then + CF_VERBOSE(found package $1) + cf_pkgconfig_incs="`$PKG_CONFIG --cflags $1 2>/dev/null`" + cf_pkgconfig_libs="`$PKG_CONFIG --libs $1 2>/dev/null`" + CF_VERBOSE(package $1 CFLAGS: $cf_pkgconfig_incs) + CF_VERBOSE(package $1 LIBS: $cf_pkgconfig_libs) + CF_ADD_CFLAGS($cf_pkgconfig_incs) + CF_ADD_LIBS($cf_pkgconfig_libs) + ifelse([$2],,:,[$2]) +else + cf_pkgconfig_incs= + cf_pkgconfig_libs= + ifelse([$3],,:,[$3]) +fi +]) +dnl --------------------------------------------------------------------------- +dnl CF_TRY_XOPEN_SOURCE version: 2 updated: 2018/06/20 20:23:13 +dnl ------------------- +dnl If _XOPEN_SOURCE is not defined in the compile environment, check if we +dnl can define it successfully. +AC_DEFUN([CF_TRY_XOPEN_SOURCE],[ +AC_CACHE_CHECK(if we should define _XOPEN_SOURCE,cf_cv_xopen_source,[ + AC_TRY_COMPILE([ +#include +#include +#include +],[ +#ifndef _XOPEN_SOURCE +make an error +#endif], + [cf_cv_xopen_source=no], + [cf_save="$CPPFLAGS" + CF_APPEND_TEXT(CPPFLAGS,-D_XOPEN_SOURCE=$cf_XOPEN_SOURCE) + AC_TRY_COMPILE([ +#include +#include +#include +],[ +#ifdef _XOPEN_SOURCE +make an error +#endif], + [cf_cv_xopen_source=no], + [cf_cv_xopen_source=$cf_XOPEN_SOURCE]) + CPPFLAGS="$cf_save" + ]) +]) + +if test "$cf_cv_xopen_source" != no ; then + CF_REMOVE_DEFINE(CFLAGS,$CFLAGS,_XOPEN_SOURCE) + CF_REMOVE_DEFINE(CPPFLAGS,$CPPFLAGS,_XOPEN_SOURCE) + cf_temp_xopen_source="-D_XOPEN_SOURCE=$cf_cv_xopen_source" + CF_ADD_CFLAGS($cf_temp_xopen_source) +fi +]) +dnl --------------------------------------------------------------------------- +dnl CF_UNION_WAIT version: 6 updated: 2012/10/06 08:57:51 +dnl ------------- +dnl Check to see if the BSD-style union wait is declared. Some platforms may +dnl use this, though it is deprecated in favor of the 'int' type in Posix. +dnl Some vendors provide a bogus implementation that declares union wait, but +dnl uses the 'int' type instead; we try to spot these by checking for the +dnl associated macros. +dnl +dnl Ahem. Some implementers cast the status value to an int*, as an attempt to +dnl use the macros for either union wait or int. So we do a check compile to +dnl see if the macros are defined and apply to an int. +dnl +dnl Sets: $cf_cv_type_unionwait +dnl Defines: HAVE_TYPE_UNIONWAIT +AC_DEFUN([CF_UNION_WAIT], +[ +AC_REQUIRE([CF_WAIT_HEADERS]) +AC_MSG_CHECKING([for union wait]) +AC_CACHE_VAL(cf_cv_type_unionwait,[ + AC_TRY_LINK($cf_wait_headers, + [int x; + int y = WEXITSTATUS(x); + int z = WTERMSIG(x); + wait(&x); + ], + [cf_cv_type_unionwait=no + echo compiles ok w/o union wait 1>&AC_FD_CC + ],[ + AC_TRY_LINK($cf_wait_headers, + [union wait x; +#ifdef WEXITSTATUS + int y = WEXITSTATUS(x); +#endif +#ifdef WTERMSIG + int z = WTERMSIG(x); +#endif + wait(&x); + ], + [cf_cv_type_unionwait=yes + echo compiles ok with union wait and possibly macros too 1>&AC_FD_CC + ], + [cf_cv_type_unionwait=no])])]) +AC_MSG_RESULT($cf_cv_type_unionwait) +test $cf_cv_type_unionwait = yes && AC_DEFINE(HAVE_TYPE_UNIONWAIT,1,[Define to 1 if type unionwait is declared]) +])dnl +dnl --------------------------------------------------------------------------- +dnl CF_UPPER version: 5 updated: 2001/01/29 23:40:59 +dnl -------- +dnl Make an uppercase version of a variable +dnl $1=uppercase($2) +AC_DEFUN([CF_UPPER], +[ +$1=`echo "$2" | sed y%abcdefghijklmnopqrstuvwxyz./-%ABCDEFGHIJKLMNOPQRSTUVWXYZ___%` +])dnl +dnl --------------------------------------------------------------------------- +dnl CF_UTF8_LIB version: 8 updated: 2012/10/06 08:57:51 +dnl ----------- +dnl Check for multibyte support, and if not found, utf8 compatibility library +AC_DEFUN([CF_UTF8_LIB], +[ +AC_CACHE_CHECK(for multibyte character support,cf_cv_utf8_lib,[ + cf_save_LIBS="$LIBS" + AC_TRY_LINK([ +#include ],[putwc(0,0);], + [cf_cv_utf8_lib=yes], + [CF_FIND_LINKAGE([ +#include ],[putwc(0,0);],utf8, + [cf_cv_utf8_lib=add-on], + [cf_cv_utf8_lib=no]) +])]) + +# HAVE_LIBUTF8_H is used by ncurses if curses.h is shared between +# ncurses/ncursesw: +if test "$cf_cv_utf8_lib" = "add-on" ; then + AC_DEFINE(HAVE_LIBUTF8_H,1,[Define to 1 if we should include libutf8.h]) + CF_ADD_INCDIR($cf_cv_header_path_utf8) + CF_ADD_LIBDIR($cf_cv_library_path_utf8) + CF_ADD_LIBS($cf_cv_library_file_utf8) +fi +])dnl +dnl --------------------------------------------------------------------------- +dnl CF_VERBOSE version: 3 updated: 2007/07/29 09:55:12 +dnl ---------- +dnl Use AC_VERBOSE w/o the warnings +AC_DEFUN([CF_VERBOSE], +[test -n "$verbose" && echo " $1" 1>&AC_FD_MSG +CF_MSG_LOG([$1]) +])dnl +dnl --------------------------------------------------------------------------- +dnl CF_VERSION_INFO version: 7 updated: 2015/04/17 21:13:04 +dnl --------------- +dnl Define several useful symbols derived from the VERSION file. A separate +dnl file is preferred to embedding the version numbers in various scripts. +dnl (automake is a textbook-example of why the latter is a bad idea, but there +dnl are others). +dnl +dnl The file contents are: +dnl libtool-version release-version patch-version +dnl or +dnl release-version +dnl where +dnl libtool-version (see ?) consists of 3 integers separated by '.' +dnl release-version consists of a major version and minor version +dnl separated by '.', optionally followed by a patch-version +dnl separated by '-'. The minor version need not be an +dnl integer (but it is preferred). +dnl patch-version is an integer in the form yyyymmdd, so ifdef's and +dnl scripts can easily compare versions. +dnl +dnl If libtool is used, the first form is required, since CF_WITH_LIBTOOL +dnl simply extracts the first field using 'cut -f1'. +dnl +dnl Optional parameters: +dnl $1 = internal name for package +dnl $2 = external name for package +AC_DEFUN([CF_VERSION_INFO], +[ +if test -f $srcdir/VERSION ; then + AC_MSG_CHECKING(for package version) + + # if there are not enough fields, cut returns the last one... + cf_field1=`sed -e '2,$d' $srcdir/VERSION|cut -f1` + cf_field2=`sed -e '2,$d' $srcdir/VERSION|cut -f2` + cf_field3=`sed -e '2,$d' $srcdir/VERSION|cut -f3` + + # this is how CF_BUNDLED_INTL uses $VERSION: + VERSION="$cf_field1" + + VERSION_MAJOR=`echo "$cf_field2" | sed -e 's/\..*//'` + test -z "$VERSION_MAJOR" && AC_MSG_ERROR(missing major-version) + + VERSION_MINOR=`echo "$cf_field2" | sed -e 's/^[[^.]]*\.//' -e 's/-.*//'` + test -z "$VERSION_MINOR" && AC_MSG_ERROR(missing minor-version) + + AC_MSG_RESULT(${VERSION_MAJOR}.${VERSION_MINOR}) + + AC_MSG_CHECKING(for package patch date) + VERSION_PATCH=`echo "$cf_field3" | sed -e 's/^[[^-]]*-//'` + case .$VERSION_PATCH in + (.) + AC_MSG_ERROR(missing patch-date $VERSION_PATCH) + ;; + (.[[0-9]][[0-9]][[0-9]][[0-9]][[0-9]][[0-9]][[0-9]][[0-9]]) + ;; + (*) + AC_MSG_ERROR(illegal patch-date $VERSION_PATCH) + ;; + esac + AC_MSG_RESULT($VERSION_PATCH) +else + AC_MSG_ERROR(did not find $srcdir/VERSION) +fi + +# show the actual data that we have for versions: +CF_VERBOSE(ABI VERSION $VERSION) +CF_VERBOSE(VERSION_MAJOR $VERSION_MAJOR) +CF_VERBOSE(VERSION_MINOR $VERSION_MINOR) +CF_VERBOSE(VERSION_PATCH $VERSION_PATCH) + +AC_SUBST(VERSION) +AC_SUBST(VERSION_MAJOR) +AC_SUBST(VERSION_MINOR) +AC_SUBST(VERSION_PATCH) + +dnl if a package name is given, define its corresponding version info. We +dnl need the package name to ensure that the defined symbols are unique. +ifelse($1,,,[ + cf_PACKAGE=$1 + PACKAGE=ifelse($2,,$1,$2) + AC_DEFINE_UNQUOTED(PACKAGE, "$PACKAGE",[Define to the package-name]) + AC_SUBST(PACKAGE) + CF_UPPER(cf_PACKAGE,$cf_PACKAGE) + AC_DEFINE_UNQUOTED(${cf_PACKAGE}_VERSION,"${VERSION_MAJOR}.${VERSION_MINOR}") + AC_DEFINE_UNQUOTED(${cf_PACKAGE}_PATCHDATE,${VERSION_PATCH}) +]) +])dnl +dnl --------------------------------------------------------------------------- +dnl CF_WAIT_HEADERS version: 2 updated: 1997/10/21 19:45:33 +dnl --------------- +dnl Build up an expression $cf_wait_headers with the header files needed to +dnl compile against the prototypes for 'wait()', 'waitpid()', etc. Assume it's +dnl Posix, which uses and , but allow SVr4 variation +dnl with . +AC_DEFUN([CF_WAIT_HEADERS], +[ +AC_HAVE_HEADERS(sys/wait.h) +cf_wait_headers="#include +" +if test $ac_cv_header_sys_wait_h = yes; then +cf_wait_headers="$cf_wait_headers +#include +" +else +AC_HAVE_HEADERS(wait.h) +AC_HAVE_HEADERS(waitstatus.h) +if test $ac_cv_header_wait_h = yes; then +cf_wait_headers="$cf_wait_headers +#include +" +fi +if test $ac_cv_header_waitstatus_h = yes; then +cf_wait_headers="$cf_wait_headers +#include +" +fi +fi +])dnl +dnl --------------------------------------------------------------------------- +dnl CF_WIDEC_CURSES version: 5 updated: 2012/11/08 20:57:52 +dnl --------------- +dnl Check for curses implementations that can handle wide-characters +AC_DEFUN([CF_WIDEC_CURSES], +[ +AC_CACHE_CHECK(if curses supports wide characters,cf_cv_widec_curses,[ +AC_TRY_LINK([ +#include +#include <${cf_cv_ncurses_header:-curses.h}>],[ + wchar_t temp[2]; + wchar_t wch = 'A'; + temp[0] = wch; + waddnwstr(stdscr, temp, 1); +], +[cf_cv_widec_curses=yes], +[cf_cv_widec_curses=no]) +]) + +if test "$cf_cv_widec_curses" = yes ; then + AC_DEFINE(WIDEC_CURSES,1,[Define to 1 if curses supports wide characters]) + + # This is needed on Tru64 5.0 to declare mbstate_t + AC_CACHE_CHECK(if we must include wchar.h to declare mbstate_t,cf_cv_widec_mbstate,[ + AC_TRY_COMPILE([ +#include +#include <${cf_cv_ncurses_header:-curses.h}>], +[mbstate_t state], +[cf_cv_widec_mbstate=no], +[AC_TRY_COMPILE([ +#include +#include +#include <${cf_cv_ncurses_header:-curses.h}>], +[mbstate_t state], +[cf_cv_widec_mbstate=yes], +[cf_cv_widec_mbstate=unknown])])]) + +if test "$cf_cv_widec_mbstate" = yes ; then + AC_DEFINE(NEED_WCHAR_H,1,[Define to 1 if we must include wchar.h]) +fi + +if test "$cf_cv_widec_mbstate" != unknown ; then + AC_DEFINE(HAVE_MBSTATE_T,1,[Define to 1 if we have mbstate_t type]) +fi + +fi +])dnl +dnl --------------------------------------------------------------------------- +dnl CF_WITH_ABI_VERSION version: 3 updated: 2015/06/06 16:10:11 +dnl ------------------- +dnl Allow library's ABI to be overridden. Generally this happens when a +dnl packager has incremented the ABI past that used in the original package, +dnl and wishes to keep doing this. +dnl +dnl $1 is the package name, if any, to derive a corresponding {package}_ABI +dnl symbol. +AC_DEFUN([CF_WITH_ABI_VERSION],[ +test -z "$cf_cv_abi_version" && cf_cv_abi_version=0 +AC_ARG_WITH(abi-version, +[ --with-abi-version=XXX override derived ABI version],[ + if test "x$cf_cv_abi_version" != "x$withval" + then + AC_MSG_WARN(overriding ABI version $cf_cv_abi_version to $withval) + case $cf_cv_rel_version in + (5.*) + cf_cv_rel_version=$withval.0 + ;; + (6.*) + cf_cv_rel_version=$withval.9 # FIXME: should be 10 as of 6.0 release + ;; + esac + fi + cf_cv_abi_version=$withval]) + CF_NUMBER_SYNTAX($cf_cv_abi_version,ABI version) +ifelse($1,,,[ +$1_ABI=$cf_cv_abi_version +]) +])dnl +dnl --------------------------------------------------------------------------- +dnl CF_WITH_CURSES_DIR version: 3 updated: 2010/11/20 17:02:38 +dnl ------------------ +dnl Wrapper for AC_ARG_WITH to specify directory under which to look for curses +dnl libraries. +AC_DEFUN([CF_WITH_CURSES_DIR],[ + +AC_MSG_CHECKING(for specific curses-directory) +AC_ARG_WITH(curses-dir, + [ --with-curses-dir=DIR directory in which (n)curses is installed], + [cf_cv_curses_dir=$withval], + [cf_cv_curses_dir=no]) +AC_MSG_RESULT($cf_cv_curses_dir) + +if ( test -n "$cf_cv_curses_dir" && test "$cf_cv_curses_dir" != "no" ) +then + CF_PATH_SYNTAX(withval) + if test -d "$cf_cv_curses_dir" + then + CF_ADD_INCDIR($cf_cv_curses_dir/include) + CF_ADD_LIBDIR($cf_cv_curses_dir/lib) + fi +fi +])dnl +dnl --------------------------------------------------------------------------- +dnl CF_WITH_DBMALLOC version: 7 updated: 2010/06/21 17:26:47 +dnl ---------------- +dnl Configure-option for dbmalloc. The optional parameter is used to override +dnl the updating of $LIBS, e.g., to avoid conflict with subsequent tests. +AC_DEFUN([CF_WITH_DBMALLOC],[ +CF_NO_LEAKS_OPTION(dbmalloc, + [ --with-dbmalloc test: use Conor Cahill's dbmalloc library], + [USE_DBMALLOC]) + +if test "$with_dbmalloc" = yes ; then + AC_CHECK_HEADER(dbmalloc.h, + [AC_CHECK_LIB(dbmalloc,[debug_malloc]ifelse([$1],,[],[,$1]))]) +fi +])dnl +dnl --------------------------------------------------------------------------- +dnl CF_WITH_DMALLOC version: 7 updated: 2010/06/21 17:26:47 +dnl --------------- +dnl Configure-option for dmalloc. The optional parameter is used to override +dnl the updating of $LIBS, e.g., to avoid conflict with subsequent tests. +AC_DEFUN([CF_WITH_DMALLOC],[ +CF_NO_LEAKS_OPTION(dmalloc, + [ --with-dmalloc test: use Gray Watson's dmalloc library], + [USE_DMALLOC]) + +if test "$with_dmalloc" = yes ; then + AC_CHECK_HEADER(dmalloc.h, + [AC_CHECK_LIB(dmalloc,[dmalloc_debug]ifelse([$1],,[],[,$1]))]) +fi +])dnl +dnl --------------------------------------------------------------------------- +dnl CF_WITH_EXPORT_SYMS version: 3 updated: 2014/12/20 19:16:08 +dnl ------------------- +dnl Use this with libtool to specify the list of symbols that may be exported. +dnl The input file contains one symbol per line; comments work with "#". +dnl +dnl $1 = basename of the ".sym" file (default $PACKAGE) +AC_DEFUN([CF_WITH_EXPORT_SYMS], +[ +AC_MSG_CHECKING(if exported-symbols file should be used) +AC_ARG_WITH(export-syms, + [ --with-export-syms=XXX limit exported symbols using libtool], + [with_export_syms=$withval], + [with_export_syms=no]) +if test "x$with_export_syms" = xyes +then + with_export_syms='${top_srcdir}/package/ifelse($1,,${PACKAGE},[$1]).sym' + AC_SUBST(PACKAGE) +fi +AC_MSG_RESULT($with_export_syms) +if test "x$with_export_syms" != xno +then + EXPORT_SYMS="-export-symbols $with_export_syms" + AC_SUBST(EXPORT_SYMS) +fi +])dnl +dnl --------------------------------------------------------------------------- +dnl CF_WITH_INSTALL_PREFIX version: 4 updated: 2010/10/23 15:52:32 +dnl ---------------------- +dnl Configure-script option to give a default value for the poorly-chosen name +dnl $(DESTDIR). +AC_DEFUN([CF_WITH_INSTALL_PREFIX], +[ +AC_MSG_CHECKING(for install-prefix) +AC_ARG_WITH(install-prefix, + [ --with-install-prefix=XXX sets DESTDIR, useful for packaging], + [cf_opt_with_install_prefix=$withval], + [cf_opt_with_install_prefix=${DESTDIR:-no}]) +AC_MSG_RESULT($cf_opt_with_install_prefix) +if test "$cf_opt_with_install_prefix" != no ; then + CF_PATH_SYNTAX(cf_opt_with_install_prefix) + DESTDIR=$cf_opt_with_install_prefix +fi +AC_SUBST(DESTDIR) +])dnl +dnl --------------------------------------------------------------------------- +dnl CF_WITH_LIBTOOL version: 35 updated: 2017/08/12 07:58:51 +dnl --------------- +dnl Provide a configure option to incorporate libtool. Define several useful +dnl symbols for the makefile rules. +dnl +dnl The reference to AC_PROG_LIBTOOL does not normally work, since it uses +dnl macros from libtool.m4 which is in the aclocal directory of automake. +dnl Following is a simple script which turns on the AC_PROG_LIBTOOL macro. +dnl But that still does not work properly since the macro is expanded outside +dnl the CF_WITH_LIBTOOL macro: +dnl +dnl #!/bin/sh +dnl ACLOCAL=`aclocal --print-ac-dir` +dnl if test -z "$ACLOCAL" ; then +dnl echo cannot find aclocal directory +dnl exit 1 +dnl elif test ! -f $ACLOCAL/libtool.m4 ; then +dnl echo cannot find libtool.m4 file +dnl exit 1 +dnl fi +dnl +dnl LOCAL=aclocal.m4 +dnl ORIG=aclocal.m4.orig +dnl +dnl trap "mv $ORIG $LOCAL" 0 1 2 3 15 +dnl rm -f $ORIG +dnl mv $LOCAL $ORIG +dnl +dnl # sed the LIBTOOL= assignment to omit the current directory? +dnl sed -e 's/^LIBTOOL=.*/LIBTOOL=${LIBTOOL:-libtool}/' $ACLOCAL/libtool.m4 >>$LOCAL +dnl cat $ORIG >>$LOCAL +dnl +dnl autoconf-257 $* +dnl +AC_DEFUN([CF_WITH_LIBTOOL], +[ +AC_REQUIRE([CF_DISABLE_LIBTOOL_VERSION]) +ifdef([AC_PROG_LIBTOOL],,[ +LIBTOOL= +]) +# common library maintenance symbols that are convenient for libtool scripts: +LIB_CREATE='${AR} -cr' +LIB_OBJECT='${OBJECTS}' +LIB_SUFFIX=.a +LIB_PREP="$RANLIB" + +# symbols used to prop libtool up to enable it to determine what it should be +# doing: +LIB_CLEAN= +LIB_COMPILE= +LIB_LINK='${CC}' +LIB_INSTALL= +LIB_UNINSTALL= + +AC_MSG_CHECKING(if you want to build libraries with libtool) +AC_ARG_WITH(libtool, + [ --with-libtool generate libraries with libtool], + [with_libtool=$withval], + [with_libtool=no]) +AC_MSG_RESULT($with_libtool) +if test "$with_libtool" != "no"; then +ifdef([AC_PROG_LIBTOOL],[ + # missing_content_AC_PROG_LIBTOOL{{ + AC_PROG_LIBTOOL + # missing_content_AC_PROG_LIBTOOL}} +],[ + if test "$with_libtool" != "yes" ; then + CF_PATH_SYNTAX(with_libtool) + LIBTOOL=$with_libtool + else + AC_CHECK_TOOLS(LIBTOOL,[libtool glibtool],none) + CF_LIBTOOL_VERSION + if test -z "$cf_cv_libtool_version" && test "$LIBTOOL" = libtool + then + CF_FORGET_TOOL(LIBTOOL) + AC_CHECK_TOOLS(LIBTOOL,[glibtool],none) + CF_LIBTOOL_VERSION + fi + fi + if test -z "$LIBTOOL" ; then + AC_MSG_ERROR(Cannot find libtool) + fi +])dnl + LIB_CREATE='${LIBTOOL} --mode=link ${CC} -rpath ${libdir} ${LIBTOOL_VERSION} `cut -f1 ${top_srcdir}/VERSION` ${LIBTOOL_OPTS} ${LT_UNDEF} $(LIBS) -o' + LIB_OBJECT='${OBJECTS:.o=.lo}' + LIB_SUFFIX=.la + LIB_CLEAN='${LIBTOOL} --mode=clean' + LIB_COMPILE='${LIBTOOL} --mode=compile' + LIB_LINK='${LIBTOOL} --mode=link ${CC} ${LIBTOOL_OPTS}' + LIB_INSTALL='${LIBTOOL} --mode=install' + LIB_UNINSTALL='${LIBTOOL} --mode=uninstall' + LIB_PREP=: + + CF_CHECK_LIBTOOL_VERSION + + # special hack to add -no-undefined (which libtool should do for itself) + LT_UNDEF= + case "$cf_cv_system_name" in + (cygwin*|msys*|mingw32*|os2*|uwin*|aix[[4-7]]) + LT_UNDEF=-no-undefined + ;; + esac + AC_SUBST([LT_UNDEF]) + + # special hack to add --tag option for C++ compiler + case $cf_cv_libtool_version in + (1.[[5-9]]*|[[2-9]].[[0-9.a-z]]*) + LIBTOOL_CXX="$LIBTOOL --tag=CXX" + LIBTOOL="$LIBTOOL --tag=CC" + ;; + (*) + LIBTOOL_CXX="$LIBTOOL" + ;; + esac +else + LIBTOOL="" + LIBTOOL_CXX="" +fi + +test -z "$LIBTOOL" && ECHO_LT= + +AC_SUBST(LIBTOOL) +AC_SUBST(LIBTOOL_CXX) +AC_SUBST(LIBTOOL_OPTS) + +AC_SUBST(LIB_CREATE) +AC_SUBST(LIB_OBJECT) +AC_SUBST(LIB_SUFFIX) +AC_SUBST(LIB_PREP) + +AC_SUBST(LIB_CLEAN) +AC_SUBST(LIB_COMPILE) +AC_SUBST(LIB_LINK) +AC_SUBST(LIB_INSTALL) +AC_SUBST(LIB_UNINSTALL) + +])dnl +dnl --------------------------------------------------------------------------- +dnl CF_WITH_LIBTOOL_OPTS version: 4 updated: 2015/04/17 21:13:04 +dnl -------------------- +dnl Allow user to pass additional libtool options into the library creation +dnl and link steps. The main use for this is to do something like +dnl ./configure --with-libtool-opts=-static +dnl to get the same behavior as automake-flavored +dnl ./configure --enable-static +AC_DEFUN([CF_WITH_LIBTOOL_OPTS],[ +AC_MSG_CHECKING(for additional libtool options) +AC_ARG_WITH(libtool-opts, + [ --with-libtool-opts=XXX specify additional libtool options], + [with_libtool_opts=$withval], + [with_libtool_opts=no]) +AC_MSG_RESULT($with_libtool_opts) + +case .$with_libtool_opts in +(.yes|.no|.) + ;; +(*) + LIBTOOL_OPTS="$LIBTOOL_OPTS $with_libtool_opts" + ;; +esac + +AC_SUBST(LIBTOOL_OPTS) +])dnl +dnl --------------------------------------------------------------------------- +dnl CF_WITH_MAN2HTML version: 7 updated: 2018/01/07 13:16:19 +dnl ---------------- +dnl Check for man2html and groff. Prefer man2html over groff, but use groff +dnl as a fallback. See +dnl +dnl http://invisible-island.net/scripts/man2html.html +dnl +dnl Generate a shell script which hides the differences between the two. +dnl +dnl We name that "man2html.tmp". +dnl +dnl The shell script can be removed later, e.g., using "make distclean". +AC_DEFUN([CF_WITH_MAN2HTML],[ +AC_REQUIRE([CF_PROG_GROFF]) + +case "x${with_man2html}" in +(xno) + cf_man2html=no + ;; +(x|xyes) + AC_PATH_PROG(cf_man2html,man2html,no) + case "x$cf_man2html" in + (x/*) + AC_MSG_CHECKING(for the modified Earl Hood script) + if ( $cf_man2html -help 2>&1 | grep 'Make an index of headers at the end' >/dev/null ) + then + cf_man2html_ok=yes + else + cf_man2html=no + cf_man2html_ok=no + fi + AC_MSG_RESULT($cf_man2html_ok) + ;; + (*) + cf_man2html=no + ;; + esac +esac + +AC_MSG_CHECKING(for program to convert manpage to html) +AC_ARG_WITH(man2html, + [ --with-man2html=XXX use XXX rather than groff], + [cf_man2html=$withval], + [cf_man2html=$cf_man2html]) + +cf_with_groff=no + +case $cf_man2html in +(yes) + AC_MSG_RESULT(man2html) + AC_PATH_PROG(cf_man2html,man2html,no) + ;; +(no|groff|*/groff*) + cf_with_groff=yes + cf_man2html=$GROFF_PATH + AC_MSG_RESULT($cf_man2html) + ;; +(*) + AC_MSG_RESULT($cf_man2html) + ;; +esac + +MAN2HTML_TEMP="man2html.tmp" + cat >$MAN2HTML_TEMP <>$MAN2HTML_TEMP <conftest.in <conftest.out + + cf_man2html_1st=`fgrep -n MARKER conftest.out |sed -e 's/^[[^0-9]]*://' -e 's/:.*//'` + cf_man2html_top=`expr $cf_man2html_1st - 2` + cf_man2html_bot=`wc -l conftest.out |sed -e 's/[[^0-9]]//g'` + cf_man2html_bot=`expr $cf_man2html_bot - 2 - $cf_man2html_top` + cf_man2html_top_bot="-topm=$cf_man2html_top -botm=$cf_man2html_bot" + + AC_MSG_RESULT($cf_man2html_top_bot) + + AC_MSG_CHECKING(for pagesize to use) + for cf_block in 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 + do + cat >>conftest.in <conftest.out + cf_man2html_page=`fgrep -n HEAD1 conftest.out |tail -n 1 |sed -e 's/^[[^0-9]]*://' -e 's/:.*//'` + test -z "$cf_man2html_page" && cf_man2html_page=99999 + test "$cf_man2html_page" -gt 100 && cf_man2html_page=99999 + + rm -rf conftest* + AC_MSG_RESULT($cf_man2html_page) + + cat >>$MAN2HTML_TEMP <conftest.ver <conftest.$ac_ext <conftest.mk <&AC_FD_CC >/dev/null + then + # test for missing symbol in either Data or Text section + cf_missing=`nm -P conftest.so 2>&AC_FD_CC |fgrep _ismissing | egrep '[[ ]][[DT]][[ ]]'` + test -n "$cf_missing" && WILDCARD_SYMS=yes + fi + AC_MSG_RESULT($WILDCARD_SYMS) + rm -f conftest.* + fi +fi +AC_SUBST(RESULTING_SYMS) +AC_SUBST(VERSIONED_SYMS) +AC_SUBST(WILDCARD_SYMS) +])dnl +dnl --------------------------------------------------------------------------- +dnl CF_WITH_WARNINGS version: 5 updated: 2004/07/23 14:40:34 +dnl ---------------- +dnl Combine the checks for gcc features into a configure-script option +dnl +dnl Parameters: +dnl $1 - see CF_GCC_WARNINGS +AC_DEFUN([CF_WITH_WARNINGS], +[ +if ( test "$GCC" = yes || test "$GXX" = yes ) +then +AC_MSG_CHECKING(if you want to check for gcc warnings) +AC_ARG_WITH(warnings, + [ --with-warnings test: turn on gcc warnings], + [cf_opt_with_warnings=$withval], + [cf_opt_with_warnings=no]) +AC_MSG_RESULT($cf_opt_with_warnings) +if test "$cf_opt_with_warnings" != no ; then + CF_GCC_ATTRIBUTES + CF_GCC_WARNINGS([$1]) +fi +fi +])dnl +dnl --------------------------------------------------------------------------- +dnl CF_XOPEN_CURSES version: 14 updated: 2018/06/20 20:23:13 +dnl --------------- +dnl Test if we should define X/Open source for curses, needed on Digital Unix +dnl 4.x, to see the extended functions, but breaks on IRIX 6.x. +dnl +dnl The getbegyx() check is needed for HPUX, which omits legacy macros such +dnl as getbegy(). The latter is better design, but the former is standard. +AC_DEFUN([CF_XOPEN_CURSES], +[ +AC_REQUIRE([CF_CURSES_CPPFLAGS])dnl +AC_CACHE_CHECK(definition to turn on extended curses functions,cf_cv_need_xopen_extension,[ +cf_cv_need_xopen_extension=unknown +AC_TRY_LINK([ +#include +#include <${cf_cv_ncurses_header:-curses.h}>],[ +#if defined(NCURSES_VERSION_PATCH) +#if (NCURSES_VERSION_PATCH < 20100501) && (NCURSES_VERSION_PATCH >= 20100403) + make an error +#endif +#endif +#ifdef NCURSES_VERSION + cchar_t check; + int check2 = curs_set((int)sizeof(check)); +#endif + long x = winnstr(stdscr, "", 0); + int x1, y1; + getbegyx(stdscr, y1, x1)], + [cf_cv_need_xopen_extension=none], + [ + for cf_try_xopen_extension in _XOPEN_SOURCE_EXTENDED NCURSES_WIDECHAR + do + AC_TRY_LINK([ +#define $cf_try_xopen_extension 1 +#include +#include <${cf_cv_ncurses_header:-curses.h}>],[ +#ifdef NCURSES_VERSION + cchar_t check; + int check2 = curs_set((int)sizeof(check)); +#endif + long x = winnstr(stdscr, "", 0); + int x1, y1; + getbegyx(stdscr, y1, x1)], + [cf_cv_need_xopen_extension=$cf_try_xopen_extension; break]) + done + ]) +]) + +case $cf_cv_need_xopen_extension in +(*_*) + CF_APPEND_TEXT(CPPFLAGS,-D$cf_cv_need_xopen_extension) + ;; +esac + +])dnl +dnl --------------------------------------------------------------------------- +dnl CF_XOPEN_SOURCE version: 53 updated: 2018/06/16 18:58:58 +dnl --------------- +dnl Try to get _XOPEN_SOURCE defined properly that we can use POSIX functions, +dnl or adapt to the vendor's definitions to get equivalent functionality, +dnl without losing the common non-POSIX features. +dnl +dnl Parameters: +dnl $1 is the nominal value for _XOPEN_SOURCE +dnl $2 is the nominal value for _POSIX_C_SOURCE +AC_DEFUN([CF_XOPEN_SOURCE],[ +AC_REQUIRE([AC_CANONICAL_HOST]) + +cf_XOPEN_SOURCE=ifelse([$1],,500,[$1]) +cf_POSIX_C_SOURCE=ifelse([$2],,199506L,[$2]) +cf_xopen_source= + +case $host_os in +(aix[[4-7]]*) + cf_xopen_source="-D_ALL_SOURCE" + ;; +(msys) + cf_XOPEN_SOURCE=600 + ;; +(darwin[[0-8]].*) + cf_xopen_source="-D_APPLE_C_SOURCE" + ;; +(darwin*) + cf_xopen_source="-D_DARWIN_C_SOURCE" + cf_XOPEN_SOURCE= + ;; +(freebsd*|dragonfly*) + # 5.x headers associate + # _XOPEN_SOURCE=600 with _POSIX_C_SOURCE=200112L + # _XOPEN_SOURCE=500 with _POSIX_C_SOURCE=199506L + cf_POSIX_C_SOURCE=200112L + cf_XOPEN_SOURCE=600 + cf_xopen_source="-D_BSD_TYPES -D__BSD_VISIBLE -D_POSIX_C_SOURCE=$cf_POSIX_C_SOURCE -D_XOPEN_SOURCE=$cf_XOPEN_SOURCE" + ;; +(hpux11*) + cf_xopen_source="-D_HPUX_SOURCE -D_XOPEN_SOURCE=500" + ;; +(hpux*) + cf_xopen_source="-D_HPUX_SOURCE" + ;; +(irix[[56]].*) + cf_xopen_source="-D_SGI_SOURCE" + cf_XOPEN_SOURCE= + ;; +(linux*|uclinux*|gnu*|mint*|k*bsd*-gnu|cygwin) + CF_GNU_SOURCE($cf_XOPEN_SOURCE) + ;; +(minix*) + cf_xopen_source="-D_NETBSD_SOURCE" # POSIX.1-2001 features are ifdef'd with this... + ;; +(mirbsd*) + # setting _XOPEN_SOURCE or _POSIX_SOURCE breaks and other headers which use u_int / u_short types + cf_XOPEN_SOURCE= + CF_POSIX_C_SOURCE($cf_POSIX_C_SOURCE) + ;; +(netbsd*) + cf_xopen_source="-D_NETBSD_SOURCE" # setting _XOPEN_SOURCE breaks IPv6 for lynx on NetBSD 1.6, breaks xterm, is not needed for ncursesw + ;; +(openbsd[[4-9]]*) + # setting _XOPEN_SOURCE lower than 500 breaks g++ compile with wchar.h, needed for ncursesw + cf_xopen_source="-D_BSD_SOURCE" + cf_XOPEN_SOURCE=600 + ;; +(openbsd*) + # setting _XOPEN_SOURCE breaks xterm on OpenBSD 2.8, is not needed for ncursesw + ;; +(osf[[45]]*) + cf_xopen_source="-D_OSF_SOURCE" + ;; +(nto-qnx*) + cf_xopen_source="-D_QNX_SOURCE" + ;; +(sco*) + # setting _XOPEN_SOURCE breaks Lynx on SCO Unix / OpenServer + ;; +(solaris2.*) + cf_xopen_source="-D__EXTENSIONS__" + cf_cv_xopen_source=broken + ;; +(sysv4.2uw2.*) # Novell/SCO UnixWare 2.x (tested on 2.1.2) + cf_XOPEN_SOURCE= + cf_POSIX_C_SOURCE= + ;; +(*) + CF_TRY_XOPEN_SOURCE + CF_POSIX_C_SOURCE($cf_POSIX_C_SOURCE) + ;; +esac + +if test -n "$cf_xopen_source" ; then + CF_ADD_CFLAGS($cf_xopen_source,true) +fi + +dnl In anything but the default case, we may have system-specific setting +dnl which is still not guaranteed to provide all of the entrypoints that +dnl _XOPEN_SOURCE would yield. +if test -n "$cf_XOPEN_SOURCE" && test -z "$cf_cv_xopen_source" ; then + AC_MSG_CHECKING(if _XOPEN_SOURCE really is set) + AC_TRY_COMPILE([#include ],[ +#ifndef _XOPEN_SOURCE +make an error +#endif], + [cf_XOPEN_SOURCE_set=yes], + [cf_XOPEN_SOURCE_set=no]) + AC_MSG_RESULT($cf_XOPEN_SOURCE_set) + if test $cf_XOPEN_SOURCE_set = yes + then + AC_TRY_COMPILE([#include ],[ +#if (_XOPEN_SOURCE - 0) < $cf_XOPEN_SOURCE +make an error +#endif], + [cf_XOPEN_SOURCE_set_ok=yes], + [cf_XOPEN_SOURCE_set_ok=no]) + if test $cf_XOPEN_SOURCE_set_ok = no + then + AC_MSG_WARN(_XOPEN_SOURCE is lower than requested) + fi + else + CF_TRY_XOPEN_SOURCE + fi +fi +]) +dnl --------------------------------------------------------------------------- +dnl CF_X_ATHENA version: 23 updated: 2015/04/12 15:39:00 +dnl ----------- +dnl Check for Xaw (Athena) libraries +dnl +dnl Sets $cf_x_athena according to the flavor of Xaw which is used. +AC_DEFUN([CF_X_ATHENA], +[ +cf_x_athena=${cf_x_athena:-Xaw} + +AC_MSG_CHECKING(if you want to link with Xaw 3d library) +withval= +AC_ARG_WITH(Xaw3d, + [ --with-Xaw3d link with Xaw 3d library]) +if test "$withval" = yes ; then + cf_x_athena=Xaw3d + AC_MSG_RESULT(yes) +else + AC_MSG_RESULT(no) +fi + +AC_MSG_CHECKING(if you want to link with Xaw 3d xft library) +withval= +AC_ARG_WITH(Xaw3dxft, + [ --with-Xaw3dxft link with Xaw 3d xft library]) +if test "$withval" = yes ; then + cf_x_athena=Xaw3dxft + AC_MSG_RESULT(yes) +else + AC_MSG_RESULT(no) +fi + +AC_MSG_CHECKING(if you want to link with neXT Athena library) +withval= +AC_ARG_WITH(neXtaw, + [ --with-neXtaw link with neXT Athena library]) +if test "$withval" = yes ; then + cf_x_athena=neXtaw + AC_MSG_RESULT(yes) +else + AC_MSG_RESULT(no) +fi + +AC_MSG_CHECKING(if you want to link with Athena-Plus library) +withval= +AC_ARG_WITH(XawPlus, + [ --with-XawPlus link with Athena-Plus library]) +if test "$withval" = yes ; then + cf_x_athena=XawPlus + AC_MSG_RESULT(yes) +else + AC_MSG_RESULT(no) +fi + +cf_x_athena_lib="" + +if test "$PKG_CONFIG" != none ; then + cf_athena_list= + test "$cf_x_athena" = Xaw && cf_athena_list="xaw8 xaw7 xaw6" + for cf_athena_pkg in \ + $cf_athena_list \ + ${cf_x_athena} \ + ${cf_x_athena}-devel \ + lib${cf_x_athena} \ + lib${cf_x_athena}-devel + do + CF_TRY_PKG_CONFIG($cf_athena_pkg,[ + cf_x_athena_lib="$cf_pkgconfig_libs" + CF_UPPER(cf_x_athena_LIBS,HAVE_LIB_$cf_x_athena) + AC_DEFINE_UNQUOTED($cf_x_athena_LIBS) + + CF_TRIM_X_LIBS + +AC_CACHE_CHECK(for usable $cf_x_athena/Xmu package,cf_cv_xaw_compat,[ +AC_TRY_LINK([ +#include +],[ +int check = XmuCompareISOLatin1("big", "small") +],[cf_cv_xaw_compat=yes],[cf_cv_xaw_compat=no])]) + + if test "$cf_cv_xaw_compat" = no + then + # workaround for broken ".pc" files... + case "$cf_x_athena_lib" in + (*-lXmu*) + ;; + (*) + CF_VERBOSE(work around broken package) + cf_save_xmu="$LIBS" + cf_first_lib=`echo "$cf_save_xmu" | sed -e 's/^[ ][ ]*//' -e 's/ .*//'` + CF_TRY_PKG_CONFIG(xmu,[ + LIBS="$cf_save_xmu" + CF_ADD_LIB_AFTER($cf_first_lib,$cf_pkgconfig_libs) + ],[ + CF_ADD_LIB_AFTER($cf_first_lib,-lXmu) + ]) + CF_TRIM_X_LIBS + ;; + esac + fi + + break]) + done +fi + +if test -z "$cf_x_athena_lib" ; then + CF_X_EXT + CF_X_TOOLKIT + CF_X_ATHENA_CPPFLAGS($cf_x_athena) + CF_X_ATHENA_LIBS($cf_x_athena) +fi +])dnl +dnl --------------------------------------------------------------------------- +dnl CF_X_ATHENA_CPPFLAGS version: 6 updated: 2018/06/20 20:23:13 +dnl -------------------- +dnl Normally invoked by CF_X_ATHENA, with $1 set to the appropriate flavor of +dnl the Athena widgets, e.g., Xaw, Xaw3d, neXtaw. +AC_DEFUN([CF_X_ATHENA_CPPFLAGS], +[ +cf_x_athena_root=ifelse([$1],,Xaw,[$1]) +cf_x_athena_inc="" + +for cf_path in default \ + /usr/contrib/X11R6 \ + /usr/contrib/X11R5 \ + /usr/lib/X11R5 \ + /usr/local +do + if test -z "$cf_x_athena_inc" ; then + cf_save="$CPPFLAGS" + cf_test=X11/$cf_x_athena_root/SimpleMenu.h + if test $cf_path != default ; then + CPPFLAGS="$cf_save" + CF_APPEND_TEXT(CPPFLAGS,-I$cf_path/include) + AC_MSG_CHECKING(for $cf_test in $cf_path) + else + AC_MSG_CHECKING(for $cf_test) + fi + AC_TRY_COMPILE([ +#include +#include <$cf_test>],[], + [cf_result=yes], + [cf_result=no]) + AC_MSG_RESULT($cf_result) + if test "$cf_result" = yes ; then + cf_x_athena_inc=$cf_path + break + else + CPPFLAGS="$cf_save" + fi + fi +done + +if test -z "$cf_x_athena_inc" ; then + AC_MSG_WARN( +[Unable to successfully find Athena header files with test program]) +elif test "$cf_x_athena_inc" != default ; then + CF_APPEND_TEXT(CPPFLAGS,-I$cf_x_athena_inc) +fi +]) +dnl --------------------------------------------------------------------------- +dnl CF_X_ATHENA_LIBS version: 12 updated: 2011/07/17 19:55:02 +dnl ---------------- +dnl Normally invoked by CF_X_ATHENA, with $1 set to the appropriate flavor of +dnl the Athena widgets, e.g., Xaw, Xaw3d, neXtaw. +AC_DEFUN([CF_X_ATHENA_LIBS], +[AC_REQUIRE([CF_X_TOOLKIT]) +cf_x_athena_root=ifelse([$1],,Xaw,[$1]) +cf_x_athena_lib="" + +for cf_path in default \ + /usr/contrib/X11R6 \ + /usr/contrib/X11R5 \ + /usr/lib/X11R5 \ + /usr/local +do + for cf_lib in \ + ${cf_x_athena_root} \ + ${cf_x_athena_root}7 \ + ${cf_x_athena_root}6 + do + for cf_libs in \ + "-l$cf_lib -lXmu" \ + "-l$cf_lib -lXpm -lXmu" \ + "-l${cf_lib}_s -lXmu_s" + do + if test -z "$cf_x_athena_lib" ; then + cf_save="$LIBS" + cf_test=XawSimpleMenuAddGlobalActions + if test $cf_path != default ; then + CF_ADD_LIBS(-L$cf_path/lib $cf_libs) + AC_MSG_CHECKING(for $cf_libs in $cf_path) + else + CF_ADD_LIBS($cf_libs) + AC_MSG_CHECKING(for $cf_test in $cf_libs) + fi + AC_TRY_LINK([ +#include +#include +],[ +$cf_test((XtAppContext) 0)], + [cf_result=yes], + [cf_result=no]) + AC_MSG_RESULT($cf_result) + if test "$cf_result" = yes ; then + cf_x_athena_lib="$cf_libs" + break + fi + LIBS="$cf_save" + fi + done # cf_libs + test -n "$cf_x_athena_lib" && break + done # cf_lib +done + +if test -z "$cf_x_athena_lib" ; then + AC_MSG_ERROR( +[Unable to successfully link Athena library (-l$cf_x_athena_root) with test program]) +fi + +CF_UPPER(cf_x_athena_LIBS,HAVE_LIB_$cf_x_athena) +AC_DEFINE_UNQUOTED($cf_x_athena_LIBS) +]) +dnl --------------------------------------------------------------------------- +dnl CF_X_EXT version: 3 updated: 2010/06/02 05:03:05 +dnl -------- +AC_DEFUN([CF_X_EXT],[ +CF_TRY_PKG_CONFIG(Xext,,[ + AC_CHECK_LIB(Xext,XextCreateExtension, + [CF_ADD_LIB(Xext)])]) +])dnl +dnl --------------------------------------------------------------------------- +dnl CF_X_TOOLKIT version: 23 updated: 2015/04/12 15:39:00 +dnl ------------ +dnl Check for X Toolkit libraries +AC_DEFUN([CF_X_TOOLKIT], +[ +AC_REQUIRE([AC_PATH_XTRA]) +AC_REQUIRE([CF_CHECK_CACHE]) + +# OSX is schizoid about who owns /usr/X11 (old) versus /opt/X11 (new), and (and +# in some cases has installed dummy files in the former, other cases replaced +# it with a link to the new location). This complicates the configure script. +# Check for that pitfall, and recover using pkg-config +# +# If none of these are set, the configuration is almost certainly broken. +if test -z "${X_CFLAGS}${X_PRE_LIBS}${X_LIBS}${X_EXTRA_LIBS}" +then + CF_TRY_PKG_CONFIG(x11,,[AC_MSG_WARN(unable to find X11 library)]) + CF_TRY_PKG_CONFIG(ice,,[AC_MSG_WARN(unable to find ICE library)]) + CF_TRY_PKG_CONFIG(sm,,[AC_MSG_WARN(unable to find SM library)]) + CF_TRY_PKG_CONFIG(xt,,[AC_MSG_WARN(unable to find Xt library)]) +fi + +cf_have_X_LIBS=no + +CF_TRY_PKG_CONFIG(xt,[ + + case "x$LIBS" in + (*-lX11*) + ;; + (*) +# we have an "xt" package, but it may omit Xt's dependency on X11 +AC_CACHE_CHECK(for usable X dependency,cf_cv_xt_x11_compat,[ +AC_TRY_LINK([ +#include +],[ + int rc1 = XDrawLine((Display*) 0, (Drawable) 0, (GC) 0, 0, 0, 0, 0); + int rc2 = XClearWindow((Display*) 0, (Window) 0); + int rc3 = XMoveWindow((Display*) 0, (Window) 0, 0, 0); + int rc4 = XMoveResizeWindow((Display*)0, (Window)0, 0, 0, 0, 0); +],[cf_cv_xt_x11_compat=yes],[cf_cv_xt_x11_compat=no])]) + if test "$cf_cv_xt_x11_compat" = no + then + CF_VERBOSE(work around broken X11 dependency) + # 2010/11/19 - good enough until a working Xt on Xcb is delivered. + CF_TRY_PKG_CONFIG(x11,,[CF_ADD_LIB_AFTER(-lXt,-lX11)]) + fi + ;; + esac + +AC_CACHE_CHECK(for usable X Toolkit package,cf_cv_xt_ice_compat,[ +AC_TRY_LINK([ +#include +],[int num = IceConnectionNumber(0) +],[cf_cv_xt_ice_compat=yes],[cf_cv_xt_ice_compat=no])]) + + if test "$cf_cv_xt_ice_compat" = no + then + # workaround for broken ".pc" files used for X Toolkit. + case "x$X_PRE_LIBS" in + (*-lICE*) + case "x$LIBS" in + (*-lICE*) + ;; + (*) + CF_VERBOSE(work around broken ICE dependency) + CF_TRY_PKG_CONFIG(ice, + [CF_TRY_PKG_CONFIG(sm)], + [CF_ADD_LIB_AFTER(-lXt,$X_PRE_LIBS)]) + ;; + esac + ;; + esac + fi + + cf_have_X_LIBS=yes +],[ + + LDFLAGS="$X_LIBS $LDFLAGS" + CF_CHECK_CFLAGS($X_CFLAGS) + + AC_CHECK_FUNC(XOpenDisplay,,[ + AC_CHECK_LIB(X11,XOpenDisplay, + [CF_ADD_LIB(X11)],, + [$X_PRE_LIBS $LIBS $X_EXTRA_LIBS])]) + + AC_CHECK_FUNC(XtAppInitialize,,[ + AC_CHECK_LIB(Xt, XtAppInitialize, + [AC_DEFINE(HAVE_LIBXT,1,[Define to 1 if we can compile with the Xt library]) + cf_have_X_LIBS=Xt + LIBS="-lXt $X_PRE_LIBS $LIBS $X_EXTRA_LIBS"],, + [$X_PRE_LIBS $LIBS $X_EXTRA_LIBS])]) +]) + +if test $cf_have_X_LIBS = no ; then + AC_MSG_WARN( +[Unable to successfully link X Toolkit library (-lXt) with +test program. You will have to check and add the proper libraries by hand +to makefile.]) +fi +])dnl +dnl --------------------------------------------------------------------------- +dnl CF__ADD_SHLIB_RULES version: 6 updated: 2016/04/21 21:07:50 +dnl ------------------- +dnl Append rules for creating, installing, uninstalling and cleaning library. +dnl In particular, this is needed for shared libraries since there are symbolic +dnl links which depend on configuration choices. +dnl +dnl The logic is controlled by these cache variables: +dnl $cf_cv_do_symlinks +dnl $cf_cv_shlib_version +dnl +dnl The macro uses variables set by CF__DEFINE_SHLIB_VARS +dnl +dnl $1 = makefile to append to +dnl $2 = model (static, shared, libtool) +dnl $3 = objects (dependencies) +dnl $4 = additional libraries needed to link the shared library +define([CF__ADD_SHLIB_RULES],[ + +CF__DEFINE_LIB_TARGET + +case x$2 in +(xlibtool|xshared) + cf_libdeps="ifelse($4,,,[$4])" + ;; +(x*) + cf_libdeps= + ;; +esac + +cat >>$1 <>$1 <>$1 <>$1 <>$1 <>$1 <>$1 <>$1 <>$1 <>$1 <>$1 <>$1 < and when they +dnl are both available. +define([CF__CURSES_HEAD],[ +#ifdef HAVE_XCURSES +#include +char * XCursesProgramName = "test"; +#else +#include <${cf_cv_ncurses_header:-curses.h}> +#if defined(NCURSES_VERSION) && defined(HAVE_NCURSESW_TERM_H) +#include +#elif defined(NCURSES_VERSION) && defined(HAVE_NCURSES_TERM_H) +#include +#elif defined(HAVE_TERM_H) +#include +#endif +#endif +]) +dnl --------------------------------------------------------------------------- +dnl CF__DEFINE_LIB_TARGET version: 2 updated: 2015/05/10 19:52:14 +dnl --------------------- +define([CF__DEFINE_LIB_TARGET],[ +cf_libname=\${LIB_BASENAME} +cf_liblink=$cf_libname +cf_libroot=$cf_libname + +if test "x$cf_cv_do_symlinks" = xyes +then + case "x$cf_cv_shlib_version" in + (xrel) + cf_liblink="\${LIB_ABI_NAME}" + cf_libname="\${LIB_REL_NAME}" + ;; + (xabi) + cf_liblink="\${LIB_REL_NAME}" + cf_libname="\${LIB_ABI_NAME}" + ;; + esac +fi +LIB_TARGET=$cf_libname +])dnl +dnl --------------------------------------------------------------------------- +dnl CF__DEFINE_SHLIB_VARS version: 4 updated: 2015/09/28 17:49:10 +dnl --------------------- +dnl Substitute makefile variables useful for CF__ADD_SHLIB_RULES. +dnl +dnl The substitution requires these variables: +dnl LIB_PREFIX - "lib" +dnl LIB_ROOTNAME - "foo" +dnl LIB_SUFFIX - ".so" +dnl REL_VERSION - "5.0" +dnl ABI_VERSION - "4.2.4" +define([CF__DEFINE_SHLIB_VARS],[ +CF__DEFINE_LIB_TARGET +SET_SHLIB_VARS="# begin CF__DEFINE_SHLIB_VARS\\ +LIB_BASENAME = \${LIB_PREFIX}\${LIB_ROOTNAME}\${LIB_SUFFIX}\\ +LIB_REL_NAME = \${LIB_BASENAME}.\${REL_VERSION}\\ +LIB_ABI_NAME = \${LIB_BASENAME}.\${ABI_VERSION}\\ +LIB_TARGET = $LIB_TARGET\\ +RM_SHARED_OPTS = $RM_SHARED_OPTS\\ +# end CF__DEFINE_SHLIB_VARS" +AC_SUBST(SET_SHLIB_VARS) +AC_SUBST(LIB_TARGET) +])dnl +dnl --------------------------------------------------------------------------- +dnl CF__ICONV_BODY version: 2 updated: 2007/07/26 17:35:47 +dnl -------------- +dnl Test-code needed for iconv compile-checks +define([CF__ICONV_BODY],[ + iconv_t cd = iconv_open("",""); + iconv(cd,NULL,NULL,NULL,NULL); + iconv_close(cd);] +)dnl +dnl --------------------------------------------------------------------------- +dnl CF__ICONV_HEAD version: 1 updated: 2007/07/26 15:57:03 +dnl -------------- +dnl Header-files needed for iconv compile-checks +define([CF__ICONV_HEAD],[ +#include +#include ] +)dnl +dnl --------------------------------------------------------------------------- +dnl CF__INIT_SHLIB_RULES version: 2 updated: 2013/07/27 17:38:32 +dnl -------------------- +dnl The third parameter to AC_OUTPUT, used to pass variables needed for +dnl CF__ADD_SHLIB_RULES. +define([CF__INIT_SHLIB_RULES],[ +ABI_VERSION="$ABI_VERSION" +REL_VERSION="$REL_VERSION" +LIB_MODEL="$LIB_MODEL" +LIB_PREFIX="$LIB_PREFIX" +LIB_ROOTNAME="$LIB_ROOTNAME" +DFT_DEP_SUFFIX="$DFT_DEP_SUFFIX" +RM_SHARED_OPTS="$RM_SHARED_OPTS" +cf_cv_do_symlinks="$cf_cv_do_symlinks" +cf_cv_shlib_version="$cf_cv_shlib_version" +]) +dnl --------------------------------------------------------------------------- +dnl CF__INTL_BODY version: 3 updated: 2017/07/10 20:13:33 +dnl ------------- +dnl Test-code needed for libintl compile-checks +dnl $1 = parameter 2 from AM_WITH_NLS +define([CF__INTL_BODY],[ + bindtextdomain ("", ""); + return (int) gettext ("") + ifelse([$1], need-ngettext, [ + (int) ngettext ("", "", 0)], []) +#ifndef IGNORE_MSGFMT_HACK + [ + _nl_msg_cat_cntr] +#endif +]) +dnl --------------------------------------------------------------------------- +dnl CF__INTL_HEAD version: 1 updated: 2007/07/26 17:35:47 +dnl ------------- +dnl Header-files needed for libintl compile-checks +define([CF__INTL_HEAD],[ +#include +extern int _nl_msg_cat_cntr; +])dnl +dnl --------------------------------------------------------------------------- +dnl jm_GLIBC21 version: 4 updated: 2015/05/10 19:52:14 +dnl ---------- +dnl Inserted as requested by gettext 0.10.40 +dnl File from /usr/share/aclocal +dnl glibc21.m4 +dnl ==================== +dnl serial 2 +dnl +dnl Test for the GNU C Library, version 2.1 or newer. +dnl 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" +]) Index: vendor/dialog/1.3-20180621/argv.c =================================================================== --- vendor/dialog/1.3-20180621/argv.c (nonexistent) +++ vendor/dialog/1.3-20180621/argv.c (revision 339483) @@ -0,0 +1,165 @@ +/* + * $Id: argv.c,v 1.12 2018/06/12 22:47:23 tom Exp $ + * + * argv - Reusable functions for argv-parsing. + * + * Copyright 2011-2017,2018 Thomas E. Dickey + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License, version 2.1 + * as published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this program; if not, write to + * Free Software Foundation, Inc. + * 51 Franklin St., Fifth Floor + * Boston, MA 02110, USA. + */ + +#include +#include + +/* + * Convert a string to an argv[], returning a char** index (which must be + * freed by the caller). The string is modified (replacing gaps between + * tokens with nulls). + */ +char ** +dlg_string_to_argv(char *blob) +{ + size_t n, k; + int pass; + size_t length = strlen(blob); + char **result = 0; + +#ifdef HAVE_DLG_TRACE + if (dialog_state.trace_output) { + DLG_TRACE(("# dlg_string_to_argv:\n")); + DLG_TRACE(("# given:\n")); + for (n = k = 0; n < length; ++n) { + if (blob[n] == '\n') { + DLG_TRACE(("#%s\t%.*s\\n\n", + k ? "+" : "", + (int) (n - k), blob + k)); + k = n + 1; + } + } + if (n > k) { + DLG_TRACE(("#%s\t%.*s\n", + k ? "+" : "", + (int) (n - k), blob + k)); + } + DLG_TRACE(("# result:\n")); + } +#endif + for (pass = 0; pass < 2; ++pass) { + bool inparm = FALSE; + bool quoted = FALSE; + bool escape = FALSE; + char *param = blob; + size_t count = 0; + + for (n = 0; n < length; ++n) { + if (escape) { + ; + } else if (quoted && blob[n] == '"') { + quoted = FALSE; + } else if (blob[n] == '"') { + quoted = TRUE; + if (!inparm) { + if (pass) + result[count] = param; + ++count; + inparm = TRUE; + } + } else if (!quoted && isspace(UCH(blob[n]))) { + if (inparm) { + if (pass) { + *param++ = '\0'; + } + inparm = FALSE; + } + } else { + if (blob[n] == '\\') { + if (n + 1 == length) { + break; /* The string is terminated by a backslash */ + } else if ((blob[n + 1] == '\\') || + (blob[n + 1] == '"') || + (!quoted && blob[n + 1] == '\n')) { + /* eat the backslash */ + if (pass) { + --length; + for (k = n; k < length; ++k) + blob[k] = blob[k + 1]; + blob[length] = '\0'; + } else { + escape = TRUE; + continue; + } + } + } + if (!inparm) { + if (pass) + result[count] = param; + ++count; + inparm = TRUE; + } + if (pass) { + *param++ = blob[n]; + } + } + escape = FALSE; + } + + if (!pass) { + if (count) { + result = dlg_calloc(char *, count + 1); + assert_ptr(result, "string_to_argv"); + } else { + break; /* no tokens found */ + } + } else { + *param = '\0'; + } + } +#ifdef HAVE_DLG_TRACE + if (result != 0) { + for (n = 0; result[n] != 0; ++n) { + DLG_TRACE(("#\targv[%d] = %s\n", (int) n, result[n])); + } + } +#endif + return result; +} + +/* + * Count the entries in an argv list. + */ +int +dlg_count_argv(char **argv) +{ + int result = 0; + + if (argv != 0) { + while (argv[result] != 0) + ++result; + } + return result; +} + +int +dlg_eat_argv(int *argcp, char ***argvp, int start, int count) +{ + int k; + + *argcp -= count; + for (k = start; k <= *argcp; k++) + (*argvp)[k] = (*argvp)[k + count]; + (*argvp)[*argcp] = 0; + return TRUE; +} Index: vendor/dialog/1.3-20180621/arrows.c =================================================================== --- vendor/dialog/1.3-20180621/arrows.c (nonexistent) +++ vendor/dialog/1.3-20180621/arrows.c (revision 339483) @@ -0,0 +1,275 @@ +/* + * $Id: arrows.c,v 1.52 2018/06/18 22:10:54 tom Exp $ + * + * arrows.c -- draw arrows to indicate end-of-range for lists + * + * Copyright 2000-2013,2018 Thomas E. Dickey + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License, version 2.1 + * as published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this program; if not, write to + * Free Software Foundation, Inc. + * 51 Franklin St., Fifth Floor + * Boston, MA 02110, USA. + */ + +#include + +#ifdef USE_WIDE_CURSES +#if defined(CURSES_WACS_ARRAY) && !defined(CURSES_WACS_SYMBOLS) +/* workaround for NetBSD 5.1 curses */ +#undef WACS_DARROW +#undef WACS_UARROW +#define WACS_DARROW &(CURSES_WACS_ARRAY['.']) +#define WACS_UARROW &(CURSES_WACS_ARRAY['-']) +#endif +#define add_acs(win, code) wadd_wch(win, W ## code) +#else +#define add_acs(win, code) waddch(win, dlg_boxchar(code)) +#endif + +/* size of decorations */ +#define ON_LEFT 4 +#define ON_RIGHT 3 + +#ifdef HAVE_COLOR +static chtype +merge_colors(chtype foreground, chtype background) +{ + chtype result = foreground; + if ((foreground & A_COLOR) != (background & A_COLOR)) { + short fg_f, bg_f; + short fg_b, bg_b; + short fg_pair = (short) PAIR_NUMBER(foreground); + short bg_pair = (short) PAIR_NUMBER(background); + + if (pair_content(fg_pair, &fg_f, &bg_f) != ERR + && pair_content(bg_pair, &fg_b, &bg_b) != ERR) { + result &= ~A_COLOR; + result |= dlg_color_pair(fg_f, bg_b); + } + } + return result; +} +#else +#define merge_colors(f,b) (f) +#endif + +/* + * If we have help-line text, e.g., from "--hline", draw it between the other + * decorations at the bottom of the dialog window. + */ +void +dlg_draw_helpline(WINDOW *win, bool decorations) +{ + int cur_x, cur_y; + int bottom; + + if (dialog_vars.help_line != 0 + && dialog_vars.help_line[0] != 0 + && (bottom = getmaxy(win) - 1) > 0) { + chtype attr = A_NORMAL; + int cols = dlg_count_columns(dialog_vars.help_line); + int other = decorations ? (ON_LEFT + ON_RIGHT) : 0; + int avail = (getmaxx(win) - other - 2); + int limit = dlg_count_real_columns(dialog_vars.help_line) + 2; + + if (limit < avail) { + getyx(win, cur_y, cur_x); + other = decorations ? ON_LEFT : 0; + (void) wmove(win, bottom, other + (avail - limit) / 2); + waddch(win, '['); + dlg_print_text(win, dialog_vars.help_line, cols, &attr); + waddch(win, ']'); + wmove(win, cur_y, cur_x); + } + } +} + +void +dlg_draw_arrows2(WINDOW *win, + int top_arrow, + int bottom_arrow, + int x, + int top, + int bottom, + chtype attr, + chtype borderattr) +{ + chtype save = dlg_get_attrs(win); + int cur_x, cur_y; + int limit_x = getmaxx(win); + bool draw_top = TRUE; + bool is_toplevel = (wgetparent(win) == stdscr); + + getyx(win, cur_y, cur_x); + + /* + * If we're drawing a centered title, do not overwrite with the arrows. + */ + if (dialog_vars.title && is_toplevel && (top - getbegy(win)) < MARGIN) { + int have = (limit_x - dlg_count_columns(dialog_vars.title)) / 2; + int need = x + 5; + if (need > have) + draw_top = FALSE; + } + + if (draw_top) { + (void) wmove(win, top, x); + if (top_arrow) { + dlg_attrset(win, merge_colors(uarrow_attr, attr)); + (void) add_acs(win, ACS_UARROW); + (void) waddstr(win, "(-)"); + } else { + dlg_attrset(win, attr); + (void) whline(win, dlg_boxchar(ACS_HLINE), ON_LEFT); + } + } + mouse_mkbutton(top, x - 1, 6, KEY_PPAGE); + + (void) wmove(win, bottom, x); + if (bottom_arrow) { + dlg_attrset(win, merge_colors(darrow_attr, borderattr)); + (void) add_acs(win, ACS_DARROW); + (void) waddstr(win, "(+)"); + } else { + dlg_attrset(win, borderattr); + (void) whline(win, dlg_boxchar(ACS_HLINE), ON_LEFT); + } + mouse_mkbutton(bottom, x - 1, 6, KEY_NPAGE); + + (void) wmove(win, cur_y, cur_x); + wrefresh(win); + + dlg_attrset(win, save); +} + +void +dlg_draw_scrollbar(WINDOW *win, + long first_data, + long this_data, + long next_data, + long total_data, + int left, + int right, + int top, + int bottom, + chtype attr, + chtype borderattr) +{ + char buffer[80]; + int percent; + int len; + int oldy, oldx; + + chtype save = dlg_get_attrs(win); + int top_arrow = (first_data != 0); + int bottom_arrow = (next_data < total_data); + + getyx(win, oldy, oldx); + + dlg_draw_helpline(win, TRUE); + if (bottom_arrow || top_arrow || dialog_state.use_scrollbar) { + percent = (!total_data + ? 100 + : (int) ((next_data * 100) + / total_data)); + + if (percent < 0) + percent = 0; + else if (percent > 100) + percent = 100; + + dlg_attrset(win, position_indicator_attr); + (void) sprintf(buffer, "%d%%", percent); + (void) wmove(win, bottom, right - 7); + (void) waddstr(win, buffer); + if ((len = dlg_count_columns(buffer)) < 4) { + dlg_attrset(win, border_attr); + whline(win, dlg_boxchar(ACS_HLINE), 4 - len); + } + } +#define BARSIZE(num) (int) (0.5 + (double) ((all_high * (int) (num)) / (double) total_data)) +#define ORDSIZE(num) (int) ((double) ((all_high * (int) (num)) / (double) all_diff)) + + if (dialog_state.use_scrollbar) { + int all_high = (bottom - top - 1); + + this_data = MAX(0, this_data); + + if (total_data > 0 && all_high > 0) { + int all_diff = (int) (total_data + 1); + int bar_diff = (int) (next_data + 1 - this_data); + int bar_high; + int bar_y; + + bar_high = ORDSIZE(bar_diff); + if (bar_high <= 0) + bar_high = 1; + + if (bar_high < all_high) { + int bar_last = BARSIZE(next_data); + + wmove(win, top + 1, right); + + dlg_attrset(win, save); + wvline(win, ACS_VLINE | A_REVERSE, all_high); + + bar_y = ORDSIZE(this_data); + if (bar_y >= bar_last && bar_y > 0) + bar_y = bar_last - 1; + if (bar_last - bar_y > bar_high && bar_high > 1) + ++bar_y; + bar_last = MIN(bar_last, all_high); + + wmove(win, top + 1 + bar_y, right); + + dlg_attrset(win, position_indicator_attr); + dlg_attron(win, A_REVERSE); +#if defined(WACS_BLOCK) && defined(NCURSES_VERSION) && defined(USE_WIDE_CURSES) + wvline_set(win, WACS_BLOCK, bar_last - bar_y); +#else + wvline(win, ACS_BLOCK, bar_last - bar_y); +#endif + } + } + } + dlg_draw_arrows2(win, + top_arrow, + bottom_arrow, + left + ARROWS_COL, + top, + bottom, + attr, + borderattr); + + dlg_attrset(win, save); + wmove(win, oldy, oldx); +} + +void +dlg_draw_arrows(WINDOW *win, + int top_arrow, + int bottom_arrow, + int x, + int top, + int bottom) +{ + dlg_draw_helpline(win, TRUE); + dlg_draw_arrows2(win, + top_arrow, + bottom_arrow, + x, + top, + bottom, + menubox_border2_attr, + menubox_border_attr); +} Index: vendor/dialog/1.3-20180621/buildlist.c =================================================================== --- vendor/dialog/1.3-20180621/buildlist.c (nonexistent) +++ vendor/dialog/1.3-20180621/buildlist.c (revision 339483) @@ -0,0 +1,1265 @@ +/* + * $Id: buildlist.c,v 1.83 2018/06/19 22:57:01 tom Exp $ + * + * buildlist.c -- implements the buildlist dialog + * + * Copyright 2012-2017,2018 Thomas E. Dickey + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License, version 2.1 + * as published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this program; if not, write to + * Free Software Foundation, Inc. + * 51 Franklin St., Fifth Floor + * Boston, MA 02110, USA. + */ + +#include +#include + +/* + * Visually like menubox, but two columns. + */ + +#define sLEFT (-2) +#define sRIGHT (-1) + +#define KEY_LEFTCOL '^' +#define KEY_RIGHTCOL '$' + +#define MIN_HIGH (1 + (5 * MARGIN)) + +typedef struct { + WINDOW *win; + int box_y; + int box_x; + int top_index; + int cur_index; + DIALOG_LISTITEM **ip; /* pointers to items in this list */ +} MY_DATA; + +#if 0 +#define TRACE(p) dlg_trace_msg p +#else +#define TRACE(p) /* nothing */ +#endif + +#define okIndex(all,index) ((index) >= 0 && (index) < (all)->item_no) + +#define myItem(p,n) ((p)->ip)[n] +#define mySide(n) ((n)?"right":"left") + +typedef struct { + DIALOG_LISTITEM *items; /* all items in the widget */ + int base_y; /* base for mouse coordinates */ + int base_x; + int use_height; /* actual size of column box */ + int use_width; + int item_no; + int check_x; + int item_x; + MY_DATA list[2]; +} ALL_DATA; + +/* + * Translate a choice from items[] to a row-number in an unbounded column, + * starting at zero. + */ +static int +index2row(ALL_DATA * all, int choice, int selected) +{ + MY_DATA *data = all->list + selected; + int result = -1; + int row; + + if (okIndex(all, choice)) { + for (row = 0; row < all->item_no; ++row) { + TRACE(("!... choice %d: %p vs row %d: %p\n", + choice, all->items + choice, + row, myItem(data, row))); + if (myItem(data, row) == all->items + choice) { + result = row; + break; + } + } + } + TRACE(("! index2row(choice %d, %s) = %d\n", choice, mySide(selected), result)); + return result; +} + +/* + * Convert a row-number back to an item number, i.e., index into items[]. + */ +static int +row2index(ALL_DATA * all, int row, int selected) +{ + MY_DATA *data = all->list + selected; + int result = -1; + int n; + for (n = 0; n < all->item_no; ++n) { + TRACE(("!... row %d: %p vs choice %d: %p\n", + row, myItem(data, row), + n, all->items + n)); + if (myItem(data, row) == all->items + n) { + result = n; + break; + } + } + TRACE(("! row2index(row %d, %s) = %d\n", row, mySide(selected), result)); + return result; +} + +/* + * Print list item. The 'selected' parameter is true if 'choice' is the + * current item. That one is colored differently from the other items. + */ +static void +print_item(ALL_DATA * all, + WINDOW *win, + DIALOG_LISTITEM * item, + int row, + int selected) +{ + chtype save = dlg_get_attrs(win); + int i; + bool both = (!dialog_vars.no_tags && !dialog_vars.no_items); + bool first = TRUE; + int climit = (all->item_x - all->check_x - 1); + const char *show = (dialog_vars.no_items + ? item->name + : item->text); + + /* Clear 'residue' of last item */ + dlg_attrset(win, menubox_attr); + (void) wmove(win, row, 0); + for (i = 0; i < getmaxx(win); i++) + (void) waddch(win, ' '); + + (void) wmove(win, row, all->check_x); + dlg_attrset(win, menubox_attr); + + if (both) { + dlg_print_listitem(win, item->name, climit, first, selected); + (void) waddch(win, ' '); + first = FALSE; + } + + (void) wmove(win, row, all->item_x); + climit = (getmaxx(win) - all->item_x + 1); + dlg_print_listitem(win, show, climit, first, selected); + + if (selected) { + dlg_item_help(item->help); + } + dlg_attrset(win, save); +} + +/* + * Prints either the left (unselected) or right (selected) list. + */ +static void +print_1_list(ALL_DATA * all, + int choice, + int selected) +{ + MY_DATA *data = all->list + selected; + DIALOG_LISTITEM *target = (okIndex(all, choice) + ? all->items + choice + : 0); + WINDOW *win = data->win; + int i, j; + int last = 0; + int top_row = index2row(all, data->top_index, selected); + int max_rows = getmaxy(win); + + TRACE(("! print_1_list %d %s, top %d\n", choice, mySide(selected), top_row)); + for (i = j = 0; j < max_rows; i++) { + int ii = i + top_row; + if (ii < 0) { + continue; + } else if (myItem(data, ii)) { + print_item(all, + win, + myItem(data, ii), + j, myItem(data, ii) == target); + last = ++j; + } else { + break; + } + } + if (wmove(win, last, 0) != ERR) { + while (waddch(win, ' ') != ERR) { + ; + } + } + (void) wnoutrefresh(win); +} + +/* + * Return the previous item from the list, staying in the same column. If no + * further movement is possible, return the same choice as given. + */ +static int +prev_item(ALL_DATA * all, int choice, int selected) +{ + int result = choice; + int row = index2row(all, choice, selected); + if (row > 0) { + row--; + result = row2index(all, row, selected); + } + TRACE(("! prev_item choice %d, %s = %d\n", choice, mySide(selected), result)); + return result; +} + +/* + * Return true if the given choice is on the first page in the current column. + */ +static bool +stop_prev(ALL_DATA * all, int choice, int selected) +{ + return (prev_item(all, choice, selected) == choice); +} + +static bool +check_hotkey(DIALOG_LISTITEM * items, int choice, int selected) +{ + bool result = FALSE; + + if ((items[choice].state != 0) == selected) { + if (dlg_match_char(dlg_last_getc(), + (dialog_vars.no_tags + ? items[choice].text + : items[choice].name))) { + result = TRUE; + } + } + return result; +} + +/* + * Return the next item from the list, staying in the same column. If no + * further movement is possible, return the same choice as given. + */ +static int +next_item(ALL_DATA * all, int choice, int selected) +{ + MY_DATA *data = all->list + selected; + int result = choice; + int row = index2row(all, choice, selected); + TRACE(("! given item %d, testing next-item on row %d\n", choice, row + 1)); + if (myItem(data, row + 1)) { + result = row2index(all, row + 1, selected); + } + TRACE(("! next_item(%d, %s) ->%d\n", choice, mySide(selected), result)); + return result; +} + +/* + * Return the first choice from items[] for the given column. + */ +static int +first_item(ALL_DATA * all, int selected) +{ + MY_DATA *data = all->list + selected; + int result = -1; + int n; + + if (myItem(data, 0) != 0) { + for (n = 0; n < all->item_no; ++n) { + if (myItem(data, 0) == &all->items[n]) { + result = n; + break; + } + } + } + TRACE(("! first_item %s = %d\n", mySide(selected), result)); + return result; +} + +/* + * Return the last choice from items[] for the given column. + */ +static int +last_item(ALL_DATA * all, int selected) +{ + MY_DATA *data = all->list + selected; + int result = -1; + int n; + + for (n = 0; myItem(data, n) != 0; ++n) { + result = n; + } + if (result >= 0) { + result = row2index(all, result, selected); + } + TRACE(("! last_item %s = %d\n", mySide(selected), result)); + return result; +} + +static int +skip_rows(ALL_DATA * all, int row, int skip, int selected) +{ + MY_DATA *data = all->list + selected; + int result = row; + int n; + + if (skip > 0) { + for (n = row + 1; (n < all->item_no) && (n <= row + skip); ++n) { + if (myItem(data, n) == 0) + break; + result = n; + } + } else if (skip < 0) { + result -= skip; + if (result < 0) + result = 0; + } + TRACE(("! skip_rows row %d, skip %d, %s = %d\n", + row, skip, mySide(selected), result)); + return result; +} + +/* + * Find the closest item in the given column starting with the given choice. + */ +static int +closest_item(ALL_DATA * all, int choice, int selected) +{ + int prev = choice; + int next = choice; + int result = choice; + int n; + + for (n = choice; n >= 0; --n) { + if ((all->items[n].state != 0) == selected) { + prev = n; + break; + } + } + for (n = choice; n < all->item_no; ++n) { + if ((all->items[n].state != 0) == selected) { + next = n; + break; + } + } + if (prev != choice) { + result = prev; + if (next != choice) { + if ((choice - prev) > (next - choice)) { + result = next; + } + } + } else if (next != choice) { + result = next; + } + TRACE(("! XXX closest item choice %d, %s = %d\n", + choice, mySide(selected), result)); + return result; +} + +static void +print_both(ALL_DATA * all, + int choice) +{ + int selected; + int cur_y, cur_x; + WINDOW *dialog = wgetparent(all->list[0].win); + + TRACE(("! print_both %d\n", choice)); + getyx(dialog, cur_y, cur_x); + for (selected = 0; selected < 2; ++selected) { + MY_DATA *data = all->list + selected; + WINDOW *win = data->win; + int thumb_top = index2row(all, data->top_index, selected); + int thumb_max = index2row(all, -1, selected); + int thumb_end = thumb_top + getmaxy(win); + + print_1_list(all, choice, selected); + + dlg_mouse_setcode(selected * KEY_MAX); + dlg_draw_scrollbar(dialog, + (long) (data->top_index), + (long) (thumb_top), + (long) MIN(thumb_end, thumb_max), + (long) thumb_max, + data->box_x + all->check_x, + data->box_x + getmaxx(win), + data->box_y, + data->box_y + getmaxy(win) + 1, + menubox_border2_attr, + menubox_border_attr); + } + (void) wmove(dialog, cur_y, cur_x); + dlg_mouse_setcode(0); +} + +static void +set_top_item(ALL_DATA * all, int choice, int selected) +{ + if (choice != all->list[selected].top_index) { + DLG_TRACE(("# set top of %s column to %d\n", + mySide(selected), + choice)); + all->list[selected].top_index = choice; + } +} + +/* + * Adjust the top-index as needed to ensure that it and the given item are + * visible. + */ +static void +fix_top_item(ALL_DATA * all, int cur_item, int selected) +{ + int top_item = all->list[selected].top_index; + int cur_row = index2row(all, cur_item, selected); + int top_row = index2row(all, top_item, selected); + + if (cur_row < top_row) { + top_item = cur_item; + } else if ((cur_row - top_row) >= all->use_height) { + top_item = row2index(all, cur_row + 1 - all->use_height, selected); + } + if (cur_row < all->use_height) { + top_item = row2index(all, 0, selected); + } + DLG_TRACE(("# fix_top_item(cur_item %d, %s) ->top_item %d\n", + cur_item, mySide(selected), top_item)); + set_top_item(all, top_item, selected); +} + +static void +append_right_side(ALL_DATA * all, int choice) +{ + MY_DATA *data = &all->list[1]; + int j; + for (j = 0; j < all->item_no; ++j) { + if (myItem(data, j) == 0) { + myItem(data, j) = &all->items[choice]; + break; + } + } +} + +static void +amend_right_side(ALL_DATA * all, int choice) +{ + MY_DATA *data = &all->list[1]; + int j, k; + for (j = 0; j < all->item_no; ++j) { + if (myItem(data, j) == &all->items[choice]) { + for (k = j; k < all->item_no; ++k) { + if ((myItem(data, k) = myItem(data, k + 1)) == 0) + break; + } + break; + } + } +} + +static void +fill_one_side(ALL_DATA * all, int selected) +{ + int i, j; + MY_DATA *data = all->list + selected; + + for (i = j = 0; j < all->item_no; ++j) { + myItem(data, i) = 0; + if ((all->items[j].state != 0) == selected) { + myItem(data, i) = all->items + j; + TRACE(("! %s item[%d] %p = all[%d] %p\n", + mySide(selected), + i, myItem(data, i), + j, all->items + j)); + ++i; + } + } + myItem(data, i) = 0; +} + +static void +fill_both_sides(ALL_DATA * all) +{ + int k; + + for (k = 0; k < 2; ++k) { + fill_one_side(all, k); + } +} + +/* + * This is an alternate interface to 'buildlist' which allows the application + * to read the list item states back directly without putting them in the + * output buffer. + */ +int +dlg_buildlist(const char *title, + const char *cprompt, + int height, + int width, + int list_height, + int item_no, + DIALOG_LISTITEM * items, + const char *states, + int order_mode, + int *current_item) +{ +#define THIS_FUNC "dlg_buildlist" + /* *INDENT-OFF* */ + static DLG_KEYS_BINDING binding[] = { + HELPKEY_BINDINGS, + ENTERKEY_BINDINGS, + DLG_KEYS_DATA( DLGK_FIELD_NEXT, KEY_RIGHT ), + DLG_KEYS_DATA( DLGK_FIELD_NEXT, TAB ), + DLG_KEYS_DATA( DLGK_FIELD_PREV, KEY_BTAB ), + DLG_KEYS_DATA( DLGK_FIELD_PREV, KEY_LEFT ), + DLG_KEYS_DATA( DLGK_ITEM_FIRST, KEY_HOME ), + DLG_KEYS_DATA( DLGK_ITEM_LAST, KEY_END ), + DLG_KEYS_DATA( DLGK_ITEM_LAST, KEY_LL ), + DLG_KEYS_DATA( DLGK_ITEM_NEXT, '+' ), + DLG_KEYS_DATA( DLGK_ITEM_NEXT, KEY_DOWN ), + DLG_KEYS_DATA( DLGK_ITEM_NEXT, CHR_NEXT ), + DLG_KEYS_DATA( DLGK_ITEM_PREV, '-' ), + DLG_KEYS_DATA( DLGK_ITEM_PREV, KEY_UP ), + DLG_KEYS_DATA( DLGK_ITEM_PREV, CHR_PREVIOUS ), + DLG_KEYS_DATA( DLGK_PAGE_NEXT, KEY_NPAGE ), + DLG_KEYS_DATA( DLGK_PAGE_NEXT, DLGK_MOUSE(KEY_NPAGE) ), + DLG_KEYS_DATA( DLGK_PAGE_NEXT, DLGK_MOUSE(KEY_NPAGE+KEY_MAX) ), + DLG_KEYS_DATA( DLGK_PAGE_PREV, KEY_PPAGE ), + DLG_KEYS_DATA( DLGK_PAGE_PREV, DLGK_MOUSE(KEY_PPAGE) ), + DLG_KEYS_DATA( DLGK_PAGE_PREV, DLGK_MOUSE(KEY_PPAGE+KEY_MAX) ), + DLG_KEYS_DATA( DLGK_GRID_LEFT, KEY_LEFTCOL ), + DLG_KEYS_DATA( DLGK_GRID_RIGHT, KEY_RIGHTCOL ), + TOGGLEKEY_BINDINGS, + END_KEYS_BINDING + }; + /* *INDENT-ON* */ + +#ifdef KEY_RESIZE + int old_height = height; + int old_width = width; +#endif + ALL_DATA all; + MY_DATA *data = all.list; + int i, j, k, key2, found, x, y, cur_x, cur_y; + int key = 0, fkey; + bool save_visit = dialog_state.visit_items; + int button; + int cur_item; + int was_mouse; + int name_width, text_width, full_width, list_width; + int result = DLG_EXIT_UNKNOWN; + int num_states; + bool first = TRUE; + WINDOW *dialog; + char *prompt; + const char **buttons = dlg_ok_labels(); + const char *widget_name = "buildlist"; + + dialog_state.plain_buttons = TRUE; + + /* + * Unlike other uses of --visit-items, we have two windows to visit. + */ + if (dialog_state.visit_cols) + dialog_state.visit_cols = 2; + + memset(&all, 0, sizeof(all)); + all.items = items; + all.item_no = item_no; + for (k = 0; k < 2; ++k) { + data[k].ip = dlg_calloc(DIALOG_LISTITEM *, (item_no + 2)); + } + fill_both_sides(&all); + + if (dialog_vars.default_item != 0) { + cur_item = dlg_default_listitem(items); + } else { + if ((cur_item = first_item(&all, 0)) < 0) + cur_item = first_item(&all, 1); + } + button = (dialog_state.visit_items + ? (items[cur_item].state ? sRIGHT : sLEFT) + : dlg_default_button()); + + dlg_does_output(); + +#ifdef KEY_RESIZE + retry: +#endif + + prompt = dlg_strclone(cprompt); + dlg_tab_correct_str(prompt); + + all.use_height = list_height; + all.use_width = (2 * (dlg_calc_list_width(item_no, items) + + 4 + + 2 * MARGIN) + + 1); + all.use_width = MAX(26, all.use_width); + if (all.use_height == 0) { + /* calculate height without items (4) */ + dlg_auto_size(title, prompt, &height, &width, MIN_HIGH, all.use_width); + dlg_calc_listh(&height, &all.use_height, item_no); + } else { + dlg_auto_size(title, prompt, + &height, &width, + MIN_HIGH + all.use_height, all.use_width); + } + dlg_button_layout(buttons, &width); + dlg_print_size(height, width); + dlg_ctl_size(height, width); + + /* we need at least two states */ + if (states == 0 || strlen(states) < 2) + states = " *"; + num_states = (int) strlen(states); + + x = dlg_box_x_ordinate(width); + y = dlg_box_y_ordinate(height); + + dialog = dlg_new_window(height, width, y, x); + dlg_register_window(dialog, widget_name, binding); + dlg_register_buttons(dialog, widget_name, buttons); + + dlg_mouse_setbase(all.base_x = x, all.base_y = y); + + dlg_draw_box2(dialog, 0, 0, height, width, dialog_attr, border_attr, border2_attr); + dlg_draw_bottom_box2(dialog, border_attr, border2_attr, dialog_attr); + dlg_draw_title(dialog, title); + + dlg_attrset(dialog, dialog_attr); + dlg_print_autowrap(dialog, prompt, height, width); + + list_width = (width - 6 * MARGIN - 2) / 2; + getyx(dialog, cur_y, cur_x); + data[0].box_y = cur_y + 1; + data[0].box_x = MARGIN + 1; + data[1].box_y = cur_y + 1; + data[1].box_x = data[0].box_x + 1 + 2 * MARGIN + list_width; + + /* + * After displaying the prompt, we know how much space we really have. + * Limit the list to avoid overwriting the ok-button. + */ + if (all.use_height + MIN_HIGH > height - cur_y) + all.use_height = height - MIN_HIGH - cur_y; + if (all.use_height <= 0) + all.use_height = 1; + + for (k = 0; k < 2; ++k) { + /* create new window for the list */ + data[k].win = dlg_sub_window(dialog, all.use_height, list_width, + y + data[k].box_y + 1, + x + data[k].box_x + 1); + + /* draw a box around the list items */ + dlg_draw_box(dialog, data[k].box_y, data[k].box_x, + all.use_height + 2 * MARGIN, + list_width + 2 * MARGIN, + menubox_border_attr, menubox_border2_attr); + } + + text_width = 0; + name_width = 0; + /* Find length of longest item to center buildlist */ + for (i = 0; i < item_no; i++) { + text_width = MAX(text_width, dlg_count_columns(items[i].text)); + name_width = MAX(name_width, dlg_count_columns(items[i].name)); + } + + /* If the name+text is wider than the list is allowed, then truncate + * one or both of them. If the name is no wider than 1/4 of the list, + * leave it intact. + */ + all.use_width = (list_width - 6 * MARGIN); + if (dialog_vars.no_tags && !dialog_vars.no_items) { + full_width = MIN(all.use_width, text_width); + } else if (dialog_vars.no_items) { + full_width = MIN(all.use_width, name_width); + } else { + if (text_width >= 0 + && name_width >= 0 + && all.use_width > 0 + && text_width + name_width > all.use_width) { + int need = (int) (0.25 * all.use_width); + if (name_width > need) { + int want = (int) (all.use_width * ((double) name_width) / + (text_width + name_width)); + name_width = (want > need) ? want : need; + } + text_width = all.use_width - name_width; + } + full_width = text_width + name_width; + } + + all.check_x = (all.use_width - full_width) / 2; + all.item_x = ((dialog_vars.no_tags + ? 0 + : (dialog_vars.no_items + ? 0 + : (name_width + 2))) + + all.check_x); + + /* ensure we are scrolled to show the current choice */ + j = MIN(all.use_height, item_no); + for (i = 0; i < 2; ++i) { + if ((items[cur_item].state != 0) == i) { + int top_item = cur_item - j + 1; + if (top_item < 0) + top_item = 0; + while ((items[top_item].state != 0) != i) + ++top_item; + set_top_item(&all, top_item, i); + } else { + set_top_item(&all, 0, i); + } + } + + /* register the new window, along with its borders */ + for (i = 0; i < 2; ++i) { + dlg_mouse_mkbigregion(data[i].box_y + 1, + data[i].box_x, + all.use_height, + list_width + 2, + 2 * KEY_MAX + (i * (1 + all.use_height)), + 1, 1, 1 /* by lines */ ); + } + + dlg_draw_buttons(dialog, height - 2, 0, buttons, button, FALSE, width); + + while (result == DLG_EXIT_UNKNOWN) { + int which = (items[cur_item].state != 0); + MY_DATA *moi = data + which; + int at_top = index2row(&all, moi->top_index, which); + int at_end = index2row(&all, -1, which); + int at_bot = skip_rows(&all, at_top, all.use_height, which); + + DLG_TRACE(("# ** state %d:%d top %d (%d:%d:%d) %s\n", + cur_item, item_no - 1, + moi->top_index, + at_top, at_bot, at_end, + mySide(which))); + + if (first) { + print_both(&all, cur_item); + dlg_trace_win(dialog); + first = FALSE; + } + + if (button < 0) { /* --visit-items */ + int cur_row = index2row(&all, cur_item, which); + cur_y = (data[which].box_y + + cur_row + + 1); + if (at_top > 0) + cur_y -= at_top; + cur_x = (data[which].box_x + + all.check_x + 1); + DLG_TRACE(("# ...visit row %d (%d,%d)\n", cur_row, cur_y, cur_x)); + wmove(dialog, cur_y, cur_x); + } + + key = dlg_mouse_wgetch(dialog, &fkey); + if (dlg_result_key(key, fkey, &result)) + break; + + was_mouse = (fkey && is_DLGK_MOUSE(key)); + if (was_mouse) + key -= M_EVENT; + + if (!was_mouse) { + ; + } else if (key >= 2 * KEY_MAX) { + i = (key - 2 * KEY_MAX) % (1 + all.use_height); + j = (key - 2 * KEY_MAX) / (1 + all.use_height); + k = row2index(&all, i + at_top, j); + DLG_TRACE(("# MOUSE column %d, row %d ->item %d\n", j, i, k)); + if (k >= 0 && j < 2) { + if (j != which) { + /* + * Mouse click was in the other column. + */ + moi = data + j; + fix_top_item(&all, k, j); + } + which = j; + at_top = index2row(&all, moi->top_index, which); + at_bot = skip_rows(&all, at_top, all.use_height, which); + cur_item = k; + print_both(&all, cur_item); + key = DLGK_TOGGLE; /* force the selected item to toggle */ + } else { + beep(); + continue; + } + fkey = FALSE; + } else if (key >= KEY_MIN) { + if (key > KEY_MAX) { + if (which == 0) { + key = KEY_RIGHTCOL; /* switch to right-column */ + fkey = FALSE; + } else { + key -= KEY_MAX; + } + } else { + if (which == 1) { + key = KEY_LEFTCOL; /* switch to left-column */ + fkey = FALSE; + } + } + key = dlg_lookup_key(dialog, key, &fkey); + } + + /* + * A space toggles the item status. Normally we put the cursor on + * the next available item in the same column. But if there are no + * more items in the column, move the cursor to the other column. + */ + if (key == DLGK_TOGGLE) { + int new_choice; + int new_state = items[cur_item].state + 1; + + if ((new_choice = next_item(&all, cur_item, which)) == cur_item) { + new_choice = prev_item(&all, cur_item, which); + } + DLG_TRACE(("# cur_item %d, new_choice:%d\n", cur_item, new_choice)); + /* FIXME - how to test and handle multiple states? */ + if (new_state >= num_states) + new_state = 0; + + items[cur_item].state = new_state; + if (order_mode) { + fill_one_side(&all, 0); + if (new_state) { + append_right_side(&all, cur_item); + } else { + amend_right_side(&all, cur_item); + } + } else { + fill_both_sides(&all); + } + if (cur_item == moi->top_index) { + set_top_item(&all, new_choice, which); + } + + if (new_choice >= 0) { + fix_top_item(&all, cur_item, !which); + cur_item = new_choice; + } + print_both(&all, cur_item); + dlg_trace_win(dialog); + continue; /* wait for another key press */ + } + + /* + * Check if key pressed matches first character of any item tag in + * list. If there is more than one match, we will cycle through + * each one as the same key is pressed repeatedly. + */ + found = FALSE; + if (!fkey) { + if (button < 0 || !dialog_state.visit_items) { + for (j = cur_item + 1; j < item_no; j++) { + if (check_hotkey(items, j, which)) { + found = TRUE; + i = j; + break; + } + } + if (!found) { + for (j = 0; j <= cur_item; j++) { + if (check_hotkey(items, j, which)) { + found = TRUE; + i = j; + break; + } + } + } + if (found) + dlg_flush_getc(); + } else if ((j = dlg_char_to_button(key, buttons)) >= 0) { + button = j; + ungetch('\n'); + continue; + } + } + + /* + * A single digit (1-9) positions the selection to that line in the + * current screen. + */ + if (!found + && (key <= '9') + && (key > '0') + && (key - '1' < at_bot)) { + found = TRUE; + i = key - '1'; + } + + if (!found && fkey) { + switch (key) { + case DLGK_FIELD_PREV: + if ((button == sRIGHT) && dialog_state.visit_items) { + key = DLGK_GRID_LEFT; + button = sLEFT; + } else { + button = dlg_prev_button(buttons, button); + dlg_draw_buttons(dialog, height - 2, 0, buttons, button, + FALSE, width); + if (button == sRIGHT) { + key = DLGK_GRID_RIGHT; + } else { + continue; + } + } + break; + case DLGK_FIELD_NEXT: + if ((button == sLEFT) && dialog_state.visit_items) { + key = DLGK_GRID_RIGHT; + button = sRIGHT; + } else { + button = dlg_next_button(buttons, button); + dlg_draw_buttons(dialog, height - 2, 0, buttons, button, + FALSE, width); + if (button == sLEFT) { + key = DLGK_GRID_LEFT; + } else { + continue; + } + } + break; + } + } + + if (!found && fkey) { + i = cur_item; + found = TRUE; + switch (key) { + case DLGK_GRID_LEFT: + i = closest_item(&all, cur_item, 0); + fix_top_item(&all, i, 0); + break; + case DLGK_GRID_RIGHT: + if (order_mode) { + i = last_item(&all, 1); + } else { + i = closest_item(&all, cur_item, 1); + } + fix_top_item(&all, i, 1); + break; + case DLGK_PAGE_PREV: + if (cur_item > moi->top_index) { + i = moi->top_index; + } else if (moi->top_index != 0) { + int temp = at_top; + if ((temp -= all.use_height) < 0) + temp = 0; + i = row2index(&all, temp, which); + } + break; + case DLGK_PAGE_NEXT: + if ((at_end - at_bot) < all.use_height) { + i = next_item(&all, + row2index(&all, at_end, which), + which); + } else { + i = next_item(&all, + row2index(&all, at_bot, which), + which); + at_top = at_bot; + set_top_item(&all, + next_item(&all, + row2index(&all, at_top, which), + which), + which); + at_bot = skip_rows(&all, at_top, all.use_height, which); + at_bot = MIN(at_bot, at_end); + } + break; + case DLGK_ITEM_FIRST: + i = first_item(&all, which); + break; + case DLGK_ITEM_LAST: + i = last_item(&all, which); + break; + case DLGK_ITEM_PREV: + i = prev_item(&all, cur_item, which); + if (stop_prev(&all, cur_item, which)) + continue; + break; + case DLGK_ITEM_NEXT: + i = next_item(&all, cur_item, which); + break; + default: + found = FALSE; + break; + } + } + + if (found) { + if (i != cur_item) { + int now_at = index2row(&all, i, which); + int oops = item_no; + int old_item; + + DLG_TRACE(("# <--CHOICE %d\n", i)); + DLG_TRACE(("# <--topITM %d\n", moi->top_index)); + DLG_TRACE(("# <--now_at %d\n", now_at)); + DLG_TRACE(("# <--at_top %d\n", at_top)); + DLG_TRACE(("# <--at_bot %d\n", at_bot)); + + if (now_at >= at_bot) { + while (now_at >= at_bot) { + if ((at_bot - at_top) >= all.use_height) { + set_top_item(&all, + next_item(&all, moi->top_index, which), + which); + } + at_top = index2row(&all, moi->top_index, which); + at_bot = skip_rows(&all, at_top, all.use_height, which); + + DLG_TRACE(("# ...at_bot %d (now %d vs %d)\n", + at_bot, now_at, at_end)); + DLG_TRACE(("# ...topITM %d\n", moi->top_index)); + DLG_TRACE(("# ...at_top %d (diff %d)\n", at_top, + at_bot - at_top)); + + if (at_bot >= at_end) { + /* + * If we bumped into the end, move the top-item + * down by one line so that we can display the + * last item in the list. + */ + if ((at_bot - at_top) > all.use_height) { + set_top_item(&all, + next_item(&all, moi->top_index, which), + which); + } else if (at_top > 0 && + (at_bot - at_top) >= all.use_height) { + set_top_item(&all, + next_item(&all, moi->top_index, which), + which); + } + break; + } + if (--oops < 0) { + DLG_TRACE(("# OOPS-forward\n")); + break; + } + } + } else if (now_at < at_top) { + while (now_at < at_top) { + old_item = moi->top_index; + set_top_item(&all, + prev_item(&all, moi->top_index, which), + which); + at_top = index2row(&all, moi->top_index, which); + + DLG_TRACE(("# ...at_top %d (now %d)\n", at_top, now_at)); + DLG_TRACE(("# ...topITM %d\n", moi->top_index)); + + if (moi->top_index >= old_item) + break; + if (at_top <= now_at) + break; + if (--oops < 0) { + DLG_TRACE(("# OOPS-backward\n")); + break; + } + } + } + DLG_TRACE(("# -->now_at %d\n", now_at)); + cur_item = i; + print_both(&all, cur_item); + } + dlg_trace_win(dialog); + continue; /* wait for another key press */ + } + + if (fkey) { + switch (key) { + case DLGK_ENTER: + result = dlg_enter_buttoncode(button); + break; +#ifdef KEY_RESIZE + case KEY_RESIZE: + dlg_will_resize(dialog); + /* reset data */ + height = old_height; + width = old_width; + free(prompt); + dlg_clear(); + dlg_del_window(dialog); + dlg_mouse_free_regions(); + /* repaint */ + first = TRUE; + goto retry; +#endif + default: + if (was_mouse) { + if ((key2 = dlg_ok_buttoncode(key)) >= 0) { + result = key2; + break; + } + beep(); + } + } + } else { + beep(); + } + } + + /* + * If told to re-order the list, update it to reflect the current display: + * a) The left-side will be at the beginning, without gaps. + * b) The right-side will follow, in display-order. + */ + if (order_mode) { + DIALOG_LISTITEM *redo; + int row; + int choice; + int new_item = cur_item; + + redo = dlg_calloc(DIALOG_LISTITEM, (size_t) item_no + 1); + assert_ptr(redo, THIS_FUNC); + + j = 0; + for (k = 0; k < 2; ++k) { + for (row = 0; row < item_no; ++row) { + if (myItem(all.list + k, row) == 0) + break; + choice = row2index(&all, row, k); + if (choice == cur_item) + new_item = j; + redo[j++] = items[choice]; + } + } + + cur_item = new_item; + memcpy(items, redo, sizeof(DIALOG_LISTITEM) * (size_t) (item_no + 1)); + + free(redo); + } + + for (k = 0; k < 2; ++k) { + free(data[k].ip); + } + + dialog_state.visit_cols = save_visit; + dlg_del_window(dialog); + dlg_mouse_free_regions(); + free(prompt); + + *current_item = cur_item; + return result; +#undef THIS_FUNC +} + +/* + * Display a dialog box with a list of options that can be turned on or off + */ +int +dialog_buildlist(const char *title, + const char *cprompt, + int height, + int width, + int list_height, + int item_no, + char **items, + int order_mode) +{ +#define THIS_FUNC "dialog_buildlist" + int result; + int i, j; + DIALOG_LISTITEM *listitems; + bool separate_output = dialog_vars.separate_output; + bool show_status = FALSE; + int current = 0; + char *help_result; + + DLG_TRACE(("# buildlist args:\n")); + DLG_TRACE2S("title", title); + DLG_TRACE2S("message", cprompt); + DLG_TRACE2N("height", height); + DLG_TRACE2N("width", width); + DLG_TRACE2N("lheight", list_height); + DLG_TRACE2N("llength", item_no); + /* FIXME dump the items[][] too */ + DLG_TRACE2N("order", order_mode != 0); + + listitems = dlg_calloc(DIALOG_LISTITEM, (size_t) item_no + 1); + assert_ptr(listitems, THIS_FUNC); + + for (i = j = 0; i < item_no; ++i) { + listitems[i].name = items[j++]; + listitems[i].text = (dialog_vars.no_items + ? dlg_strempty() + : items[j++]); + listitems[i].state = !dlg_strcmp(items[j++], "on"); + listitems[i].help = ((dialog_vars.item_help) + ? items[j++] + : dlg_strempty()); + } + dlg_align_columns(&listitems[0].text, (int) sizeof(DIALOG_LISTITEM), item_no); + + result = dlg_buildlist(title, + cprompt, + height, + width, + list_height, + item_no, + listitems, + NULL, + order_mode, + ¤t); + + switch (result) { + case DLG_EXIT_OK: /* FALLTHRU */ + case DLG_EXIT_EXTRA: + show_status = TRUE; + break; + case DLG_EXIT_HELP: + dlg_add_help_listitem(&result, &help_result, &listitems[current]); + if ((show_status = dialog_vars.help_status)) { + if (separate_output) { + dlg_add_string(help_result); + dlg_add_separator(); + } else { + dlg_add_quoted(help_result); + } + } else { + dlg_add_string(help_result); + } + break; + } + + if (show_status) { + for (i = 0; i < item_no; i++) { + if (listitems[i].state) { + if (separate_output) { + dlg_add_string(listitems[i].name); + dlg_add_separator(); + } else { + if (dlg_need_separator()) + dlg_add_separator(); + dlg_add_quoted(listitems[i].name); + } + } + } + dlg_add_last_key(-1); + } + + dlg_free_columns(&listitems[0].text, (int) sizeof(DIALOG_LISTITEM), item_no); + free(listitems); + return result; +#undef THIS_FUNC +} Property changes on: vendor/dialog/1.3-20180621/buildlist.c ___________________________________________________________________ Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Index: vendor/dialog/1.3-20180621/buttons.c =================================================================== --- vendor/dialog/1.3-20180621/buttons.c (nonexistent) +++ vendor/dialog/1.3-20180621/buttons.c (revision 339483) @@ -0,0 +1,800 @@ +/* + * $Id: buttons.c,v 1.99 2018/06/18 22:11:16 tom Exp $ + * + * buttons.c -- draw buttons, e.g., OK/Cancel + * + * Copyright 2000-2017,2018 Thomas E. Dickey + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License, version 2.1 + * as published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this program; if not, write to + * Free Software Foundation, Inc. + * 51 Franklin St., Fifth Floor + * Boston, MA 02110, USA. + */ + +#include +#include + +#ifdef NEED_WCHAR_H +#include +#endif + +#define MIN_BUTTON (-dialog_state.visit_cols) +#define CHR_BUTTON (!dialog_state.plain_buttons) + +static void +center_label(char *buffer, int longest, const char *label) +{ + int len = dlg_count_columns(label); + int left = 0, right = 0; + + *buffer = 0; + if (len < longest) { + left = (longest - len) / 2; + right = (longest - len - left); + if (left > 0) + sprintf(buffer, "%*s", left, " "); + } + strcat(buffer, label); + if (right > 0) + sprintf(buffer + strlen(buffer), "%*s", right, " "); +} + +/* + * Parse a multibyte character out of the string, set it past the parsed + * character. + */ +static int +string_to_char(const char **stringp) +{ + int result; +#ifdef USE_WIDE_CURSES + const char *string = *stringp; + size_t have = strlen(string); + size_t check; + size_t len; + wchar_t cmp2[2]; + mbstate_t state; + + memset(&state, 0, sizeof(state)); + len = mbrlen(string, have, &state); + if ((int) len > 0 && len <= have) { + memset(&state, 0, sizeof(state)); + memset(cmp2, 0, sizeof(cmp2)); + check = mbrtowc(cmp2, string, len, &state); + if ((int) check <= 0) + cmp2[0] = 0; + *stringp += len; + } else { + cmp2[0] = UCH(*string); + *stringp += 1; + } + result = cmp2[0]; +#else + const char *string = *stringp; + result = UCH(*string); + *stringp += 1; +#endif + return result; +} + +static size_t +count_labels(const char **labels) +{ + size_t result = 0; + if (labels != 0) { + while (*labels++ != 0) { + ++result; + } + } + return result; +} + +/* + * Check if the latest key should be added to the hotkey list. + */ +static int +was_hotkey(int this_key, int *used_keys, size_t next) +{ + int result = FALSE; + + if (next != 0) { + size_t n; + for (n = 0; n < next; ++n) { + if (used_keys[n] == this_key) { + result = TRUE; + break; + } + } + } + return result; +} + +/* + * Determine the hot-keys for a set of button-labels. Normally these are + * the first uppercase character in each label. However, if more than one + * button has the same first-uppercase, then we will (attempt to) look for + * an alternate. + * + * This allocates data which must be freed by the caller. + */ +static int * +get_hotkeys(const char **labels) +{ + int *result = 0; + size_t count = count_labels(labels); + size_t n; + + if ((result = dlg_calloc(int, count + 1)) != 0) { + for (n = 0; n < count; ++n) { + const char *label = labels[n]; + const int *indx = dlg_index_wchars(label); + int limit = dlg_count_wchars(label); + int i; + + for (i = 0; i < limit; ++i) { + int first = indx[i]; + int check = UCH(label[first]); +#ifdef USE_WIDE_CURSES + int last = indx[i + 1]; + if ((last - first) != 1) { + const char *temp = (label + first); + check = string_to_char(&temp); + } +#endif + if (dlg_isupper(check) && !was_hotkey(check, result, n)) { + result[n] = check; + break; + } + } + } + } + return result; +} + +typedef enum { + sFIND_KEY = 0 + ,sHAVE_KEY = 1 + ,sHAD_KEY = 2 +} HOTKEY; + +/* + * Print a button + */ +static void +print_button(WINDOW *win, char *label, int hotkey, int y, int x, int selected) +{ + int i; + HOTKEY state = sFIND_KEY; + const int *indx = dlg_index_wchars(label); + int limit = dlg_count_wchars(label); + chtype key_attr = (selected + ? button_key_active_attr + : button_key_inactive_attr); + chtype label_attr = (selected + ? button_label_active_attr + : button_label_inactive_attr); + + (void) wmove(win, y, x); + dlg_attrset(win, selected + ? button_active_attr + : button_inactive_attr); + (void) waddstr(win, "<"); + dlg_attrset(win, label_attr); + for (i = 0; i < limit; ++i) { + int check; + int first = indx[i]; + int last = indx[i + 1]; + + switch (state) { + case sFIND_KEY: + check = UCH(label[first]); +#ifdef USE_WIDE_CURSES + if ((last - first) != 1) { + const char *temp = (label + first); + check = string_to_char(&temp); + } +#endif + if (check == hotkey) { + dlg_attrset(win, key_attr); + state = sHAVE_KEY; + } + break; + case sHAVE_KEY: + dlg_attrset(win, label_attr); + state = sHAD_KEY; + break; + default: + break; + } + waddnstr(win, label + first, last - first); + } + dlg_attrset(win, selected + ? button_active_attr + : button_inactive_attr); + (void) waddstr(win, ">"); + (void) wmove(win, y, x + ((int) (strspn) (label, " ")) + 1); +} + +/* + * Count the buttons in the list. + */ +int +dlg_button_count(const char **labels) +{ + int result = 0; + while (*labels++ != 0) + ++result; + return result; +} + +/* + * Compute the size of the button array in columns. Return the total number of + * columns in *length, and the longest button's columns in *longest + */ +void +dlg_button_sizes(const char **labels, + int vertical, + int *longest, + int *length) +{ + int n; + + *length = 0; + *longest = 0; + for (n = 0; labels[n] != 0; n++) { + if (vertical) { + *length += 1; + *longest = 1; + } else { + int len = dlg_count_columns(labels[n]); + if (len > *longest) + *longest = len; + *length += len; + } + } + /* + * If we can, make all of the buttons the same size. This is only optional + * for buttons laid out horizontally. + */ + if (*longest < 6 - (*longest & 1)) + *longest = 6 - (*longest & 1); + if (!vertical) + *length = *longest * n; +} + +/* + * Compute the size of the button array. + */ +int +dlg_button_x_step(const char **labels, int limit, int *gap, int *margin, int *step) +{ + int count = dlg_button_count(labels); + int longest; + int length; + int unused; + int used; + int result; + + *margin = 0; + if (count != 0) { + dlg_button_sizes(labels, FALSE, &longest, &length); + used = (length + (count * 2)); + unused = limit - used; + + if ((*gap = unused / (count + 3)) <= 0) { + if ((*gap = unused / (count + 1)) <= 0) + *gap = 1; + *margin = *gap; + } else { + *margin = *gap * 2; + } + *step = *gap + (used + count - 1) / count; + result = (*gap > 0) && (unused >= 0); + } else { + result = 0; + } + return result; +} + +/* + * Make sure there is enough space for the buttons + */ +void +dlg_button_layout(const char **labels, int *limit) +{ + int width = 1; + int gap, margin, step; + + if (labels != 0 && dlg_button_count(labels)) { + while (!dlg_button_x_step(labels, width, &gap, &margin, &step)) + ++width; + width += (4 * MARGIN); + if (width > COLS) + width = COLS; + if (width > *limit) + *limit = width; + } +} + +/* + * Print a list of buttons at the given position. + */ +void +dlg_draw_buttons(WINDOW *win, + int y, int x, + const char **labels, + int selected, + int vertical, + int limit) +{ + chtype save = dlg_get_attrs(win); + int n; + int step = 0; + int length; + int longest; + int final_x; + int final_y; + int gap; + int margin; + size_t need; + char *buffer; + + dlg_mouse_setbase(getbegx(win), getbegy(win)); + + getyx(win, final_y, final_x); + + dlg_button_sizes(labels, vertical, &longest, &length); + + if (vertical) { + y += 1; + step = 1; + } else { + dlg_button_x_step(labels, limit, &gap, &margin, &step); + x += margin; + } + + /* + * Allocate a buffer big enough for any label. + */ + need = (size_t) longest; + if (need != 0) { + int *hotkeys = get_hotkeys(labels); + assert_ptr(hotkeys, "dlg_draw_buttons"); + + for (n = 0; labels[n] != 0; ++n) { + need += strlen(labels[n]) + 1; + } + buffer = dlg_malloc(char, need); + assert_ptr(buffer, "dlg_draw_buttons"); + + /* + * Draw the labels. + */ + for (n = 0; labels[n] != 0; n++) { + center_label(buffer, longest, labels[n]); + mouse_mkbutton(y, x, dlg_count_columns(buffer), n); + print_button(win, buffer, + CHR_BUTTON ? hotkeys[n] : -1, + y, x, + (selected == n) || (n == 0 && selected < 0)); + if (selected == n) + getyx(win, final_y, final_x); + + if (vertical) { + if ((y += step) > limit) + break; + } else { + if ((x += step) > limit) + break; + } + } + (void) wmove(win, final_y, final_x); + wrefresh(win); + dlg_attrset(win, save); + free(buffer); + free(hotkeys); + } +} + +/* + * Match a given character against the beginning of the string, ignoring case + * of the given character. The matching string must begin with an uppercase + * character. + */ +int +dlg_match_char(int ch, const char *string) +{ + if (string != 0) { + int cmp2 = string_to_char(&string); +#ifdef USE_WIDE_CURSES + wint_t cmp1 = dlg_toupper(ch); + if (cmp2 != 0 && (wchar_t) cmp1 == (wchar_t) dlg_toupper(cmp2)) { + return TRUE; + } +#else + if (ch > 0 && ch < 256) { + if (dlg_toupper(ch) == dlg_toupper(cmp2)) + return TRUE; + } +#endif + } + return FALSE; +} + +/* + * Find the first uppercase character in the label, which we may use for an + * abbreviation. + */ +int +dlg_button_to_char(const char *label) +{ + int cmp = -1; + + while (*label != 0) { + cmp = string_to_char(&label); + if (dlg_isupper(cmp)) { + break; + } + } + return cmp; +} + +/* + * Given a list of button labels, and a character which may be the abbreviation + * for one, find it, if it exists. An abbreviation will be the first character + * which happens to be capitalized in the label. + */ +int +dlg_char_to_button(int ch, const char **labels) +{ + int result = DLG_EXIT_UNKNOWN; + + if (labels != 0) { + int *hotkeys = get_hotkeys(labels); + int j; + + ch = (int) dlg_toupper(dlg_last_getc()); + + if (hotkeys != 0) { + for (j = 0; labels[j] != 0; ++j) { + if (ch == hotkeys[j]) { + dlg_flush_getc(); + result = j; + break; + } + } + free(hotkeys); + } + } + + return result; +} + +static const char * +my_yes_label(void) +{ + return (dialog_vars.yes_label != NULL) + ? dialog_vars.yes_label + : _("Yes"); +} + +static const char * +my_no_label(void) +{ + return (dialog_vars.no_label != NULL) + ? dialog_vars.no_label + : _("No"); +} + +static const char * +my_ok_label(void) +{ + return (dialog_vars.ok_label != NULL) + ? dialog_vars.ok_label + : _("OK"); +} + +static const char * +my_cancel_label(void) +{ + return (dialog_vars.cancel_label != NULL) + ? dialog_vars.cancel_label + : _("Cancel"); +} + +static const char * +my_exit_label(void) +{ + return (dialog_vars.exit_label != NULL) + ? dialog_vars.exit_label + : _("EXIT"); +} + +static const char * +my_extra_label(void) +{ + return (dialog_vars.extra_label != NULL) + ? dialog_vars.extra_label + : _("Extra"); +} + +static const char * +my_help_label(void) +{ + return (dialog_vars.help_label != NULL) + ? dialog_vars.help_label + : _("Help"); +} + +/* + * Return a list of button labels. + */ +const char ** +dlg_exit_label(void) +{ + const char **result; + DIALOG_VARS save; + + if (dialog_vars.extra_button) { + dlg_save_vars(&save); + dialog_vars.nocancel = TRUE; + result = dlg_ok_labels(); + dlg_restore_vars(&save); + } else { + static const char *labels[3]; + int n = 0; + + if (!dialog_vars.nook) + labels[n++] = my_exit_label(); + if (dialog_vars.help_button) + labels[n++] = my_help_label(); + if (n == 0) + labels[n++] = my_exit_label(); + labels[n] = 0; + + result = labels; + } + return result; +} + +/* + * Map the given button index for dlg_exit_label() into our exit-code. + */ +int +dlg_exit_buttoncode(int button) +{ + int result; + DIALOG_VARS save; + + dlg_save_vars(&save); + dialog_vars.nocancel = TRUE; + + result = dlg_ok_buttoncode(button); + + dlg_restore_vars(&save); + + return result; +} + +const char ** +dlg_ok_label(void) +{ + static const char *labels[4]; + int n = 0; + + labels[n++] = my_ok_label(); + if (dialog_vars.extra_button) + labels[n++] = my_extra_label(); + if (dialog_vars.help_button) + labels[n++] = my_help_label(); + labels[n] = 0; + return labels; +} + +/* + * Return a list of button labels for the OK/Cancel group. + */ +const char ** +dlg_ok_labels(void) +{ + static const char *labels[5]; + int n = 0; + + if (!dialog_vars.nook) + labels[n++] = my_ok_label(); + if (dialog_vars.extra_button) + labels[n++] = my_extra_label(); + if (!dialog_vars.nocancel) + labels[n++] = my_cancel_label(); + if (dialog_vars.help_button) + labels[n++] = my_help_label(); + labels[n] = 0; + return labels; +} + +/* + * Map the given button index for dlg_ok_labels() into our exit-code + */ +int +dlg_ok_buttoncode(int button) +{ + int result = DLG_EXIT_ERROR; + int n = !dialog_vars.nook; + + if (!dialog_vars.nook && (button <= 0)) { + result = DLG_EXIT_OK; + } else if (dialog_vars.extra_button && (button == n++)) { + result = DLG_EXIT_EXTRA; + } else if (!dialog_vars.nocancel && (button == n++)) { + result = DLG_EXIT_CANCEL; + } else if (dialog_vars.help_button && (button == n)) { + result = DLG_EXIT_HELP; + } + DLG_TRACE(("# dlg_ok_buttoncode(%d) = %d\n", button, result)); + return result; +} + +/* + * Given that we're using dlg_ok_labels() to list buttons, find the next index + * in the list of buttons. The 'extra' parameter if negative provides a way to + * enumerate extra active areas on the widget. + */ +int +dlg_next_ok_buttonindex(int current, int extra) +{ + int result = current + 1; + + if (current >= 0 + && dlg_ok_buttoncode(result) < 0) + result = extra; + return result; +} + +/* + * Similarly, find the previous button index. + */ +int +dlg_prev_ok_buttonindex(int current, int extra) +{ + int result = current - 1; + + if (result < extra) { + for (result = 0; dlg_ok_buttoncode(result + 1) >= 0; ++result) { + ; + } + } + return result; +} + +/* + * Find the button-index for the "OK" or "Cancel" button, according to + * whether --defaultno is given. If --nocancel was given, we always return + * the index for the first button (usually "OK" unless --nook was used). + */ +int +dlg_defaultno_button(void) +{ + int result = 0; + + if (dialog_vars.defaultno && !dialog_vars.nocancel) { + while (dlg_ok_buttoncode(result) != DLG_EXIT_CANCEL) + ++result; + } + DLG_TRACE(("# dlg_defaultno_button() = %d\n", result)); + return result; +} + +/* + * Find the button-index for a button named with --default-button. If the + * option was not specified, or if the selected button does not exist, return + * the index of the first button (usually "OK" unless --nook was used). + */ +int +dlg_default_button(void) +{ + int i, n; + int result = 0; + + if (dialog_vars.default_button >= 0) { + for (i = 0; (n = dlg_ok_buttoncode(i)) >= 0; i++) { + if (n == dialog_vars.default_button) { + result = i; + break; + } + } + } + DLG_TRACE(("# dlg_default_button() = %d\n", result)); + return result; +} + +/* + * Return a list of buttons for Yes/No labels. + */ +const char ** +dlg_yes_labels(void) +{ + const char **result; + + if (dialog_vars.extra_button) { + result = dlg_ok_labels(); + } else { + static const char *labels[4]; + int n = 0; + + labels[n++] = my_yes_label(); + labels[n++] = my_no_label(); + if (dialog_vars.help_button) + labels[n++] = my_help_label(); + labels[n] = 0; + + result = labels; + } + + return result; +} + +/* + * Map the given button index for dlg_yes_labels() into our exit-code. + */ +int +dlg_yes_buttoncode(int button) +{ + int result = DLG_EXIT_ERROR; + + if (dialog_vars.extra_button) { + result = dlg_ok_buttoncode(button); + } else if (button == 0) { + result = DLG_EXIT_OK; + } else if (button == 1) { + result = DLG_EXIT_CANCEL; + } else if (button == 2 && dialog_vars.help_button) { + result = DLG_EXIT_HELP; + } + + return result; +} + +/* + * Return the next index in labels[]; + */ +int +dlg_next_button(const char **labels, int button) +{ + if (button < -1) + button = -1; + + if (labels[button + 1] != 0) { + ++button; + } else { + button = MIN_BUTTON; + } + return button; +} + +/* + * Return the previous index in labels[]; + */ +int +dlg_prev_button(const char **labels, int button) +{ + if (button > MIN_BUTTON) { + --button; + } else { + if (button < -1) + button = -1; + + while (labels[button + 1] != 0) + ++button; + } + return button; +} Index: vendor/dialog/1.3-20180621/calendar.c =================================================================== --- vendor/dialog/1.3-20180621/calendar.c (nonexistent) +++ vendor/dialog/1.3-20180621/calendar.c (revision 339483) @@ -0,0 +1,1017 @@ +/* + * $Id: calendar.c,v 1.97 2018/06/19 22:57:01 tom Exp $ + * + * calendar.c -- implements the calendar box + * + * Copyright 2001-2017,2018 Thomas E. Dickey + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License, version 2.1 + * as published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this program; if not, write to + * Free Software Foundation, Inc. + * 51 Franklin St., Fifth Floor + * Boston, MA 02110, USA. + */ + +#include +#include + +#include + +#ifdef HAVE_STDINT_H +#include +#else +#define intptr_t long +#endif + +#define ONE_DAY (60 * 60 * 24) + +#define MON_WIDE 4 /* width of a month-name */ +#define DAY_HIGH 6 /* maximum lines in day-grid */ +#define DAY_WIDE (8 * MON_WIDE) /* width of the day-grid */ +#define HDR_HIGH 1 /* height of cells with month/year */ +#define BTN_HIGH 1 /* height of button-row excluding margin */ + +/* two more lines: titles for day-of-week and month/year boxes */ +#define MIN_HIGH (DAY_HIGH + 2 + HDR_HIGH + BTN_HIGH + (MAX_DAYS * MARGIN)) +#define MIN_WIDE (DAY_WIDE + (4 * MARGIN)) + +typedef enum { + sMONTH = -3 + ,sYEAR = -2 + ,sDAY = -1 +} STATES; + +struct _box; + +typedef int (*BOX_DRAW) (struct _box *, struct tm *); + +typedef struct _box { + WINDOW *parent; + WINDOW *window; + int x; + int y; + int width; + int height; + BOX_DRAW box_draw; + int week_start; +} BOX; + +#define MAX_DAYS 7 +#define MAX_MONTHS 12 + +static char *cached_days[MAX_DAYS]; +static char *cached_months[MAX_MONTHS]; + +static const char * +nameOfDayOfWeek(int n) +{ + static bool shown[MAX_DAYS]; + static const char *posix_days[MAX_DAYS] = + { + "Sunday", + "Monday", + "Tuesday", + "Wednesday", + "Thursday", + "Friday", + "Saturday" + }; + + while (n < 0) { + n += MAX_DAYS; + } + n %= MAX_DAYS; +#ifdef ENABLE_NLS + if (cached_days[n] == 0) { + const nl_item items[MAX_DAYS] = + { + ABDAY_1, ABDAY_2, ABDAY_3, ABDAY_4, ABDAY_5, ABDAY_6, ABDAY_7 + }; + cached_days[n] = dlg_strclone(nl_langinfo(items[n])); + memset(shown, 0, sizeof(shown)); + } +#endif + if (cached_days[n] == 0) { + size_t len, limit = MON_WIDE - 1; + char *value = dlg_strclone(posix_days[n]); + + /* + * POSIX does not actually say what the length of an abbreviated name + * is. Typically it is 2, which will fit into our layout. That also + * happens to work with CJK entries as seen in glibc, which are a + * double-width cell. For now (2016/01/26), handle too-long names only + * for POSIX values. + */ + if ((len = strlen(value)) > limit) + value[limit] = '\0'; + cached_days[n] = value; + } + if (!shown[n]) { + DLG_TRACE(("# DAY(%d) = '%s'\n", n, cached_days[n])); + shown[n] = TRUE; + } + return cached_days[n]; +} + +static const char * +nameOfMonth(int n) +{ + static bool shown[MAX_MONTHS]; + static const char *posix_mons[MAX_MONTHS] = + { + "January", + "February", + "March", + "April", + "May", + "June", + "July", + "August", + "September", + "October", + "November", + "December" + }; + + while (n < 0) { + n += MAX_MONTHS; + } + n %= MAX_MONTHS; +#ifdef ENABLE_NLS + if (cached_months[n] == 0) { + const nl_item items[MAX_MONTHS] = + { + MON_1, MON_2, MON_3, MON_4, MON_5, MON_6, + MON_7, MON_8, MON_9, MON_10, MON_11, MON_12 + }; + cached_months[n] = dlg_strclone(nl_langinfo(items[n])); + memset(shown, 0, sizeof(shown)); + } +#endif + if (cached_months[n] == 0) { + cached_months[n] = dlg_strclone(posix_mons[n]); + } + if (!shown[n]) { + DLG_TRACE(("# MON(%d) = '%s'\n", n, cached_months[n])); + shown[n] = TRUE; + } + return cached_months[n]; +} + +/* + * Algorithm for Gregorian calendar. + */ +static int +isleap(int y) +{ + return ((y % 4 == 0) && + ((y % 100 != 0) || + (y % 400 == 0))) ? 1 : 0; +} + +static void +adjust_year_month(int *year, int *month) +{ + while (*month < 0) { + *month += MAX_MONTHS; + *year -= 1; + } + while (*month >= MAX_MONTHS) { + *month -= MAX_MONTHS; + *year += 1; + } +} + +static int +days_per_month(int year, int month) +{ + static const int nominal[] = + { + 31, 28, 31, 30, 31, 30, + 31, 31, 30, 31, 30, 31 + }; + int result; + + adjust_year_month(&year, &month); + result = nominal[month]; + if (month == 1) + result += isleap(year); + return result; +} + +static int +days_in_month(struct tm *current, int offset /* -1, 0, 1 */ ) +{ + int year = current->tm_year + 1900; + int month = current->tm_mon + offset; + + adjust_year_month(&year, &month); + return days_per_month(year, month); +} + +static int +days_per_year(int year) +{ + return (isleap(year) ? 366 : 365); +} + +static int +days_in_year(struct tm *current, int offset /* -1, 0, 1 */ ) +{ + return days_per_year(current->tm_year + 1900 + offset); +} + +/* + * Adapted from C FAQ + * "17.28: How can I find the day of the week given the date?" + * implementation by Tomohiko Sakamoto. + * + * d = day (0 to whatever) + * m = month (1 through 12) + * y = year (1752 and later, for Gregorian calendar) + */ +static int +day_of_week(int y, int m, int d) +{ + static int t[] = + { + 0, 3, 2, 5, 0, 3, 5, 1, 4, 6, 2, 4 + }; + y -= (m < 3); + return (6 + (y + (y / 4) - (y / 100) + (y / 400) + t[m - 1] + d)) % MAX_DAYS; +} + +static int +day_in_year(int year, int month, int day) +{ + int result = day; + while (--month >= 1) + result += days_per_month(year, month); + return result; +} + +static int +iso_week(int year, int month, int day) +{ + int week = 1; + int dow; + int new_year_dow; + int diy; + int new_years_eve_dow; + static const int thursday = 3; + + /* add the number weeks *between* date and newyear */ + diy = day_in_year(year, month, day); + week += (diy - 1) / MAX_DAYS; + + /* 0 = Monday */ + dow = day_of_week(year, month, day); + new_year_dow = day_of_week(year, 1, 1); + + /* + * If New Year falls on Friday, Saturday or Sunday, then New Years's week + * is the last week of the preceding year. In that case subtract one week. + */ + if (new_year_dow > thursday) + --week; + + /* Add one week if there is a Sunday to Monday transition. */ + if (dow - new_year_dow < 0) + ++week; + + /* Check if we are in the last week of the preceding year. */ + if (week < 1) { + week = iso_week(--year, 12, 31); + } + + /* + * If we are in the same week as New Year's eve, check if New Year's eve is + * in the first week of the next year. + */ + new_years_eve_dow = (new_year_dow + 364 + isleap(year)) % MAX_DAYS; + if (365 + isleap(year) - diy < MAX_DAYS + && new_years_eve_dow >= dow + && new_years_eve_dow < thursday) { + ++year; + week = 1; + } + return week; +} + +static int * +getisoweeks(int year, int month) +{ + static int result[10]; + int windx = 0; + int day; + int dpm = days_per_month(year, month); + + for (day = 1; day <= dpm; day += MAX_DAYS) + result[windx++] = iso_week(year, month, day); + /* + * Ensure that there is a week number associated with the last day of the + * month, e.g., in case the last day of the month falls before Thursday, + * so that we have to show the week-number for the beginning of the + * following month. + */ + result[windx] = iso_week(year, month, dpm); + return result; +} + +static int +day_cell_number(struct tm *current) +{ + int cell; + cell = current->tm_mday - ((6 + current->tm_mday - current->tm_wday) % MAX_DAYS); + if ((current->tm_mday - 1) % MAX_DAYS != current->tm_wday) + cell += 6; + else + cell--; + return cell; +} + +static int +next_or_previous(int key, int two_d) +{ + int result = 0; + + switch (key) { + case DLGK_GRID_UP: + result = two_d ? -MAX_DAYS : -1; + break; + case DLGK_GRID_LEFT: + result = -1; + break; + case DLGK_GRID_DOWN: + result = two_d ? MAX_DAYS : 1; + break; + case DLGK_GRID_RIGHT: + result = 1; + break; + default: + beep(); + break; + } + return result; +} + +/* + * Draw the day-of-month selection box + */ +static int +draw_day(BOX * data, struct tm *current) +{ + int cell_wide = MON_WIDE; + int y, x, this_x = 0; + int save_y = 0, save_x = 0; + int day = current->tm_mday; + int mday; + int week = 0; + int windx = 0; + int *weeks = 0; + int last = days_in_month(current, 0); + int prev = days_in_month(current, -1); + + werase(data->window); + dlg_draw_box2(data->parent, + data->y - MARGIN, data->x - MARGIN, + data->height + (2 * MARGIN), data->width + (2 * MARGIN), + menubox_attr, + menubox_border_attr, + menubox_border2_attr); + + dlg_attrset(data->window, menubox_attr); /* daynames headline */ + for (x = 0; x < MAX_DAYS; x++) { + mvwprintw(data->window, + 0, (x + 1) * cell_wide, "%*.*s ", + cell_wide - 1, + cell_wide - 1, + nameOfDayOfWeek(x + data->week_start)); + } + + mday = ((6 + current->tm_mday - + current->tm_wday + + data->week_start) % MAX_DAYS) - MAX_DAYS; + if (mday <= -MAX_DAYS) + mday += MAX_DAYS; + + if (dialog_vars.iso_week) { + weeks = getisoweeks(current->tm_year + 1900, current->tm_mon + 1); + } else { + /* mday is now in the range -6 to 0. */ + week = (current->tm_yday + 6 + mday - current->tm_mday) / MAX_DAYS; + } + + for (y = 1; mday < last; y++) { + dlg_attrset(data->window, menubox_attr); /* weeknumbers headline */ + mvwprintw(data->window, + y, 0, + "%*d ", + cell_wide - 1, + weeks ? weeks[windx++] : ++week); + for (x = 0; x < MAX_DAYS; x++) { + this_x = 1 + (x + 1) * cell_wide; + ++mday; + if (wmove(data->window, y, this_x) == ERR) + continue; + dlg_attrset(data->window, item_attr); /* not selected days */ + if (mday == day) { + dlg_attrset(data->window, item_selected_attr); /* selected day */ + save_y = y; + save_x = this_x; + } + if (mday > 0) { + if (mday <= last) { + wprintw(data->window, "%*d", cell_wide - 2, mday); + } else if (mday == day) { + wprintw(data->window, "%*d", cell_wide - 2, mday - last); + } + } else if (mday == day) { + wprintw(data->window, "%*d", cell_wide - 2, mday + prev); + } + } + wmove(data->window, save_y, save_x); + } + /* just draw arrows - scrollbar is unsuitable here */ + dlg_draw_arrows(data->parent, TRUE, TRUE, + data->x + ARROWS_COL, + data->y - 1, + data->y + data->height); + + return 0; +} + +/* + * Draw the month-of-year selection box + */ +static int +draw_month(BOX * data, struct tm *current) +{ + int month; + + month = current->tm_mon + 1; + + dlg_attrset(data->parent, dialog_attr); /* Headline "Month" */ + (void) mvwprintw(data->parent, data->y - 2, data->x - 1, _("Month")); + dlg_draw_box2(data->parent, + data->y - 1, data->x - 1, + data->height + 2, data->width + 2, + menubox_attr, + menubox_border_attr, + menubox_border2_attr); + dlg_attrset(data->window, item_attr); /* color the month selection */ + mvwprintw(data->window, 0, 0, "%s", nameOfMonth(month - 1)); + wmove(data->window, 0, 0); + return 0; +} + +/* + * Draw the year selection box + */ +static int +draw_year(BOX * data, struct tm *current) +{ + int year = current->tm_year + 1900; + + dlg_attrset(data->parent, dialog_attr); /* Headline "Year" */ + (void) mvwprintw(data->parent, data->y - 2, data->x - 1, _("Year")); + dlg_draw_box2(data->parent, + data->y - 1, data->x - 1, + data->height + 2, data->width + 2, + menubox_attr, + menubox_border_attr, + menubox_border2_attr); + dlg_attrset(data->window, item_attr); /* color the year selection */ + mvwprintw(data->window, 0, 0, "%4d", year); + wmove(data->window, 0, 0); + return 0; +} + +static int +init_object(BOX * data, + WINDOW *parent, + int x, int y, + int width, int height, + BOX_DRAW box_draw, + int key_offset, + int code) +{ + data->parent = parent; + data->x = x; + data->y = y; + data->width = width; + data->height = height; + data->box_draw = box_draw; + data->week_start = key_offset; + + data->window = derwin(data->parent, + data->height, data->width, + data->y, data->x); + if (data->window == 0) + return -1; + (void) keypad(data->window, TRUE); + + dlg_mouse_setbase(getbegx(parent), getbegy(parent)); + if (code == 'D') { + dlg_mouse_mkbigregion(y + 1, x + MON_WIDE, height - 1, width - MON_WIDE, + KEY_MAX + key_offset, 1, MON_WIDE, 3); + } else { + dlg_mouse_mkregion(y, x, height, width, code); + } + + return 0; +} + +#if defined(ENABLE_NLS) && defined(HAVE_NL_LANGINFO_1STDAY) +#elif defined(HAVE_DLG_GAUGE) +static int +read_locale_setting(const char *name, int which) +{ + FILE *fp; + char command[80]; + int result = -1; + + sprintf(command, "locale %s", name); + if ((fp = dlg_popen(command, "r")) != 0) { + int count = 0; + char buf[80]; + + while (fgets(buf, (int) sizeof(buf) - 1, fp) != 0) { + if (++count > which) { + char *next = 0; + long check = strtol(buf, &next, 0); + if (next != 0 && + next != buf && + *next == '\n') { + result = (int) check; + } + break; + } + } + pclose(fp); + } + return result; +} +#endif + +static int +WeekStart(void) +{ + int result = 0; + char *option = dialog_vars.week_start; + if (option != 0) { + if (option[0]) { + char *next = 0; + long check = strtol(option, &next, 0); + if (next == 0 || + next == option || + *next != '\0') { + if (!strcmp(option, "locale")) { +#if defined(ENABLE_NLS) && defined(HAVE_NL_LANGINFO_1STDAY) + /* + * glibc-specific. + */ + int first_day = nl_langinfo(_NL_TIME_FIRST_WEEKDAY)[0]; + char *basis_ptr = nl_langinfo(_NL_TIME_WEEK_1STDAY); + int basis_day = (int) (intptr_t) basis_ptr; +#elif defined(HAVE_DLG_GAUGE) + /* + * probably Linux-specific, but harmless otherwise. When + * available, the locale program will return a single + * integer on one line. + */ + int first_day = read_locale_setting("first_weekday", 0); + int basis_day = read_locale_setting("week-1stday", 0); +#endif +#if (defined(ENABLE_NLS) && defined(HAVE_NL_LANGINFO_1STDAY)) || defined(HAVE_DLG_GAUGE) + int week_1stday = -1; + if (basis_day == 19971130) + week_1stday = 0; /* Sun */ + else if (basis_day == 19971201) + week_1stday = 1; /* Mon */ + if (week_1stday >= 0) { + result = first_day - week_1stday - 1; + } +#else + result = 0; /* Sun */ +#endif + } else { + int day; + size_t eql = strlen(option); + for (day = 0; day < MAX_DAYS; ++day) { + if (!strncmp(nameOfDayOfWeek(day), option, eql)) { + result = day; + break; + } + } + } + } else if (check < 0) { + result = -1; + } else { + result = (int) (check % MAX_DAYS); + } + } + } + return result; +} + +static int +CleanupResult(int code, WINDOW *dialog, char *prompt, DIALOG_VARS * save_vars) +{ + int n; + + if (dialog != 0) + dlg_del_window(dialog); + dlg_mouse_free_regions(); + if (prompt != 0) + free(prompt); + dlg_restore_vars(save_vars); + + for (n = 0; n < MAX_DAYS; ++n) { + free(cached_days[n]); + cached_days[n] = 0; + } + for (n = 0; n < MAX_MONTHS; ++n) { + free(cached_months[n]); + cached_months[n] = 0; + } + + return code; +} + +static void +trace_date(struct tm *current, struct tm *old) +{ + bool changed = (old == 0 || + current->tm_mday != old->tm_mday || + current->tm_mon != old->tm_mon || + current->tm_year != old->tm_year); + if (changed) { + DLG_TRACE(("# current %04d/%02d/%02d\n", + current->tm_year + 1900, + current->tm_mon + 1, + current->tm_mday)); + } else { + DLG_TRACE(("# current (unchanged)\n")); + } +} + +#define DrawObject(data) (data)->box_draw(data, ¤t) + +/* + * Display a dialog box for entering a date + */ +int +dialog_calendar(const char *title, + const char *subtitle, + int height, + int width, + int day, + int month, + int year) +{ + /* *INDENT-OFF* */ + static DLG_KEYS_BINDING binding[] = { + HELPKEY_BINDINGS, + ENTERKEY_BINDINGS, + TOGGLEKEY_BINDINGS, + DLG_KEYS_DATA( DLGK_FIELD_NEXT, TAB ), + DLG_KEYS_DATA( DLGK_FIELD_PREV, KEY_BTAB ), + DLG_KEYS_DATA( DLGK_GRID_DOWN, 'j' ), + DLG_KEYS_DATA( DLGK_GRID_DOWN, DLGK_MOUSE(KEY_NPAGE) ), + DLG_KEYS_DATA( DLGK_GRID_DOWN, KEY_DOWN ), + DLG_KEYS_DATA( DLGK_GRID_DOWN, KEY_NPAGE ), + DLG_KEYS_DATA( DLGK_GRID_LEFT, '-' ), + DLG_KEYS_DATA( DLGK_GRID_LEFT, 'h' ), + DLG_KEYS_DATA( DLGK_GRID_LEFT, CHR_BACKSPACE ), + DLG_KEYS_DATA( DLGK_GRID_LEFT, CHR_PREVIOUS ), + DLG_KEYS_DATA( DLGK_GRID_LEFT, KEY_LEFT ), + DLG_KEYS_DATA( DLGK_GRID_RIGHT, '+' ), + DLG_KEYS_DATA( DLGK_GRID_RIGHT, 'l' ), + DLG_KEYS_DATA( DLGK_GRID_RIGHT, CHR_NEXT ), + DLG_KEYS_DATA( DLGK_GRID_RIGHT, KEY_NEXT ), + DLG_KEYS_DATA( DLGK_GRID_RIGHT, KEY_RIGHT ), + DLG_KEYS_DATA( DLGK_GRID_UP, 'k' ), + DLG_KEYS_DATA( DLGK_GRID_UP, KEY_PPAGE ), + DLG_KEYS_DATA( DLGK_GRID_UP, KEY_PREVIOUS ), + DLG_KEYS_DATA( DLGK_GRID_UP, KEY_UP ), + DLG_KEYS_DATA( DLGK_GRID_UP, DLGK_MOUSE(KEY_PPAGE) ), + END_KEYS_BINDING + }; + /* *INDENT-ON* */ + +#ifdef KEY_RESIZE + int old_height = height; + int old_width = width; +#endif + BOX dy_box, mn_box, yr_box; + int fkey; + int key = 0; + int key2; + int step; + int button; + int result = DLG_EXIT_UNKNOWN; + int week_start; + WINDOW *dialog; + time_t now_time = time((time_t *) 0); + struct tm current; + int state = dlg_default_button(); + const char **buttons = dlg_ok_labels(); + char *prompt; + int mincols = MIN_WIDE; + char buffer[MAX_LEN]; + DIALOG_VARS save_vars; + + DLG_TRACE(("# calendar args:\n")); + DLG_TRACE2S("title", title); + DLG_TRACE2S("message", subtitle); + DLG_TRACE2N("height", height); + DLG_TRACE2N("width", width); + DLG_TRACE2N("day", day); + DLG_TRACE2N("month", month); + DLG_TRACE2N("year", year); + + dlg_save_vars(&save_vars); + dialog_vars.separate_output = TRUE; + + dlg_does_output(); + + /* + * Unless overrridden, the current time/date is our starting point. + */ + now_time = time((time_t *) 0); + current = *localtime(&now_time); + +#if HAVE_MKTIME + current.tm_isdst = -1; + if (year >= 1900) { + current.tm_year = year - 1900; + } + if (month >= 1) { + current.tm_mon = month - 1; + } + if (day > 0 && day <= days_per_month(current.tm_year + 1900, + current.tm_mon + 1)) { + current.tm_mday = day; + } + now_time = mktime(¤t); +#else + if (day < 0) + day = current.tm_mday; + if (month < 0) + month = current.tm_mon + 1; + if (year < 0) + year = current.tm_year + 1900; + + /* compute a struct tm that matches the day/month/year parameters */ + if (((year -= 1900) > 0) && (year < 200)) { + /* ugly, but I'd like to run this on older machines w/o mktime -TD */ + for (;;) { + if (year > current.tm_year) { + now_time += ONE_DAY * days_in_year(¤t, 0); + } else if (year < current.tm_year) { + now_time -= ONE_DAY * days_in_year(¤t, -1); + } else if (month > current.tm_mon + 1) { + now_time += ONE_DAY * days_in_month(¤t, 0); + } else if (month < current.tm_mon + 1) { + now_time -= ONE_DAY * days_in_month(¤t, -1); + } else if (day > current.tm_mday) { + now_time += ONE_DAY; + } else if (day < current.tm_mday) { + now_time -= ONE_DAY; + } else { + break; + } + current = *localtime(&now_time); + } + } +#endif + + dlg_button_layout(buttons, &mincols); + +#ifdef KEY_RESIZE + retry: +#endif + + prompt = dlg_strclone(subtitle); + dlg_auto_size(title, prompt, &height, &width, 0, mincols); + + height += MIN_HIGH - 1; + dlg_print_size(height, width); + dlg_ctl_size(height, width); + + dialog = dlg_new_window(height, width, + dlg_box_y_ordinate(height), + dlg_box_x_ordinate(width)); + dlg_register_window(dialog, "calendar", binding); + dlg_register_buttons(dialog, "calendar", buttons); + + /* mainbox */ + dlg_draw_box2(dialog, 0, 0, height, width, dialog_attr, border_attr, border2_attr); + dlg_draw_bottom_box2(dialog, border_attr, border2_attr, dialog_attr); + dlg_draw_title(dialog, title); + + dlg_attrset(dialog, dialog_attr); /* text mainbox */ + dlg_print_autowrap(dialog, prompt, height, width); + + /* compute positions of day, month and year boxes */ + memset(&dy_box, 0, sizeof(dy_box)); + memset(&mn_box, 0, sizeof(mn_box)); + memset(&yr_box, 0, sizeof(yr_box)); + + if ((week_start = WeekStart()) < 0 || + init_object(&dy_box, + dialog, + (width - DAY_WIDE) / 2, + 1 + (height - (DAY_HIGH + BTN_HIGH + (5 * MARGIN))), + DAY_WIDE, + DAY_HIGH + 1, + draw_day, + week_start, + 'D') < 0 || + ((dy_box.week_start = WeekStart()) < 0) || + DrawObject(&dy_box) < 0) { + return CleanupResult(DLG_EXIT_ERROR, dialog, prompt, &save_vars); + } + + if (init_object(&mn_box, + dialog, + dy_box.x, + dy_box.y - (HDR_HIGH + 2 * MARGIN), + (DAY_WIDE / 2) - MARGIN, + HDR_HIGH, + draw_month, + 0, + 'M') < 0 + || DrawObject(&mn_box) < 0) { + return CleanupResult(DLG_EXIT_ERROR, dialog, prompt, &save_vars); + } + + if (init_object(&yr_box, + dialog, + dy_box.x + mn_box.width + 2, + mn_box.y, + mn_box.width, + mn_box.height, + draw_year, + 0, + 'Y') < 0 + || DrawObject(&yr_box) < 0) { + return CleanupResult(DLG_EXIT_ERROR, dialog, prompt, &save_vars); + } + + dlg_trace_win(dialog); + while (result == DLG_EXIT_UNKNOWN) { + BOX *obj = (state == sDAY ? &dy_box + : (state == sMONTH ? &mn_box : + (state == sYEAR ? &yr_box : 0))); + + button = (state < 0) ? 0 : state; + dlg_draw_buttons(dialog, height - 2, 0, buttons, button, FALSE, width); + if (obj != 0) + dlg_set_focus(dialog, obj->window); + + key = dlg_mouse_wgetch(dialog, &fkey); + if (dlg_result_key(key, fkey, &result)) + break; + +#define Mouse2Key(key) (key - M_EVENT) + if (fkey && (key >= DLGK_MOUSE(KEY_MIN) && key <= DLGK_MOUSE(KEY_MAX))) { + key = dlg_lookup_key(dialog, Mouse2Key(key), &fkey); + } + + if ((key2 = dlg_char_to_button(key, buttons)) >= 0) { + result = key2; + } else if (fkey) { + /* handle function-keys */ + switch (key) { + case DLGK_MOUSE('D'): + state = sDAY; + break; + case DLGK_MOUSE('M'): + state = sMONTH; + break; + case DLGK_MOUSE('Y'): + state = sYEAR; + break; + case DLGK_TOGGLE: + case DLGK_ENTER: + result = dlg_enter_buttoncode(button); + break; + case DLGK_FIELD_PREV: + state = dlg_prev_ok_buttonindex(state, sMONTH); + break; + case DLGK_FIELD_NEXT: + state = dlg_next_ok_buttonindex(state, sMONTH); + break; +#ifdef KEY_RESIZE + case KEY_RESIZE: + dlg_will_resize(dialog); + /* reset data */ + height = old_height; + width = old_width; + free(prompt); + dlg_clear(); + dlg_del_window(dialog); + dlg_mouse_free_regions(); + /* repaint */ + goto retry; +#endif + default: + step = 0; + key2 = -1; + if (is_DLGK_MOUSE(key)) { + if ((key2 = dlg_ok_buttoncode(Mouse2Key(key))) >= 0) { + result = key2; + break; + } else if (key >= DLGK_MOUSE(KEY_MAX)) { + state = sDAY; + obj = &dy_box; + key2 = 1; + step = (key + - DLGK_MOUSE(KEY_MAX) + - day_cell_number(¤t)); + DLG_TRACE(("# mouseclick decoded %d\n", step)); + } + } + if (obj != 0) { + if (key2 < 0) { + step = next_or_previous(key, (obj == &dy_box)); + } + if (step != 0) { + struct tm old = current; + + /* see comment regarding mktime -TD */ + if (obj == &dy_box) { + now_time += ONE_DAY * step; + } else if (obj == &mn_box) { + if (step > 0) + now_time += ONE_DAY * + days_in_month(¤t, 0); + else + now_time -= ONE_DAY * + days_in_month(¤t, -1); + } else if (obj == &yr_box) { + if (step > 0) + now_time += (ONE_DAY + * days_in_year(¤t, 0)); + else + now_time -= (ONE_DAY + * days_in_year(¤t, -1)); + } + + current = *localtime(&now_time); + + trace_date(¤t, &old); + if (obj != &dy_box + && (current.tm_mday != old.tm_mday + || current.tm_mon != old.tm_mon + || current.tm_year != old.tm_year)) + DrawObject(&dy_box); + if (obj != &mn_box && current.tm_mon != old.tm_mon) + DrawObject(&mn_box); + if (obj != &yr_box && current.tm_year != old.tm_year) + DrawObject(&yr_box); + (void) DrawObject(obj); + } + } else if (state >= 0) { + if (next_or_previous(key, FALSE) < 0) + state = dlg_prev_ok_buttonindex(state, sMONTH); + else if (next_or_previous(key, FALSE) > 0) + state = dlg_next_ok_buttonindex(state, sMONTH); + } + break; + } + } + } + +#define DefaultFormat(dst, src) \ + sprintf(dst, "%02d/%02d/%0d", \ + src.tm_mday, src.tm_mon + 1, src.tm_year + 1900) +#ifdef HAVE_STRFTIME + if (dialog_vars.date_format != 0) { + size_t used = strftime(buffer, + sizeof(buffer) - 1, + dialog_vars.date_format, + ¤t); + if (used == 0 || *buffer == '\0') + DefaultFormat(buffer, current); + } else +#endif + DefaultFormat(buffer, current); + + dlg_add_result(buffer); + dlg_add_separator(); + dlg_add_last_key(-1); + + return CleanupResult(result, dialog, prompt, &save_vars); +} Index: vendor/dialog/1.3-20180621/checklist.c =================================================================== --- vendor/dialog/1.3-20180621/checklist.c (nonexistent) +++ vendor/dialog/1.3-20180621/checklist.c (revision 339483) @@ -0,0 +1,698 @@ +/* + * $Id: checklist.c,v 1.160 2018/06/19 22:57:01 tom Exp $ + * + * checklist.c -- implements the checklist box + * + * Copyright 2000-2016,2018 Thomas E. Dickey + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License, version 2.1 + * as published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this program; if not, write to + * Free Software Foundation, Inc. + * 51 Franklin St., Fifth Floor + * Boston, MA 02110, USA. + * + * An earlier version of this program lists as authors: + * Savio Lam (lam836@cs.cuhk.hk) + * Stuart Herbert - S.Herbert@sheffield.ac.uk: radiolist extension + * Alessandro Rubini - rubini@ipvvis.unipv.it: merged the two + */ + +#include +#include + +#define MIN_HIGH (1 + (5 * MARGIN)) + +typedef struct { + /* the outer-window */ + WINDOW *dialog; + int box_y; + int box_x; + int check_x; + int item_x; + int checkflag; + int use_height; + int use_width; + /* the inner-window */ + WINDOW *list; + DIALOG_LISTITEM *items; + int item_no; + const char *states; +} ALL_DATA; + +/* + * Print list item. The 'selected' parameter is true if 'choice' is the + * current item. That one is colored differently from the other items. + */ +static void +print_item(ALL_DATA * data, + WINDOW *win, + DIALOG_LISTITEM * item, + const char *states, + int choice, + int selected) +{ + chtype save = dlg_get_attrs(win); + int i; + bool both = (!dialog_vars.no_tags && !dialog_vars.no_items); + bool first = TRUE; + int climit = (getmaxx(win) - data->check_x + 1); + const char *show = (dialog_vars.no_items + ? item->name + : item->text); + + /* Clear 'residue' of last item */ + dlg_attrset(win, menubox_attr); + (void) wmove(win, choice, 0); + for (i = 0; i < data->use_width; i++) + (void) waddch(win, ' '); + + (void) wmove(win, choice, data->check_x); + dlg_attrset(win, selected ? check_selected_attr : check_attr); + (void) wprintw(win, + (data->checkflag == FLAG_CHECK) ? "[%c]" : "(%c)", + states[item->state]); + dlg_attrset(win, menubox_attr); + (void) waddch(win, ' '); + + if (both) { + dlg_print_listitem(win, item->name, climit, first, selected); + first = FALSE; + } + + (void) wmove(win, choice, data->item_x); + dlg_print_listitem(win, show, climit, first, selected); + + if (selected) { + dlg_item_help(item->help); + } + dlg_attrset(win, save); +} + +static void +print_list(ALL_DATA * data, int choice, int scrollamt, int max_choice) +{ + int i; + int cur_y, cur_x; + + getyx(data->dialog, cur_y, cur_x); + for (i = 0; i < max_choice; i++) { + print_item(data, + data->list, + &data->items[i + scrollamt], + data->states, + i, i == choice); + } + (void) wnoutrefresh(data->list); + + dlg_draw_scrollbar(data->dialog, + (long) (scrollamt), + (long) (scrollamt), + (long) (scrollamt + max_choice), + (long) (data->item_no), + data->box_x + data->check_x, + data->box_x + data->use_width, + data->box_y, + data->box_y + data->use_height + 1, + menubox_border2_attr, + menubox_border_attr); + + (void) wmove(data->dialog, cur_y, cur_x); +} + +static bool +check_hotkey(DIALOG_LISTITEM * items, int choice) +{ + bool result = FALSE; + + if (dlg_match_char(dlg_last_getc(), + (dialog_vars.no_tags + ? items[choice].text + : items[choice].name))) { + result = TRUE; + } + return result; +} + +/* + * This is an alternate interface to 'checklist' which allows the application + * to read the list item states back directly without putting them in the + * output buffer. It also provides for more than two states over which the + * check/radio box can display. + */ +int +dlg_checklist(const char *title, + const char *cprompt, + int height, + int width, + int list_height, + int item_no, + DIALOG_LISTITEM * items, + const char *states, + int flag, + int *current_item) +{ + /* *INDENT-OFF* */ + static DLG_KEYS_BINDING binding[] = { + HELPKEY_BINDINGS, + ENTERKEY_BINDINGS, + DLG_KEYS_DATA( DLGK_FIELD_NEXT, KEY_RIGHT ), + DLG_KEYS_DATA( DLGK_FIELD_NEXT, TAB ), + DLG_KEYS_DATA( DLGK_FIELD_PREV, KEY_BTAB ), + DLG_KEYS_DATA( DLGK_FIELD_PREV, KEY_LEFT ), + DLG_KEYS_DATA( DLGK_ITEM_FIRST, KEY_HOME ), + DLG_KEYS_DATA( DLGK_ITEM_LAST, KEY_END ), + DLG_KEYS_DATA( DLGK_ITEM_LAST, KEY_LL ), + DLG_KEYS_DATA( DLGK_ITEM_NEXT, '+' ), + DLG_KEYS_DATA( DLGK_ITEM_NEXT, KEY_DOWN ), + DLG_KEYS_DATA( DLGK_ITEM_NEXT, CHR_NEXT ), + DLG_KEYS_DATA( DLGK_ITEM_PREV, '-' ), + DLG_KEYS_DATA( DLGK_ITEM_PREV, KEY_UP ), + DLG_KEYS_DATA( DLGK_ITEM_PREV, CHR_PREVIOUS ), + DLG_KEYS_DATA( DLGK_PAGE_NEXT, KEY_NPAGE ), + DLG_KEYS_DATA( DLGK_PAGE_NEXT, DLGK_MOUSE(KEY_NPAGE) ), + DLG_KEYS_DATA( DLGK_PAGE_PREV, KEY_PPAGE ), + DLG_KEYS_DATA( DLGK_PAGE_PREV, DLGK_MOUSE(KEY_PPAGE) ), + TOGGLEKEY_BINDINGS, + END_KEYS_BINDING + }; + /* *INDENT-ON* */ + +#ifdef KEY_RESIZE + int old_height = height; + int old_width = width; +#endif + ALL_DATA all; + int i, j, key2, found, x, y, cur_x, cur_y; + int key = 0, fkey; + int button = dialog_state.visit_items ? -1 : dlg_default_button(); + int choice = dlg_default_listitem(items); + int scrollamt = 0; + int max_choice; + int was_mouse; + int use_width, list_width, name_width, text_width; + int result = DLG_EXIT_UNKNOWN; + int num_states; + WINDOW *dialog; + char *prompt; + const char **buttons = dlg_ok_labels(); + const char *widget_name; + + DLG_TRACE(("# %s args:\n", flag ? "checklist" : "radiolist")); + DLG_TRACE2S("title", title); + DLG_TRACE2S("message", cprompt); + DLG_TRACE2N("height", height); + DLG_TRACE2N("width", width); + DLG_TRACE2N("lheight", list_height); + DLG_TRACE2N("llength", item_no); + /* FIXME dump the items[][] too */ + DLG_TRACE2S("states", states); + DLG_TRACE2N("flag", flag); + DLG_TRACE2N("current", *current_item); + + dialog_state.plain_buttons = TRUE; + + memset(&all, 0, sizeof(all)); + all.items = items; + all.item_no = item_no; + + dlg_does_output(); + + /* + * If this is a radiobutton list, ensure that no more than one item is + * selected initially. Allow none to be selected, since some users may + * wish to provide this flavor. + */ + if (flag == FLAG_RADIO) { + bool first = TRUE; + + for (i = 0; i < item_no; i++) { + if (items[i].state) { + if (first) { + first = FALSE; + } else { + items[i].state = 0; + } + } + } + widget_name = "radiolist"; + } else { + widget_name = "checklist"; + } +#ifdef KEY_RESIZE + retry: +#endif + + prompt = dlg_strclone(cprompt); + dlg_tab_correct_str(prompt); + + all.use_height = list_height; + use_width = dlg_calc_list_width(item_no, items) + 10; + use_width = MAX(26, use_width); + if (all.use_height == 0) { + /* calculate height without items (4) */ + dlg_auto_size(title, prompt, &height, &width, MIN_HIGH, use_width); + dlg_calc_listh(&height, &all.use_height, item_no); + } else { + dlg_auto_size(title, prompt, + &height, &width, + MIN_HIGH + all.use_height, use_width); + } + dlg_button_layout(buttons, &width); + dlg_print_size(height, width); + dlg_ctl_size(height, width); + + /* we need at least two states */ + if (states == 0 || strlen(states) < 2) + states = " *"; + num_states = (int) strlen(states); + all.states = states; + + all.checkflag = flag; + + x = dlg_box_x_ordinate(width); + y = dlg_box_y_ordinate(height); + + dialog = dlg_new_window(height, width, y, x); + all.dialog = dialog; + dlg_register_window(dialog, widget_name, binding); + dlg_register_buttons(dialog, widget_name, buttons); + + dlg_mouse_setbase(x, y); + + dlg_draw_box2(dialog, 0, 0, height, width, dialog_attr, border_attr, border2_attr); + dlg_draw_bottom_box2(dialog, border_attr, border2_attr, dialog_attr); + dlg_draw_title(dialog, title); + + dlg_attrset(dialog, dialog_attr); + dlg_print_autowrap(dialog, prompt, height, width); + + all.use_width = width - 6; + getyx(dialog, cur_y, cur_x); + all.box_y = cur_y + 1; + all.box_x = (width - all.use_width) / 2 - 1; + + /* + * After displaying the prompt, we know how much space we really have. + * Limit the list to avoid overwriting the ok-button. + */ + if (all.use_height + MIN_HIGH > height - cur_y) + all.use_height = height - MIN_HIGH - cur_y; + if (all.use_height <= 0) + all.use_height = 1; + + max_choice = MIN(all.use_height, item_no); + max_choice = MAX(max_choice, 1); + + /* create new window for the list */ + all.list = dlg_sub_window(dialog, all.use_height, all.use_width, + y + all.box_y + 1, x + all.box_x + 1); + + /* draw a box around the list items */ + dlg_draw_box(dialog, all.box_y, all.box_x, + all.use_height + 2 * MARGIN, + all.use_width + 2 * MARGIN, + menubox_border_attr, menubox_border2_attr); + + text_width = 0; + name_width = 0; + /* Find length of longest item to center checklist */ + for (i = 0; i < item_no; i++) { + text_width = MAX(text_width, dlg_count_columns(items[i].text)); + name_width = MAX(name_width, dlg_count_columns(items[i].name)); + } + + /* If the name+text is wider than the list is allowed, then truncate + * one or both of them. If the name is no wider than 1/4 of the list, + * leave it intact. + */ + use_width = (all.use_width - 6); + if (dialog_vars.no_tags) { + list_width = MIN(all.use_width, text_width); + } else if (dialog_vars.no_items) { + list_width = MIN(all.use_width, name_width); + } else { + if (text_width >= 0 + && name_width >= 0 + && use_width > 0 + && text_width + name_width > use_width) { + int need = (int) (0.25 * use_width); + if (name_width > need) { + int want = (int) (use_width * ((double) name_width) / + (text_width + name_width)); + name_width = (want > need) ? want : need; + } + text_width = use_width - name_width; + } + list_width = (text_width + name_width); + } + + all.check_x = (use_width - list_width) / 2; + all.item_x = ((dialog_vars.no_tags + ? 0 + : (dialog_vars.no_items + ? 0 + : (2 + name_width))) + + all.check_x + 4); + + /* ensure we are scrolled to show the current choice */ + scrollamt = MIN(scrollamt, max_choice + item_no - 1); + if (choice >= (max_choice + scrollamt - 1)) { + scrollamt = MAX(0, choice - max_choice + 1); + choice = max_choice - 1; + } + print_list(&all, choice, scrollamt, max_choice); + + /* register the new window, along with its borders */ + dlg_mouse_mkbigregion(all.box_y + 1, all.box_x, + all.use_height, all.use_width + 2, + KEY_MAX, 1, 1, 1 /* by lines */ ); + + dlg_draw_buttons(dialog, height - 2, 0, buttons, button, FALSE, width); + + dlg_trace_win(dialog); + while (result == DLG_EXIT_UNKNOWN) { + if (button < 0) /* --visit-items */ + wmove(dialog, all.box_y + choice + 1, all.box_x + all.check_x + 2); + + key = dlg_mouse_wgetch(dialog, &fkey); + if (dlg_result_key(key, fkey, &result)) + break; + + was_mouse = (fkey && is_DLGK_MOUSE(key)); + if (was_mouse) + key -= M_EVENT; + + if (was_mouse && (key >= KEY_MAX)) { + getyx(dialog, cur_y, cur_x); + i = (key - KEY_MAX); + if (i < max_choice) { + choice = (key - KEY_MAX); + print_list(&all, choice, scrollamt, max_choice); + + key = DLGK_TOGGLE; /* force the selected item to toggle */ + } else { + beep(); + continue; + } + fkey = FALSE; + } else if (was_mouse && key >= KEY_MIN) { + key = dlg_lookup_key(dialog, key, &fkey); + } + + /* + * A space toggles the item status. We handle either a checklist + * (any number of items can be selected) or radio list (zero or one + * items can be selected). + */ + if (key == DLGK_TOGGLE) { + int current = scrollamt + choice; + int next = items[current].state + 1; + + if (next >= num_states) + next = 0; + + if (flag == FLAG_CHECK) { /* checklist? */ + getyx(dialog, cur_y, cur_x); + items[current].state = next; + print_item(&all, all.list, + &items[scrollamt + choice], + states, + choice, TRUE); + (void) wnoutrefresh(all.list); + (void) wmove(dialog, cur_y, cur_x); + } else { /* radiolist */ + for (i = 0; i < item_no; i++) { + if (i != current) { + items[i].state = 0; + } + } + if (items[current].state) { + getyx(dialog, cur_y, cur_x); + items[current].state = next ? next : 1; + print_item(&all, all.list, + &items[current], + states, + choice, TRUE); + (void) wnoutrefresh(all.list); + (void) wmove(dialog, cur_y, cur_x); + } else { + items[current].state = 1; + print_list(&all, choice, scrollamt, max_choice); + } + } + continue; /* wait for another key press */ + } + + /* + * Check if key pressed matches first character of any item tag in + * list. If there is more than one match, we will cycle through + * each one as the same key is pressed repeatedly. + */ + found = FALSE; + if (!fkey) { + if (button < 0 || !dialog_state.visit_items) { + for (j = scrollamt + choice + 1; j < item_no; j++) { + if (check_hotkey(items, j)) { + found = TRUE; + i = j - scrollamt; + break; + } + } + if (!found) { + for (j = 0; j <= scrollamt + choice; j++) { + if (check_hotkey(items, j)) { + found = TRUE; + i = j - scrollamt; + break; + } + } + } + if (found) + dlg_flush_getc(); + } else if ((j = dlg_char_to_button(key, buttons)) >= 0) { + button = j; + ungetch('\n'); + continue; + } + } + + /* + * A single digit (1-9) positions the selection to that line in the + * current screen. + */ + if (!found + && (key <= '9') + && (key > '0') + && (key - '1' < max_choice)) { + found = TRUE; + i = key - '1'; + } + + if (!found) { + if (fkey) { + found = TRUE; + switch (key) { + case DLGK_ITEM_FIRST: + i = -scrollamt; + break; + case DLGK_ITEM_LAST: + i = item_no - 1 - scrollamt; + break; + case DLGK_PAGE_PREV: + if (choice) + i = 0; + else if (scrollamt != 0) + i = -MIN(scrollamt, max_choice); + else + continue; + break; + case DLGK_PAGE_NEXT: + i = MIN(choice + max_choice, item_no - scrollamt - 1); + break; + case DLGK_ITEM_PREV: + i = choice - 1; + if (choice == 0 && scrollamt == 0) + continue; + break; + case DLGK_ITEM_NEXT: + i = choice + 1; + if (scrollamt + choice >= item_no - 1) + continue; + break; + default: + found = FALSE; + break; + } + } + } + + if (found) { + if (i != choice) { + getyx(dialog, cur_y, cur_x); + if (i < 0 || i >= max_choice) { + if (i < 0) { + scrollamt += i; + choice = 0; + } else { + choice = max_choice - 1; + scrollamt += (i - max_choice + 1); + } + print_list(&all, choice, scrollamt, max_choice); + } else { + choice = i; + print_list(&all, choice, scrollamt, max_choice); + } + } + continue; /* wait for another key press */ + } + + if (fkey) { + switch (key) { + case DLGK_ENTER: + result = dlg_enter_buttoncode(button); + break; + case DLGK_FIELD_PREV: + button = dlg_prev_button(buttons, button); + dlg_draw_buttons(dialog, height - 2, 0, buttons, button, + FALSE, width); + break; + case DLGK_FIELD_NEXT: + button = dlg_next_button(buttons, button); + dlg_draw_buttons(dialog, height - 2, 0, buttons, button, + FALSE, width); + break; +#ifdef KEY_RESIZE + case KEY_RESIZE: + dlg_will_resize(dialog); + /* reset data */ + height = old_height; + width = old_width; + free(prompt); + dlg_clear(); + dlg_del_window(dialog); + dlg_mouse_free_regions(); + /* repaint */ + goto retry; +#endif + default: + if (was_mouse) { + if ((key2 = dlg_ok_buttoncode(key)) >= 0) { + result = key2; + break; + } + beep(); + } + } + } else { + beep(); + } + } + + dlg_del_window(dialog); + dlg_mouse_free_regions(); + free(prompt); + *current_item = (scrollamt + choice); + return result; +} + +/* + * Display a dialog box with a list of options that can be turned on or off + * The `flag' parameter is used to select between radiolist and checklist. + */ +int +dialog_checklist(const char *title, + const char *cprompt, + int height, + int width, + int list_height, + int item_no, + char **items, + int flag) +{ + int result; + int i, j; + DIALOG_LISTITEM *listitems; + bool separate_output = ((flag == FLAG_CHECK) + && (dialog_vars.separate_output)); + bool show_status = FALSE; + int current = 0; + char *help_result; + + listitems = dlg_calloc(DIALOG_LISTITEM, (size_t) item_no + 1); + assert_ptr(listitems, "dialog_checklist"); + + for (i = j = 0; i < item_no; ++i) { + listitems[i].name = items[j++]; + listitems[i].text = (dialog_vars.no_items + ? dlg_strempty() + : items[j++]); + listitems[i].state = !dlg_strcmp(items[j++], "on"); + listitems[i].help = ((dialog_vars.item_help) + ? items[j++] + : dlg_strempty()); + } + dlg_align_columns(&listitems[0].text, (int) sizeof(DIALOG_LISTITEM), item_no); + + result = dlg_checklist(title, + cprompt, + height, + width, + list_height, + item_no, + listitems, + NULL, + flag, + ¤t); + + switch (result) { + case DLG_EXIT_OK: /* FALLTHRU */ + case DLG_EXIT_EXTRA: + show_status = TRUE; + break; + case DLG_EXIT_HELP: + dlg_add_help_listitem(&result, &help_result, &listitems[current]); + if ((show_status = dialog_vars.help_status)) { + if (separate_output) { + dlg_add_string(help_result); + dlg_add_separator(); + } else { + dlg_add_quoted(help_result); + } + } else { + dlg_add_string(help_result); + } + break; + } + + if (show_status) { + for (i = 0; i < item_no; i++) { + if (listitems[i].state) { + if (separate_output) { + dlg_add_string(listitems[i].name); + dlg_add_separator(); + } else { + if (dlg_need_separator()) + dlg_add_separator(); + if (flag == FLAG_CHECK) + dlg_add_quoted(listitems[i].name); + else + dlg_add_string(listitems[i].name); + } + } + } + dlg_add_last_key(separate_output); + } + + dlg_free_columns(&listitems[0].text, (int) sizeof(DIALOG_LISTITEM), item_no); + free(listitems); + return result; +} Index: vendor/dialog/1.3-20180621/config.guess =================================================================== --- vendor/dialog/1.3-20180621/config.guess (nonexistent) +++ vendor/dialog/1.3-20180621/config.guess (revision 339483) @@ -0,0 +1,1476 @@ +#! /bin/sh +# Attempt to guess a canonical system name. +# Copyright 1992-2018 Free Software Foundation, Inc. + +timestamp='2018-05-19' + +# This file is free software; you can redistribute it and/or modify it +# under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 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 . +# +# 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. This Exception is an additional permission under section 7 +# of the GNU General Public License, version 3 ("GPLv3"). +# +# Originally written by Per Bothner; maintained since 2000 by Ben Elliston. +# +# You can get the latest version of this script from: +# https://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess +# +# Please send patches to . + + +me=`echo "$0" | sed -e 's,.*/,,'` + +usage="\ +Usage: $0 [OPTION] + +Output the configuration name of the system \`$me' is run on. + +Options: + -h, --help print this help, then exit + -t, --time-stamp print date of last modification, then exit + -v, --version print version number, then exit + +Report bugs and patches to ." + +version="\ +GNU config.guess ($timestamp) + +Originally written by Per Bothner. +Copyright 1992-2018 Free Software Foundation, Inc. + +This is free software; see the source for copying conditions. There is NO +warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." + +help=" +Try \`$me --help' for more information." + +# Parse command line +while test $# -gt 0 ; do + case $1 in + --time-stamp | --time* | -t ) + echo "$timestamp" ; exit ;; + --version | -v ) + echo "$version" ; exit ;; + --help | --h* | -h ) + echo "$usage"; exit ;; + -- ) # Stop option processing + shift; break ;; + - ) # Use stdin as input. + break ;; + -* ) + echo "$me: invalid option $1$help" >&2 + exit 1 ;; + * ) + break ;; + esac +done + +if test $# != 0; then + echo "$me: too many arguments$help" >&2 + exit 1 +fi + +trap 'exit 1' 1 2 15 + +# CC_FOR_BUILD -- compiler used by this script. Note that the use of a +# compiler to aid in system detection is discouraged as it requires +# temporary files to be created and, as you can see below, it is a +# headache to deal with in a portable fashion. + +# Historically, `CC_FOR_BUILD' used to be named `HOST_CC'. We still +# use `HOST_CC' if defined, but it is deprecated. + +# Portable tmp directory creation inspired by the Autoconf team. + +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 "$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" ; +case ${CC_FOR_BUILD-},${HOST_CC-},${CC-} in + ,,) echo "int x;" > "$dummy.c" ; + for c in cc gcc c89 c99 ; do + if ($c -c -o "$dummy.o" "$dummy.c") >/dev/null 2>&1 ; then + CC_FOR_BUILD="$c"; break ; + fi ; + done ; + if test x"$CC_FOR_BUILD" = x ; then + CC_FOR_BUILD=no_compiler_found ; + fi + ;; + ,,*) CC_FOR_BUILD=$CC ;; + ,*,*) CC_FOR_BUILD=$HOST_CC ;; +esac ; 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) +if (test -f /.attbin/uname) >/dev/null 2>&1 ; then + PATH=$PATH:/.attbin ; export PATH +fi + +UNAME_MACHINE=`(uname -m) 2>/dev/null` || UNAME_MACHINE=unknown +UNAME_RELEASE=`(uname -r) 2>/dev/null` || UNAME_RELEASE=unknown +UNAME_SYSTEM=`(uname -s) 2>/dev/null` || UNAME_SYSTEM=unknown +UNAME_VERSION=`(uname -v) 2>/dev/null` || UNAME_VERSION=unknown + +case "$UNAME_SYSTEM" in +Linux|GNU|GNU/*) + # If the system lacks a compiler, then just pick glibc. + # We could probably try harder. + LIBC=gnu + + eval "$set_cc_for_build" + cat <<-EOF > "$dummy.c" + #include + #if defined(__UCLIBC__) + LIBC=uclibc + #elif defined(__dietlibc__) + LIBC=dietlibc + #else + LIBC=gnu + #endif + EOF + eval "`$CC_FOR_BUILD -E "$dummy.c" 2>/dev/null | grep '^LIBC' | sed 's, ,,g'`" + + # If ldd exists, use it to detect musl libc. + if command -v ldd >/dev/null && \ + ldd --version 2>&1 | grep -q ^musl + then + LIBC=musl + fi + ;; +esac + +# Note: order is significant - the case branches are not exclusive. + +case "$UNAME_MACHINE:$UNAME_SYSTEM:$UNAME_RELEASE:$UNAME_VERSION" in + *:NetBSD:*:*) + # NetBSD (nbsd) targets should (where applicable) match one or + # more of the tuples: *-*-netbsdelf*, *-*-netbsdaout*, + # *-*-netbsdecoff* and *-*-netbsd*. For targets that recently + # switched to ELF, *-*-netbsd* would select the old + # object file format. This provides both forward + # compatibility and a consistent mechanism for selecting the + # object file format. + # + # Note: NetBSD doesn't particularly care about the vendor + # portion of the name. We always set it to "unknown". + sysctl="sysctl -n hw.machine_arch" + UNAME_MACHINE_ARCH=`(uname -p 2>/dev/null || \ + "/sbin/$sysctl" 2>/dev/null || \ + "/usr/sbin/$sysctl" 2>/dev/null || \ + echo unknown)` + case "$UNAME_MACHINE_ARCH" in + armeb) machine=armeb-unknown ;; + arm*) machine=arm-unknown ;; + sh3el) machine=shl-unknown ;; + sh3eb) machine=sh-unknown ;; + sh5el) machine=sh5le-unknown ;; + earmv*) + arch=`echo "$UNAME_MACHINE_ARCH" | sed -e 's,^e\(armv[0-9]\).*$,\1,'` + endian=`echo "$UNAME_MACHINE_ARCH" | sed -ne 's,^.*\(eb\)$,\1,p'` + machine="${arch}${endian}"-unknown + ;; + *) machine="$UNAME_MACHINE_ARCH"-unknown ;; + esac + # The Operating System including object format, if it has switched + # to ELF recently (or will in the future) and ABI. + case "$UNAME_MACHINE_ARCH" in + earm*) + os=netbsdelf + ;; + arm*|i386|m68k|ns32k|sh3*|sparc|vax) + eval "$set_cc_for_build" + if echo __ELF__ | $CC_FOR_BUILD -E - 2>/dev/null \ + | grep -q __ELF__ + then + # Once all utilities can be ECOFF (netbsdecoff) or a.out (netbsdaout). + # Return netbsd for either. FIX? + os=netbsd + else + os=netbsdelf + fi + ;; + *) + os=netbsd + ;; + esac + # Determine ABI tags. + case "$UNAME_MACHINE_ARCH" in + earm*) + expr='s/^earmv[0-9]/-eabi/;s/eb$//' + abi=`echo "$UNAME_MACHINE_ARCH" | sed -e "$expr"` + ;; + esac + # The OS release + # Debian GNU/NetBSD machines have a different userland, and + # thus, need a distinct triplet. However, they do not need + # kernel version information, so it can be replaced with a + # suitable tag, in the style of linux-gnu. + case "$UNAME_VERSION" in + Debian*) + release='-gnu' + ;; + *) + release=`echo "$UNAME_RELEASE" | sed -e 's/[-_].*//' | cut -d. -f1,2` + ;; + esac + # Since CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM: + # contains redundant information, the shorter form: + # CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM is used. + echo "$machine-${os}${release}${abi-}" + exit ;; + *:Bitrig:*:*) + UNAME_MACHINE_ARCH=`arch | sed 's/Bitrig.//'` + echo "$UNAME_MACHINE_ARCH"-unknown-bitrig"$UNAME_RELEASE" + exit ;; + *:OpenBSD:*:*) + UNAME_MACHINE_ARCH=`arch | sed 's/OpenBSD.//'` + echo "$UNAME_MACHINE_ARCH"-unknown-openbsd"$UNAME_RELEASE" + exit ;; + *:LibertyBSD:*:*) + UNAME_MACHINE_ARCH=`arch | sed 's/^.*BSD\.//'` + echo "$UNAME_MACHINE_ARCH"-unknown-libertybsd"$UNAME_RELEASE" + exit ;; + *:MidnightBSD:*:*) + echo "$UNAME_MACHINE"-unknown-midnightbsd"$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 ;; + *:Sortix:*:*) + echo "$UNAME_MACHINE"-unknown-sortix + exit ;; + *:Redox:*:*) + echo "$UNAME_MACHINE"-unknown-redox + exit ;; + mips:OSF1:*.*) + echo mips-dec-osf1 + exit ;; + alpha:OSF1:*:*) + case $UNAME_RELEASE in + *4.0) + UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $3}'` + ;; + *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 + # types through head -n 1, so we only detect the type of CPU 0. + ALPHA_CPU_TYPE=`/usr/sbin/psrinfo -v | sed -n -e 's/^ The alpha \(.*\) processor.*$/\1/p' | head -n 1` + case "$ALPHA_CPU_TYPE" in + "EV4 (21064)") + UNAME_MACHINE=alpha ;; + "EV4.5 (21064)") + UNAME_MACHINE=alpha ;; + "LCA4 (21066/21068)") + UNAME_MACHINE=alpha ;; + "EV5 (21164)") + UNAME_MACHINE=alphaev5 ;; + "EV5.6 (21164A)") + UNAME_MACHINE=alphaev56 ;; + "EV5.6 (21164PC)") + UNAME_MACHINE=alphapca56 ;; + "EV5.7 (21164PC)") + UNAME_MACHINE=alphapca57 ;; + "EV6 (21264)") + UNAME_MACHINE=alphaev6 ;; + "EV6.7 (21264A)") + UNAME_MACHINE=alphaev67 ;; + "EV6.8CB (21264C)") + UNAME_MACHINE=alphaev68 ;; + "EV6.8AL (21264B)") + UNAME_MACHINE=alphaev68 ;; + "EV6.8CX (21264D)") + UNAME_MACHINE=alphaev68 ;; + "EV6.9A (21264/EV69A)") + UNAME_MACHINE=alphaev69 ;; + "EV7 (21364)") + UNAME_MACHINE=alphaev7 ;; + "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/^[PVTX]//' | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz`" + # Reset EXIT trap before exiting to avoid spurious non-zero exit code. + exitcode=$? + trap '' 0 + exit $exitcode ;; + Amiga*:UNIX_System_V:4.0:*) + echo m68k-unknown-sysv4 + exit ;; + *:[Aa]miga[Oo][Ss]:*:*) + echo "$UNAME_MACHINE"-unknown-amigaos + exit ;; + *:[Mm]orph[Oo][Ss]:*:*) + echo "$UNAME_MACHINE"-unknown-morphos + exit ;; + *:OS/390:*:*) + echo i370-ibm-openedition + 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 ;; + arm*:riscos:*:*|arm*:RISCOS:*:*) + echo arm-unknown-riscos + exit ;; + SR2?01:HI-UX/MPP:*:* | SR8000:HI-UX/MPP:*:*) + echo hppa1.1-hitachi-hiuxmpp + 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 + echo pyramid-pyramid-sysv3 + else + echo pyramid-pyramid-bsd + fi + exit ;; + NILE*:*:*:dcosx) + echo pyramid-pyramid-svr4 + 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 ;; + esac ;; + s390x:SunOS:*:*) + echo "$UNAME_MACHINE"-ibm-solaris2"`echo "$UNAME_RELEASE" | sed -e 's/[^.]*//'`" + exit ;; + sun4H:SunOS:5.*:*) + echo sparc-hal-solaris2"`echo "$UNAME_RELEASE"|sed -e 's/[^.]*//'`" + exit ;; + sun4*:SunOS:5.*:* | tadpole*:SunOS:5.*:*) + echo sparc-sun-solaris2"`echo "$UNAME_RELEASE" | sed -e 's/[^.]*//'`" + exit ;; + i86pc:AuroraUX:5.*:* | i86xen:AuroraUX:5.*:*) + echo i386-pc-auroraux"$UNAME_RELEASE" + exit ;; + i86pc:SunOS:5.*:* | i86xen:SunOS:5.*:*) + eval "$set_cc_for_build" + SUN_ARCH=i386 + # If there is a compiler, see if it is configured for 64-bit objects. + # Note that the Sun cc does not turn __LP64__ into 1 like gcc does. + # This test works for both compilers. + if [ "$CC_FOR_BUILD" != no_compiler_found ]; then + if (echo '#ifdef __amd64'; echo IS_64BIT_ARCH; echo '#endif') | \ + (CCOPTS="" $CC_FOR_BUILD -E - 2>/dev/null) | \ + grep IS_64BIT_ARCH >/dev/null + then + SUN_ARCH=x86_64 + fi + fi + echo "$SUN_ARCH"-pc-solaris2"`echo "$UNAME_RELEASE"|sed -e 's/[^.]*//'`" + 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 ;; + sun4*:SunOS:*:*) + case "`/usr/bin/arch -k`" in + Series*|S4*) + UNAME_RELEASE=`uname -v` + ;; + esac + # Japanese Language versions have a version number like `4.1.3-JL'. + echo sparc-sun-sunos"`echo "$UNAME_RELEASE"|sed -e 's/-/_/'`" + exit ;; + sun3*:SunOS:*:*) + echo m68k-sun-sunos"$UNAME_RELEASE" + 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 + case "`/bin/arch`" in + sun3) + echo m68k-sun-sunos"$UNAME_RELEASE" + ;; + sun4) + echo sparc-sun-sunos"$UNAME_RELEASE" + ;; + esac + exit ;; + aushp:SunOS:*:*) + echo sparc-auspex-sunos"$UNAME_RELEASE" + 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 + # > m68000). The system name ranges from "MiNT" over "FreeMiNT" + # to the lowercase version "mint" (or "freemint"). Finally + # the system name "TOS" denotes a system which is actually not + # MiNT. But MiNT is downward compatible to TOS, so this should + # be no problem. + atarist[e]:*MiNT:*:* | atarist[e]:*mint:*:* | atarist[e]:*TOS:*:*) + echo m68k-atari-mint"$UNAME_RELEASE" + exit ;; + atari*:*MiNT:*:* | atari*:*mint:*:* | atarist[e]:*TOS:*:*) + echo m68k-atari-mint"$UNAME_RELEASE" + exit ;; + *falcon*:*MiNT:*:* | *falcon*:*mint:*:* | *falcon*:*TOS:*:*) + echo m68k-atari-mint"$UNAME_RELEASE" + exit ;; + milan*:*MiNT:*:* | milan*:*mint:*:* | *milan*:*TOS:*:*) + echo m68k-milan-mint"$UNAME_RELEASE" + exit ;; + hades*:*MiNT:*:* | hades*:*mint:*:* | *hades*:*TOS:*:*) + echo m68k-hades-mint"$UNAME_RELEASE" + exit ;; + *:*MiNT:*:* | *:*mint:*:* | *:*TOS:*:*) + echo m68k-unknown-mint"$UNAME_RELEASE" + exit ;; + m68k:machten:*:*) + echo m68k-apple-machten"$UNAME_RELEASE" + exit ;; + powerpc:machten:*:*) + echo powerpc-apple-machten"$UNAME_RELEASE" + exit ;; + RISC*:Mach:*:*) + echo mips-dec-mach_bsd4.3 + exit ;; + RISC*:ULTRIX:*:*) + echo mips-dec-ultrix"$UNAME_RELEASE" + exit ;; + VAX*:ULTRIX*:*:*) + echo vax-dec-ultrix"$UNAME_RELEASE" + exit ;; + 2020:CLIX:*:* | 2430:CLIX:*:*) + echo clipper-intergraph-clix"$UNAME_RELEASE" + exit ;; + mips:*:*:UMIPS | mips:*:*:RISCos) + eval "$set_cc_for_build" + sed 's/^ //' << EOF > "$dummy.c" +#ifdef __cplusplus +#include /* for printf() prototype */ + int main (int argc, char *argv[]) { +#else + int main (argc, argv) int argc; char *argv[]; { +#endif + #if defined (host_mips) && defined (MIPSEB) + #if defined (SYSTYPE_SYSV) + printf ("mips-mips-riscos%ssysv\\n", argv[1]); exit (0); + #endif + #if defined (SYSTYPE_SVR4) + printf ("mips-mips-riscos%ssvr4\\n", argv[1]); exit (0); + #endif + #if defined (SYSTYPE_BSD43) || defined(SYSTYPE_BSD) + printf ("mips-mips-riscos%sbsd\\n", argv[1]); exit (0); + #endif + #endif + exit (-1); + } +EOF + $CC_FOR_BUILD -o "$dummy" "$dummy.c" && + 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 ;; + Motorola:PowerMAX_OS:*:*) + echo powerpc-motorola-powermax + exit ;; + Motorola:*:4.3:PL8-*) + echo powerpc-harris-powermax + exit ;; + Night_Hawk:*:*:PowerMAX_OS | Synergy:PowerMAX_OS:*:*) + echo powerpc-harris-powermax + exit ;; + Night_Hawk:Power_UNIX:*:*) + echo powerpc-harris-powerunix + exit ;; + m88k:CX/UX:7*:*) + echo m88k-harris-cxux7 + exit ;; + m88k:*:4*:R4*) + echo m88k-motorola-sysv4 + exit ;; + m88k:*:3*:R3*) + echo m88k-motorola-sysv3 + exit ;; + AViiON:dgux:*:*) + # DG/UX returns AViiON for all architectures + UNAME_PROCESSOR=`/usr/bin/uname -p` + if [ "$UNAME_PROCESSOR" = mc88100 ] || [ "$UNAME_PROCESSOR" = mc88110 ] + then + if [ "$TARGET_BINARY_INTERFACE"x = m88kdguxelfx ] || \ + [ "$TARGET_BINARY_INTERFACE"x = x ] + then + echo m88k-dg-dgux"$UNAME_RELEASE" + else + echo m88k-dg-dguxbcs"$UNAME_RELEASE" + fi + else + echo i586-dg-dgux"$UNAME_RELEASE" + fi + exit ;; + M88*:DolphinOS:*:*) # DolphinOS (SVR3) + echo m88k-dolphin-sysv3 + exit ;; + M88*:*:R3*:*) + # Delta 88k system running SVR3 + echo m88k-motorola-sysv3 + exit ;; + XD88*:*:*:*) # Tektronix XD88 system running UTekV (SVR3) + echo m88k-tektronix-sysv3 + exit ;; + Tek43[0-9][0-9]:UTek:*:*) # Tektronix 4300 system running UTek (BSD) + echo m68k-tektronix-bsd + exit ;; + *:IRIX*:*:*) + echo mips-sgi-irix"`echo "$UNAME_RELEASE"|sed -e 's/-/_/g'`" + 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 ;; # Note that: echo "'`uname -s`'" gives 'AIX ' + i*86:AIX:*:*) + echo i386-ibm-aix + exit ;; + ia64:AIX:*:*) + if [ -x /usr/bin/oslevel ] ; then + IBM_REV=`/usr/bin/oslevel` + else + IBM_REV="$UNAME_VERSION.$UNAME_RELEASE" + fi + echo "$UNAME_MACHINE"-ibm-aix"$IBM_REV" + exit ;; + *:AIX:2:3) + if grep bos325 /usr/include/stdio.h >/dev/null 2>&1; then + eval "$set_cc_for_build" + sed 's/^ //' << EOF > "$dummy.c" + #include + + main() + { + if (!__power_pc()) + exit(1); + puts("powerpc-ibm-aix3.2.5"); + exit(0); + } +EOF + 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 ;; + *:AIX:*:[4567]) + IBM_CPU_ID=`/usr/sbin/lsdev -C -c processor -S available | sed 1q | awk '{ print $1 }'` + if /usr/sbin/lsattr -El "$IBM_CPU_ID" | grep ' POWER' >/dev/null 2>&1; then + IBM_ARCH=rs6000 + else + IBM_ARCH=powerpc + fi + if [ -x /usr/bin/lslpp ] ; then + IBM_REV=`/usr/bin/lslpp -Lqc bos.rte.libc | + awk -F: '{ print $3 }' | sed s/[0-9]*$/0/` + else + IBM_REV="$UNAME_VERSION.$UNAME_RELEASE" + fi + echo "$IBM_ARCH"-ibm-aix"$IBM_REV" + exit ;; + *:AIX:*:*) + echo rs6000-ibm-aix + exit ;; + ibmrt:4.4BSD:*|romp-ibm:4.4BSD:*) + echo romp-ibm-bsd4.4 + exit ;; + ibmrt:*BSD:*|romp-ibm:BSD:*) # covers RT/PC BSD and + echo romp-ibm-bsd"$UNAME_RELEASE" # 4.3 with uname added to + exit ;; # report: romp-ibm BSD 4.3 + *:BOSX:*:*) + echo rs6000-bull-bosx + exit ;; + DPX/2?00:B.O.S.:*:*) + echo m68k-bull-sysv3 + exit ;; + 9000/[34]??:4.3bsd:1.*:*) + echo m68k-hp-bsd + exit ;; + hp300:4.4BSD:*:* | 9000/[34]??:4.3bsd:2.*:*) + echo m68k-hp-bsd4.4 + exit ;; + 9000/[34678]??:HP-UX:*:*) + HPUX_REV=`echo "$UNAME_RELEASE"|sed -e 's/[^.]*.[0B]*//'` + case "$UNAME_MACHINE" in + 9000/31?) HP_ARCH=m68000 ;; + 9000/[34]??) HP_ARCH=m68k ;; + 9000/[678][0-9][0-9]) + if [ -x /usr/bin/getconf ]; then + sc_cpu_version=`/usr/bin/getconf SC_CPU_VERSION 2>/dev/null` + sc_kernel_bits=`/usr/bin/getconf SC_KERNEL_BITS 2>/dev/null` + case "$sc_cpu_version" in + 523) HP_ARCH=hppa1.0 ;; # CPU_PA_RISC1_0 + 528) HP_ARCH=hppa1.1 ;; # CPU_PA_RISC1_1 + 532) # CPU_PA_RISC2_0 + case "$sc_kernel_bits" in + 32) HP_ARCH=hppa2.0n ;; + 64) HP_ARCH=hppa2.0w ;; + '') HP_ARCH=hppa2.0 ;; # HP-UX 10.20 + esac ;; + esac + fi + if [ "$HP_ARCH" = "" ]; then + eval "$set_cc_for_build" + sed 's/^ //' << EOF > "$dummy.c" + + #define _HPUX_SOURCE + #include + #include + + int main () + { + #if defined(_SC_KERNEL_BITS) + long bits = sysconf(_SC_KERNEL_BITS); + #endif + long cpu = sysconf (_SC_CPU_VERSION); + + switch (cpu) + { + case CPU_PA_RISC1_0: puts ("hppa1.0"); break; + case CPU_PA_RISC1_1: puts ("hppa1.1"); break; + case CPU_PA_RISC2_0: + #if defined(_SC_KERNEL_BITS) + switch (bits) + { + case 64: puts ("hppa2.0w"); break; + case 32: puts ("hppa2.0n"); break; + default: puts ("hppa2.0"); break; + } break; + #else /* !defined(_SC_KERNEL_BITS) */ + puts ("hppa2.0"); break; + #endif + default: puts ("hppa1.0"); break; + } + exit (0); + } +EOF + (CCOPTS="" $CC_FOR_BUILD -o "$dummy" "$dummy.c" 2>/dev/null) && HP_ARCH=`"$dummy"` + test -z "$HP_ARCH" && HP_ARCH=hppa + fi ;; + esac + if [ "$HP_ARCH" = hppa2.0w ] + then + 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 -q __LP64__ + then + HP_ARCH=hppa2.0w + else + HP_ARCH=hppa64 + fi + fi + echo "$HP_ARCH"-hp-hpux"$HPUX_REV" + exit ;; + ia64:HP-UX:*:*) + HPUX_REV=`echo "$UNAME_RELEASE"|sed -e 's/[^.]*.[0B]*//'` + echo ia64-hp-hpux"$HPUX_REV" + exit ;; + 3050*:HI-UX:*:*) + eval "$set_cc_for_build" + sed 's/^ //' << EOF > "$dummy.c" + #include + int + main () + { + long cpu = sysconf (_SC_CPU_VERSION); + /* The order matters, because CPU_IS_HP_MC68K erroneously returns + true for CPU_PA_RISC1_0. CPU_IS_PA_RISC returns correct + results, however. */ + if (CPU_IS_PA_RISC (cpu)) + { + switch (cpu) + { + case CPU_PA_RISC1_0: puts ("hppa1.0-hitachi-hiuxwe2"); break; + case CPU_PA_RISC1_1: puts ("hppa1.1-hitachi-hiuxwe2"); break; + case CPU_PA_RISC2_0: puts ("hppa2.0-hitachi-hiuxwe2"); break; + default: puts ("hppa-hitachi-hiuxwe2"); break; + } + } + else if (CPU_IS_HP_MC68K (cpu)) + puts ("m68k-hitachi-hiuxwe2"); + else puts ("unknown-hitachi-hiuxwe2"); + exit (0); + } +EOF + $CC_FOR_BUILD -o "$dummy" "$dummy.c" && SYSTEM_NAME=`"$dummy"` && + { echo "$SYSTEM_NAME"; exit; } + echo unknown-hitachi-hiuxwe2 + exit ;; + 9000/7??:4.3bsd:*:* | 9000/8?[79]:4.3bsd:*:*) + echo hppa1.1-hp-bsd + exit ;; + 9000/8??:4.3bsd:*:*) + echo hppa1.0-hp-bsd + exit ;; + *9??*:MPE/iX:*:* | *3000*:MPE/iX:*:*) + echo hppa1.0-hp-mpeix + exit ;; + hp7??:OSF1:*:* | hp8?[79]:OSF1:*:*) + echo hppa1.1-hp-osf + exit ;; + hp8??:OSF1:*:*) + echo hppa1.0-hp-osf + exit ;; + i*86:OSF1:*:*) + if [ -x /usr/sbin/sysversion ] ; then + echo "$UNAME_MACHINE"-unknown-osf1mk + else + echo "$UNAME_MACHINE"-unknown-osf1 + fi + exit ;; + parisc*:Lites*:*:*) + echo hppa1.1-hp-lites + exit ;; + C1*:ConvexOS:*:* | convex:ConvexOS:C1*:*) + echo c1-convex-bsd + exit ;; + C2*:ConvexOS:*:* | convex:ConvexOS:C2*:*) + if getsysinfo -f scalar_acc + then echo c32-convex-bsd + else echo c2-convex-bsd + fi + exit ;; + C34*:ConvexOS:*:* | convex:ConvexOS:C34*:*) + echo c34-convex-bsd + exit ;; + C38*:ConvexOS:*:* | convex:ConvexOS:C38*:*) + echo c38-convex-bsd + exit ;; + C4*:ConvexOS:*:* | convex:ConvexOS:C4*:*) + echo c4-convex-bsd + exit ;; + CRAY*Y-MP:*:*:*) + echo ymp-cray-unicos"$UNAME_RELEASE" | sed -e 's/\.[^.]*$/.X/' + 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 ;; + CRAY*TS:*:*:*) + echo t90-cray-unicos"$UNAME_RELEASE" | sed -e 's/\.[^.]*$/.X/' + exit ;; + CRAY*T3E:*:*:*) + echo alphaev5-cray-unicosmk"$UNAME_RELEASE" | sed -e 's/\.[^.]*$/.X/' + exit ;; + CRAY*SV1:*:*:*) + echo sv1-cray-unicos"$UNAME_RELEASE" | sed -e 's/\.[^.]*$/.X/' + exit ;; + *:UNICOS/mp:*:*) + 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 ;; + 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 ;; + sparc*:BSD/OS:*:*) + echo sparc-unknown-bsdi"$UNAME_RELEASE" + exit ;; + *:BSD/OS:*:*) + echo "$UNAME_MACHINE"-unknown-bsdi"$UNAME_RELEASE" + exit ;; + *:FreeBSD:*:*) + UNAME_PROCESSOR=`/usr/bin/uname -p` + case "$UNAME_PROCESSOR" in + amd64) + UNAME_PROCESSOR=x86_64 ;; + i386) + UNAME_PROCESSOR=i586 ;; + esac + echo "$UNAME_PROCESSOR"-unknown-freebsd"`echo "$UNAME_RELEASE"|sed -e 's/[-(].*//'`" + exit ;; + i*:CYGWIN*:*) + echo "$UNAME_MACHINE"-pc-cygwin + exit ;; + *:MINGW64*:*) + echo "$UNAME_MACHINE"-pc-mingw64 + exit ;; + *:MINGW*:*) + echo "$UNAME_MACHINE"-pc-mingw32 + exit ;; + *:MSYS*:*) + echo "$UNAME_MACHINE"-pc-msys + exit ;; + i*:PW*:*) + echo "$UNAME_MACHINE"-pc-pw32 + exit ;; + *:Interix*:*) + case "$UNAME_MACHINE" in + x86) + echo i586-pc-interix"$UNAME_RELEASE" + exit ;; + authenticamd | genuineintel | EM64T) + echo x86_64-unknown-interix"$UNAME_RELEASE" + exit ;; + IA64) + echo ia64-unknown-interix"$UNAME_RELEASE" + exit ;; + esac ;; + i*:UWIN*:*) + echo "$UNAME_MACHINE"-pc-uwin + exit ;; + amd64:CYGWIN*:*:* | x86_64:CYGWIN*:*:*) + echo x86_64-unknown-cygwin + exit ;; + prep*:SunOS:5.*:*) + echo powerpcle-unknown-solaris2"`echo "$UNAME_RELEASE"|sed -e 's/[^.]*//'`" + exit ;; + *:GNU:*:*) + # the GNU system + echo "`echo "$UNAME_MACHINE"|sed -e 's,[-/].*$,,'`-unknown-$LIBC`echo "$UNAME_RELEASE"|sed -e 's,/.*$,,'`" + exit ;; + *:GNU/*:*:*) + # other systems with GNU libc and userland + echo "$UNAME_MACHINE-unknown-`echo "$UNAME_SYSTEM" | sed 's,^[^/]*/,,' | tr "[:upper:]" "[:lower:]"``echo "$UNAME_RELEASE"|sed -e 's/[-(].*//'`-$LIBC" + exit ;; + i*86:Minix:*:*) + echo "$UNAME_MACHINE"-pc-minix + exit ;; + aarch64:Linux:*:*) + echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" + exit ;; + aarch64_be:Linux:*:*) + UNAME_MACHINE=aarch64_be + echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" + exit ;; + alpha:Linux:*:*) + case `sed -n '/^cpu model/s/^.*: \(.*\)/\1/p' < /proc/cpuinfo` in + EV5) UNAME_MACHINE=alphaev5 ;; + EV56) UNAME_MACHINE=alphaev56 ;; + PCA56) UNAME_MACHINE=alphapca56 ;; + PCA57) UNAME_MACHINE=alphapca56 ;; + EV6) UNAME_MACHINE=alphaev6 ;; + EV67) UNAME_MACHINE=alphaev67 ;; + EV68*) UNAME_MACHINE=alphaev68 ;; + esac + objdump --private-headers /bin/sh | grep -q ld.so.1 + if test "$?" = 0 ; then LIBC=gnulibc1 ; fi + echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" + exit ;; + arc:Linux:*:* | arceb:Linux:*:*) + echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" + exit ;; + arm*:Linux:*:*) + eval "$set_cc_for_build" + if echo __ARM_EABI__ | $CC_FOR_BUILD -E - 2>/dev/null \ + | grep -q __ARM_EABI__ + then + echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" + else + if echo __ARM_PCS_VFP | $CC_FOR_BUILD -E - 2>/dev/null \ + | grep -q __ARM_PCS_VFP + then + echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"eabi + else + echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"eabihf + fi + fi + exit ;; + avr32*:Linux:*:*) + echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" + exit ;; + cris:Linux:*:*) + echo "$UNAME_MACHINE"-axis-linux-"$LIBC" + exit ;; + crisv32:Linux:*:*) + echo "$UNAME_MACHINE"-axis-linux-"$LIBC" + exit ;; + e2k:Linux:*:*) + echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" + exit ;; + frv:Linux:*:*) + echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" + exit ;; + hexagon:Linux:*:*) + echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" + exit ;; + i*86:Linux:*:*) + echo "$UNAME_MACHINE"-pc-linux-"$LIBC" + exit ;; + ia64:Linux:*:*) + echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" + exit ;; + k1om:Linux:*:*) + echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" + exit ;; + m32r*:Linux:*:*) + echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" + exit ;; + m68*:Linux:*:*) + echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" + exit ;; + mips:Linux:*:* | mips64:Linux:*:*) + eval "$set_cc_for_build" + sed 's/^ //' << EOF > "$dummy.c" + #undef CPU + #undef ${UNAME_MACHINE} + #undef ${UNAME_MACHINE}el + #if defined(__MIPSEL__) || defined(__MIPSEL) || defined(_MIPSEL) || defined(MIPSEL) + CPU=${UNAME_MACHINE}el + #else + #if defined(__MIPSEB__) || defined(__MIPSEB) || defined(_MIPSEB) || defined(MIPSEB) + CPU=${UNAME_MACHINE} + #else + CPU= + #endif + #endif +EOF + eval "`$CC_FOR_BUILD -E "$dummy.c" 2>/dev/null | grep '^CPU'`" + test "x$CPU" != x && { echo "$CPU-unknown-linux-$LIBC"; exit; } + ;; + mips64el:Linux:*:*) + echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" + exit ;; + openrisc*:Linux:*:*) + echo or1k-unknown-linux-"$LIBC" + exit ;; + or32:Linux:*:* | or1k*:Linux:*:*) + echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" + exit ;; + padre:Linux:*:*) + echo sparc-unknown-linux-"$LIBC" + exit ;; + parisc64:Linux:*:* | hppa64:Linux:*:*) + echo hppa64-unknown-linux-"$LIBC" + exit ;; + parisc:Linux:*:* | hppa:Linux:*:*) + # Look for CPU level + case `grep '^cpu[^a-z]*:' /proc/cpuinfo 2>/dev/null | cut -d' ' -f2` in + PA7*) echo hppa1.1-unknown-linux-"$LIBC" ;; + PA8*) echo hppa2.0-unknown-linux-"$LIBC" ;; + *) echo hppa-unknown-linux-"$LIBC" ;; + esac + exit ;; + ppc64:Linux:*:*) + echo powerpc64-unknown-linux-"$LIBC" + exit ;; + ppc:Linux:*:*) + echo powerpc-unknown-linux-"$LIBC" + exit ;; + ppc64le:Linux:*:*) + echo powerpc64le-unknown-linux-"$LIBC" + exit ;; + ppcle:Linux:*:*) + echo powerpcle-unknown-linux-"$LIBC" + exit ;; + riscv32:Linux:*:* | riscv64:Linux:*:*) + echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" + exit ;; + s390:Linux:*:* | s390x:Linux:*:*) + echo "$UNAME_MACHINE"-ibm-linux-"$LIBC" + exit ;; + sh64*:Linux:*:*) + echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" + exit ;; + sh*:Linux:*:*) + echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" + exit ;; + sparc:Linux:*:* | sparc64:Linux:*:*) + echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" + exit ;; + tile*:Linux:*:*) + echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" + exit ;; + vax:Linux:*:*) + echo "$UNAME_MACHINE"-dec-linux-"$LIBC" + exit ;; + x86_64:Linux:*:*) + echo "$UNAME_MACHINE"-pc-linux-"$LIBC" + exit ;; + xtensa*:Linux:*:*) + echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" + 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 ;; + i*86:UNIX_SV:4.2MP:2.*) + # Unixware is an offshoot of SVR4, but it has its own version + # number series starting with 2... + # I am not positive that other SVR4 systems won't match this, + # I just have to hope. -- rms. + # Use sysv4.2uw... so that sysv4* matches it. + echo "$UNAME_MACHINE"-pc-sysv4.2uw"$UNAME_VERSION" + exit ;; + 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 ;; + i*86:XTS-300:*:STOP) + echo "$UNAME_MACHINE"-unknown-stop + exit ;; + i*86:atheos:*:*) + echo "$UNAME_MACHINE"-unknown-atheos + exit ;; + i*86:syllable:*:*) + echo "$UNAME_MACHINE"-pc-syllable + exit ;; + i*86:LynxOS:2.*:* | i*86:LynxOS:3.[01]*:* | i*86:LynxOS:4.[02]*:*) + echo i386-unknown-lynxos"$UNAME_RELEASE" + exit ;; + i*86:*DOS:*:*) + echo "$UNAME_MACHINE"-pc-msdosdjgpp + exit ;; + i*86:*:4.*:*) + UNAME_REL=`echo "$UNAME_RELEASE" | sed 's/\/MP$//'` + if grep Novell /usr/include/link.h >/dev/null 2>/dev/null; then + echo "$UNAME_MACHINE"-univel-sysv"$UNAME_REL" + else + echo "$UNAME_MACHINE"-pc-sysv"$UNAME_REL" + fi + exit ;; + 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 ;; + i*86:*:3.2:*) + if test -f /usr/options/cb.name; then + UNAME_REL=`sed -n 's/.*Version //p' /dev/null >/dev/null ; then + UNAME_REL=`(/bin/uname -X|grep Release|sed -e 's/.*= //')` + (/bin/uname -X|grep i80486 >/dev/null) && UNAME_MACHINE=i486 + (/bin/uname -X|grep '^Machine.*Pentium' >/dev/null) \ + && UNAME_MACHINE=i586 + (/bin/uname -X|grep '^Machine.*Pent *II' >/dev/null) \ + && UNAME_MACHINE=i686 + (/bin/uname -X|grep '^Machine.*Pentium Pro' >/dev/null) \ + && UNAME_MACHINE=i686 + echo "$UNAME_MACHINE"-pc-sco"$UNAME_REL" + else + echo "$UNAME_MACHINE"-pc-sysv32 + fi + exit ;; + pc:*:*:*) + # Left here for compatibility: + # uname -m prints for DJGPP always 'pc', but it prints nothing about + # the processor, so we play safe by assuming i586. + # Note: whatever this is, it MUST be the same as what config.sub + # prints for the "djgpp" host, or else GDB configure will decide that + # this is a cross-build. + echo i586-pc-msdosdjgpp + exit ;; + Intel:Mach:3*:*) + echo i386-pc-mach3 + exit ;; + paragon:*:*:*) + echo i860-intel-osf1 + exit ;; + i860:*:4.*:*) # i860-SVR4 + if grep Stardent /usr/include/sys/uadmin.h >/dev/null 2>&1 ; then + echo i860-stardent-sysv"$UNAME_RELEASE" # Stardent Vistra i860-SVR4 + else # Add other i860-SVR4 vendors below as they are discovered. + echo i860-unknown-sysv"$UNAME_RELEASE" # Unknown i860-SVR4 + fi + exit ;; + mini*:CTIX:SYS*5:*) + # "miniframe" + echo m68010-convergent-sysv + exit ;; + mc68k:UNIX:SYSTEM5:3.51m) + echo m68k-convergent-sysv + exit ;; + M680?0:D-NIX:5.3:*) + echo m68k-diab-dnix + 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; } + /bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \ + && { 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; } ;; + NCR*:*:4.2:* | MPRAS*:*:4.2:*) + OS_REL='.3' + 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; } + /bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \ + && { echo i586-ncr-sysv4.3"$OS_REL"; exit; } + /bin/uname -p 2>/dev/null | /bin/grep pteron >/dev/null \ + && { echo i586-ncr-sysv4.3"$OS_REL"; exit; } ;; + m68*:LynxOS:2.*:* | m68*:LynxOS:3.0*:*) + echo m68k-unknown-lynxos"$UNAME_RELEASE" + exit ;; + mc68030:UNIX_System_V:4.*:*) + echo m68k-atari-sysv4 + exit ;; + TSUNAMI:LynxOS:2.*:*) + echo sparc-unknown-lynxos"$UNAME_RELEASE" + exit ;; + rs6000:LynxOS:2.*:*) + echo rs6000-unknown-lynxos"$UNAME_RELEASE" + exit ;; + PowerPC:LynxOS:2.*:* | PowerPC:LynxOS:3.[01]*:* | PowerPC:LynxOS:4.[02]*:*) + echo powerpc-unknown-lynxos"$UNAME_RELEASE" + exit ;; + SM[BE]S:UNIX_SV:*:*) + echo mips-dde-sysv"$UNAME_RELEASE" + exit ;; + RM*:ReliantUNIX-*:*:*) + echo mips-sni-sysv4 + exit ;; + RM*:SINIX-*:*:*) + echo mips-sni-sysv4 + exit ;; + *:SINIX-*:*:*) + if uname -p 2>/dev/null >/dev/null ; then + UNAME_MACHINE=`(uname -p) 2>/dev/null` + echo "$UNAME_MACHINE"-sni-sysv4 + else + echo ns32k-sni-sysv + fi + exit ;; + PENTIUM:*:4.0*:*) # Unisys `ClearPath HMP IX 4000' SVR4/MP effort + # says + echo i586-unisys-sysv4 + exit ;; + *:UNIX_System_V:4*:FTX*) + # From Gerald Hewes . + # How about differentiating between stratus architectures? -djm + echo hppa1.1-stratus-sysv4 + exit ;; + *:*:*:FTX*) + # From seanf@swdc.stratus.com. + echo i860-stratus-sysv4 + 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 ;; + mc68*:A/UX:*:*) + echo m68k-apple-aux"$UNAME_RELEASE" + exit ;; + news*:NEWS-OS:6*:*) + echo mips-sony-newsos6 + 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 ;; + BeBox:BeOS:*:*) # BeOS running on hardware made by Be, PPC only. + echo powerpc-be-beos + exit ;; + BeMac:BeOS:*:*) # BeOS running on Mac or Mac clone, PPC only. + echo powerpc-apple-beos + exit ;; + BePC:BeOS:*:*) # BeOS running on Intel PC compatible. + echo i586-pc-beos + exit ;; + BePC:Haiku:*:*) # Haiku running on Intel PC compatible. + echo i586-pc-haiku + exit ;; + x86_64:Haiku:*:*) + echo x86_64-unknown-haiku + exit ;; + SX-4:SUPER-UX:*:*) + echo sx4-nec-superux"$UNAME_RELEASE" + exit ;; + SX-5:SUPER-UX:*:*) + echo sx5-nec-superux"$UNAME_RELEASE" + exit ;; + SX-6:SUPER-UX:*:*) + echo sx6-nec-superux"$UNAME_RELEASE" + exit ;; + SX-7:SUPER-UX:*:*) + echo sx7-nec-superux"$UNAME_RELEASE" + exit ;; + SX-8:SUPER-UX:*:*) + echo sx8-nec-superux"$UNAME_RELEASE" + exit ;; + SX-8R:SUPER-UX:*:*) + echo sx8r-nec-superux"$UNAME_RELEASE" + exit ;; + SX-ACE:SUPER-UX:*:*) + echo sxace-nec-superux"$UNAME_RELEASE" + exit ;; + Power*:Rhapsody:*:*) + echo powerpc-apple-rhapsody"$UNAME_RELEASE" + exit ;; + *:Rhapsody:*:*) + echo "$UNAME_MACHINE"-apple-rhapsody"$UNAME_RELEASE" + exit ;; + *:Darwin:*:*) + UNAME_PROCESSOR=`uname -p` || UNAME_PROCESSOR=unknown + eval "$set_cc_for_build" + if test "$UNAME_PROCESSOR" = unknown ; then + UNAME_PROCESSOR=powerpc + fi + if test "`echo "$UNAME_RELEASE" | sed -e 's/\..*//'`" -le 10 ; then + if [ "$CC_FOR_BUILD" != no_compiler_found ]; then + if (echo '#ifdef __LP64__'; echo IS_64BIT_ARCH; echo '#endif') | \ + (CCOPTS="" $CC_FOR_BUILD -E - 2>/dev/null) | \ + grep IS_64BIT_ARCH >/dev/null + then + case $UNAME_PROCESSOR in + i386) UNAME_PROCESSOR=x86_64 ;; + powerpc) UNAME_PROCESSOR=powerpc64 ;; + esac + fi + # On 10.4-10.6 one might compile for PowerPC via gcc -arch ppc + if (echo '#ifdef __POWERPC__'; echo IS_PPC; echo '#endif') | \ + (CCOPTS="" $CC_FOR_BUILD -E - 2>/dev/null) | \ + grep IS_PPC >/dev/null + then + UNAME_PROCESSOR=powerpc + fi + fi + elif test "$UNAME_PROCESSOR" = i386 ; then + # Avoid executing cc on OS X 10.9, as it ships with a stub + # that puts up a graphical alert prompting to install + # developer tools. Any system running Mac OS X 10.7 or + # later (Darwin 11 and later) is required to have a 64-bit + # processor. This is not true of the ARM version of Darwin + # that Apple uses in portable devices. + UNAME_PROCESSOR=x86_64 + fi + echo "$UNAME_PROCESSOR"-apple-darwin"$UNAME_RELEASE" + exit ;; + *:procnto*:*:* | *:QNX:[0123456789]*:*) + UNAME_PROCESSOR=`uname -p` + if test "$UNAME_PROCESSOR" = x86; then + UNAME_PROCESSOR=i386 + UNAME_MACHINE=pc + fi + echo "$UNAME_PROCESSOR"-"$UNAME_MACHINE"-nto-qnx"$UNAME_RELEASE" + exit ;; + *:QNX:*:4*) + echo i386-pc-qnx + exit ;; + NEO-*:NONSTOP_KERNEL:*:*) + echo neo-tandem-nsk"$UNAME_RELEASE" + exit ;; + NSE-*:NONSTOP_KERNEL:*:*) + echo nse-tandem-nsk"$UNAME_RELEASE" + exit ;; + NSR-*:NONSTOP_KERNEL:*:*) + echo nsr-tandem-nsk"$UNAME_RELEASE" + exit ;; + NSV-*:NONSTOP_KERNEL:*:*) + echo nsv-tandem-nsk"$UNAME_RELEASE" + exit ;; + NSX-*:NONSTOP_KERNEL:*:*) + echo nsx-tandem-nsk"$UNAME_RELEASE" + exit ;; + *:NonStop-UX:*:*) + echo mips-compaq-nonstopux + exit ;; + BS2000:POSIX*:*:*) + echo bs2000-siemens-sysv + exit ;; + DS/*:UNIX_System_V:*:*) + echo "$UNAME_MACHINE"-"$UNAME_SYSTEM"-"$UNAME_RELEASE" + exit ;; + *:Plan9:*:*) + # "uname -m" is not consistent, so use $cputype instead. 386 + # is converted to i386 for consistency with other x86 + # operating systems. + if test "$cputype" = 386; then + UNAME_MACHINE=i386 + else + UNAME_MACHINE="$cputype" + fi + echo "$UNAME_MACHINE"-unknown-plan9 + exit ;; + *:TOPS-10:*:*) + echo pdp10-unknown-tops10 + exit ;; + *:TENEX:*:*) + echo pdp10-unknown-tenex + exit ;; + KS10:TOPS-20:*:* | KL10:TOPS-20:*:* | TYPE4:TOPS-20:*:*) + echo pdp10-dec-tops20 + exit ;; + XKL-1:TOPS-20:*:* | TYPE5:TOPS-20:*:*) + echo pdp10-xkl-tops20 + exit ;; + *:TOPS-20:*:*) + echo pdp10-unknown-tops20 + exit ;; + *:ITS:*:*) + echo pdp10-unknown-its + 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 ;; + i*86:AROS:*:*) + echo "$UNAME_MACHINE"-pc-aros + exit ;; + x86_64:VMkernel:*:*) + echo "$UNAME_MACHINE"-unknown-esx + exit ;; + amd64:Isilon\ OneFS:*:*) + echo x86_64-unknown-onefs + exit ;; +esac + +echo "$0: unable to guess system type" >&2 + +case "$UNAME_MACHINE:$UNAME_SYSTEM" in + mips:Linux | mips64:Linux) + # If we got here on MIPS GNU/Linux, output extra information. + cat >&2 <&2 </dev/null || echo unknown` +uname -r = `(uname -r) 2>/dev/null || echo unknown` +uname -s = `(uname -s) 2>/dev/null || echo unknown` +uname -v = `(uname -v) 2>/dev/null || echo unknown` + +/usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null` +/bin/uname -X = `(/bin/uname -X) 2>/dev/null` + +hostinfo = `(hostinfo) 2>/dev/null` +/bin/universe = `(/bin/universe) 2>/dev/null` +/usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null` +/bin/arch = `(/bin/arch) 2>/dev/null` +/usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null` +/usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null` + +UNAME_MACHINE = "$UNAME_MACHINE" +UNAME_RELEASE = "$UNAME_RELEASE" +UNAME_SYSTEM = "$UNAME_SYSTEM" +UNAME_VERSION = "$UNAME_VERSION" +EOF + +exit 1 + +# Local variables: +# eval: (add-hook 'before-save-hook 'time-stamp) +# time-stamp-start: "timestamp='" +# time-stamp-format: "%:y-%02m-%02d" +# time-stamp-end: "'" +# End: Property changes on: vendor/dialog/1.3-20180621/config.guess ___________________________________________________________________ Added: svn:executable ## -0,0 +1 ## +* \ No newline at end of property Index: vendor/dialog/1.3-20180621/config.sub =================================================================== --- vendor/dialog/1.3-20180621/config.sub (nonexistent) +++ vendor/dialog/1.3-20180621/config.sub (revision 339483) @@ -0,0 +1,1808 @@ +#! /bin/sh +# Configuration validation subroutine script. +# Copyright 1992-2018 Free Software Foundation, Inc. + +timestamp='2018-05-24' + +# This file is free software; you can redistribute it and/or modify it +# under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 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 . +# +# 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. This Exception is an additional permission under section 7 +# of the GNU General Public License, version 3 ("GPLv3"). + + +# Please send patches to . +# +# Configuration subroutine to validate and canonicalize a configuration type. +# Supply the specified configuration type as an argument. +# If it is invalid, we print an error message on stderr and exit with code 1. +# Otherwise, we print the canonical config type on stdout and succeed. + +# You can get the latest version of this script from: +# https://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.sub + +# This file is supposed to be the same for all GNU packages +# and recognize all the CPU types, system types and aliases +# that are meaningful with *any* GNU software. +# Each package is responsible for reporting which valid configurations +# it does not support. The user should be able to distinguish +# a failure to support a valid configuration from a meaningless +# configuration. + +# The goal of this file is to map all the various variations of a given +# machine specification into a single specification in the form: +# CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM +# or in some cases, the newer four-part form: +# CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM +# It is wrong to echo any other type of specification. + +me=`echo "$0" | sed -e 's,.*/,,'` + +usage="\ +Usage: $0 [OPTION] CPU-MFR-OPSYS or ALIAS + +Canonicalize a configuration name. + +Options: + -h, --help print this help, then exit + -t, --time-stamp print date of last modification, then exit + -v, --version print version number, then exit + +Report bugs and patches to ." + +version="\ +GNU config.sub ($timestamp) + +Copyright 1992-2018 Free Software Foundation, Inc. + +This is free software; see the source for copying conditions. There is NO +warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." + +help=" +Try \`$me --help' for more information." + +# Parse command line +while test $# -gt 0 ; do + case $1 in + --time-stamp | --time* | -t ) + echo "$timestamp" ; exit ;; + --version | -v ) + echo "$version" ; exit ;; + --help | --h* | -h ) + echo "$usage"; exit ;; + -- ) # Stop option processing + shift; break ;; + - ) # Use stdin as input. + break ;; + -* ) + echo "$me: invalid option $1$help" + exit 1 ;; + + *local*) + # First pass through any local machine types. + echo "$1" + exit ;; + + * ) + break ;; + esac +done + +case $# in + 0) echo "$me: missing argument$help" >&2 + exit 1;; + 1) ;; + *) echo "$me: too many arguments$help" >&2 + exit 1;; +esac + +# Split fields of configuration type +IFS="-" read -r field1 field2 field3 field4 <&2 + exit 1 + ;; + *-*-*-*) + basic_machine=$field1-$field2 + os=$field3-$field4 + ;; + *-*-*) + # Ambiguous whether COMPANY is present, or skipped and KERNEL-OS is two + # parts + maybe_os=$field2-$field3 + case $maybe_os in + nto-qnx* | linux-gnu* | linux-android* | linux-dietlibc \ + | linux-newlib* | linux-musl* | linux-uclibc* | uclinux-uclibc* \ + | uclinux-gnu* | kfreebsd*-gnu* | knetbsd*-gnu* | netbsd*-gnu* \ + | netbsd*-eabi* | kopensolaris*-gnu* | cloudabi*-eabi* \ + | storm-chaos* | os2-emx* | rtmk-nova*) + basic_machine=$field1 + os=$maybe_os + ;; + android-linux) + basic_machine=$field1-unknown + os=linux-android + ;; + *) + basic_machine=$field1-$field2 + os=$field3 + ;; + esac + ;; + *-*) + # Second component is usually, but not always the OS + case $field2 in + # Prevent following clause from handling this valid os + sun*os*) + basic_machine=$field1 + os=$field2 + ;; + # Manufacturers + dec* | mips* | sequent* | encore* | pc532* | sgi* | sony* \ + | att* | 7300* | 3300* | delta* | motorola* | sun[234]* \ + | unicom* | ibm* | next | hp | isi* | apollo | altos* \ + | convergent* | ncr* | news | 32* | 3600* | 3100* | hitachi* \ + | c[123]* | convex* | sun | crds | omron* | dg | ultra | tti* \ + | harris | dolphin | highlevel | gould | cbm | ns | masscomp \ + | apple | axis | knuth | cray | microblaze* \ + | sim | cisco | oki | wec | wrs | winbond) + basic_machine=$field1-$field2 + os= + ;; + *) + basic_machine=$field1 + os=$field2 + ;; + esac + ;; + *) + # Convert single-component short-hands not valid as part of + # multi-component configurations. + case $field1 in + 386bsd) + basic_machine=i386-pc + os=bsd + ;; + a29khif) + basic_machine=a29k-amd + os=udi + ;; + adobe68k) + basic_machine=m68010-adobe + os=scout + ;; + am29k) + basic_machine=a29k-none + os=bsd + ;; + amdahl) + basic_machine=580-amdahl + os=sysv + ;; + amigaos | amigados) + basic_machine=m68k-unknown + os=amigaos + ;; + amigaunix | amix) + basic_machine=m68k-unknown + os=sysv4 + ;; + apollo68) + basic_machine=m68k-apollo + os=sysv + ;; + apollo68bsd) + basic_machine=m68k-apollo + os=bsd + ;; + aros) + basic_machine=i386-pc + os=aros + ;; + aux) + basic_machine=m68k-apple + os=aux + ;; + balance) + basic_machine=ns32k-sequent + os=dynix + ;; + blackfin) + basic_machine=bfin-unknown + os=linux + ;; + cegcc) + basic_machine=arm-unknown + os=cegcc + ;; + cray) + basic_machine=j90-cray + os=unicos + ;; + craynv) + basic_machine=craynv-cray + os=unicosmp + ;; + delta88) + basic_machine=m88k-motorola + os=sysv3 + ;; + dicos) + basic_machine=i686-pc + os=dicos + ;; + djgpp) + basic_machine=i586-pc + os=msdosdjgpp + ;; + ebmon29k) + basic_machine=a29k-amd + os=ebmon + ;; + es1800 | OSE68k | ose68k | ose | OSE) + basic_machine=m68k-ericsson + os=ose + ;; + gmicro) + basic_machine=tron-gmicro + os=sysv + ;; + go32) + basic_machine=i386-pc + os=go32 + ;; + h8300hms) + basic_machine=h8300-hitachi + os=hms + ;; + h8300xray) + basic_machine=h8300-hitachi + os=xray + ;; + h8500hms) + basic_machine=h8500-hitachi + os=hms + ;; + harris) + basic_machine=m88k-harris + os=sysv3 + ;; + hp300bsd) + basic_machine=m68k-hp + os=bsd + ;; + hp300hpux) + basic_machine=m68k-hp + os=hpux + ;; + hppaosf) + basic_machine=hppa1.1-hp + os=osf + ;; + hppro) + basic_machine=hppa1.1-hp + os=proelf + ;; + i386mach) + basic_machine=i386-mach + os=mach + ;; + vsta) + basic_machine=i386-unknown + os=vsta + ;; + isi68 | isi) + basic_machine=m68k-isi + os=sysv + ;; + m68knommu) + basic_machine=m68k-unknown + os=linux + ;; + magnum | m3230) + basic_machine=mips-mips + os=sysv + ;; + merlin) + basic_machine=ns32k-utek + os=sysv + ;; + mingw64) + basic_machine=x86_64-pc + os=mingw64 + ;; + mingw32) + basic_machine=i686-pc + os=mingw32 + ;; + mingw32ce) + basic_machine=arm-unknown + os=mingw32ce + ;; + monitor) + basic_machine=m68k-rom68k + os=coff + ;; + morphos) + basic_machine=powerpc-unknown + os=morphos + ;; + moxiebox) + basic_machine=moxie-unknown + os=moxiebox + ;; + msdos) + basic_machine=i386-pc + os=msdos + ;; + msys) + basic_machine=i686-pc + os=msys + ;; + mvs) + basic_machine=i370-ibm + os=mvs + ;; + nacl) + basic_machine=le32-unknown + os=nacl + ;; + ncr3000) + basic_machine=i486-ncr + os=sysv4 + ;; + netbsd386) + basic_machine=i386-unknown + os=netbsd + ;; + netwinder) + basic_machine=armv4l-rebel + os=linux + ;; + news | news700 | news800 | news900) + basic_machine=m68k-sony + os=newsos + ;; + news1000) + basic_machine=m68030-sony + os=newsos + ;; + necv70) + basic_machine=v70-nec + os=sysv + ;; + nh3000) + basic_machine=m68k-harris + os=cxux + ;; + nh[45]000) + basic_machine=m88k-harris + os=cxux + ;; + nindy960) + basic_machine=i960-intel + os=nindy + ;; + mon960) + basic_machine=i960-intel + os=mon960 + ;; + nonstopux) + basic_machine=mips-compaq + os=nonstopux + ;; + os400) + basic_machine=powerpc-ibm + os=os400 + ;; + OSE68000 | ose68000) + basic_machine=m68000-ericsson + os=ose + ;; + os68k) + basic_machine=m68k-none + os=os68k + ;; + paragon) + basic_machine=i860-intel + os=osf + ;; + parisc) + basic_machine=hppa-unknown + os=linux + ;; + pw32) + basic_machine=i586-unknown + os=pw32 + ;; + rdos | rdos64) + basic_machine=x86_64-pc + os=rdos + ;; + rdos32) + basic_machine=i386-pc + os=rdos + ;; + rom68k) + basic_machine=m68k-rom68k + os=coff + ;; + sa29200) + basic_machine=a29k-amd + os=udi + ;; + sei) + basic_machine=mips-sei + os=seiux + ;; + sps7) + basic_machine=m68k-bull + os=sysv2 + ;; + stratus) + basic_machine=i860-stratus + os=sysv4 + ;; + sun2os3) + basic_machine=m68000-sun + os=sunos3 + ;; + sun2os4) + basic_machine=m68000-sun + os=sunos4 + ;; + sun3os3) + basic_machine=m68k-sun + os=sunos3 + ;; + sun3os4) + basic_machine=m68k-sun + os=sunos4 + ;; + sun4os3) + basic_machine=sparc-sun + os=sunos3 + ;; + sun4os4) + basic_machine=sparc-sun + os=sunos4 + ;; + sun4sol2) + basic_machine=sparc-sun + os=solaris2 + ;; + sv1) + basic_machine=sv1-cray + os=unicos + ;; + symmetry) + basic_machine=i386-sequent + os=dynix + ;; + t3e) + basic_machine=alphaev5-cray + os=unicos + ;; + t90) + basic_machine=t90-cray + os=unicos + ;; + toad1) + basic_machine=pdp10-xkl + os=tops20 + ;; + tpf) + basic_machine=s390x-ibm + os=tpf + ;; + udi29k) + basic_machine=a29k-amd + os=udi + ;; + ultra3) + basic_machine=a29k-nyu + os=sym1 + ;; + v810 | necv810) + basic_machine=v810-nec + os=none + ;; + vaxv) + basic_machine=vax-dec + os=sysv + ;; + vms) + basic_machine=vax-dec + os=vms + ;; + vxworks960) + basic_machine=i960-wrs + os=vxworks + ;; + vxworks68) + basic_machine=m68k-wrs + os=vxworks + ;; + vxworks29k) + basic_machine=a29k-wrs + os=vxworks + ;; + xbox) + basic_machine=i686-pc + os=mingw32 + ;; + ymp) + basic_machine=ymp-cray + os=unicos + ;; + *) + basic_machine=$1 + os= + ;; + esac + ;; +esac + +# Decode aliases for certain CPU-COMPANY combinations. +case $basic_machine in + # Recognize the basic CPU types without company name. + # Some are omitted here because they have special meanings below. + 1750a | 580 \ + | a29k \ + | aarch64 | aarch64_be \ + | alpha | alphaev[4-8] | alphaev56 | alphaev6[78] | alphapca5[67] \ + | alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] | alpha64pca5[67] \ + | am33_2.0 \ + | arc | arceb \ + | arm | arm[bl]e | arme[lb] | armv[2-8] | armv[3-8][lb] | armv6m | armv[78][arm] \ + | avr | avr32 \ + | ba \ + | be32 | be64 \ + | bfin \ + | c4x | c8051 | clipper | csky \ + | d10v | d30v | dlx | dsp16xx \ + | e2k | epiphany \ + | fido | fr30 | frv | ft32 \ + | h8300 | h8500 | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \ + | hexagon \ + | i370 | i860 | i960 | ia16 | ia64 \ + | ip2k | iq2000 \ + | k1om \ + | le32 | le64 \ + | lm32 \ + | m32c | m32r | m32rle | m68000 | m68k | m88k \ + | maxq | mb | microblaze | microblazeel | mcore | mep | metag \ + | mips | mipsbe | mipseb | mipsel | mipsle \ + | mips16 \ + | mips64 | mips64el \ + | mips64octeon | mips64octeonel \ + | mips64orion | mips64orionel \ + | mips64r5900 | mips64r5900el \ + | mips64vr | mips64vrel \ + | mips64vr4100 | mips64vr4100el \ + | mips64vr4300 | mips64vr4300el \ + | mips64vr5000 | mips64vr5000el \ + | mips64vr5900 | mips64vr5900el \ + | mipsisa32 | mipsisa32el \ + | mipsisa32r2 | mipsisa32r2el \ + | mipsisa32r6 | mipsisa32r6el \ + | mipsisa64 | mipsisa64el \ + | mipsisa64r2 | mipsisa64r2el \ + | mipsisa64r6 | mipsisa64r6el \ + | mipsisa64sb1 | mipsisa64sb1el \ + | mipsisa64sr71k | mipsisa64sr71kel \ + | mipsr5900 | mipsr5900el \ + | mipstx39 | mipstx39el \ + | mn10200 | mn10300 \ + | moxie \ + | mt \ + | msp430 \ + | nds32 | nds32le | nds32be \ + | nfp \ + | nios | nios2 | nios2eb | nios2el \ + | ns16k | ns32k \ + | open8 | or1k | or1knd | or32 \ + | pdp10 | pj | pjl \ + | powerpc | powerpc64 | powerpc64le | powerpcle \ + | pru \ + | pyramid \ + | riscv32 | riscv64 \ + | rl78 | rx \ + | score \ + | sh | sh[1234] | sh[24]a | sh[24]aeb | sh[23]e | sh[234]eb | sheb | shbe | shle | sh[1234]le | sh3ele \ + | sh64 | sh64le \ + | sparc | sparc64 | sparc64b | sparc64v | sparc86x | sparclet | sparclite \ + | sparcv8 | sparcv9 | sparcv9b | sparcv9v \ + | spu \ + | tahoe | tic4x | tic54x | tic55x | tic6x | tic80 | tron \ + | ubicom32 \ + | v850 | v850e | v850e1 | v850e2 | v850es | v850e2v3 \ + | visium \ + | wasm32 \ + | x86 | xc16x | xstormy16 | xtensa \ + | z8k | z80) + basic_machine=$basic_machine-unknown + ;; + c54x) + basic_machine=tic54x-unknown + ;; + c55x) + basic_machine=tic55x-unknown + ;; + c6x) + basic_machine=tic6x-unknown + ;; + leon|leon[3-9]) + basic_machine=sparc-$basic_machine + ;; + m6811 | m68hc11 | m6812 | m68hc12 | m68hcs12x | nvptx | picochip) + basic_machine=$basic_machine-unknown + os=${os:-none} + ;; + m88110 | m680[12346]0 | m683?2 | m68360 | m5200 | v70 | w65) + ;; + m9s12z | m68hcs12z | hcs12z | s12z) + basic_machine=s12z-unknown + os=${os:-none} + ;; + ms1) + basic_machine=mt-unknown + ;; + strongarm | thumb | xscale) + basic_machine=arm-unknown + ;; + xgate) + basic_machine=$basic_machine-unknown + os=${os:-none} + ;; + xscaleeb) + basic_machine=armeb-unknown + ;; + + xscaleel) + basic_machine=armel-unknown + ;; + + # We use `pc' rather than `unknown' + # because (1) that's what they normally are, and + # (2) the word "unknown" tends to confuse beginning users. + i*86 | x86_64) + basic_machine=$basic_machine-pc + ;; + # Recognize the basic CPU types with company name. + 580-* \ + | a29k-* \ + | aarch64-* | aarch64_be-* \ + | alpha-* | alphaev[4-8]-* | alphaev56-* | alphaev6[78]-* \ + | alpha64-* | alpha64ev[4-8]-* | alpha64ev56-* | alpha64ev6[78]-* \ + | alphapca5[67]-* | alpha64pca5[67]-* | arc-* | arceb-* \ + | arm-* | armbe-* | armle-* | armeb-* | armv*-* \ + | avr-* | avr32-* \ + | ba-* \ + | be32-* | be64-* \ + | bfin-* | bs2000-* \ + | c[123]* | c30-* | [cjt]90-* | c4x-* \ + | c8051-* | clipper-* | craynv-* | csky-* | cydra-* \ + | d10v-* | d30v-* | dlx-* \ + | e2k-* | elxsi-* \ + | f30[01]-* | f700-* | fido-* | fr30-* | frv-* | fx80-* \ + | h8300-* | h8500-* \ + | hppa-* | hppa1.[01]-* | hppa2.0-* | hppa2.0[nw]-* | hppa64-* \ + | hexagon-* \ + | i*86-* | i860-* | i960-* | ia16-* | ia64-* \ + | ip2k-* | iq2000-* \ + | k1om-* \ + | le32-* | le64-* \ + | lm32-* \ + | m32c-* | m32r-* | m32rle-* \ + | m68000-* | m680[012346]0-* | m68360-* | m683?2-* | m68k-* \ + | m88110-* | m88k-* | maxq-* | mcore-* | metag-* \ + | microblaze-* | microblazeel-* \ + | mips-* | mipsbe-* | mipseb-* | mipsel-* | mipsle-* \ + | mips16-* \ + | mips64-* | mips64el-* \ + | mips64octeon-* | mips64octeonel-* \ + | mips64orion-* | mips64orionel-* \ + | mips64r5900-* | mips64r5900el-* \ + | mips64vr-* | mips64vrel-* \ + | mips64vr4100-* | mips64vr4100el-* \ + | mips64vr4300-* | mips64vr4300el-* \ + | mips64vr5000-* | mips64vr5000el-* \ + | mips64vr5900-* | mips64vr5900el-* \ + | mipsisa32-* | mipsisa32el-* \ + | mipsisa32r2-* | mipsisa32r2el-* \ + | mipsisa32r6-* | mipsisa32r6el-* \ + | mipsisa64-* | mipsisa64el-* \ + | mipsisa64r2-* | mipsisa64r2el-* \ + | mipsisa64r6-* | mipsisa64r6el-* \ + | mipsisa64sb1-* | mipsisa64sb1el-* \ + | mipsisa64sr71k-* | mipsisa64sr71kel-* \ + | mipsr5900-* | mipsr5900el-* \ + | mipstx39-* | mipstx39el-* \ + | mmix-* \ + | mt-* \ + | msp430-* \ + | nds32-* | nds32le-* | nds32be-* \ + | nfp-* \ + | nios-* | nios2-* | nios2eb-* | nios2el-* \ + | none-* | np1-* | ns16k-* | ns32k-* \ + | open8-* \ + | or1k*-* \ + | orion-* \ + | pdp10-* | pdp11-* | pj-* | pjl-* | pn-* | power-* \ + | powerpc-* | powerpc64-* | powerpc64le-* | powerpcle-* \ + | pru-* \ + | pyramid-* \ + | riscv32-* | riscv64-* \ + | rl78-* | romp-* | rs6000-* | rx-* \ + | sh-* | sh[1234]-* | sh[24]a-* | sh[24]aeb-* | sh[23]e-* | sh[34]eb-* | sheb-* | shbe-* \ + | shle-* | sh[1234]le-* | sh3ele-* | sh64-* | sh64le-* \ + | sparc-* | sparc64-* | sparc64b-* | sparc64v-* | sparc86x-* | sparclet-* \ + | sparclite-* \ + | sparcv8-* | sparcv9-* | sparcv9b-* | sparcv9v-* | sv1-* | sx*-* \ + | tahoe-* \ + | tic30-* | tic4x-* | tic54x-* | tic55x-* | tic6x-* | tic80-* \ + | tile*-* \ + | tron-* \ + | ubicom32-* \ + | v850-* | v850e-* | v850e1-* | v850es-* | v850e2-* | v850e2v3-* \ + | vax-* \ + | visium-* \ + | wasm32-* \ + | we32k-* \ + | x86-* | x86_64-* | xc16x-* | xps100-* \ + | xstormy16-* | xtensa*-* \ + | ymp-* \ + | z8k-* | z80-*) + ;; + # Recognize the basic CPU types without company name, with glob match. + xtensa*) + basic_machine=$basic_machine-unknown + ;; + # Recognize the various machine names and aliases which stand + # for a CPU type and a company and sometimes even an OS. + 3b1 | 7300 | 7300-att | att-7300 | pc7300 | safari | unixpc) + basic_machine=m68000-att + ;; + 3b*) + basic_machine=we32k-att + ;; + abacus) + basic_machine=abacus-unknown + ;; + alliant | fx80) + basic_machine=fx80-alliant + ;; + altos | altos3068) + basic_machine=m68k-altos + ;; + amd64) + basic_machine=x86_64-pc + ;; + amd64-*) + basic_machine=x86_64-`echo "$basic_machine" | sed 's/^[^-]*-//'` + ;; + amiga | amiga-*) + basic_machine=m68k-unknown + ;; + asmjs) + basic_machine=asmjs-unknown + ;; + blackfin-*) + basic_machine=bfin-`echo "$basic_machine" | sed 's/^[^-]*-//'` + os=linux + ;; + bluegene*) + basic_machine=powerpc-ibm + os=cnk + ;; + c54x-*) + basic_machine=tic54x-`echo "$basic_machine" | sed 's/^[^-]*-//'` + ;; + c55x-*) + basic_machine=tic55x-`echo "$basic_machine" | sed 's/^[^-]*-//'` + ;; + c6x-*) + basic_machine=tic6x-`echo "$basic_machine" | sed 's/^[^-]*-//'` + ;; + c90) + basic_machine=c90-cray + os=${os:-unicos} + ;; + convex-c1) + basic_machine=c1-convex + os=bsd + ;; + convex-c2) + basic_machine=c2-convex + os=bsd + ;; + convex-c32) + basic_machine=c32-convex + os=bsd + ;; + convex-c34) + basic_machine=c34-convex + os=bsd + ;; + convex-c38) + basic_machine=c38-convex + os=bsd + ;; + cr16 | cr16-*) + basic_machine=cr16-unknown + os=${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=${os:-elf} + ;; + da30 | da30-*) + basic_machine=m68k-da30 + ;; + decstation | decstation-3100 | pmax | pmax-* | pmin | dec3100 | decstatn) + basic_machine=mips-dec + ;; + decsystem10* | dec10*) + basic_machine=pdp10-dec + os=tops10 + ;; + decsystem20* | dec20*) + basic_machine=pdp10-dec + os=tops20 + ;; + delta | 3300 | motorola-3300 | motorola-delta \ + | 3300-motorola | delta-motorola) + basic_machine=m68k-motorola + ;; + dpx20 | dpx20-*) + basic_machine=rs6000-bull + os=${os:-bosx} + ;; + dpx2*) + basic_machine=m68k-bull + os=sysv3 + ;; + e500v[12]) + basic_machine=powerpc-unknown + os=$os"spe" + ;; + e500v[12]-*) + basic_machine=powerpc-`echo "$basic_machine" | sed 's/^[^-]*-//'` + os=$os"spe" + ;; + encore | umax | mmax) + basic_machine=ns32k-encore + ;; + elxsi) + basic_machine=elxsi-elxsi + os=${os:-bsd} + ;; + fx2800) + basic_machine=i860-alliant + ;; + genix) + basic_machine=ns32k-ns + ;; + h3050r* | hiux*) + basic_machine=hppa1.1-hitachi + os=hiuxwe2 + ;; + hp300-*) + basic_machine=m68k-hp + ;; + hp3k9[0-9][0-9] | hp9[0-9][0-9]) + basic_machine=hppa1.0-hp + ;; + hp9k2[0-9][0-9] | hp9k31[0-9]) + basic_machine=m68000-hp + ;; + hp9k3[2-9][0-9]) + basic_machine=m68k-hp + ;; + hp9k6[0-9][0-9] | hp6[0-9][0-9]) + basic_machine=hppa1.0-hp + ;; + hp9k7[0-79][0-9] | hp7[0-79][0-9]) + basic_machine=hppa1.1-hp + ;; + hp9k78[0-9] | hp78[0-9]) + # FIXME: really hppa2.0-hp + basic_machine=hppa1.1-hp + ;; + hp9k8[67]1 | hp8[67]1 | hp9k80[24] | hp80[24] | hp9k8[78]9 | hp8[78]9 | hp9k893 | hp893) + # FIXME: really hppa2.0-hp + basic_machine=hppa1.1-hp + ;; + hp9k8[0-9][13679] | hp8[0-9][13679]) + basic_machine=hppa1.1-hp + ;; + hp9k8[0-9][0-9] | hp8[0-9][0-9]) + basic_machine=hppa1.0-hp + ;; + i370-ibm* | ibm*) + basic_machine=i370-ibm + ;; + i*86v32) + basic_machine=`echo "$1" | sed -e 's/86.*/86-pc/'` + os=sysv32 + ;; + i*86v4*) + basic_machine=`echo "$1" | sed -e 's/86.*/86-pc/'` + os=sysv4 + ;; + i*86v) + basic_machine=`echo "$1" | sed -e 's/86.*/86-pc/'` + os=sysv + ;; + i*86sol2) + basic_machine=`echo "$1" | sed -e 's/86.*/86-pc/'` + os=solaris2 + ;; + j90 | j90-cray) + basic_machine=j90-cray + os=${os:-unicos} + ;; + iris | iris4d) + basic_machine=mips-sgi + case $os in + irix*) + ;; + *) + os=irix4 + ;; + esac + ;; + leon-*|leon[3-9]-*) + basic_machine=sparc-`echo "$basic_machine" | sed 's/-.*//'` + ;; + m68knommu-*) + basic_machine=m68k-`echo "$basic_machine" | sed 's/^[^-]*-//'` + os=linux + ;; + microblaze*) + basic_machine=microblaze-xilinx + ;; + miniframe) + basic_machine=m68000-convergent + ;; + *mint | mint[0-9]* | *MiNT | *MiNT[0-9]*) + basic_machine=m68k-atari + os=mint + ;; + mips3*-*) + basic_machine=`echo "$basic_machine" | sed -e 's/mips3/mips64/'` + ;; + mips3*) + basic_machine=`echo "$basic_machine" | sed -e 's/mips3/mips64/'`-unknown + ;; + ms1-*) + basic_machine=`echo "$basic_machine" | sed -e 's/ms1-/mt-/'` + ;; + news-3600 | risc-news) + basic_machine=mips-sony + os=newsos + ;; + next | m*-next) + basic_machine=m68k-next + case $os in + nextstep* ) + ;; + ns2*) + os=nextstep2 + ;; + *) + os=nextstep3 + ;; + esac + ;; + np1) + basic_machine=np1-gould + ;; + neo-tandem) + basic_machine=neo-tandem + ;; + nse-tandem) + basic_machine=nse-tandem + ;; + nsr-tandem) + basic_machine=nsr-tandem + ;; + nsv-tandem) + basic_machine=nsv-tandem + ;; + nsx-tandem) + basic_machine=nsx-tandem + ;; + op50n-* | op60c-*) + basic_machine=hppa1.1-oki + os=proelf + ;; + openrisc | openrisc-*) + basic_machine=or32-unknown + ;; + pa-hitachi) + basic_machine=hppa1.1-hitachi + os=hiuxwe2 + ;; + parisc-*) + basic_machine=hppa-`echo "$basic_machine" | sed 's/^[^-]*-//'` + os=linux + ;; + pbd) + basic_machine=sparc-tti + ;; + pbb) + basic_machine=m68k-tti + ;; + 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 | 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-* | pentiumiii-* | pentium3-*) + basic_machine=i686-`echo "$basic_machine" | sed 's/^[^-]*-//'` + ;; + pentium4-*) + basic_machine=i786-`echo "$basic_machine" | sed 's/^[^-]*-//'` + ;; + pn) + basic_machine=pn-gould + ;; + power) basic_machine=power-ibm + ;; + ppc | ppcbe) basic_machine=powerpc-unknown + ;; + ppc-* | ppcbe-*) + basic_machine=powerpc-`echo "$basic_machine" | sed 's/^[^-]*-//'` + ;; + ppcle | powerpclittle) + basic_machine=powerpcle-unknown + ;; + ppcle-* | powerpclittle-*) + basic_machine=powerpcle-`echo "$basic_machine" | sed 's/^[^-]*-//'` + ;; + ppc64) basic_machine=powerpc64-unknown + ;; + ppc64-*) basic_machine=powerpc64-`echo "$basic_machine" | sed 's/^[^-]*-//'` + ;; + ppc64le | powerpc64little) + basic_machine=powerpc64le-unknown + ;; + ppc64le-* | powerpc64little-*) + basic_machine=powerpc64le-`echo "$basic_machine" | sed 's/^[^-]*-//'` + ;; + ps2) + basic_machine=i386-ibm + ;; + rm[46]00) + basic_machine=mips-siemens + ;; + rtpc | rtpc-*) + basic_machine=romp-ibm + ;; + s390 | s390-*) + basic_machine=s390-ibm + ;; + s390x | s390x-*) + basic_machine=s390x-ibm + ;; + sb1) + basic_machine=mipsisa64sb1-unknown + ;; + sb1el) + basic_machine=mipsisa64sb1el-unknown + ;; + sde) + basic_machine=mipsisa32-sde + os=${os:-elf} + ;; + sequent) + basic_machine=i386-sequent + ;; + sh5el) + basic_machine=sh5le-unknown + ;; + simso-wrs) + basic_machine=sparclite-wrs + os=vxworks + ;; + spur) + basic_machine=spur-unknown + ;; + st2000) + basic_machine=m68k-tandem + ;; + strongarm-* | thumb-*) + basic_machine=arm-`echo "$basic_machine" | sed 's/^[^-]*-//'` + ;; + sun2) + basic_machine=m68000-sun + ;; + sun3 | sun3-*) + basic_machine=m68k-sun + ;; + sun4) + basic_machine=sparc-sun + ;; + sun386 | sun386i | roadrunner) + basic_machine=i386-sun + ;; + tile*) + basic_machine=$basic_machine-unknown + os=linux-gnu + ;; + tx39) + basic_machine=mipstx39-unknown + ;; + tx39el) + basic_machine=mipstx39el-unknown + ;; + tower | tower-32) + basic_machine=m68k-ncr + ;; + vpp*|vx|vx-*) + basic_machine=f301-fujitsu + ;; + w65*) + basic_machine=w65-wdc + os=none + ;; + w89k-*) + basic_machine=hppa1.1-winbond + os=proelf + ;; + x64) + basic_machine=x86_64-pc + ;; + xps | xps100) + basic_machine=xps100-honeywell + ;; + xscale-* | xscalee[bl]-*) + basic_machine=`echo "$basic_machine" | sed 's/^xscale/arm/'` + ;; + none) + basic_machine=none-none + os=${os:-none} + ;; + +# Here we handle the default manufacturer of certain CPU types. It is in +# some cases the only manufacturer, in others, it is the most popular. + w89k) + basic_machine=hppa1.1-winbond + ;; + op50n) + basic_machine=hppa1.1-oki + ;; + op60c) + basic_machine=hppa1.1-oki + ;; + romp) + basic_machine=romp-ibm + ;; + mmix) + basic_machine=mmix-knuth + ;; + rs6000) + basic_machine=rs6000-ibm + ;; + vax) + basic_machine=vax-dec + ;; + pdp11) + basic_machine=pdp11-dec + ;; + we32k) + basic_machine=we32k-att + ;; + sh[1234] | sh[24]a | sh[24]aeb | sh[34]eb | sh[1234]le | sh[23]ele) + basic_machine=sh-unknown + ;; + cydra) + basic_machine=cydra-cydrome + ;; + orion) + basic_machine=orion-highlevel + ;; + orion105) + basic_machine=clipper-highlevel + ;; + mac | mpw | mac-mpw) + basic_machine=m68k-apple + ;; + pmac | pmac-mpw) + basic_machine=powerpc-apple + ;; + *-unknown) + # Make sure to match an already-canonicalized machine name. + ;; + *) + echo Invalid configuration \`"$1"\': machine \`"$basic_machine"\' not recognized 1>&2 + exit 1 + ;; +esac + +# Here we canonicalize certain aliases for manufacturers. +case $basic_machine in + *-digital*) + basic_machine=`echo "$basic_machine" | sed 's/digital.*/dec/'` + ;; + *-commodore*) + basic_machine=`echo "$basic_machine" | sed 's/commodore.*/cbm/'` + ;; + *) + ;; +esac + +# Decode manufacturer-specific aliases for certain operating systems. + +if [ x$os != x ] +then +case $os in + # First match some system type aliases that might get confused + # with valid system types. + # solaris* is a basic system type, with this one exception. + auroraux) + os=auroraux + ;; + bluegene*) + os=cnk + ;; + solaris1 | solaris1.*) + os=`echo $os | sed -e 's|solaris1|sunos4|'` + ;; + solaris) + os=solaris2 + ;; + unixware*) + os=sysv4.2uw + ;; + gnu/linux*) + os=`echo $os | sed -e 's|gnu/linux|linux-gnu|'` + ;; + # es1800 is here to avoid being matched by es* (a different OS) + es1800*) + os=ose + ;; + # Some version numbers need modification + chorusos*) + os=chorusos + ;; + isc) + os=isc2.2 + ;; + sco6) + os=sco5v6 + ;; + sco5) + os=sco3.2v5 + ;; + sco4) + os=sco3.2v4 + ;; + sco3.2.[4-9]*) + os=`echo $os | sed -e 's/sco3.2./sco3.2v/'` + ;; + sco3.2v[4-9]* | sco5v6*) + # Don't forget version if it is 3.2v4 or newer. + ;; + scout) + # Don't match below + ;; + sco*) + os=sco3.2v2 + ;; + psos*) + os=psos + ;; + # Now accept the basic system types. + # The portable systems comes first. + # Each alternative MUST end in a * to match a version number. + # sysv* is not here because it comes later, after sysvr4. + gnu* | bsd* | mach* | minix* | genix* | ultrix* | irix* \ + | *vms* | esix* | aix* | cnk* | sunos | sunos[34]*\ + | hpux* | unos* | osf* | luna* | dgux* | auroraux* | solaris* \ + | sym* | kopensolaris* | plan9* \ + | amigaos* | amigados* | msdos* | newsos* | unicos* | aof* \ + | aos* | aros* | cloudabi* | sortix* \ + | nindy* | vxsim* | vxworks* | ebmon* | hms* | mvs* \ + | clix* | riscos* | uniplus* | iris* | rtu* | xenix* \ + | knetbsd* | mirbsd* | netbsd* \ + | bitrig* | openbsd* | solidbsd* | libertybsd* \ + | ekkobsd* | kfreebsd* | freebsd* | riscix* | lynxos* \ + | bosx* | nextstep* | cxux* | aout* | elf* | oabi* \ + | ptx* | coff* | ecoff* | winnt* | domain* | vsta* \ + | udi* | eabi* | lites* | ieee* | go32* | aux* | hcos* \ + | chorusrdb* | cegcc* | glidix* \ + | cygwin* | msys* | pe* | moss* | proelf* | rtems* \ + | midipix* | mingw32* | mingw64* | linux-gnu* | linux-android* \ + | linux-newlib* | linux-musl* | linux-uclibc* \ + | uxpv* | beos* | mpeix* | udk* | moxiebox* \ + | interix* | uwin* | mks* | rhapsody* | darwin* \ + | openstep* | oskit* | conix* | pw32* | nonstopux* \ + | storm-chaos* | tops10* | tenex* | tops20* | its* \ + | os2* | vos* | palmos* | uclinux* | nucleus* \ + | morphos* | superux* | rtmk* | windiss* \ + | powermax* | dnix* | nx6 | nx7 | sei* | dragonfly* \ + | skyos* | haiku* | rdos* | toppers* | drops* | es* \ + | onefs* | tirtos* | phoenix* | fuchsia* | redox* | bme* \ + | midnightbsd*) + # Remember, each alternative MUST END IN *, to match a version number. + ;; + qnx*) + case $basic_machine in + x86-* | i*86-*) + ;; + *) + os=nto-$os + ;; + esac + ;; + hiux*) + os=hiuxwe2 + ;; + nto-qnx*) + ;; + nto*) + os=`echo $os | sed -e 's|nto|nto-qnx|'` + ;; + sim | xray | os68k* | v88r* \ + | windows* | osx | abug | netware* | os9* \ + | macos* | mpw* | magic* | mmixware* | mon960* | lnews*) + ;; + linux-dietlibc) + os=linux-dietlibc + ;; + linux*) + os=`echo $os | sed -e 's|linux|linux-gnu|'` + ;; + lynx*178) + os=lynxos178 + ;; + lynx*5) + os=lynxos5 + ;; + lynx*) + os=lynxos + ;; + mac*) + os=`echo "$os" | sed -e 's|mac|macos|'` + ;; + opened*) + os=openedition + ;; + os400*) + os=os400 + ;; + sunos5*) + os=`echo "$os" | sed -e 's|sunos5|solaris2|'` + ;; + sunos6*) + os=`echo "$os" | sed -e 's|sunos6|solaris3|'` + ;; + wince*) + os=wince + ;; + utek*) + os=bsd + ;; + dynix*) + os=bsd + ;; + acis*) + os=aos + ;; + atheos*) + os=atheos + ;; + syllable*) + os=syllable + ;; + 386bsd) + os=bsd + ;; + ctix* | uts*) + os=sysv + ;; + nova*) + os=rtmk-nova + ;; + ns2) + os=nextstep2 + ;; + nsk*) + os=nsk + ;; + # Preserve the version number of sinix5. + sinix5.*) + os=`echo $os | sed -e 's|sinix|sysv|'` + ;; + sinix*) + os=sysv4 + ;; + tpf*) + os=tpf + ;; + triton*) + os=sysv3 + ;; + oss*) + os=sysv3 + ;; + svr4*) + os=sysv4 + ;; + svr3) + os=sysv3 + ;; + sysvr4) + os=sysv4 + ;; + # This must come after sysvr4. + sysv*) + ;; + ose*) + os=ose + ;; + *mint | mint[0-9]* | *MiNT | MiNT[0-9]*) + os=mint + ;; + zvmoe) + os=zvmoe + ;; + dicos*) + os=dicos + ;; + pikeos*) + # Until real need of OS specific support for + # particular features comes up, bare metal + # configurations are quite functional. + case $basic_machine in + arm*) + os=eabi + ;; + *) + os=elf + ;; + esac + ;; + nacl*) + ;; + ios) + ;; + none) + ;; + *-eabi) + ;; + *) + echo Invalid configuration \`"$1"\': system \`"$os"\' not recognized 1>&2 + exit 1 + ;; +esac +else + +# Here we handle the default operating systems that come with various machines. +# The value should be what the vendor currently ships out the door with their +# machine or put another way, the most popular os provided with the machine. + +# Note that if you're going to try to match "-MANUFACTURER" here (say, +# "-sun"), then you have to tell the case statement up towards the top +# that MANUFACTURER isn't an operating system. Otherwise, code above +# will signal an error saying that MANUFACTURER isn't an operating +# system, and we'll never get to this point. + +case $basic_machine in + score-*) + os=elf + ;; + spu-*) + os=elf + ;; + *-acorn) + os=riscix1.2 + ;; + arm*-rebel) + os=linux + ;; + arm*-semi) + os=aout + ;; + c4x-* | tic4x-*) + os=coff + ;; + c8051-*) + os=elf + ;; + clipper-intergraph) + os=clix + ;; + hexagon-*) + os=elf + ;; + tic54x-*) + os=coff + ;; + tic55x-*) + os=coff + ;; + tic6x-*) + os=coff + ;; + # This must come before the *-dec entry. + pdp10-*) + os=tops20 + ;; + pdp11-*) + os=none + ;; + *-dec | vax-*) + os=ultrix4.2 + ;; + m68*-apollo) + os=domain + ;; + i386-sun) + os=sunos4.0.2 + ;; + m68000-sun) + os=sunos3 + ;; + m68*-cisco) + os=aout + ;; + mep-*) + os=elf + ;; + mips*-cisco) + os=elf + ;; + mips*-*) + os=elf + ;; + or32-*) + os=coff + ;; + *-tti) # must be before sparc entry or we get the wrong os. + os=sysv3 + ;; + sparc-* | *-sun) + os=sunos4.1.1 + ;; + pru-*) + os=elf + ;; + *-be) + os=beos + ;; + *-ibm) + os=aix + ;; + *-knuth) + os=mmixware + ;; + *-wec) + os=proelf + ;; + *-winbond) + os=proelf + ;; + *-oki) + os=proelf + ;; + *-hp) + os=hpux + ;; + *-hitachi) + os=hiux + ;; + i860-* | *-att | *-ncr | *-altos | *-motorola | *-convergent) + os=sysv + ;; + *-cbm) + os=amigaos + ;; + *-dg) + os=dgux + ;; + *-dolphin) + os=sysv3 + ;; + m68k-ccur) + os=rtu + ;; + m88k-omron*) + os=luna + ;; + *-next) + os=nextstep + ;; + *-sequent) + os=ptx + ;; + *-crds) + os=unos + ;; + *-ns) + os=genix + ;; + i370-*) + os=mvs + ;; + *-gould) + os=sysv + ;; + *-highlevel) + os=bsd + ;; + *-encore) + os=bsd + ;; + *-sgi) + os=irix + ;; + *-siemens) + os=sysv4 + ;; + *-masscomp) + os=rtu + ;; + f30[01]-fujitsu | f700-fujitsu) + os=uxpv + ;; + *-rom68k) + os=coff + ;; + *-*bug) + os=coff + ;; + *-apple) + os=macos + ;; + *-atari*) + os=mint + ;; + *-wrs) + os=vxworks + ;; + *) + os=none + ;; +esac +fi + +# Here we handle the case where we know the os, and the CPU type, but not the +# manufacturer. We pick the logical manufacturer. +vendor=unknown +case $basic_machine in + *-unknown) + case $os in + riscix*) + vendor=acorn + ;; + sunos*) + vendor=sun + ;; + cnk*|-aix*) + vendor=ibm + ;; + beos*) + vendor=be + ;; + hpux*) + vendor=hp + ;; + mpeix*) + vendor=hp + ;; + hiux*) + vendor=hitachi + ;; + unos*) + vendor=crds + ;; + dgux*) + vendor=dg + ;; + luna*) + vendor=omron + ;; + genix*) + vendor=ns + ;; + clix*) + vendor=intergraph + ;; + mvs* | opened*) + vendor=ibm + ;; + os400*) + vendor=ibm + ;; + ptx*) + vendor=sequent + ;; + tpf*) + vendor=ibm + ;; + vxsim* | vxworks* | windiss*) + vendor=wrs + ;; + aux*) + vendor=apple + ;; + hms*) + vendor=hitachi + ;; + mpw* | macos*) + vendor=apple + ;; + *mint | mint[0-9]* | *MiNT | MiNT[0-9]*) + vendor=atari + ;; + vos*) + vendor=stratus + ;; + esac + basic_machine=`echo "$basic_machine" | sed "s/unknown/$vendor/"` + ;; +esac + +echo "$basic_machine-$os" +exit + +# Local variables: +# eval: (add-hook 'before-save-hook 'time-stamp) +# time-stamp-start: "timestamp='" +# time-stamp-format: "%:y-%02m-%02d" +# time-stamp-end: "'" +# End: Property changes on: vendor/dialog/1.3-20180621/config.sub ___________________________________________________________________ Added: svn:executable ## -0,0 +1 ## +* \ No newline at end of property Index: vendor/dialog/1.3-20180621/configure =================================================================== --- vendor/dialog/1.3-20180621/configure (nonexistent) +++ vendor/dialog/1.3-20180621/configure (revision 339483) @@ -0,0 +1,25724 @@ +#! /bin/sh +# Guess values for system-dependent variables and create Makefiles. +# Generated by Autoconf 2.52.20170501. +# +# Copyright 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001 +# Free Software Foundation, Inc. +# This configure script is free software; the Free Software Foundation +# gives unlimited permission to copy, distribute and modify it. + +# 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 + +# Sed expression to map a string onto a valid variable name. +as_tr_sh="sed y%*+%pp%;s%[^_$as_cr_alnum]%_%g" + +# Sed expression to map a string onto a valid CPP name. +as_tr_cpp="sed y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g" + +# Be Bourne compatible +if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then + emulate sh + NULLCMD=: +elif test -n "${BASH_VERSION+set}" && (set -o posix) >/dev/null 2>&1; then + set -o posix +fi + +# Name of the executable. +as_me=`echo "$0" |sed 's,.*[\\/],,'` + +if expr a : '\(a\)' >/dev/null 2>&1; then + as_expr=expr +else + as_expr=false +fi + +rm -f conf$$ conf$$.exe conf$$.file +echo >conf$$.file +if ln -s conf$$.file conf$$ 2>/dev/null; then + # We could just check for DJGPP; but this test a) works b) is more generic + # and c) will remain valid once DJGPP supports symlinks (DJGPP 2.04). + if test -f conf$$.exe; then + # Don't use ln at all; we don't have any links + as_ln_s='cp -p' + else + as_ln_s='ln -s' + fi +elif ln conf$$.file conf$$ 2>/dev/null; then + as_ln_s=ln +else + as_ln_s='cp -p' +fi +rm -f conf$$ conf$$.exe conf$$.file + +as_executable_p="test -f" + +# Support unset when possible. +if (FOO=FOO; unset FOO) >/dev/null 2>&1; then + as_unset=unset +else + as_unset=false +fi + +# NLS nuisances. +$as_unset LANG || test "${LANG+set}" != set || { LANG=C; export LANG; } +$as_unset LC_ALL || test "${LC_ALL+set}" != set || { LC_ALL=C; export LC_ALL; } +$as_unset LC_TIME || test "${LC_TIME+set}" != set || { LC_TIME=C; export LC_TIME; } +$as_unset LC_CTYPE || test "${LC_CTYPE+set}" != set || { LC_CTYPE=C; export LC_CTYPE; } +$as_unset LANGUAGE || test "${LANGUAGE+set}" != set || { LANGUAGE=C; export LANGUAGE; } +$as_unset LC_COLLATE || test "${LC_COLLATE+set}" != set || { LC_COLLATE=C; export LC_COLLATE; } +$as_unset LC_NUMERIC || test "${LC_NUMERIC+set}" != set || { LC_NUMERIC=C; export LC_NUMERIC; } +$as_unset LC_MESSAGES || test "${LC_MESSAGES+set}" != set || { LC_MESSAGES=C; export LC_MESSAGES; } + +# IFS +# We need space, tab and new line, in precisely that order. +as_nl=' +' +IFS=" $as_nl" + +# CDPATH. +$as_unset CDPATH || test "${CDPATH+set}" != set || { CDPATH=:; export CDPATH; } + +# Name of the host. +# hostname on some systems (SVR3.2, Linux) returns a bogus exit status, +# so uname gets run too. +ac_hostname=`(hostname || uname -n) 2>/dev/null | sed 1q` + +exec 6>&1 + +# +# Initializations. +# +ac_default_prefix=/usr/local +cross_compiling=no +subdirs= +MFLAGS= MAKEFLAGS= +SHELL=${CONFIG_SHELL-/bin/sh} + +# Maximum number of lines to put in a shell here document. +# This variable seems obsolete. It should probably be removed, and +# only ac_max_sed_lines should be used. +: ${ac_max_here_lines=38} + +ac_unique_file="dialog.h" +# Factoring default headers for most tests. +ac_includes_default="\ +#include +#if HAVE_SYS_TYPES_H +# include +#endif +#if HAVE_SYS_STAT_H +# include +#endif +#if STDC_HEADERS +# include +# include +#else +# if HAVE_STDLIB_H +# include +# endif +#endif +#if HAVE_STRING_H +# if !STDC_HEADERS && HAVE_MEMORY_H +# include +# endif +# include +#endif +#if HAVE_STRINGS_H +# include +#endif +#if HAVE_INTTYPES_H +# include +#else +# if HAVE_STDINT_H +# include +# endif +#endif +#if HAVE_UNISTD_H +# include +#endif" + +# Initialize some variables set by options. +ac_init_help= +ac_init_version=false +# The variables have the same names as the options, with +# dashes changed to underlines. +cache_file=/dev/null +exec_prefix=NONE +no_create= +no_recursion= +prefix=NONE +program_prefix=NONE +program_suffix=NONE +program_transform_name=s,x,x, +silent= +site= +srcdir= +verbose= +x_includes=NONE +x_libraries=NONE + +# Installation directory options. +# These are left unexpanded so users can "make install exec_prefix=/foo" +# and all the variables that are supposed to be based on exec_prefix +# by default will actually change. +# Use braces instead of parens because sh, perl, etc. also accept them. +bindir='${exec_prefix}/bin' +sbindir='${exec_prefix}/sbin' +libexecdir='${exec_prefix}/libexec' +datarootdir='${prefix}/share' +datadir='${datarootdir}' +sysconfdir='${prefix}/etc' +sharedstatedir='${prefix}/com' +localstatedir='${prefix}/var' +libdir='${exec_prefix}/lib' +includedir='${prefix}/include' +oldincludedir='/usr/include' +infodir='${datarootdir}/info' +mandir='${datarootdir}/man' + +# Identity of this package. +PACKAGE_NAME= +PACKAGE_TARNAME= +PACKAGE_VERSION= +PACKAGE_STRING= +PACKAGE_BUGREPORT= + +ac_prev= +for ac_option +do + # If the previous option needs an argument, assign it. + if test -n "$ac_prev"; then + eval "$ac_prev=\$ac_option" + ac_prev= + continue + fi + + ac_optarg=`expr "x$ac_option" : 'x[^=]*=\(.*\)'` + + # Accept the important Cygnus configure options, so we can diagnose typos. + + case $ac_option in + + -bindir | --bindir | --bindi | --bind | --bin | --bi) + ac_prev=bindir ;; + -bindir=* | --bindir=* | --bindi=* | --bind=* | --bin=* | --bi=*) + bindir=$ac_optarg ;; + + -build | --build | --buil | --bui | --bu) + ac_prev=build_alias ;; + -build=* | --build=* | --buil=* | --bui=* | --bu=*) + build_alias=$ac_optarg ;; + + -cache-file | --cache-file | --cache-fil | --cache-fi \ + | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c) + ac_prev=cache_file ;; + -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \ + | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* | --c=*) + cache_file=$ac_optarg ;; + + --config-cache | -C) + cache_file=config.cache ;; + + -datadir | --datadir | --datadi | --datad | --data | --dat | --da) + ac_prev=datadir ;; + -datadir=* | --datadir=* | --datadi=* | --datad=* | --data=* | --dat=* \ + | --da=*) + datadir=$ac_optarg ;; + + -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_feature=`expr "x$ac_option" : 'x-*disable-\(.*\)'` + # Reject names that are not valid shell variable names. + expr "x$ac_feature" : ".*[^-_$as_cr_alnum]" >/dev/null && + { echo "$as_me: error: invalid feature name: $ac_feature" >&2 + { (exit 1); exit 1; }; } + ac_feature=`echo $ac_feature | sed 's/-/_/g'` + eval "enable_$ac_feature=no" ;; + + -enable-* | --enable-*) + ac_feature=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'` + # Reject names that are not valid shell variable names. + expr "x$ac_feature" : ".*[^-_$as_cr_alnum]" >/dev/null && + { echo "$as_me: error: invalid feature name: $ac_feature" >&2 + { (exit 1); exit 1; }; } + ac_feature=`echo $ac_feature | sed 's/-/_/g'` + case $ac_option in + *=*) ac_optarg=`echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"`;; + *) ac_optarg=yes ;; + esac + eval "enable_$ac_feature='$ac_optarg'" ;; + + -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \ + | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \ + | --exec | --exe | --ex) + ac_prev=exec_prefix ;; + -exec-prefix=* | --exec_prefix=* | --exec-prefix=* | --exec-prefi=* \ + | --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* \ + | --exec=* | --exe=* | --ex=*) + exec_prefix=$ac_optarg ;; + + -gas | --gas | --ga | --g) + # Obsolete; use --with-gas. + with_gas=yes ;; + + -help | --help | --hel | --he | -h) + ac_init_help=long ;; + -help=r* | --help=r* | --hel=r* | --he=r* | -hr*) + ac_init_help=recursive ;; + -help=s* | --help=s* | --hel=s* | --he=s* | -hs*) + ac_init_help=short ;; + + -host | --host | --hos | --ho) + ac_prev=host_alias ;; + -host=* | --host=* | --hos=* | --ho=*) + host_alias=$ac_optarg ;; + + -includedir | --includedir | --includedi | --included | --include \ + | --includ | --inclu | --incl | --inc) + ac_prev=includedir ;; + -includedir=* | --includedir=* | --includedi=* | --included=* | --include=* \ + | --includ=* | --inclu=* | --incl=* | --inc=*) + includedir=$ac_optarg ;; + + -infodir | --infodir | --infodi | --infod | --info | --inf) + ac_prev=infodir ;; + -infodir=* | --infodir=* | --infodi=* | --infod=* | --info=* | --inf=*) + infodir=$ac_optarg ;; + + -libdir | --libdir | --libdi | --libd) + ac_prev=libdir ;; + -libdir=* | --libdir=* | --libdi=* | --libd=*) + libdir=$ac_optarg ;; + + -libexecdir | --libexecdir | --libexecdi | --libexecd | --libexec \ + | --libexe | --libex | --libe) + ac_prev=libexecdir ;; + -libexecdir=* | --libexecdir=* | --libexecdi=* | --libexecd=* | --libexec=* \ + | --libexe=* | --libex=* | --libe=*) + libexecdir=$ac_optarg ;; + + -localstatedir | --localstatedir | --localstatedi | --localstated \ + | --localstate | --localstat | --localsta | --localst \ + | --locals | --local | --loca | --loc | --lo) + ac_prev=localstatedir ;; + -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \ + | --localstate=* | --localstat=* | --localsta=* | --localst=* \ + | --locals=* | --local=* | --loca=* | --loc=* | --lo=*) + localstatedir=$ac_optarg ;; + + -mandir | --mandir | --mandi | --mand | --man | --ma | --m) + ac_prev=mandir ;; + -mandir=* | --mandir=* | --mandi=* | --mand=* | --man=* | --ma=* | --m=*) + mandir=$ac_optarg ;; + + -nfp | --nfp | --nf) + # Obsolete; use --without-fp. + with_fp=no ;; + + -no-create | --no-create | --no-creat | --no-crea | --no-cre \ + | --no-cr | --no-c) + no_create=yes ;; + + -no-recursion | --no-recursion | --no-recursio | --no-recursi \ + | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r) + no_recursion=yes ;; + + -oldincludedir | --oldincludedir | --oldincludedi | --oldincluded \ + | --oldinclude | --oldinclud | --oldinclu | --oldincl | --oldinc \ + | --oldin | --oldi | --old | --ol | --o) + ac_prev=oldincludedir ;; + -oldincludedir=* | --oldincludedir=* | --oldincludedi=* | --oldincluded=* \ + | --oldinclude=* | --oldinclud=* | --oldinclu=* | --oldincl=* | --oldinc=* \ + | --oldin=* | --oldi=* | --old=* | --ol=* | --o=*) + oldincludedir=$ac_optarg ;; + + -prefix | --prefix | --prefi | --pref | --pre | --pr | --p) + ac_prev=prefix ;; + -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*) + prefix=$ac_optarg ;; + + -program-prefix | --program-prefix | --program-prefi | --program-pref \ + | --program-pre | --program-pr | --program-p) + ac_prev=program_prefix ;; + -program-prefix=* | --program-prefix=* | --program-prefi=* \ + | --program-pref=* | --program-pre=* | --program-pr=* | --program-p=*) + program_prefix=$ac_optarg ;; + + -program-suffix | --program-suffix | --program-suffi | --program-suff \ + | --program-suf | --program-su | --program-s) + ac_prev=program_suffix ;; + -program-suffix=* | --program-suffix=* | --program-suffi=* \ + | --program-suff=* | --program-suf=* | --program-su=* | --program-s=*) + program_suffix=$ac_optarg ;; + + -program-transform-name | --program-transform-name \ + | --program-transform-nam | --program-transform-na \ + | --program-transform-n | --program-transform- \ + | --program-transform | --program-transfor \ + | --program-transfo | --program-transf \ + | --program-trans | --program-tran \ + | --progr-tra | --program-tr | --program-t) + ac_prev=program_transform_name ;; + -program-transform-name=* | --program-transform-name=* \ + | --program-transform-nam=* | --program-transform-na=* \ + | --program-transform-n=* | --program-transform-=* \ + | --program-transform=* | --program-transfor=* \ + | --program-transfo=* | --program-transf=* \ + | --program-trans=* | --program-tran=* \ + | --progr-tra=* | --program-tr=* | --program-t=*) + program_transform_name=$ac_optarg ;; + + -q | -quiet | --quiet | --quie | --qui | --qu | --q \ + | -silent | --silent | --silen | --sile | --sil) + silent=yes ;; + + -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb) + ac_prev=sbindir ;; + -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \ + | --sbi=* | --sb=*) + sbindir=$ac_optarg ;; + + -sharedstatedir | --sharedstatedir | --sharedstatedi \ + | --sharedstated | --sharedstate | --sharedstat | --sharedsta \ + | --sharedst | --shareds | --shared | --share | --shar \ + | --sha | --sh) + ac_prev=sharedstatedir ;; + -sharedstatedir=* | --sharedstatedir=* | --sharedstatedi=* \ + | --sharedstated=* | --sharedstate=* | --sharedstat=* | --sharedsta=* \ + | --sharedst=* | --shareds=* | --shared=* | --share=* | --shar=* \ + | --sha=* | --sh=*) + sharedstatedir=$ac_optarg ;; + + -site | --site | --sit) + ac_prev=site ;; + -site=* | --site=* | --sit=*) + site=$ac_optarg ;; + + -srcdir | --srcdir | --srcdi | --srcd | --src | --sr) + ac_prev=srcdir ;; + -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*) + srcdir=$ac_optarg ;; + + -sysconfdir | --sysconfdir | --sysconfdi | --sysconfd | --sysconf \ + | --syscon | --sysco | --sysc | --sys | --sy) + ac_prev=sysconfdir ;; + -sysconfdir=* | --sysconfdir=* | --sysconfdi=* | --sysconfd=* | --sysconf=* \ + | --syscon=* | --sysco=* | --sysc=* | --sys=* | --sy=*) + sysconfdir=$ac_optarg ;; + + -target | --target | --targe | --targ | --tar | --ta | --t) + ac_prev=target_alias ;; + -target=* | --target=* | --targe=* | --targ=* | --tar=* | --ta=* | --t=*) + target_alias=$ac_optarg ;; + + -v | -verbose | --verbose | --verbos | --verbo | --verb) + verbose=yes ;; + + -version | --version | --versio | --versi | --vers | -V) + ac_init_version=: ;; + + -with-* | --with-*) + ac_package=`expr "x$ac_option" : 'x-*with-\([^=]*\)'` + # Reject names that are not valid shell variable names. + expr "x$ac_package" : ".*[^-_$as_cr_alnum]" >/dev/null && + { echo "$as_me: error: invalid package name: $ac_package" >&2 + { (exit 1); exit 1; }; } + ac_package=`echo $ac_package| sed 's/-/_/g'` + case $ac_option in + *=*) ac_optarg=`echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"`;; + *) ac_optarg=yes ;; + esac + eval "with_$ac_package='$ac_optarg'" ;; + + -without-* | --without-*) + ac_package=`expr "x$ac_option" : 'x-*without-\(.*\)'` + # Reject names that are not valid shell variable names. + expr "x$ac_package" : ".*[^-_$as_cr_alnum]" >/dev/null && + { echo "$as_me: error: invalid package name: $ac_package" >&2 + { (exit 1); exit 1; }; } + ac_package=`echo $ac_package | sed 's/-/_/g'` + eval "with_$ac_package=no" ;; + + --x) + # Obsolete; use --with-x. + with_x=yes ;; + + -x-includes | --x-includes | --x-include | --x-includ | --x-inclu \ + | --x-incl | --x-inc | --x-in | --x-i) + ac_prev=x_includes ;; + -x-includes=* | --x-includes=* | --x-include=* | --x-includ=* | --x-inclu=* \ + | --x-incl=* | --x-inc=* | --x-in=* | --x-i=*) + x_includes=$ac_optarg ;; + + -x-libraries | --x-libraries | --x-librarie | --x-librari \ + | --x-librar | --x-libra | --x-libr | --x-lib | --x-li | --x-l) + ac_prev=x_libraries ;; + -x-libraries=* | --x-libraries=* | --x-librarie=* | --x-librari=* \ + | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*) + x_libraries=$ac_optarg ;; + + -*) { echo "$as_me: error: unrecognized option: $ac_option +Try \`$0 --help' for more information." >&2 + { (exit 1); exit 1; }; } + ;; + + *=*) + ac_envvar=`expr "x$ac_option" : 'x\([^=]*\)='` + # Reject names that are not valid shell variable names. + expr "x$ac_envvar" : ".*[^_$as_cr_alnum]" >/dev/null && + { echo "$as_me: error: invalid variable name: $ac_envvar" >&2 + { (exit 1); exit 1; }; } + ac_optarg=`echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` + eval "$ac_envvar='$ac_optarg'" + export $ac_envvar ;; + + *) + # FIXME: should be removed in autoconf 3.0. + echo "$as_me: WARNING: you should use --build, --host, --target" >&2 + expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null && + echo "$as_me: WARNING: invalid host type: $ac_option" >&2 + : ${build_alias=$ac_option} ${host_alias=$ac_option} ${target_alias=$ac_option} + ;; + + esac +done + +if test -n "$ac_prev"; then + ac_option=--`echo $ac_prev | sed 's/_/-/g'` + { echo "$as_me: error: missing argument to $ac_option" >&2 + { (exit 1); exit 1; }; } +fi + +# Be sure to have absolute paths. +for ac_var in exec_prefix prefix +do + eval ac_val=$`echo $ac_var` + case $ac_val in + [\\/$]* | ?:[\\/]* | NONE | '' ) ;; + *) { echo "$as_me: error: expected an absolute path for --$ac_var: $ac_val" >&2 + { (exit 1); exit 1; }; };; + esac +done + +# Be sure to have absolute paths. +for ac_var in bindir sbindir libexecdir datarootdir datadir sysconfdir sharedstatedir \ + localstatedir libdir includedir oldincludedir infodir mandir +do + eval ac_val=$`echo $ac_var` + case $ac_val in + [\\/$]* | ?:[\\/]* ) ;; + *) { echo "$as_me: error: expected an absolute path for --$ac_var: $ac_val" >&2 + { (exit 1); exit 1; }; };; + esac +done + +# There might be people who depend on the old broken behavior: `$host' +# used to hold the argument of --host etc. +build=$build_alias +host=$host_alias +target=$target_alias + +# FIXME: should be removed in autoconf 3.0. +if test "x$host_alias" != x; then + if test "x$build_alias" = x; then + cross_compiling=maybe + echo "$as_me: WARNING: If you wanted to set the --build type, don't use --host. + If a cross compiler is detected then cross compile mode will be used." >&2 + elif test "x$build_alias" != "x$host_alias"; then + cross_compiling=yes + fi +fi + +ac_tool_prefix= +test -n "$host_alias" && ac_tool_prefix=$host_alias- + +test "$silent" = yes && exec 6>/dev/null + +# Find the source files, if location was not specified. +if test -z "$srcdir"; then + ac_srcdir_defaulted=yes + # Try the directory containing this script, then its parent. + ac_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 "$as_me: error: cannot find sources in $ac_confdir or .." >&2 + { (exit 1); exit 1; }; } + else + { echo "$as_me: error: cannot find sources in $srcdir" >&2 + { (exit 1); exit 1; }; } + fi +fi +srcdir=`echo "$srcdir" | sed 's%\([^\\/]\)[\\/]*$%\1%'` +ac_env_build_alias_set=${build_alias+set} +ac_env_build_alias_value=$build_alias +ac_cv_env_build_alias_set=${build_alias+set} +ac_cv_env_build_alias_value=$build_alias +ac_env_host_alias_set=${host_alias+set} +ac_env_host_alias_value=$host_alias +ac_cv_env_host_alias_set=${host_alias+set} +ac_cv_env_host_alias_value=$host_alias +ac_env_target_alias_set=${target_alias+set} +ac_env_target_alias_value=$target_alias +ac_cv_env_target_alias_set=${target_alias+set} +ac_cv_env_target_alias_value=$target_alias +ac_env_CC_set=${CC+set} +ac_env_CC_value=$CC +ac_cv_env_CC_set=${CC+set} +ac_cv_env_CC_value=$CC +ac_env_CFLAGS_set=${CFLAGS+set} +ac_env_CFLAGS_value=$CFLAGS +ac_cv_env_CFLAGS_set=${CFLAGS+set} +ac_cv_env_CFLAGS_value=$CFLAGS +ac_env_LDFLAGS_set=${LDFLAGS+set} +ac_env_LDFLAGS_value=$LDFLAGS +ac_cv_env_LDFLAGS_set=${LDFLAGS+set} +ac_cv_env_LDFLAGS_value=$LDFLAGS +ac_env_CPPFLAGS_set=${CPPFLAGS+set} +ac_env_CPPFLAGS_value=$CPPFLAGS +ac_cv_env_CPPFLAGS_set=${CPPFLAGS+set} +ac_cv_env_CPPFLAGS_value=$CPPFLAGS +ac_env_CPP_set=${CPP+set} +ac_env_CPP_value=$CPP +ac_cv_env_CPP_set=${CPP+set} +ac_cv_env_CPP_value=$CPP + +# +# Report the --help message. +# +if test "$ac_init_help" = "long"; then + # Omit some internal or obsolete options to make the list less imposing. + # This message is too long to be a string in the A/UX 3.1 sh. + cat < if you have libraries in a + nonstandard directory + CPPFLAGS C/C++ preprocessor flags, e.g. -I if you have + headers in a nonstandard directory + CPP C preprocessor + +Use these variables to override the choices made by `configure' or to help +it to find libraries and programs with nonstandard names/locations. + +EOF +fi + +if test "$ac_init_help" = "recursive"; then + # If there are subdirs, report their specific --help. + ac_popdir=`pwd` + for ac_subdir in : $ac_subdirs_all; do test "x$ac_subdir" = x: && continue + cd $ac_subdir + # A "../" for each directory in /$ac_subdir. + ac_dots=`echo $ac_subdir | + sed 's,^\./,,;s,[^/]$,&/,;s,[^/]*/,../,g'` + + case $srcdir in + .) # No --srcdir option. We are building in place. + ac_sub_srcdir=$srcdir ;; + [\\/]* | ?:[\\/]* ) # Absolute path. + ac_sub_srcdir=$srcdir/$ac_subdir ;; + *) # Relative path. + ac_sub_srcdir=$ac_dots$srcdir/$ac_subdir ;; + esac + + # Check for guested configure; otherwise get Cygnus style configure. + if test -f $ac_sub_srcdir/configure.gnu; then + echo + $SHELL $ac_sub_srcdir/configure.gnu --help=recursive + elif test -f $ac_sub_srcdir/configure; then + echo + $SHELL $ac_sub_srcdir/configure --help=recursive + elif test -f $ac_sub_srcdir/configure.ac || + test -f $ac_sub_srcdir/configure.in; then + echo + $ac_configure --help + else + echo "$as_me: WARNING: no configuration information is in $ac_subdir" >&2 + fi + cd $ac_popdir + done +fi + +test -n "$ac_init_help" && exit 0 +if $ac_init_version; then + cat <<\EOF + +Copyright 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001 +Free Software Foundation, Inc. +This configure script is free software; the Free Software Foundation +gives unlimited permission to copy, distribute and modify it. +EOF + exit 0 +fi +exec 5>config.log +cat >&5 </dev/null | sed 1q` +uname -m = `(uname -m) 2>/dev/null || echo unknown` +uname -r = `(uname -r) 2>/dev/null || echo unknown` +uname -s = `(uname -s) 2>/dev/null || echo unknown` +uname -v = `(uname -v) 2>/dev/null || echo unknown` + +/usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null || echo unknown` +/bin/uname -X = `(/bin/uname -X) 2>/dev/null || echo unknown` + +/bin/arch = `(/bin/arch) 2>/dev/null || echo unknown` +/usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null || echo unknown` +/usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null || echo unknown` +hostinfo = `(hostinfo) 2>/dev/null || echo unknown` +/bin/machine = `(/bin/machine) 2>/dev/null || echo unknown` +/usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null || echo unknown` +/bin/universe = `(/bin/universe) 2>/dev/null || echo unknown` + +PATH = $PATH + +_ASUNAME +} >&5 + +cat >&5 <\?\"\']*) + ac_arg=`echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` + ac_configure_args="$ac_configure_args$ac_sep'$ac_arg'" + ac_sep=" " ;; + *) ac_configure_args="$ac_configure_args$ac_sep$ac_arg" + ac_sep=" " ;; + esac + # Get rid of the leading space. +done + +# 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. +trap 'exit_status=$? + # Save into config.log some information that might help in debugging. + echo >&5 + echo "## ----------------- ##" >&5 + echo "## Cache variables. ##" >&5 + echo "## ----------------- ##" >&5 + echo >&5 + # The following way of writing the cache mishandles newlines in values, +{ + (set) 2>&1 | + case `(ac_space='"'"' '"'"'; set | grep ac_space) 2>&1` in + *ac_space=\ *) + sed -n \ + "s/'"'"'/'"'"'\\\\'"'"''"'"'/g; + s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='"'"'\\2'"'"'/p" + ;; + *) + sed -n \ + "s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1=\\2/p" + ;; + esac; +} >&5 + sed "/^$/d" confdefs.h >conftest.log + if test -s conftest.log; then + echo >&5 + echo "## ------------ ##" >&5 + echo "## confdefs.h. ##" >&5 + echo "## ------------ ##" >&5 + echo >&5 + cat conftest.log >&5 + fi + (echo; echo) >&5 + test "$ac_signal" != 0 && + echo "$as_me: caught signal $ac_signal" >&5 + echo "$as_me: exit $exit_status" >&5 + rm -rf conftest* confdefs* core core.* *.core conf$$* $ac_clean_files && + exit $exit_status + ' 0 +for ac_signal in 1 2 13 15; do + trap 'ac_signal='$ac_signal'; { (exit 1); exit 1; }' $ac_signal +done +ac_signal=0 + +# confdefs.h avoids OS command line length limits that DEFS can exceed. +rm -rf conftest* confdefs.h +# AIX cpp loses on an empty file, so make sure it contains at least a newline. +echo >confdefs.h + +# Let the site file select an alternate cache file if it wants to. +# Prefer explicitly selected file to automatically selected ones. +if test -z "$CONFIG_SITE"; then + if test "x$prefix" != xNONE; then + CONFIG_SITE="$prefix/share/config.site $prefix/etc/config.site" + else + CONFIG_SITE="$ac_default_prefix/share/config.site $ac_default_prefix/etc/config.site" + fi +fi +for ac_site_file in $CONFIG_SITE; do + if test -r "$ac_site_file"; then + { echo "$as_me:940: loading site script $ac_site_file" >&5 +echo "$as_me: loading site script $ac_site_file" >&6;} + cat "$ac_site_file" >&5 + . "$ac_site_file" + fi +done + +if test -r "$cache_file"; then + # Some versions of bash will fail to source /dev/null (special + # files actually), so we avoid doing that. + if test -f "$cache_file"; then + { echo "$as_me:951: loading cache $cache_file" >&5 +echo "$as_me: loading cache $cache_file" >&6;} + case $cache_file in + [\\/]* | ?:[\\/]* ) . $cache_file;; + *) . ./$cache_file;; + esac + fi +else + { echo "$as_me:959: creating cache $cache_file" >&5 +echo "$as_me: creating cache $cache_file" >&6;} + >$cache_file +fi + +# Check that the precious variables saved in the cache have kept the same +# value. +ac_cache_corrupted=false +for ac_var in `(set) 2>&1 | + sed -n 's/^ac_env_\([a-zA-Z_0-9]*\)_set=.*/\1/p'`; do + eval ac_old_set=\$ac_cv_env_${ac_var}_set + eval ac_new_set=\$ac_env_${ac_var}_set + eval ac_old_val="\$ac_cv_env_${ac_var}_value" + eval ac_new_val="\$ac_env_${ac_var}_value" + case $ac_old_set,$ac_new_set in + set,) + { echo "$as_me:975: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5 +echo "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;} + ac_cache_corrupted=: ;; + ,set) + { echo "$as_me:979: error: \`$ac_var' was not set in the previous run" >&5 +echo "$as_me: error: \`$ac_var' was not set in the previous run" >&2;} + ac_cache_corrupted=: ;; + ,);; + *) + if test "x$ac_old_val" != "x$ac_new_val"; then + { echo "$as_me:985: error: \`$ac_var' has changed since the previous run:" >&5 +echo "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;} + { echo "$as_me:987: former value: $ac_old_val" >&5 +echo "$as_me: former value: $ac_old_val" >&2;} + { echo "$as_me:989: current value: $ac_new_val" >&5 +echo "$as_me: current value: $ac_new_val" >&2;} + ac_cache_corrupted=: + fi;; + esac + # Pass precious variables to config.status. It doesn't matter if + # we pass some twice (in addition to the command line arguments). + if test "$ac_new_set" = set; then + case $ac_new_val in + *" "*|*" "*|*[\[\]\~\#\$\^\&\*\(\)\{\}\\\|\;\<\>\?\"\']*) + ac_arg=$ac_var=`echo "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` + ac_configure_args="$ac_configure_args '$ac_arg'" + ;; + *) ac_configure_args="$ac_configure_args $ac_var=$ac_new_val" + ;; + esac + fi +done +if $ac_cache_corrupted; then + { echo "$as_me:1008: error: changes in the environment can compromise the build" >&5 +echo "$as_me: error: changes in the environment can compromise the build" >&2;} + { { echo "$as_me:1010: error: run \`make distclean' and/or \`rm $cache_file' and start over" >&5 +echo "$as_me: error: run \`make distclean' and/or \`rm $cache_file' and start over" >&2;} + { (exit 1); exit 1; }; } +fi + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu +ac_main_return=return + +case `echo "testing\c" 2>/dev/null; echo 1,2,3`,`echo -n testing 2>/dev/null; echo 1,2,3` in + *c*,-n*) ECHO_N= ECHO_C= # newlines do not sed ;-) only broken shells would use this case anyway + ECHO_T=' ' ;; + *c*,* ) ECHO_N=-n ECHO_C= ECHO_T= ;; + *) ECHO_N= ECHO_C='\c' ECHO_T= ;; +esac +echo "#! $SHELL" >conftest.sh +echo "exit 0" >>conftest.sh +chmod +x conftest.sh +if { (echo "$as_me:1031: PATH=\".;.\"; conftest.sh") >&5 + (PATH=".;."; conftest.sh) 2>&5 + ac_status=$? + echo "$as_me:1034: \$? = $ac_status" >&5 + (exit $ac_status); }; then + ac_path_separator=';' +else + ac_path_separator=: +fi +PATH_SEPARATOR="$ac_path_separator" +rm -f conftest.sh + +ac_config_headers="$ac_config_headers dlg_config.h:config.hin" + +test "$program_prefix" != NONE && + program_transform_name="s,^,$program_prefix,;$program_transform_name" +# Use a double $ so make ignores it. +test "$program_suffix" != NONE && + program_transform_name="s,\$,$program_suffix,;$program_transform_name" +# Double any \ or $. echo might interpret backslashes. +# By default was `s,x,x', remove it if useless. +cat <<\_ACEOF >conftest.sed +s/[\\$]/&&/g;s/;s,x,x,$// +_ACEOF +program_transform_name=`echo $program_transform_name | sed -f conftest.sed` +rm conftest.sed + +DESTDIR= + +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_main_return=return +if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args. +set dummy ${ac_tool_prefix}gcc; ac_word=$2 +echo "$as_me:1069: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_CC+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else + ac_save_IFS=$IFS; IFS=$ac_path_separator +ac_dummy="$PATH" +for ac_dir in $ac_dummy; do + IFS=$ac_save_IFS + test -z "$ac_dir" && ac_dir=. + $as_executable_p "$ac_dir/$ac_word" || continue +ac_cv_prog_CC="${ac_tool_prefix}gcc" +echo "$as_me:1084: found $ac_dir/$ac_word" >&5 +break +done + +fi +fi +CC=$ac_cv_prog_CC +if test -n "$CC"; then + echo "$as_me:1092: result: $CC" >&5 +echo "${ECHO_T}$CC" >&6 +else + echo "$as_me:1095: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + +fi +if test -z "$ac_cv_prog_CC"; then + ac_ct_CC=$CC + # Extract the first word of "gcc", so it can be a program name with args. +set dummy gcc; ac_word=$2 +echo "$as_me:1104: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_ac_ct_CC+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$ac_ct_CC"; then + ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. +else + ac_save_IFS=$IFS; IFS=$ac_path_separator +ac_dummy="$PATH" +for ac_dir in $ac_dummy; do + IFS=$ac_save_IFS + test -z "$ac_dir" && ac_dir=. + $as_executable_p "$ac_dir/$ac_word" || continue +ac_cv_prog_ac_ct_CC="gcc" +echo "$as_me:1119: found $ac_dir/$ac_word" >&5 +break +done + +fi +fi +ac_ct_CC=$ac_cv_prog_ac_ct_CC +if test -n "$ac_ct_CC"; then + echo "$as_me:1127: result: $ac_ct_CC" >&5 +echo "${ECHO_T}$ac_ct_CC" >&6 +else + echo "$as_me:1130: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + CC=$ac_ct_CC +else + CC="$ac_cv_prog_CC" +fi + +if test -z "$CC"; then + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args. +set dummy ${ac_tool_prefix}cc; ac_word=$2 +echo "$as_me:1143: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_CC+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else + ac_save_IFS=$IFS; IFS=$ac_path_separator +ac_dummy="$PATH" +for ac_dir in $ac_dummy; do + IFS=$ac_save_IFS + test -z "$ac_dir" && ac_dir=. + $as_executable_p "$ac_dir/$ac_word" || continue +ac_cv_prog_CC="${ac_tool_prefix}cc" +echo "$as_me:1158: found $ac_dir/$ac_word" >&5 +break +done + +fi +fi +CC=$ac_cv_prog_CC +if test -n "$CC"; then + echo "$as_me:1166: result: $CC" >&5 +echo "${ECHO_T}$CC" >&6 +else + echo "$as_me:1169: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + +fi +if test -z "$ac_cv_prog_CC"; then + ac_ct_CC=$CC + # Extract the first word of "cc", so it can be a program name with args. +set dummy cc; ac_word=$2 +echo "$as_me:1178: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_ac_ct_CC+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$ac_ct_CC"; then + ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. +else + ac_save_IFS=$IFS; IFS=$ac_path_separator +ac_dummy="$PATH" +for ac_dir in $ac_dummy; do + IFS=$ac_save_IFS + test -z "$ac_dir" && ac_dir=. + $as_executable_p "$ac_dir/$ac_word" || continue +ac_cv_prog_ac_ct_CC="cc" +echo "$as_me:1193: found $ac_dir/$ac_word" >&5 +break +done + +fi +fi +ac_ct_CC=$ac_cv_prog_ac_ct_CC +if test -n "$ac_ct_CC"; then + echo "$as_me:1201: result: $ac_ct_CC" >&5 +echo "${ECHO_T}$ac_ct_CC" >&6 +else + echo "$as_me:1204: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + CC=$ac_ct_CC +else + CC="$ac_cv_prog_CC" +fi + +fi +if test -z "$CC"; then + # Extract the first word of "cc", so it can be a program name with args. +set dummy cc; ac_word=$2 +echo "$as_me:1217: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_CC+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else + ac_prog_rejected=no + ac_save_IFS=$IFS; IFS=$ac_path_separator +ac_dummy="$PATH" +for ac_dir in $ac_dummy; do + IFS=$ac_save_IFS + test -z "$ac_dir" && ac_dir=. + $as_executable_p "$ac_dir/$ac_word" || continue +if test "$ac_dir/$ac_word" = "/usr/ucb/cc"; then + ac_prog_rejected=yes + continue +fi +ac_cv_prog_CC="cc" +echo "$as_me:1237: found $ac_dir/$ac_word" >&5 +break +done + +if test $ac_prog_rejected = yes; then + # We found a bogon in the path, so make sure we never use it. + set dummy $ac_cv_prog_CC + shift + if test $# != 0; then + # We chose a different compiler from the bogus one. + # However, it has the same basename, so the bogon will be chosen + # first if we set CC to just the basename; use the full file name. + shift + set dummy "$ac_dir/$ac_word" ${1+"$@"} + shift + ac_cv_prog_CC="$@" + fi +fi +fi +fi +CC=$ac_cv_prog_CC +if test -n "$CC"; then + echo "$as_me:1259: result: $CC" >&5 +echo "${ECHO_T}$CC" >&6 +else + echo "$as_me:1262: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + +fi +if test -z "$CC"; then + if test -n "$ac_tool_prefix"; then + for ac_prog in cl + do + # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. +set dummy $ac_tool_prefix$ac_prog; ac_word=$2 +echo "$as_me:1273: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_CC+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else + ac_save_IFS=$IFS; IFS=$ac_path_separator +ac_dummy="$PATH" +for ac_dir in $ac_dummy; do + IFS=$ac_save_IFS + test -z "$ac_dir" && ac_dir=. + $as_executable_p "$ac_dir/$ac_word" || continue +ac_cv_prog_CC="$ac_tool_prefix$ac_prog" +echo "$as_me:1288: found $ac_dir/$ac_word" >&5 +break +done + +fi +fi +CC=$ac_cv_prog_CC +if test -n "$CC"; then + echo "$as_me:1296: result: $CC" >&5 +echo "${ECHO_T}$CC" >&6 +else + echo "$as_me:1299: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + test -n "$CC" && break + done +fi +if test -z "$CC"; then + ac_ct_CC=$CC + for ac_prog in cl +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +echo "$as_me:1312: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_ac_ct_CC+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$ac_ct_CC"; then + ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. +else + ac_save_IFS=$IFS; IFS=$ac_path_separator +ac_dummy="$PATH" +for ac_dir in $ac_dummy; do + IFS=$ac_save_IFS + test -z "$ac_dir" && ac_dir=. + $as_executable_p "$ac_dir/$ac_word" || continue +ac_cv_prog_ac_ct_CC="$ac_prog" +echo "$as_me:1327: found $ac_dir/$ac_word" >&5 +break +done + +fi +fi +ac_ct_CC=$ac_cv_prog_ac_ct_CC +if test -n "$ac_ct_CC"; then + echo "$as_me:1335: result: $ac_ct_CC" >&5 +echo "${ECHO_T}$ac_ct_CC" >&6 +else + echo "$as_me:1338: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + test -n "$ac_ct_CC" && break +done + + CC=$ac_ct_CC +fi + +fi + +test -z "$CC" && { { echo "$as_me:1350: error: no acceptable cc found in \$PATH" >&5 +echo "$as_me: error: no acceptable cc found in \$PATH" >&2;} + { (exit 1); exit 1; }; } + +# Provide some information about the compiler. +echo "$as_me:1355:" \ + "checking for C compiler version" >&5 +ac_compiler=`set X $ac_compile; echo $2` +{ (eval echo "$as_me:1358: \"$ac_compiler --version &5\"") >&5 + (eval $ac_compiler --version &5) 2>&5 + ac_status=$? + echo "$as_me:1361: \$? = $ac_status" >&5 + (exit $ac_status); } +{ (eval echo "$as_me:1363: \"$ac_compiler -v &5\"") >&5 + (eval $ac_compiler -v &5) 2>&5 + ac_status=$? + echo "$as_me:1366: \$? = $ac_status" >&5 + (exit $ac_status); } +{ (eval echo "$as_me:1368: \"$ac_compiler -V &5\"") >&5 + (eval $ac_compiler -V &5) 2>&5 + ac_status=$? + echo "$as_me:1371: \$? = $ac_status" >&5 + (exit $ac_status); } + +cat >conftest.$ac_ext <<_ACEOF +#line 1375 "configure" +#include "confdefs.h" + +int +main (void) +{ + + ; + return 0; +} +_ACEOF +ac_clean_files_save=$ac_clean_files +ac_clean_files="$ac_clean_files a.out a.exe" +# Try to create an executable without -o first, disregard a.out. +# It will help us diagnose broken compilers, and finding out an intuition +# of exeext. +echo "$as_me:1391: checking for C compiler default output" >&5 +echo $ECHO_N "checking for C compiler default output... $ECHO_C" >&6 +ac_link_default=`echo "$ac_link" | sed 's/ -o *conftest[^ ]*//'` +if { (eval echo "$as_me:1394: \"$ac_link_default\"") >&5 + (eval $ac_link_default) 2>&5 + ac_status=$? + echo "$as_me:1397: \$? = $ac_status" >&5 + (exit $ac_status); }; then + # Find the output, starting from the most likely. This scheme is +# not robust to junk in `.', hence go to wildcards (a.*) only as a last +# resort. +for ac_file in `ls a.exe conftest.exe 2>/dev/null; + ls a.out conftest 2>/dev/null; + ls a.* conftest.* 2>/dev/null`; do + case $ac_file in + *.$ac_ext | *.xcoff | *.tds | *.d | *.dbg | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.o | *.obj ) ;; + a.out ) # We found the default executable, but exeext='' is most + # certainly right. + break;; + *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` + # FIXME: I believe we export ac_cv_exeext for Libtool --akim. + export ac_cv_exeext + break;; + * ) break;; + esac +done +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +{ { echo "$as_me:1420: error: C compiler cannot create executables" >&5 +echo "$as_me: error: C compiler cannot create executables" >&2;} + { (exit 77); exit 77; }; } +fi + +ac_exeext=$ac_cv_exeext +echo "$as_me:1426: result: $ac_file" >&5 +echo "${ECHO_T}$ac_file" >&6 + +# Check the compiler produces executables we can run. If not, either +# the compiler is broken, or we cross compile. +echo "$as_me:1431: checking whether the C compiler works" >&5 +echo $ECHO_N "checking whether the C compiler works... $ECHO_C" >&6 +# FIXME: These cross compiler hacks should be removed for Autoconf 3.0 +# If not cross compiling, check that we can run a simple program. +if test "$cross_compiling" != yes; then + if { ac_try='./$ac_file' + { (eval echo "$as_me:1437: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:1440: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + cross_compiling=no + else + if test "$cross_compiling" = maybe; then + cross_compiling=yes + else + { { echo "$as_me:1447: error: cannot run C compiled programs. +If you meant to cross compile, use \`--host'." >&5 +echo "$as_me: error: cannot run C compiled programs. +If you meant to cross compile, use \`--host'." >&2;} + { (exit 1); exit 1; }; } + fi + fi +fi +echo "$as_me:1455: result: yes" >&5 +echo "${ECHO_T}yes" >&6 + +rm -f a.out a.exe conftest$ac_cv_exeext +ac_clean_files=$ac_clean_files_save +# Check the compiler produces executables we can run. If not, either +# the compiler is broken, or we cross compile. +echo "$as_me:1462: checking whether we are cross compiling" >&5 +echo $ECHO_N "checking whether we are cross compiling... $ECHO_C" >&6 +echo "$as_me:1464: result: $cross_compiling" >&5 +echo "${ECHO_T}$cross_compiling" >&6 + +echo "$as_me:1467: checking for executable suffix" >&5 +echo $ECHO_N "checking for executable suffix... $ECHO_C" >&6 +if { (eval echo "$as_me:1469: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:1472: \$? = $ac_status" >&5 + (exit $ac_status); }; then + # If both `conftest.exe' and `conftest' are `present' (well, observable) +# catch `conftest.exe'. For instance with Cygwin, `ls conftest' will +# work properly (i.e., refer to `conftest.exe'), while it won't with +# `rm'. +for ac_file in `(ls conftest.exe; ls conftest; ls conftest.*) 2>/dev/null`; do + case $ac_file in + *.$ac_ext | *.xcoff | *.tds | *.d | *.dbg | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.o | *.obj ) ;; + *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` + export ac_cv_exeext + break;; + * ) break;; + esac +done +else + { { echo "$as_me:1488: error: cannot compute EXEEXT: cannot compile and link" >&5 +echo "$as_me: error: cannot compute EXEEXT: cannot compile and link" >&2;} + { (exit 1); exit 1; }; } +fi + +rm -f conftest$ac_cv_exeext +echo "$as_me:1494: result: $ac_cv_exeext" >&5 +echo "${ECHO_T}$ac_cv_exeext" >&6 + +rm -f conftest.$ac_ext +EXEEXT=$ac_cv_exeext +ac_exeext=$EXEEXT +echo "$as_me:1500: checking for object suffix" >&5 +echo $ECHO_N "checking for object suffix... $ECHO_C" >&6 +if test "${ac_cv_objext+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +#line 1506 "configure" +#include "confdefs.h" + +int +main (void) +{ + + ; + return 0; +} +_ACEOF +rm -f conftest.o conftest.obj +if { (eval echo "$as_me:1518: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:1521: \$? = $ac_status" >&5 + (exit $ac_status); }; then + for ac_file in `(ls conftest.o conftest.obj; ls conftest.*) 2>/dev/null`; do + case $ac_file in + *.$ac_ext | *.xcoff | *.tds | *.d | *.dbg | *.pdb | *.xSYM | *.map | *.inf ) ;; + *) ac_cv_objext=`expr "$ac_file" : '.*\.\(.*\)'` + break;; + esac +done +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +{ { echo "$as_me:1533: error: cannot compute OBJEXT: cannot compile" >&5 +echo "$as_me: error: cannot compute OBJEXT: cannot compile" >&2;} + { (exit 1); exit 1; }; } +fi + +rm -f conftest.$ac_cv_objext conftest.$ac_ext +fi +echo "$as_me:1540: result: $ac_cv_objext" >&5 +echo "${ECHO_T}$ac_cv_objext" >&6 +OBJEXT=$ac_cv_objext +ac_objext=$OBJEXT +echo "$as_me:1544: checking whether we are using the GNU C compiler" >&5 +echo $ECHO_N "checking whether we are using the GNU C compiler... $ECHO_C" >&6 +if test "${ac_cv_c_compiler_gnu+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +#line 1550 "configure" +#include "confdefs.h" + +int +main (void) +{ +#ifndef __GNUC__ + choke me +#endif + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:1565: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:1568: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:1571: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:1574: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_compiler_gnu=yes +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +ac_compiler_gnu=no +fi +rm -f conftest.$ac_objext conftest.$ac_ext +ac_cv_c_compiler_gnu=$ac_compiler_gnu + +fi +echo "$as_me:1586: result: $ac_cv_c_compiler_gnu" >&5 +echo "${ECHO_T}$ac_cv_c_compiler_gnu" >&6 +GCC=`test $ac_compiler_gnu = yes && echo yes` +ac_test_CFLAGS=${CFLAGS+set} +ac_save_CFLAGS=$CFLAGS +CFLAGS="-g" +echo "$as_me:1592: checking whether $CC accepts -g" >&5 +echo $ECHO_N "checking whether $CC accepts -g... $ECHO_C" >&6 +if test "${ac_cv_prog_cc_g+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +#line 1598 "configure" +#include "confdefs.h" + +int +main (void) +{ + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:1610: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:1613: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:1616: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:1619: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_prog_cc_g=yes +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +ac_cv_prog_cc_g=no +fi +rm -f conftest.$ac_objext conftest.$ac_ext +fi +echo "$as_me:1629: result: $ac_cv_prog_cc_g" >&5 +echo "${ECHO_T}$ac_cv_prog_cc_g" >&6 +if test "$ac_test_CFLAGS" = set; then + CFLAGS=$ac_save_CFLAGS +elif test $ac_cv_prog_cc_g = yes; then + if test "$GCC" = yes; then + CFLAGS="-g -O2" + else + CFLAGS="-g" + fi +else + if test "$GCC" = yes; then + CFLAGS="-O2" + else + CFLAGS= + fi +fi +# Some people use a C++ compiler to compile C. Since we use `exit', +# in C++ we need to declare it. In case someone uses the same compiler +# for both compiling C and C++ we need to have the C++ compiler decide +# the declaration of exit, since it's the most demanding environment. +cat >conftest.$ac_ext <<_ACEOF +#ifndef __cplusplus + choke me +#endif +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:1656: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:1659: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:1662: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:1665: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + for ac_declaration in \ + ''\ + '#include ' \ + 'extern "C" void std::exit (int) throw (); using std::exit;' \ + 'extern "C" void std::exit (int); using std::exit;' \ + 'extern "C" void exit (int) throw ();' \ + 'extern "C" void exit (int);' \ + 'void exit (int);' +do + cat >conftest.$ac_ext <<_ACEOF +#line 1677 "configure" +#include "confdefs.h" +#include +$ac_declaration +int +main (void) +{ +exit (42); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:1690: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:1693: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:1696: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:1699: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + : +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +continue +fi +rm -f conftest.$ac_objext conftest.$ac_ext + cat >conftest.$ac_ext <<_ACEOF +#line 1709 "configure" +#include "confdefs.h" +$ac_declaration +int +main (void) +{ +exit (42); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:1721: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:1724: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:1727: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:1730: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + break +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +fi +rm -f conftest.$ac_objext conftest.$ac_ext +done +rm -rf conftest* +if test -n "$ac_declaration"; then + echo '#ifdef __cplusplus' >>confdefs.h + echo $ac_declaration >>confdefs.h + echo '#endif' >>confdefs.h +fi + +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +fi +rm -f conftest.$ac_objext conftest.$ac_ext +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu +ac_main_return=return + +GCC_VERSION=none +if test "$GCC" = yes ; then + echo "$as_me:1760: checking version of $CC" >&5 +echo $ECHO_N "checking version of $CC... $ECHO_C" >&6 + GCC_VERSION="`${CC} --version 2>/dev/null | sed -e '2,$d' -e 's/^.*(GCC[^)]*) //' -e 's/^.*(Debian[^)]*) //' -e 's/^[^0-9.]*//' -e 's/[^0-9.].*//'`" + test -z "$GCC_VERSION" && GCC_VERSION=unknown + echo "$as_me:1764: result: $GCC_VERSION" >&5 +echo "${ECHO_T}$GCC_VERSION" >&6 +fi + +echo "$as_me:1768: checking for $CC option to accept ANSI C" >&5 +echo $ECHO_N "checking for $CC option to accept ANSI C... $ECHO_C" >&6 +if test "${ac_cv_prog_cc_stdc+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_cv_prog_cc_stdc=no +ac_save_CC=$CC +cat >conftest.$ac_ext <<_ACEOF +#line 1776 "configure" +#include "confdefs.h" +#include +#include +#include +#include +/* Most of the following tests are stolen from RCS 5.7's src/conf.sh. */ +struct buf { int x; }; +FILE * (*rcsopen) (struct buf *, struct stat *, int); +static char *e (p, i) + char **p; + int i; +{ + return p[i]; +} +static char *f (char * (*g) (char **, int), char **p, ...) +{ + char *s; + va_list v; + va_start (v,p); + s = g (p, va_arg (v,int)); + va_end (v); + return s; +} +int test (int i, double x); +struct s1 {int (*f) (int a);}; +struct s2 {int (*f) (double a);}; +int pairnames (int, char **, FILE *(*)(struct buf *, struct stat *, int), int, int); +int argc; +char **argv; +int +main (void) +{ +return f (e, argv, 0) != argv[0] || f (e, argv, 1) != argv[1]; + ; + return 0; +} +_ACEOF +# Don't try gcc -ansi; that turns off useful extensions and +# breaks some systems' header files. +# AIX -qlanglvl=ansi +# Ultrix and OSF/1 -std1 +# HP-UX 10.20 and later -Ae +# HP-UX older versions -Aa -D_HPUX_SOURCE +# SVR4 -Xc -D__EXTENSIONS__ +for ac_arg in "" -qlanglvl=ansi -std1 -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__" +do + CC="$ac_save_CC $ac_arg" + rm -f conftest.$ac_objext +if { (eval echo "$as_me:1825: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:1828: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:1831: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:1834: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_prog_cc_stdc=$ac_arg +break +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +fi +rm -f conftest.$ac_objext +done +rm -f conftest.$ac_ext conftest.$ac_objext +CC=$ac_save_CC + +fi + +case "x$ac_cv_prog_cc_stdc" in + x|xno) + echo "$as_me:1851: result: none needed" >&5 +echo "${ECHO_T}none needed" >&6 ;; + *) + echo "$as_me:1854: result: $ac_cv_prog_cc_stdc" >&5 +echo "${ECHO_T}$ac_cv_prog_cc_stdc" >&6 + CC="$CC $ac_cv_prog_cc_stdc" ;; +esac + +# This should have been defined by AC_PROG_CC +: ${CC:=cc} + +echo "$as_me:1862: checking \$CC variable" >&5 +echo $ECHO_N "checking \$CC variable... $ECHO_C" >&6 +case "$CC" in +(*[\ \ ]-*) + echo "$as_me:1866: result: broken" >&5 +echo "${ECHO_T}broken" >&6 + { echo "$as_me:1868: WARNING: your environment misuses the CC variable to hold CFLAGS/CPPFLAGS options" >&5 +echo "$as_me: WARNING: your environment misuses the CC variable to hold CFLAGS/CPPFLAGS options" >&2;} + # humor him... + cf_prog=`echo "$CC" | sed -e 's/ / /g' -e 's/[ ]* / /g' -e 's/[ ]*[ ]-[^ ].*//'` + cf_flags=`echo "$CC" | ${AWK:-awk} -v prog="$cf_prog" '{ printf("%s", substr($0,1+length(prog))); }'` + CC="$cf_prog" + for cf_arg in $cf_flags + do + case "x$cf_arg" in + (x-[IUDfgOW]*) + +cf_fix_cppflags=no +cf_new_cflags= +cf_new_cppflags= +cf_new_extra_cppflags= + +for cf_add_cflags in $cf_arg +do +case $cf_fix_cppflags in +(no) + case $cf_add_cflags in + (-undef|-nostdinc*|-I*|-D*|-U*|-E|-P|-C) + case $cf_add_cflags in + (-D*) + cf_tst_cflags=`echo ${cf_add_cflags} |sed -e 's/^-D[^=]*='\''\"[^"]*//'` + + test "x${cf_add_cflags}" != "x${cf_tst_cflags}" \ + && test -z "${cf_tst_cflags}" \ + && cf_fix_cppflags=yes + + if test $cf_fix_cppflags = yes ; then + + test -n "$cf_new_extra_cppflags" && cf_new_extra_cppflags="$cf_new_extra_cppflags " + cf_new_extra_cppflags="${cf_new_extra_cppflags}$cf_add_cflags" + + continue + elif test "${cf_tst_cflags}" = "\"'" ; then + + test -n "$cf_new_extra_cppflags" && cf_new_extra_cppflags="$cf_new_extra_cppflags " + cf_new_extra_cppflags="${cf_new_extra_cppflags}$cf_add_cflags" + + continue + fi + ;; + esac + case "$CPPFLAGS" in + (*$cf_add_cflags) + ;; + (*) + case $cf_add_cflags in + (-D*) + cf_tst_cppflags=`echo "x$cf_add_cflags" | sed -e 's/^...//' -e 's/=.*//'` + +CPPFLAGS=`echo "$CPPFLAGS" | \ + sed -e 's/-[UD]'"$cf_tst_cppflags"'\(=[^ ]*\)\?[ ]/ /g' \ + -e 's/-[UD]'"$cf_tst_cppflags"'\(=[^ ]*\)\?$//g'` + + ;; + esac + + test -n "$cf_new_cppflags" && cf_new_cppflags="$cf_new_cppflags " + cf_new_cppflags="${cf_new_cppflags}$cf_add_cflags" + + ;; + esac + ;; + (*) + + test -n "$cf_new_cflags" && cf_new_cflags="$cf_new_cflags " + cf_new_cflags="${cf_new_cflags}$cf_add_cflags" + + ;; + esac + ;; +(yes) + + test -n "$cf_new_extra_cppflags" && cf_new_extra_cppflags="$cf_new_extra_cppflags " + cf_new_extra_cppflags="${cf_new_extra_cppflags}$cf_add_cflags" + + cf_tst_cflags=`echo ${cf_add_cflags} |sed -e 's/^[^"]*"'\''//'` + + test "x${cf_add_cflags}" != "x${cf_tst_cflags}" \ + && test -z "${cf_tst_cflags}" \ + && cf_fix_cppflags=no + ;; +esac +done + +if test -n "$cf_new_cflags" ; then + + test -n "$CFLAGS" && CFLAGS="$CFLAGS " + CFLAGS="${CFLAGS}$cf_new_cflags" + +fi + +if test -n "$cf_new_cppflags" ; then + + test -n "$CPPFLAGS" && CPPFLAGS="$CPPFLAGS " + CPPFLAGS="${CPPFLAGS}$cf_new_cppflags" + +fi + +if test -n "$cf_new_extra_cppflags" ; then + + test -n "$EXTRA_CPPFLAGS" && EXTRA_CPPFLAGS="$EXTRA_CPPFLAGS " + EXTRA_CPPFLAGS="${EXTRA_CPPFLAGS}$cf_new_extra_cppflags" + +fi + + ;; + (*) + CC="$CC $cf_arg" + ;; + esac + done + test -n "$verbose" && echo " resulting CC: '$CC'" 1>&6 + +echo "${as_me:-configure}:1985: testing resulting CC: '$CC' ..." 1>&5 + + test -n "$verbose" && echo " resulting CFLAGS: '$CFLAGS'" 1>&6 + +echo "${as_me:-configure}:1989: testing resulting CFLAGS: '$CFLAGS' ..." 1>&5 + + test -n "$verbose" && echo " resulting CPPFLAGS: '$CPPFLAGS'" 1>&6 + +echo "${as_me:-configure}:1993: testing resulting CPPFLAGS: '$CPPFLAGS' ..." 1>&5 + + ;; +(*) + echo "$as_me:1997: result: ok" >&5 +echo "${ECHO_T}ok" >&6 + ;; +esac + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu +ac_main_return=return +echo "$as_me:2008: checking how to run the C preprocessor" >&5 +echo $ECHO_N "checking how to run the C preprocessor... $ECHO_C" >&6 +# On Suns, sometimes $CPP names a directory. +if test -n "$CPP" && test -d "$CPP"; then + CPP= +fi +if test -z "$CPP"; then + if test "${ac_cv_prog_CPP+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + # Double quotes because CPP needs to be expanded + for CPP in "$CC -E" "$CC -E -traditional-cpp" "/lib/cpp" + do + ac_preproc_ok=false +for ac_c_preproc_warn_flag in '' yes +do + # Use a header file that comes with gcc, so configuring glibc + # with a fresh cross-compiler works. + # On the NeXT, cc -E runs the code through the compiler's parser, + # not just through cpp. "Syntax error" is here to catch this case. + cat >conftest.$ac_ext <<_ACEOF +#line 2029 "configure" +#include "confdefs.h" +#include + Syntax error +_ACEOF +if { (eval echo "$as_me:2034: \"$ac_cpp conftest.$ac_ext\"") >&5 + (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 + ac_status=$? + egrep -v '^ *\+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:2040: \$? = $ac_status" >&5 + (exit $ac_status); } >/dev/null; then + if test -s conftest.err; then + ac_cpp_err=$ac_c_preproc_warn_flag + else + ac_cpp_err= + fi +else + ac_cpp_err=yes +fi +if test -z "$ac_cpp_err"; then + : +else + echo "$as_me: failed program was:" >&5 + cat conftest.$ac_ext >&5 + # Broken: fails on valid input. +continue +fi +rm -f conftest.err conftest.$ac_ext + + # OK, works on sane cases. Now check whether non-existent headers + # can be detected and how. + cat >conftest.$ac_ext <<_ACEOF +#line 2063 "configure" +#include "confdefs.h" +#include +_ACEOF +if { (eval echo "$as_me:2067: \"$ac_cpp conftest.$ac_ext\"") >&5 + (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 + ac_status=$? + egrep -v '^ *\+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:2073: \$? = $ac_status" >&5 + (exit $ac_status); } >/dev/null; then + if test -s conftest.err; then + ac_cpp_err=$ac_c_preproc_warn_flag + else + ac_cpp_err= + fi +else + ac_cpp_err=yes +fi +if test -z "$ac_cpp_err"; then + # Broken: success on invalid input. +continue +else + echo "$as_me: failed program was:" >&5 + cat conftest.$ac_ext >&5 + # Passes both tests. +ac_preproc_ok=: +break +fi +rm -f conftest.err conftest.$ac_ext + +done +# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. +rm -f conftest.err conftest.$ac_ext +if $ac_preproc_ok; then + break +fi + + done + ac_cv_prog_CPP=$CPP + +fi + CPP=$ac_cv_prog_CPP +else + ac_cv_prog_CPP=$CPP +fi +echo "$as_me:2110: result: $CPP" >&5 +echo "${ECHO_T}$CPP" >&6 +ac_preproc_ok=false +for ac_c_preproc_warn_flag in '' yes +do + # Use a header file that comes with gcc, so configuring glibc + # with a fresh cross-compiler works. + # On the NeXT, cc -E runs the code through the compiler's parser, + # not just through cpp. "Syntax error" is here to catch this case. + cat >conftest.$ac_ext <<_ACEOF +#line 2120 "configure" +#include "confdefs.h" +#include + Syntax error +_ACEOF +if { (eval echo "$as_me:2125: \"$ac_cpp conftest.$ac_ext\"") >&5 + (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 + ac_status=$? + egrep -v '^ *\+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:2131: \$? = $ac_status" >&5 + (exit $ac_status); } >/dev/null; then + if test -s conftest.err; then + ac_cpp_err=$ac_c_preproc_warn_flag + else + ac_cpp_err= + fi +else + ac_cpp_err=yes +fi +if test -z "$ac_cpp_err"; then + : +else + echo "$as_me: failed program was:" >&5 + cat conftest.$ac_ext >&5 + # Broken: fails on valid input. +continue +fi +rm -f conftest.err conftest.$ac_ext + + # OK, works on sane cases. Now check whether non-existent headers + # can be detected and how. + cat >conftest.$ac_ext <<_ACEOF +#line 2154 "configure" +#include "confdefs.h" +#include +_ACEOF +if { (eval echo "$as_me:2158: \"$ac_cpp conftest.$ac_ext\"") >&5 + (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 + ac_status=$? + egrep -v '^ *\+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:2164: \$? = $ac_status" >&5 + (exit $ac_status); } >/dev/null; then + if test -s conftest.err; then + ac_cpp_err=$ac_c_preproc_warn_flag + else + ac_cpp_err= + fi +else + ac_cpp_err=yes +fi +if test -z "$ac_cpp_err"; then + # Broken: success on invalid input. +continue +else + echo "$as_me: failed program was:" >&5 + cat conftest.$ac_ext >&5 + # Passes both tests. +ac_preproc_ok=: +break +fi +rm -f conftest.err conftest.$ac_ext + +done +# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. +rm -f conftest.err conftest.$ac_ext +if $ac_preproc_ok; then + : +else + { { echo "$as_me:2192: error: C preprocessor \"$CPP\" fails sanity check" >&5 +echo "$as_me: error: C preprocessor \"$CPP\" fails sanity check" >&2;} + { (exit 1); exit 1; }; } +fi + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu +ac_main_return=return + +echo "$as_me:2204: checking whether ${MAKE-make} sets \${MAKE}" >&5 +echo $ECHO_N "checking whether ${MAKE-make} sets \${MAKE}... $ECHO_C" >&6 +set dummy ${MAKE-make}; ac_make=`echo "$2" | sed 'y,./+-,__p_,'` +if eval "test \"\${ac_cv_prog_make_${ac_make}_set+set}\" = set"; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.make <<\EOF +all: + @echo 'ac_maketemp="${MAKE}"' +EOF +# GNU make sometimes prints "make[1]: Entering...", which would confuse us. +eval `${MAKE-make} -f conftest.make 2>/dev/null | grep temp=` +if test -n "$ac_maketemp"; then + eval ac_cv_prog_make_${ac_make}_set=yes +else + eval ac_cv_prog_make_${ac_make}_set=no +fi +rm -f conftest.make +fi +if eval "test \"`echo '$ac_cv_prog_make_'${ac_make}_set`\" = yes"; then + echo "$as_me:2224: result: yes" >&5 +echo "${ECHO_T}yes" >&6 + SET_MAKE= +else + echo "$as_me:2228: result: no" >&5 +echo "${ECHO_T}no" >&6 + SET_MAKE="MAKE=${MAKE-make}" +fi + +if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}ranlib", so it can be a program name with args. +set dummy ${ac_tool_prefix}ranlib; ac_word=$2 +echo "$as_me:2236: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_RANLIB+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$RANLIB"; then + ac_cv_prog_RANLIB="$RANLIB" # Let the user override the test. +else + ac_save_IFS=$IFS; IFS=$ac_path_separator +ac_dummy="$PATH" +for ac_dir in $ac_dummy; do + IFS=$ac_save_IFS + test -z "$ac_dir" && ac_dir=. + $as_executable_p "$ac_dir/$ac_word" || continue +ac_cv_prog_RANLIB="${ac_tool_prefix}ranlib" +echo "$as_me:2251: found $ac_dir/$ac_word" >&5 +break +done + +fi +fi +RANLIB=$ac_cv_prog_RANLIB +if test -n "$RANLIB"; then + echo "$as_me:2259: result: $RANLIB" >&5 +echo "${ECHO_T}$RANLIB" >&6 +else + echo "$as_me:2262: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + +fi +if test -z "$ac_cv_prog_RANLIB"; then + ac_ct_RANLIB=$RANLIB + # Extract the first word of "ranlib", so it can be a program name with args. +set dummy ranlib; ac_word=$2 +echo "$as_me:2271: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_ac_ct_RANLIB+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$ac_ct_RANLIB"; then + ac_cv_prog_ac_ct_RANLIB="$ac_ct_RANLIB" # Let the user override the test. +else + ac_save_IFS=$IFS; IFS=$ac_path_separator +ac_dummy="$PATH" +for ac_dir in $ac_dummy; do + IFS=$ac_save_IFS + test -z "$ac_dir" && ac_dir=. + $as_executable_p "$ac_dir/$ac_word" || continue +ac_cv_prog_ac_ct_RANLIB="ranlib" +echo "$as_me:2286: found $ac_dir/$ac_word" >&5 +break +done + + test -z "$ac_cv_prog_ac_ct_RANLIB" && ac_cv_prog_ac_ct_RANLIB=":" +fi +fi +ac_ct_RANLIB=$ac_cv_prog_ac_ct_RANLIB +if test -n "$ac_ct_RANLIB"; then + echo "$as_me:2295: result: $ac_ct_RANLIB" >&5 +echo "${ECHO_T}$ac_ct_RANLIB" >&6 +else + echo "$as_me:2298: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + RANLIB=$ac_ct_RANLIB +else + RANLIB="$ac_cv_prog_RANLIB" +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 + elif test -f $ac_dir/shtool; then + ac_aux_dir=$ac_dir + ac_install_sh="$ac_aux_dir/shtool install -c" + break + fi +done +if test -z "$ac_aux_dir"; then + { { echo "$as_me:2324: error: cannot find install-sh or install.sh in $srcdir $srcdir/.. $srcdir/../.." >&5 +echo "$as_me: error: cannot find install-sh or install.sh in $srcdir $srcdir/.. $srcdir/../.." >&2;} + { (exit 1); exit 1; }; } +fi +ac_config_guess="$SHELL $ac_aux_dir/config.guess" +ac_config_sub="$SHELL $ac_aux_dir/config.sub" +ac_configure="$SHELL $ac_aux_dir/configure" # This should be Cygnus configure. + +# Find a good install program. We prefer a C program (faster), +# so one script is as good as another. But avoid the broken or +# incompatible versions: +# SysV /etc/install, /usr/sbin/install +# SunOS /usr/etc/install +# IRIX /sbin/install +# AIX /bin/install +# AmigaOS /C/install, which installs bootblocks on floppy discs +# AIX 4 /usr/bin/installbsd, which doesn't work without a -g flag +# AFS /usr/afsws/bin/install, which mishandles nonexistent args +# SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff" +# ./install, which can be erroneously created by make from ./install.sh. +echo "$as_me:2344: checking for a BSD compatible install" >&5 +echo $ECHO_N "checking for a BSD compatible install... $ECHO_C" >&6 +if test -z "$INSTALL"; then +if test "${ac_cv_path_install+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_save_IFS=$IFS; IFS=$ac_path_separator + for ac_dir in $PATH; do + IFS=$ac_save_IFS + # Account for people who put trailing slashes in PATH elements. + case $ac_dir/ in + / | ./ | .// | /cC/* \ + | /etc/* | /usr/sbin/* | /usr/etc/* | /sbin/* | /usr/afsws/bin/* \ + | /usr/ucb/* ) ;; + *) + # OSF1 and SCO ODT 3.0 have their own names for install. + # Don't use installbsd from OSF since it installs stuff as root + # by default. + for ac_prog in ginstall scoinst install; do + if $as_executable_p "$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. + : + elif test $ac_prog = install && + grep pwplus "$ac_dir/$ac_prog" >/dev/null 2>&1; then + # program-specific install script used by HP pwplus--don't use. + : + else + ac_cv_path_install="$ac_dir/$ac_prog -c" + break 2 + fi + fi + done + ;; + esac + done + +fi + if test "${ac_cv_path_install+set}" = set; then + INSTALL=$ac_cv_path_install + else + # As a last resort, use the slow shell script. We don't cache a + # path for INSTALL within a source directory, because that will + # break other packages using the cache if that directory is + # removed, or if the path is relative. + INSTALL=$ac_install_sh + fi +fi +echo "$as_me:2393: result: $INSTALL" >&5 +echo "${ECHO_T}$INSTALL" >&6 + +# Use test -z because SunOS4 sh mishandles braces in ${var-val}. +# It thinks the first close brace ends the variable substitution. +test -z "$INSTALL_PROGRAM" && INSTALL_PROGRAM='${INSTALL}' + +test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL}' + +test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644' + +echo "$as_me:2404: checking whether ln -s works" >&5 +echo $ECHO_N "checking whether ln -s works... $ECHO_C" >&6 +LN_S=$as_ln_s +if test "$LN_S" = "ln -s"; then + echo "$as_me:2408: result: yes" >&5 +echo "${ECHO_T}yes" >&6 +else + echo "$as_me:2411: result: no, using $LN_S" >&5 +echo "${ECHO_T}no, using $LN_S" >&6 +fi + +echo "$as_me:2415: checking if $LN_S -f options work" >&5 +echo $ECHO_N "checking if $LN_S -f options work... $ECHO_C" >&6 + +rm -f conf$$.src conf$$dst +echo >conf$$.dst +echo first >conf$$.src +if $LN_S -f conf$$.src conf$$.dst 2>/dev/null; then + cf_prog_ln_sf=yes +else + cf_prog_ln_sf=no +fi +rm -f conf$$.dst conf$$src +echo "$as_me:2427: result: $cf_prog_ln_sf" >&5 +echo "${ECHO_T}$cf_prog_ln_sf" >&6 + +test "$cf_prog_ln_sf" = yes && LN_S="$LN_S -f" + +for ac_prog in lint cppcheck splint +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +echo "$as_me:2436: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_LINT+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$LINT"; then + ac_cv_prog_LINT="$LINT" # Let the user override the test. +else + ac_save_IFS=$IFS; IFS=$ac_path_separator +ac_dummy="$PATH" +for ac_dir in $ac_dummy; do + IFS=$ac_save_IFS + test -z "$ac_dir" && ac_dir=. + $as_executable_p "$ac_dir/$ac_word" || continue +ac_cv_prog_LINT="$ac_prog" +echo "$as_me:2451: found $ac_dir/$ac_word" >&5 +break +done + +fi +fi +LINT=$ac_cv_prog_LINT +if test -n "$LINT"; then + echo "$as_me:2459: result: $LINT" >&5 +echo "${ECHO_T}$LINT" >&6 +else + echo "$as_me:2462: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + test -n "$LINT" && break +done + +# Extract the first word of "groff", so it can be a program name with args. +set dummy groff; ac_word=$2 +echo "$as_me:2471: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_path_GROFF_PATH+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + case $GROFF_PATH in + [\\/]* | ?:[\\/]*) + ac_cv_path_GROFF_PATH="$GROFF_PATH" # Let the user override the test with a path. + ;; + *) + ac_save_IFS=$IFS; IFS=$ac_path_separator +ac_dummy="$PATH" +for ac_dir in $ac_dummy; do + IFS=$ac_save_IFS + test -z "$ac_dir" && ac_dir=. + if $as_executable_p "$ac_dir/$ac_word"; then + ac_cv_path_GROFF_PATH="$ac_dir/$ac_word" + echo "$as_me:2488: found $ac_dir/$ac_word" >&5 + break +fi +done + + test -z "$ac_cv_path_GROFF_PATH" && ac_cv_path_GROFF_PATH="no" + ;; +esac +fi +GROFF_PATH=$ac_cv_path_GROFF_PATH + +if test -n "$GROFF_PATH"; then + echo "$as_me:2500: result: $GROFF_PATH" >&5 +echo "${ECHO_T}$GROFF_PATH" >&6 +else + echo "$as_me:2503: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + +for ac_prog in nroff mandoc +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +echo "$as_me:2511: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_path_NROFF_PATH+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + case $NROFF_PATH in + [\\/]* | ?:[\\/]*) + ac_cv_path_NROFF_PATH="$NROFF_PATH" # Let the user override the test with a path. + ;; + *) + ac_save_IFS=$IFS; IFS=$ac_path_separator +ac_dummy="$PATH" +for ac_dir in $ac_dummy; do + IFS=$ac_save_IFS + test -z "$ac_dir" && ac_dir=. + if $as_executable_p "$ac_dir/$ac_word"; then + ac_cv_path_NROFF_PATH="$ac_dir/$ac_word" + echo "$as_me:2528: found $ac_dir/$ac_word" >&5 + break +fi +done + + ;; +esac +fi +NROFF_PATH=$ac_cv_path_NROFF_PATH + +if test -n "$NROFF_PATH"; then + echo "$as_me:2539: result: $NROFF_PATH" >&5 +echo "${ECHO_T}$NROFF_PATH" >&6 +else + echo "$as_me:2542: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + test -n "$NROFF_PATH" && break +done +test -n "$NROFF_PATH" || NROFF_PATH="no" + +# Extract the first word of "tbl", so it can be a program name with args. +set dummy tbl; ac_word=$2 +echo "$as_me:2552: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_path_TBL_PATH+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + case $TBL_PATH in + [\\/]* | ?:[\\/]*) + ac_cv_path_TBL_PATH="$TBL_PATH" # Let the user override the test with a path. + ;; + *) + ac_save_IFS=$IFS; IFS=$ac_path_separator +ac_dummy="$PATH" +for ac_dir in $ac_dummy; do + IFS=$ac_save_IFS + test -z "$ac_dir" && ac_dir=. + if $as_executable_p "$ac_dir/$ac_word"; then + ac_cv_path_TBL_PATH="$ac_dir/$ac_word" + echo "$as_me:2569: found $ac_dir/$ac_word" >&5 + break +fi +done + + test -z "$ac_cv_path_TBL_PATH" && ac_cv_path_TBL_PATH="cat" + ;; +esac +fi +TBL_PATH=$ac_cv_path_TBL_PATH + +if test -n "$TBL_PATH"; then + echo "$as_me:2581: result: $TBL_PATH" >&5 +echo "${ECHO_T}$TBL_PATH" >&6 +else + echo "$as_me:2584: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + +if test "x$GROFF_PATH" = xno +then + NROFF_NOTE= + GROFF_NOTE="#" +else + NROFF_NOTE="#" + GROFF_NOTE= +fi + +test -z "$GROFF_NOTE" && NROFF_NOTE= + +if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}ar", so it can be a program name with args. +set dummy ${ac_tool_prefix}ar; ac_word=$2 +echo "$as_me:2602: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_AR+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$AR"; then + ac_cv_prog_AR="$AR" # Let the user override the test. +else + ac_save_IFS=$IFS; IFS=$ac_path_separator +ac_dummy="$PATH" +for ac_dir in $ac_dummy; do + IFS=$ac_save_IFS + test -z "$ac_dir" && ac_dir=. + $as_executable_p "$ac_dir/$ac_word" || continue +ac_cv_prog_AR="${ac_tool_prefix}ar" +echo "$as_me:2617: found $ac_dir/$ac_word" >&5 +break +done + +fi +fi +AR=$ac_cv_prog_AR +if test -n "$AR"; then + echo "$as_me:2625: result: $AR" >&5 +echo "${ECHO_T}$AR" >&6 +else + echo "$as_me:2628: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + +fi +if test -z "$ac_cv_prog_AR"; then + ac_ct_AR=$AR + # Extract the first word of "ar", so it can be a program name with args. +set dummy ar; ac_word=$2 +echo "$as_me:2637: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_ac_ct_AR+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$ac_ct_AR"; then + ac_cv_prog_ac_ct_AR="$ac_ct_AR" # Let the user override the test. +else + ac_save_IFS=$IFS; IFS=$ac_path_separator +ac_dummy="$PATH" +for ac_dir in $ac_dummy; do + IFS=$ac_save_IFS + test -z "$ac_dir" && ac_dir=. + $as_executable_p "$ac_dir/$ac_word" || continue +ac_cv_prog_ac_ct_AR="ar" +echo "$as_me:2652: found $ac_dir/$ac_word" >&5 +break +done + + test -z "$ac_cv_prog_ac_ct_AR" && ac_cv_prog_ac_ct_AR="ar" +fi +fi +ac_ct_AR=$ac_cv_prog_ac_ct_AR +if test -n "$ac_ct_AR"; then + echo "$as_me:2661: result: $ac_ct_AR" >&5 +echo "${ECHO_T}$ac_ct_AR" >&6 +else + echo "$as_me:2664: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + AR=$ac_ct_AR +else + AR="$ac_cv_prog_AR" +fi + +echo "$as_me:2673: checking for options to update archives" >&5 +echo $ECHO_N "checking for options to update archives... $ECHO_C" >&6 +if test "${cf_cv_ar_flags+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + + cf_cv_ar_flags=unknown + for cf_ar_flags in -curvU -curv curv -crv crv -cqv cqv -rv rv + do + + # check if $ARFLAGS already contains this choice + if test "x$ARFLAGS" != "x" ; then + cf_check_ar_flags=`echo "x$ARFLAGS" | sed -e "s/$cf_ar_flags\$//" -e "s/$cf_ar_flags / /"` + if test "x$ARFLAGS" != "$cf_check_ar_flags" ; then + cf_cv_ar_flags= + break + fi + fi + + rm -f conftest.$ac_cv_objext + rm -f conftest.a + + cat >conftest.$ac_ext <&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:2702: \$? = $ac_status" >&5 + (exit $ac_status); } ; then + echo "$AR $ARFLAGS $cf_ar_flags conftest.a conftest.$ac_cv_objext" >&5 + $AR $ARFLAGS $cf_ar_flags conftest.a conftest.$ac_cv_objext 2>&5 1>/dev/null + if test -f conftest.a ; then + cf_cv_ar_flags=$cf_ar_flags + break + fi + else + test -n "$verbose" && echo " cannot compile test-program" 1>&6 + +echo "${as_me:-configure}:2713: testing cannot compile test-program ..." 1>&5 + + break + fi + done + rm -f conftest.a conftest.$ac_ext conftest.$ac_cv_objext + +fi +echo "$as_me:2721: result: $cf_cv_ar_flags" >&5 +echo "${ECHO_T}$cf_cv_ar_flags" >&6 + +if test -n "$ARFLAGS" ; then + if test -n "$cf_cv_ar_flags" ; then + ARFLAGS="$ARFLAGS $cf_cv_ar_flags" + fi +else + ARFLAGS=$cf_cv_ar_flags +fi + +echo "$as_me:2732: checking for makeflags variable" >&5 +echo $ECHO_N "checking for makeflags variable... $ECHO_C" >&6 +if test "${cf_cv_makeflags+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + + cf_cv_makeflags='' + for cf_option in '-${MAKEFLAGS}' '${MFLAGS}' + do + cat >cf_makeflags.tmp </dev/null | fgrep -v "ing directory" | sed -e 's,[ ]*$,,'` + case "$cf_result" in + (.*k|.*kw) + cf_result=`${MAKE:-make} -k -f cf_makeflags.tmp CC=cc 2>/dev/null` + case "$cf_result" in + (.*CC=*) cf_cv_makeflags= + ;; + (*) cf_cv_makeflags=$cf_option + ;; + esac + break + ;; + (.-) + ;; + (*) + +echo "${as_me:-configure}:2762: testing given option \"$cf_option\",no match \"$cf_result\" ..." 1>&5 + + ;; + esac + done + rm -f cf_makeflags.tmp + +fi +echo "$as_me:2770: result: $cf_cv_makeflags" >&5 +echo "${ECHO_T}$cf_cv_makeflags" >&6 + +echo "$as_me:2773: checking if filesystem supports mixed-case filenames" >&5 +echo $ECHO_N "checking if filesystem supports mixed-case filenames... $ECHO_C" >&6 +if test "${cf_cv_mixedcase+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + +if test "$cross_compiling" = yes ; then + case $target_alias in + (*-os2-emx*|*-msdosdjgpp*|*-cygwin*|*-msys*|*-mingw*|*-uwin*) + cf_cv_mixedcase=no + ;; + (*) + cf_cv_mixedcase=yes + ;; + esac +else + rm -f conftest CONFTEST + echo test >conftest + if test -f CONFTEST ; then + cf_cv_mixedcase=no + else + cf_cv_mixedcase=yes + fi + rm -f conftest CONFTEST +fi + +fi +echo "$as_me:2800: result: $cf_cv_mixedcase" >&5 +echo "${ECHO_T}$cf_cv_mixedcase" >&6 +test "$cf_cv_mixedcase" = yes && +cat >>confdefs.h <<\EOF +#define MIXEDCASE_FILENAMES 1 +EOF + +for ac_prog in exctags ctags +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +echo "$as_me:2811: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_CTAGS+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$CTAGS"; then + ac_cv_prog_CTAGS="$CTAGS" # Let the user override the test. +else + ac_save_IFS=$IFS; IFS=$ac_path_separator +ac_dummy="$PATH" +for ac_dir in $ac_dummy; do + IFS=$ac_save_IFS + test -z "$ac_dir" && ac_dir=. + $as_executable_p "$ac_dir/$ac_word" || continue +ac_cv_prog_CTAGS="$ac_prog" +echo "$as_me:2826: found $ac_dir/$ac_word" >&5 +break +done + +fi +fi +CTAGS=$ac_cv_prog_CTAGS +if test -n "$CTAGS"; then + echo "$as_me:2834: result: $CTAGS" >&5 +echo "${ECHO_T}$CTAGS" >&6 +else + echo "$as_me:2837: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + test -n "$CTAGS" && break +done + +for ac_prog in exetags etags +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +echo "$as_me:2848: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_ETAGS+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$ETAGS"; then + ac_cv_prog_ETAGS="$ETAGS" # Let the user override the test. +else + ac_save_IFS=$IFS; IFS=$ac_path_separator +ac_dummy="$PATH" +for ac_dir in $ac_dummy; do + IFS=$ac_save_IFS + test -z "$ac_dir" && ac_dir=. + $as_executable_p "$ac_dir/$ac_word" || continue +ac_cv_prog_ETAGS="$ac_prog" +echo "$as_me:2863: found $ac_dir/$ac_word" >&5 +break +done + +fi +fi +ETAGS=$ac_cv_prog_ETAGS +if test -n "$ETAGS"; then + echo "$as_me:2871: result: $ETAGS" >&5 +echo "${ECHO_T}$ETAGS" >&6 +else + echo "$as_me:2874: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + test -n "$ETAGS" && break +done + +# Extract the first word of "${CTAGS:-ctags}", so it can be a program name with args. +set dummy ${CTAGS:-ctags}; ac_word=$2 +echo "$as_me:2883: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_MAKE_LOWER_TAGS+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$MAKE_LOWER_TAGS"; then + ac_cv_prog_MAKE_LOWER_TAGS="$MAKE_LOWER_TAGS" # Let the user override the test. +else + ac_save_IFS=$IFS; IFS=$ac_path_separator +ac_dummy="$PATH" +for ac_dir in $ac_dummy; do + IFS=$ac_save_IFS + test -z "$ac_dir" && ac_dir=. + $as_executable_p "$ac_dir/$ac_word" || continue +ac_cv_prog_MAKE_LOWER_TAGS="yes" +echo "$as_me:2898: found $ac_dir/$ac_word" >&5 +break +done + + test -z "$ac_cv_prog_MAKE_LOWER_TAGS" && ac_cv_prog_MAKE_LOWER_TAGS="no" +fi +fi +MAKE_LOWER_TAGS=$ac_cv_prog_MAKE_LOWER_TAGS +if test -n "$MAKE_LOWER_TAGS"; then + echo "$as_me:2907: result: $MAKE_LOWER_TAGS" >&5 +echo "${ECHO_T}$MAKE_LOWER_TAGS" >&6 +else + echo "$as_me:2910: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + +if test "$cf_cv_mixedcase" = yes ; then + # Extract the first word of "${ETAGS:-etags}", so it can be a program name with args. +set dummy ${ETAGS:-etags}; ac_word=$2 +echo "$as_me:2917: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_MAKE_UPPER_TAGS+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$MAKE_UPPER_TAGS"; then + ac_cv_prog_MAKE_UPPER_TAGS="$MAKE_UPPER_TAGS" # Let the user override the test. +else + ac_save_IFS=$IFS; IFS=$ac_path_separator +ac_dummy="$PATH" +for ac_dir in $ac_dummy; do + IFS=$ac_save_IFS + test -z "$ac_dir" && ac_dir=. + $as_executable_p "$ac_dir/$ac_word" || continue +ac_cv_prog_MAKE_UPPER_TAGS="yes" +echo "$as_me:2932: found $ac_dir/$ac_word" >&5 +break +done + + test -z "$ac_cv_prog_MAKE_UPPER_TAGS" && ac_cv_prog_MAKE_UPPER_TAGS="no" +fi +fi +MAKE_UPPER_TAGS=$ac_cv_prog_MAKE_UPPER_TAGS +if test -n "$MAKE_UPPER_TAGS"; then + echo "$as_me:2941: result: $MAKE_UPPER_TAGS" >&5 +echo "${ECHO_T}$MAKE_UPPER_TAGS" >&6 +else + echo "$as_me:2944: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + +else + MAKE_UPPER_TAGS=no +fi + +if test "$MAKE_UPPER_TAGS" = yes ; then + MAKE_UPPER_TAGS= +else + MAKE_UPPER_TAGS="#" +fi + +if test "$MAKE_LOWER_TAGS" = yes ; then + MAKE_LOWER_TAGS= +else + MAKE_LOWER_TAGS="#" +fi + +echo "$as_me:2964: checking if you want to see long compiling messages" >&5 +echo $ECHO_N "checking if you want to see long compiling messages... $ECHO_C" >&6 + +# Check whether --enable-echo or --disable-echo was given. +if test "${enable_echo+set}" = set; then + enableval="$enable_echo" + test "$enableval" != no && enableval=yes + if test "$enableval" != "yes" ; then + + ECHO_LT='--silent' + ECHO_LD='@echo linking $@;' + RULE_CC='@echo compiling $<' + SHOW_CC='@echo compiling $@' + ECHO_CC='@' + + else + + ECHO_LT='' + ECHO_LD='' + RULE_CC='' + SHOW_CC='' + ECHO_CC='' + + fi +else + enableval=yes + + ECHO_LT='' + ECHO_LD='' + RULE_CC='' + SHOW_CC='' + ECHO_CC='' + +fi; +echo "$as_me:2998: result: $enableval" >&5 +echo "${ECHO_T}$enableval" >&6 + +# Make sure we can run config.sub. +$ac_config_sub sun4 >/dev/null 2>&1 || + { { echo "$as_me:3003: error: cannot run $ac_config_sub" >&5 +echo "$as_me: error: cannot run $ac_config_sub" >&2;} + { (exit 1); exit 1; }; } + +echo "$as_me:3007: checking build system type" >&5 +echo $ECHO_N "checking build system type... $ECHO_C" >&6 +if test "${ac_cv_build+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_cv_build_alias=$build_alias +test -z "$ac_cv_build_alias" && + ac_cv_build_alias=`$ac_config_guess` +test -z "$ac_cv_build_alias" && + { { echo "$as_me:3016: error: cannot guess build type; you must specify one" >&5 +echo "$as_me: error: cannot guess build type; you must specify one" >&2;} + { (exit 1); exit 1; }; } +ac_cv_build=`$ac_config_sub $ac_cv_build_alias` || + { { echo "$as_me:3020: error: $ac_config_sub $ac_cv_build_alias failed." >&5 +echo "$as_me: error: $ac_config_sub $ac_cv_build_alias failed." >&2;} + { (exit 1); exit 1; }; } + +fi +echo "$as_me:3025: result: $ac_cv_build" >&5 +echo "${ECHO_T}$ac_cv_build" >&6 +build=$ac_cv_build +build_cpu=`echo $ac_cv_build | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'` +build_vendor=`echo $ac_cv_build | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'` +build_os=`echo $ac_cv_build | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'` + +if test -f $srcdir/config.guess || test -f $ac_aux_dir/config.guess ; then + echo "$as_me:3033: checking host system type" >&5 +echo $ECHO_N "checking host system type... $ECHO_C" >&6 +if test "${ac_cv_host+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_cv_host_alias=$host_alias +test -z "$ac_cv_host_alias" && + ac_cv_host_alias=$ac_cv_build_alias +ac_cv_host=`$ac_config_sub $ac_cv_host_alias` || + { { echo "$as_me:3042: error: $ac_config_sub $ac_cv_host_alias failed" >&5 +echo "$as_me: error: $ac_config_sub $ac_cv_host_alias failed" >&2;} + { (exit 1); exit 1; }; } + +fi +echo "$as_me:3047: result: $ac_cv_host" >&5 +echo "${ECHO_T}$ac_cv_host" >&6 +host=$ac_cv_host +host_cpu=`echo $ac_cv_host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'` +host_vendor=`echo $ac_cv_host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'` +host_os=`echo $ac_cv_host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'` + + system_name="$host_os" +else + system_name="`(uname -s -r) 2>/dev/null`" + if test -z "$system_name" ; then + system_name="`(hostname) 2>/dev/null`" + fi +fi +test -n "$system_name" && +cat >>confdefs.h <&6 +else + cf_cv_system_name="$system_name" +fi + +test -z "$system_name" && system_name="$cf_cv_system_name" +test -n "$cf_cv_system_name" && echo "$as_me:3073: result: Configuring for $cf_cv_system_name" >&5 +echo "${ECHO_T}Configuring for $cf_cv_system_name" >&6 + +if test ".$system_name" != ".$cf_cv_system_name" ; then + echo "$as_me:3077: result: Cached system name ($system_name) does not agree with actual ($cf_cv_system_name)" >&5 +echo "${ECHO_T}Cached system name ($system_name) does not agree with actual ($cf_cv_system_name)" >&6 + { { echo "$as_me:3079: error: \"Please remove config.cache and try again.\"" >&5 +echo "$as_me: error: \"Please remove config.cache and try again.\"" >&2;} + { (exit 1); exit 1; }; } +fi + +case $cf_cv_system_name in +(os2*) + CFLAGS="$CFLAGS -Zmt" + + test -n "$CPPFLAGS" && CPPFLAGS="$CPPFLAGS " + CPPFLAGS="${CPPFLAGS}-D__ST_MT_ERRNO__" + + CXXFLAGS="$CXXFLAGS -Zmt" + # autoconf's macro sets -Zexe and suffix both, which conflict:w + LDFLAGS="$LDFLAGS -Zmt -Zcrtdll" + ac_cv_exeext=.exe + ;; +esac + +PROG_EXT="$EXEEXT" + +test -n "$PROG_EXT" && +cat >>confdefs.h <&5 +echo $ECHO_N "checking for PATH separator... $ECHO_C" >&6 + case $cf_cv_system_name in + (os2*) PATH_SEPARATOR=';' ;; + (*) ${PATH_SEPARATOR:=':'} ;; + esac + + echo "$as_me:3112: result: $PATH_SEPARATOR" >&5 +echo "${ECHO_T}$PATH_SEPARATOR" >&6 + + case $cf_cv_system_name in + (OS/2*|os2*) + if test "$DFT_LWR_MODEL" = libtool; then + LIB_PREFIX='lib' + else + LIB_PREFIX='' + fi + ;; + (*) LIB_PREFIX='lib' + ;; + esac + +cf_XOPEN_SOURCE=500 +cf_POSIX_C_SOURCE=199506L +cf_xopen_source= + +case $host_os in +(aix[4-7]*) + cf_xopen_source="-D_ALL_SOURCE" + ;; +(msys) + cf_XOPEN_SOURCE=600 + ;; +(darwin[0-8].*) + cf_xopen_source="-D_APPLE_C_SOURCE" + ;; +(darwin*) + cf_xopen_source="-D_DARWIN_C_SOURCE" + cf_XOPEN_SOURCE= + ;; +(freebsd*|dragonfly*) + # 5.x headers associate + # _XOPEN_SOURCE=600 with _POSIX_C_SOURCE=200112L + # _XOPEN_SOURCE=500 with _POSIX_C_SOURCE=199506L + cf_POSIX_C_SOURCE=200112L + cf_XOPEN_SOURCE=600 + cf_xopen_source="-D_BSD_TYPES -D__BSD_VISIBLE -D_POSIX_C_SOURCE=$cf_POSIX_C_SOURCE -D_XOPEN_SOURCE=$cf_XOPEN_SOURCE" + ;; +(hpux11*) + cf_xopen_source="-D_HPUX_SOURCE -D_XOPEN_SOURCE=500" + ;; +(hpux*) + cf_xopen_source="-D_HPUX_SOURCE" + ;; +(irix[56].*) + cf_xopen_source="-D_SGI_SOURCE" + cf_XOPEN_SOURCE= + ;; +(linux*|uclinux*|gnu*|mint*|k*bsd*-gnu|cygwin) + +cf_gnu_xopen_source=$cf_XOPEN_SOURCE + +echo "$as_me:3167: checking if this is the GNU C library" >&5 +echo $ECHO_N "checking if this is the GNU C library... $ECHO_C" >&6 +if test "${cf_cv_gnu_library+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + +cat >conftest.$ac_ext <<_ACEOF +#line 3174 "configure" +#include "confdefs.h" +#include +int +main (void) +{ + + #if __GLIBC__ > 0 && __GLIBC_MINOR__ >= 0 + return 0; + #else + # error not GNU C library + #endif + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:3191: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:3194: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:3197: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:3200: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + cf_cv_gnu_library=yes +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +cf_cv_gnu_library=no +fi +rm -f conftest.$ac_objext conftest.$ac_ext + +fi +echo "$as_me:3211: result: $cf_cv_gnu_library" >&5 +echo "${ECHO_T}$cf_cv_gnu_library" >&6 + +if test x$cf_cv_gnu_library = xyes; then + + # With glibc 2.19 (13 years after this check was begun), _DEFAULT_SOURCE + # was changed to help a little... + echo "$as_me:3218: checking if _DEFAULT_SOURCE can be used as a basis" >&5 +echo $ECHO_N "checking if _DEFAULT_SOURCE can be used as a basis... $ECHO_C" >&6 +if test "${cf_cv_gnu_library_219+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + + cf_save="$CPPFLAGS" + + test -n "$CPPFLAGS" && CPPFLAGS="$CPPFLAGS " + CPPFLAGS="${CPPFLAGS}-D_DEFAULT_SOURCE" + + cat >conftest.$ac_ext <<_ACEOF +#line 3230 "configure" +#include "confdefs.h" +#include +int +main (void) +{ + + #if (__GLIBC__ == 2 && __GLIBC_MINOR__ >= 19) || (__GLIBC__ > 2) + return 0; + #else + # error GNU C library __GLIBC__.__GLIBC_MINOR__ is too old + #endif + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:3247: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:3250: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:3253: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:3256: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + cf_cv_gnu_library_219=yes +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +cf_cv_gnu_library_219=no +fi +rm -f conftest.$ac_objext conftest.$ac_ext + CPPFLAGS="$cf_save" + +fi +echo "$as_me:3268: result: $cf_cv_gnu_library_219" >&5 +echo "${ECHO_T}$cf_cv_gnu_library_219" >&6 + + if test "x$cf_cv_gnu_library_219" = xyes; then + cf_save="$CPPFLAGS" + echo "$as_me:3273: checking if _XOPEN_SOURCE=$cf_gnu_xopen_source works with _DEFAULT_SOURCE" >&5 +echo $ECHO_N "checking if _XOPEN_SOURCE=$cf_gnu_xopen_source works with _DEFAULT_SOURCE... $ECHO_C" >&6 +if test "${cf_cv_gnu_dftsrc_219+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + +cf_fix_cppflags=no +cf_new_cflags= +cf_new_cppflags= +cf_new_extra_cppflags= + +for cf_add_cflags in -D_DEFAULT_SOURCE -D_XOPEN_SOURCE=$cf_gnu_xopen_source +do +case $cf_fix_cppflags in +(no) + case $cf_add_cflags in + (-undef|-nostdinc*|-I*|-D*|-U*|-E|-P|-C) + case $cf_add_cflags in + (-D*) + cf_tst_cflags=`echo ${cf_add_cflags} |sed -e 's/^-D[^=]*='\''\"[^"]*//'` + + test "x${cf_add_cflags}" != "x${cf_tst_cflags}" \ + && test -z "${cf_tst_cflags}" \ + && cf_fix_cppflags=yes + + if test $cf_fix_cppflags = yes ; then + + test -n "$cf_new_extra_cppflags" && cf_new_extra_cppflags="$cf_new_extra_cppflags " + cf_new_extra_cppflags="${cf_new_extra_cppflags}$cf_add_cflags" + + continue + elif test "${cf_tst_cflags}" = "\"'" ; then + + test -n "$cf_new_extra_cppflags" && cf_new_extra_cppflags="$cf_new_extra_cppflags " + cf_new_extra_cppflags="${cf_new_extra_cppflags}$cf_add_cflags" + + continue + fi + ;; + esac + case "$CPPFLAGS" in + (*$cf_add_cflags) + ;; + (*) + case $cf_add_cflags in + (-D*) + cf_tst_cppflags=`echo "x$cf_add_cflags" | sed -e 's/^...//' -e 's/=.*//'` + +CPPFLAGS=`echo "$CPPFLAGS" | \ + sed -e 's/-[UD]'"$cf_tst_cppflags"'\(=[^ ]*\)\?[ ]/ /g' \ + -e 's/-[UD]'"$cf_tst_cppflags"'\(=[^ ]*\)\?$//g'` + + ;; + esac + + test -n "$cf_new_cppflags" && cf_new_cppflags="$cf_new_cppflags " + cf_new_cppflags="${cf_new_cppflags}$cf_add_cflags" + + ;; + esac + ;; + (*) + + test -n "$cf_new_cflags" && cf_new_cflags="$cf_new_cflags " + cf_new_cflags="${cf_new_cflags}$cf_add_cflags" + + ;; + esac + ;; +(yes) + + test -n "$cf_new_extra_cppflags" && cf_new_extra_cppflags="$cf_new_extra_cppflags " + cf_new_extra_cppflags="${cf_new_extra_cppflags}$cf_add_cflags" + + cf_tst_cflags=`echo ${cf_add_cflags} |sed -e 's/^[^"]*"'\''//'` + + test "x${cf_add_cflags}" != "x${cf_tst_cflags}" \ + && test -z "${cf_tst_cflags}" \ + && cf_fix_cppflags=no + ;; +esac +done + +if test -n "$cf_new_cflags" ; then + + test -n "$CFLAGS" && CFLAGS="$CFLAGS " + CFLAGS="${CFLAGS}$cf_new_cflags" + +fi + +if test -n "$cf_new_cppflags" ; then + + test -n "$CPPFLAGS" && CPPFLAGS="$CPPFLAGS " + CPPFLAGS="${CPPFLAGS}$cf_new_cppflags" + +fi + +if test -n "$cf_new_extra_cppflags" ; then + + test -n "$EXTRA_CPPFLAGS" && EXTRA_CPPFLAGS="$EXTRA_CPPFLAGS " + EXTRA_CPPFLAGS="${EXTRA_CPPFLAGS}$cf_new_extra_cppflags" + +fi + + cat >conftest.$ac_ext <<_ACEOF +#line 3378 "configure" +#include "confdefs.h" + + #include + #include + +int +main (void) +{ + + #if (_XOPEN_SOURCE >= $cf_gnu_xopen_source) && (MB_LEN_MAX > 1) + return 0; + #else + # error GNU C library is too old + #endif + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:3398: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:3401: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:3404: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:3407: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + cf_cv_gnu_dftsrc_219=yes +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +cf_cv_gnu_dftsrc_219=no +fi +rm -f conftest.$ac_objext conftest.$ac_ext + +fi +echo "$as_me:3418: result: $cf_cv_gnu_dftsrc_219" >&5 +echo "${ECHO_T}$cf_cv_gnu_dftsrc_219" >&6 + test "x$cf_cv_gnu_dftsrc_219" = "xyes" || CPPFLAGS="$cf_save" + else + cf_cv_gnu_dftsrc_219=maybe + fi + + if test "x$cf_cv_gnu_dftsrc_219" != xyes; then + + echo "$as_me:3427: checking if we must define _GNU_SOURCE" >&5 +echo $ECHO_N "checking if we must define _GNU_SOURCE... $ECHO_C" >&6 +if test "${cf_cv_gnu_source+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + + cat >conftest.$ac_ext <<_ACEOF +#line 3434 "configure" +#include "confdefs.h" +#include +int +main (void) +{ + + #ifndef _XOPEN_SOURCE + #error expected _XOPEN_SOURCE to be defined + #endif + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:3449: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:3452: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:3455: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:3458: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + cf_cv_gnu_source=no +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +cf_save="$CPPFLAGS" + +cf_fix_cppflags=no +cf_new_cflags= +cf_new_cppflags= +cf_new_extra_cppflags= + +for cf_add_cflags in -D_GNU_SOURCE +do +case $cf_fix_cppflags in +(no) + case $cf_add_cflags in + (-undef|-nostdinc*|-I*|-D*|-U*|-E|-P|-C) + case $cf_add_cflags in + (-D*) + cf_tst_cflags=`echo ${cf_add_cflags} |sed -e 's/^-D[^=]*='\''\"[^"]*//'` + + test "x${cf_add_cflags}" != "x${cf_tst_cflags}" \ + && test -z "${cf_tst_cflags}" \ + && cf_fix_cppflags=yes + + if test $cf_fix_cppflags = yes ; then + + test -n "$cf_new_extra_cppflags" && cf_new_extra_cppflags="$cf_new_extra_cppflags " + cf_new_extra_cppflags="${cf_new_extra_cppflags}$cf_add_cflags" + + continue + elif test "${cf_tst_cflags}" = "\"'" ; then + + test -n "$cf_new_extra_cppflags" && cf_new_extra_cppflags="$cf_new_extra_cppflags " + cf_new_extra_cppflags="${cf_new_extra_cppflags}$cf_add_cflags" + + continue + fi + ;; + esac + case "$CPPFLAGS" in + (*$cf_add_cflags) + ;; + (*) + case $cf_add_cflags in + (-D*) + cf_tst_cppflags=`echo "x$cf_add_cflags" | sed -e 's/^...//' -e 's/=.*//'` + +CPPFLAGS=`echo "$CPPFLAGS" | \ + sed -e 's/-[UD]'"$cf_tst_cppflags"'\(=[^ ]*\)\?[ ]/ /g' \ + -e 's/-[UD]'"$cf_tst_cppflags"'\(=[^ ]*\)\?$//g'` + + ;; + esac + + test -n "$cf_new_cppflags" && cf_new_cppflags="$cf_new_cppflags " + cf_new_cppflags="${cf_new_cppflags}$cf_add_cflags" + + ;; + esac + ;; + (*) + + test -n "$cf_new_cflags" && cf_new_cflags="$cf_new_cflags " + cf_new_cflags="${cf_new_cflags}$cf_add_cflags" + + ;; + esac + ;; +(yes) + + test -n "$cf_new_extra_cppflags" && cf_new_extra_cppflags="$cf_new_extra_cppflags " + cf_new_extra_cppflags="${cf_new_extra_cppflags}$cf_add_cflags" + + cf_tst_cflags=`echo ${cf_add_cflags} |sed -e 's/^[^"]*"'\''//'` + + test "x${cf_add_cflags}" != "x${cf_tst_cflags}" \ + && test -z "${cf_tst_cflags}" \ + && cf_fix_cppflags=no + ;; +esac +done + +if test -n "$cf_new_cflags" ; then + + test -n "$CFLAGS" && CFLAGS="$CFLAGS " + CFLAGS="${CFLAGS}$cf_new_cflags" + +fi + +if test -n "$cf_new_cppflags" ; then + + test -n "$CPPFLAGS" && CPPFLAGS="$CPPFLAGS " + CPPFLAGS="${CPPFLAGS}$cf_new_cppflags" + +fi + +if test -n "$cf_new_extra_cppflags" ; then + + test -n "$EXTRA_CPPFLAGS" && EXTRA_CPPFLAGS="$EXTRA_CPPFLAGS " + EXTRA_CPPFLAGS="${EXTRA_CPPFLAGS}$cf_new_extra_cppflags" + +fi + + cat >conftest.$ac_ext <<_ACEOF +#line 3565 "configure" +#include "confdefs.h" +#include +int +main (void) +{ + + #ifdef _XOPEN_SOURCE + #error expected _XOPEN_SOURCE to be undefined + #endif + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:3580: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:3583: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:3586: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:3589: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + cf_cv_gnu_source=no +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +cf_cv_gnu_source=yes +fi +rm -f conftest.$ac_objext conftest.$ac_ext + CPPFLAGS="$cf_save" + +fi +rm -f conftest.$ac_objext conftest.$ac_ext + +fi +echo "$as_me:3604: result: $cf_cv_gnu_source" >&5 +echo "${ECHO_T}$cf_cv_gnu_source" >&6 + + if test "$cf_cv_gnu_source" = yes + then + echo "$as_me:3609: checking if we should also define _DEFAULT_SOURCE" >&5 +echo $ECHO_N "checking if we should also define _DEFAULT_SOURCE... $ECHO_C" >&6 +if test "${cf_cv_default_source+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + + test -n "$CPPFLAGS" && CPPFLAGS="$CPPFLAGS " + CPPFLAGS="${CPPFLAGS}-D_GNU_SOURCE" + + cat >conftest.$ac_ext <<_ACEOF +#line 3619 "configure" +#include "confdefs.h" +#include +int +main (void) +{ + + #ifdef _DEFAULT_SOURCE + #error expected _DEFAULT_SOURCE to be undefined + #endif + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:3634: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:3637: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:3640: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:3643: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + cf_cv_default_source=no +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +cf_cv_default_source=yes +fi +rm -f conftest.$ac_objext conftest.$ac_ext + +fi +echo "$as_me:3654: result: $cf_cv_default_source" >&5 +echo "${ECHO_T}$cf_cv_default_source" >&6 + if test "$cf_cv_default_source" = yes + then + + test -n "$CPPFLAGS" && CPPFLAGS="$CPPFLAGS " + CPPFLAGS="${CPPFLAGS}-D_DEFAULT_SOURCE" + + fi + fi + fi + +fi + + ;; +(minix*) + cf_xopen_source="-D_NETBSD_SOURCE" # POSIX.1-2001 features are ifdef'd with this... + ;; +(mirbsd*) + # setting _XOPEN_SOURCE or _POSIX_SOURCE breaks and other headers which use u_int / u_short types + cf_XOPEN_SOURCE= + +cf_POSIX_C_SOURCE=$cf_POSIX_C_SOURCE + +cf_save_CFLAGS="$CFLAGS" +cf_save_CPPFLAGS="$CPPFLAGS" + +cf_trim_CFLAGS=`echo "$cf_save_CFLAGS" | \ + sed -e 's/-[UD]'"_POSIX_C_SOURCE"'\(=[^ ]*\)\?[ ]/ /g' \ + -e 's/-[UD]'"_POSIX_C_SOURCE"'\(=[^ ]*\)\?$//g'` + +cf_trim_CPPFLAGS=`echo "$cf_save_CPPFLAGS" | \ + sed -e 's/-[UD]'"_POSIX_C_SOURCE"'\(=[^ ]*\)\?[ ]/ /g' \ + -e 's/-[UD]'"_POSIX_C_SOURCE"'\(=[^ ]*\)\?$//g'` + +echo "$as_me:3689: checking if we should define _POSIX_C_SOURCE" >&5 +echo $ECHO_N "checking if we should define _POSIX_C_SOURCE... $ECHO_C" >&6 +if test "${cf_cv_posix_c_source+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + +echo "${as_me:-configure}:3695: testing if the symbol is already defined go no further ..." 1>&5 + + cat >conftest.$ac_ext <<_ACEOF +#line 3698 "configure" +#include "confdefs.h" +#include +int +main (void) +{ + +#ifndef _POSIX_C_SOURCE +make an error +#endif + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:3713: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:3716: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:3719: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:3722: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + cf_cv_posix_c_source=no +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +cf_want_posix_source=no + case .$cf_POSIX_C_SOURCE in + (.[12]??*) + cf_cv_posix_c_source="-D_POSIX_C_SOURCE=$cf_POSIX_C_SOURCE" + ;; + (.2) + cf_cv_posix_c_source="-D_POSIX_C_SOURCE=$cf_POSIX_C_SOURCE" + cf_want_posix_source=yes + ;; + (.*) + cf_want_posix_source=yes + ;; + esac + if test "$cf_want_posix_source" = yes ; then + cat >conftest.$ac_ext <<_ACEOF +#line 3743 "configure" +#include "confdefs.h" +#include +int +main (void) +{ + +#ifdef _POSIX_SOURCE +make an error +#endif + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:3758: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:3761: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:3764: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:3767: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + : +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +cf_cv_posix_c_source="$cf_cv_posix_c_source -D_POSIX_SOURCE" +fi +rm -f conftest.$ac_objext conftest.$ac_ext + fi + +echo "${as_me:-configure}:3778: testing ifdef from value $cf_POSIX_C_SOURCE ..." 1>&5 + + CFLAGS="$cf_trim_CFLAGS" + CPPFLAGS="$cf_trim_CPPFLAGS" + + test -n "$CPPFLAGS" && CPPFLAGS="$CPPFLAGS " + CPPFLAGS="${CPPFLAGS}$cf_cv_posix_c_source" + +echo "${as_me:-configure}:3786: testing if the second compile does not leave our definition intact error ..." 1>&5 + + cat >conftest.$ac_ext <<_ACEOF +#line 3789 "configure" +#include "confdefs.h" +#include +int +main (void) +{ + +#ifndef _POSIX_C_SOURCE +make an error +#endif + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:3804: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:3807: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:3810: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:3813: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + : +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +cf_cv_posix_c_source=no +fi +rm -f conftest.$ac_objext conftest.$ac_ext + CFLAGS="$cf_save_CFLAGS" + CPPFLAGS="$cf_save_CPPFLAGS" + +fi +rm -f conftest.$ac_objext conftest.$ac_ext + +fi +echo "$as_me:3829: result: $cf_cv_posix_c_source" >&5 +echo "${ECHO_T}$cf_cv_posix_c_source" >&6 + +if test "$cf_cv_posix_c_source" != no ; then + CFLAGS="$cf_trim_CFLAGS" + CPPFLAGS="$cf_trim_CPPFLAGS" + +cf_fix_cppflags=no +cf_new_cflags= +cf_new_cppflags= +cf_new_extra_cppflags= + +for cf_add_cflags in $cf_cv_posix_c_source +do +case $cf_fix_cppflags in +(no) + case $cf_add_cflags in + (-undef|-nostdinc*|-I*|-D*|-U*|-E|-P|-C) + case $cf_add_cflags in + (-D*) + cf_tst_cflags=`echo ${cf_add_cflags} |sed -e 's/^-D[^=]*='\''\"[^"]*//'` + + test "x${cf_add_cflags}" != "x${cf_tst_cflags}" \ + && test -z "${cf_tst_cflags}" \ + && cf_fix_cppflags=yes + + if test $cf_fix_cppflags = yes ; then + + test -n "$cf_new_extra_cppflags" && cf_new_extra_cppflags="$cf_new_extra_cppflags " + cf_new_extra_cppflags="${cf_new_extra_cppflags}$cf_add_cflags" + + continue + elif test "${cf_tst_cflags}" = "\"'" ; then + + test -n "$cf_new_extra_cppflags" && cf_new_extra_cppflags="$cf_new_extra_cppflags " + cf_new_extra_cppflags="${cf_new_extra_cppflags}$cf_add_cflags" + + continue + fi + ;; + esac + case "$CPPFLAGS" in + (*$cf_add_cflags) + ;; + (*) + case $cf_add_cflags in + (-D*) + cf_tst_cppflags=`echo "x$cf_add_cflags" | sed -e 's/^...//' -e 's/=.*//'` + +CPPFLAGS=`echo "$CPPFLAGS" | \ + sed -e 's/-[UD]'"$cf_tst_cppflags"'\(=[^ ]*\)\?[ ]/ /g' \ + -e 's/-[UD]'"$cf_tst_cppflags"'\(=[^ ]*\)\?$//g'` + + ;; + esac + + test -n "$cf_new_cppflags" && cf_new_cppflags="$cf_new_cppflags " + cf_new_cppflags="${cf_new_cppflags}$cf_add_cflags" + + ;; + esac + ;; + (*) + + test -n "$cf_new_cflags" && cf_new_cflags="$cf_new_cflags " + cf_new_cflags="${cf_new_cflags}$cf_add_cflags" + + ;; + esac + ;; +(yes) + + test -n "$cf_new_extra_cppflags" && cf_new_extra_cppflags="$cf_new_extra_cppflags " + cf_new_extra_cppflags="${cf_new_extra_cppflags}$cf_add_cflags" + + cf_tst_cflags=`echo ${cf_add_cflags} |sed -e 's/^[^"]*"'\''//'` + + test "x${cf_add_cflags}" != "x${cf_tst_cflags}" \ + && test -z "${cf_tst_cflags}" \ + && cf_fix_cppflags=no + ;; +esac +done + +if test -n "$cf_new_cflags" ; then + + test -n "$CFLAGS" && CFLAGS="$CFLAGS " + CFLAGS="${CFLAGS}$cf_new_cflags" + +fi + +if test -n "$cf_new_cppflags" ; then + + test -n "$CPPFLAGS" && CPPFLAGS="$CPPFLAGS " + CPPFLAGS="${CPPFLAGS}$cf_new_cppflags" + +fi + +if test -n "$cf_new_extra_cppflags" ; then + + test -n "$EXTRA_CPPFLAGS" && EXTRA_CPPFLAGS="$EXTRA_CPPFLAGS " + EXTRA_CPPFLAGS="${EXTRA_CPPFLAGS}$cf_new_extra_cppflags" + +fi + +fi + + ;; +(netbsd*) + cf_xopen_source="-D_NETBSD_SOURCE" # setting _XOPEN_SOURCE breaks IPv6 for lynx on NetBSD 1.6, breaks xterm, is not needed for ncursesw + ;; +(openbsd[4-9]*) + # setting _XOPEN_SOURCE lower than 500 breaks g++ compile with wchar.h, needed for ncursesw + cf_xopen_source="-D_BSD_SOURCE" + cf_XOPEN_SOURCE=600 + ;; +(openbsd*) + # setting _XOPEN_SOURCE breaks xterm on OpenBSD 2.8, is not needed for ncursesw + ;; +(osf[45]*) + cf_xopen_source="-D_OSF_SOURCE" + ;; +(nto-qnx*) + cf_xopen_source="-D_QNX_SOURCE" + ;; +(sco*) + # setting _XOPEN_SOURCE breaks Lynx on SCO Unix / OpenServer + ;; +(solaris2.*) + cf_xopen_source="-D__EXTENSIONS__" + cf_cv_xopen_source=broken + ;; +(sysv4.2uw2.*) # Novell/SCO UnixWare 2.x (tested on 2.1.2) + cf_XOPEN_SOURCE= + cf_POSIX_C_SOURCE= + ;; +(*) + +echo "$as_me:3967: checking if we should define _XOPEN_SOURCE" >&5 +echo $ECHO_N "checking if we should define _XOPEN_SOURCE... $ECHO_C" >&6 +if test "${cf_cv_xopen_source+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + + cat >conftest.$ac_ext <<_ACEOF +#line 3974 "configure" +#include "confdefs.h" + +#include +#include +#include + +int +main (void) +{ + +#ifndef _XOPEN_SOURCE +make an error +#endif + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:3993: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:3996: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:3999: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:4002: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + cf_cv_xopen_source=no +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +cf_save="$CPPFLAGS" + + test -n "$CPPFLAGS" && CPPFLAGS="$CPPFLAGS " + CPPFLAGS="${CPPFLAGS}-D_XOPEN_SOURCE=$cf_XOPEN_SOURCE" + + cat >conftest.$ac_ext <<_ACEOF +#line 4014 "configure" +#include "confdefs.h" + +#include +#include +#include + +int +main (void) +{ + +#ifdef _XOPEN_SOURCE +make an error +#endif + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:4033: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:4036: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:4039: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:4042: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + cf_cv_xopen_source=no +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +cf_cv_xopen_source=$cf_XOPEN_SOURCE +fi +rm -f conftest.$ac_objext conftest.$ac_ext + CPPFLAGS="$cf_save" + +fi +rm -f conftest.$ac_objext conftest.$ac_ext + +fi +echo "$as_me:4057: result: $cf_cv_xopen_source" >&5 +echo "${ECHO_T}$cf_cv_xopen_source" >&6 + +if test "$cf_cv_xopen_source" != no ; then + +CFLAGS=`echo "$CFLAGS" | \ + sed -e 's/-[UD]'"_XOPEN_SOURCE"'\(=[^ ]*\)\?[ ]/ /g' \ + -e 's/-[UD]'"_XOPEN_SOURCE"'\(=[^ ]*\)\?$//g'` + +CPPFLAGS=`echo "$CPPFLAGS" | \ + sed -e 's/-[UD]'"_XOPEN_SOURCE"'\(=[^ ]*\)\?[ ]/ /g' \ + -e 's/-[UD]'"_XOPEN_SOURCE"'\(=[^ ]*\)\?$//g'` + + cf_temp_xopen_source="-D_XOPEN_SOURCE=$cf_cv_xopen_source" + +cf_fix_cppflags=no +cf_new_cflags= +cf_new_cppflags= +cf_new_extra_cppflags= + +for cf_add_cflags in $cf_temp_xopen_source +do +case $cf_fix_cppflags in +(no) + case $cf_add_cflags in + (-undef|-nostdinc*|-I*|-D*|-U*|-E|-P|-C) + case $cf_add_cflags in + (-D*) + cf_tst_cflags=`echo ${cf_add_cflags} |sed -e 's/^-D[^=]*='\''\"[^"]*//'` + + test "x${cf_add_cflags}" != "x${cf_tst_cflags}" \ + && test -z "${cf_tst_cflags}" \ + && cf_fix_cppflags=yes + + if test $cf_fix_cppflags = yes ; then + + test -n "$cf_new_extra_cppflags" && cf_new_extra_cppflags="$cf_new_extra_cppflags " + cf_new_extra_cppflags="${cf_new_extra_cppflags}$cf_add_cflags" + + continue + elif test "${cf_tst_cflags}" = "\"'" ; then + + test -n "$cf_new_extra_cppflags" && cf_new_extra_cppflags="$cf_new_extra_cppflags " + cf_new_extra_cppflags="${cf_new_extra_cppflags}$cf_add_cflags" + + continue + fi + ;; + esac + case "$CPPFLAGS" in + (*$cf_add_cflags) + ;; + (*) + case $cf_add_cflags in + (-D*) + cf_tst_cppflags=`echo "x$cf_add_cflags" | sed -e 's/^...//' -e 's/=.*//'` + +CPPFLAGS=`echo "$CPPFLAGS" | \ + sed -e 's/-[UD]'"$cf_tst_cppflags"'\(=[^ ]*\)\?[ ]/ /g' \ + -e 's/-[UD]'"$cf_tst_cppflags"'\(=[^ ]*\)\?$//g'` + + ;; + esac + + test -n "$cf_new_cppflags" && cf_new_cppflags="$cf_new_cppflags " + cf_new_cppflags="${cf_new_cppflags}$cf_add_cflags" + + ;; + esac + ;; + (*) + + test -n "$cf_new_cflags" && cf_new_cflags="$cf_new_cflags " + cf_new_cflags="${cf_new_cflags}$cf_add_cflags" + + ;; + esac + ;; +(yes) + + test -n "$cf_new_extra_cppflags" && cf_new_extra_cppflags="$cf_new_extra_cppflags " + cf_new_extra_cppflags="${cf_new_extra_cppflags}$cf_add_cflags" + + cf_tst_cflags=`echo ${cf_add_cflags} |sed -e 's/^[^"]*"'\''//'` + + test "x${cf_add_cflags}" != "x${cf_tst_cflags}" \ + && test -z "${cf_tst_cflags}" \ + && cf_fix_cppflags=no + ;; +esac +done + +if test -n "$cf_new_cflags" ; then + + test -n "$CFLAGS" && CFLAGS="$CFLAGS " + CFLAGS="${CFLAGS}$cf_new_cflags" + +fi + +if test -n "$cf_new_cppflags" ; then + + test -n "$CPPFLAGS" && CPPFLAGS="$CPPFLAGS " + CPPFLAGS="${CPPFLAGS}$cf_new_cppflags" + +fi + +if test -n "$cf_new_extra_cppflags" ; then + + test -n "$EXTRA_CPPFLAGS" && EXTRA_CPPFLAGS="$EXTRA_CPPFLAGS " + EXTRA_CPPFLAGS="${EXTRA_CPPFLAGS}$cf_new_extra_cppflags" + +fi + +fi + +cf_POSIX_C_SOURCE=$cf_POSIX_C_SOURCE + +cf_save_CFLAGS="$CFLAGS" +cf_save_CPPFLAGS="$CPPFLAGS" + +cf_trim_CFLAGS=`echo "$cf_save_CFLAGS" | \ + sed -e 's/-[UD]'"_POSIX_C_SOURCE"'\(=[^ ]*\)\?[ ]/ /g' \ + -e 's/-[UD]'"_POSIX_C_SOURCE"'\(=[^ ]*\)\?$//g'` + +cf_trim_CPPFLAGS=`echo "$cf_save_CPPFLAGS" | \ + sed -e 's/-[UD]'"_POSIX_C_SOURCE"'\(=[^ ]*\)\?[ ]/ /g' \ + -e 's/-[UD]'"_POSIX_C_SOURCE"'\(=[^ ]*\)\?$//g'` + +echo "$as_me:4185: checking if we should define _POSIX_C_SOURCE" >&5 +echo $ECHO_N "checking if we should define _POSIX_C_SOURCE... $ECHO_C" >&6 +if test "${cf_cv_posix_c_source+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + +echo "${as_me:-configure}:4191: testing if the symbol is already defined go no further ..." 1>&5 + + cat >conftest.$ac_ext <<_ACEOF +#line 4194 "configure" +#include "confdefs.h" +#include +int +main (void) +{ + +#ifndef _POSIX_C_SOURCE +make an error +#endif + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:4209: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:4212: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:4215: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:4218: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + cf_cv_posix_c_source=no +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +cf_want_posix_source=no + case .$cf_POSIX_C_SOURCE in + (.[12]??*) + cf_cv_posix_c_source="-D_POSIX_C_SOURCE=$cf_POSIX_C_SOURCE" + ;; + (.2) + cf_cv_posix_c_source="-D_POSIX_C_SOURCE=$cf_POSIX_C_SOURCE" + cf_want_posix_source=yes + ;; + (.*) + cf_want_posix_source=yes + ;; + esac + if test "$cf_want_posix_source" = yes ; then + cat >conftest.$ac_ext <<_ACEOF +#line 4239 "configure" +#include "confdefs.h" +#include +int +main (void) +{ + +#ifdef _POSIX_SOURCE +make an error +#endif + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:4254: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:4257: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:4260: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:4263: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + : +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +cf_cv_posix_c_source="$cf_cv_posix_c_source -D_POSIX_SOURCE" +fi +rm -f conftest.$ac_objext conftest.$ac_ext + fi + +echo "${as_me:-configure}:4274: testing ifdef from value $cf_POSIX_C_SOURCE ..." 1>&5 + + CFLAGS="$cf_trim_CFLAGS" + CPPFLAGS="$cf_trim_CPPFLAGS" + + test -n "$CPPFLAGS" && CPPFLAGS="$CPPFLAGS " + CPPFLAGS="${CPPFLAGS}$cf_cv_posix_c_source" + +echo "${as_me:-configure}:4282: testing if the second compile does not leave our definition intact error ..." 1>&5 + + cat >conftest.$ac_ext <<_ACEOF +#line 4285 "configure" +#include "confdefs.h" +#include +int +main (void) +{ + +#ifndef _POSIX_C_SOURCE +make an error +#endif + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:4300: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:4303: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:4306: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:4309: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + : +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +cf_cv_posix_c_source=no +fi +rm -f conftest.$ac_objext conftest.$ac_ext + CFLAGS="$cf_save_CFLAGS" + CPPFLAGS="$cf_save_CPPFLAGS" + +fi +rm -f conftest.$ac_objext conftest.$ac_ext + +fi +echo "$as_me:4325: result: $cf_cv_posix_c_source" >&5 +echo "${ECHO_T}$cf_cv_posix_c_source" >&6 + +if test "$cf_cv_posix_c_source" != no ; then + CFLAGS="$cf_trim_CFLAGS" + CPPFLAGS="$cf_trim_CPPFLAGS" + +cf_fix_cppflags=no +cf_new_cflags= +cf_new_cppflags= +cf_new_extra_cppflags= + +for cf_add_cflags in $cf_cv_posix_c_source +do +case $cf_fix_cppflags in +(no) + case $cf_add_cflags in + (-undef|-nostdinc*|-I*|-D*|-U*|-E|-P|-C) + case $cf_add_cflags in + (-D*) + cf_tst_cflags=`echo ${cf_add_cflags} |sed -e 's/^-D[^=]*='\''\"[^"]*//'` + + test "x${cf_add_cflags}" != "x${cf_tst_cflags}" \ + && test -z "${cf_tst_cflags}" \ + && cf_fix_cppflags=yes + + if test $cf_fix_cppflags = yes ; then + + test -n "$cf_new_extra_cppflags" && cf_new_extra_cppflags="$cf_new_extra_cppflags " + cf_new_extra_cppflags="${cf_new_extra_cppflags}$cf_add_cflags" + + continue + elif test "${cf_tst_cflags}" = "\"'" ; then + + test -n "$cf_new_extra_cppflags" && cf_new_extra_cppflags="$cf_new_extra_cppflags " + cf_new_extra_cppflags="${cf_new_extra_cppflags}$cf_add_cflags" + + continue + fi + ;; + esac + case "$CPPFLAGS" in + (*$cf_add_cflags) + ;; + (*) + case $cf_add_cflags in + (-D*) + cf_tst_cppflags=`echo "x$cf_add_cflags" | sed -e 's/^...//' -e 's/=.*//'` + +CPPFLAGS=`echo "$CPPFLAGS" | \ + sed -e 's/-[UD]'"$cf_tst_cppflags"'\(=[^ ]*\)\?[ ]/ /g' \ + -e 's/-[UD]'"$cf_tst_cppflags"'\(=[^ ]*\)\?$//g'` + + ;; + esac + + test -n "$cf_new_cppflags" && cf_new_cppflags="$cf_new_cppflags " + cf_new_cppflags="${cf_new_cppflags}$cf_add_cflags" + + ;; + esac + ;; + (*) + + test -n "$cf_new_cflags" && cf_new_cflags="$cf_new_cflags " + cf_new_cflags="${cf_new_cflags}$cf_add_cflags" + + ;; + esac + ;; +(yes) + + test -n "$cf_new_extra_cppflags" && cf_new_extra_cppflags="$cf_new_extra_cppflags " + cf_new_extra_cppflags="${cf_new_extra_cppflags}$cf_add_cflags" + + cf_tst_cflags=`echo ${cf_add_cflags} |sed -e 's/^[^"]*"'\''//'` + + test "x${cf_add_cflags}" != "x${cf_tst_cflags}" \ + && test -z "${cf_tst_cflags}" \ + && cf_fix_cppflags=no + ;; +esac +done + +if test -n "$cf_new_cflags" ; then + + test -n "$CFLAGS" && CFLAGS="$CFLAGS " + CFLAGS="${CFLAGS}$cf_new_cflags" + +fi + +if test -n "$cf_new_cppflags" ; then + + test -n "$CPPFLAGS" && CPPFLAGS="$CPPFLAGS " + CPPFLAGS="${CPPFLAGS}$cf_new_cppflags" + +fi + +if test -n "$cf_new_extra_cppflags" ; then + + test -n "$EXTRA_CPPFLAGS" && EXTRA_CPPFLAGS="$EXTRA_CPPFLAGS " + EXTRA_CPPFLAGS="${EXTRA_CPPFLAGS}$cf_new_extra_cppflags" + +fi + +fi + + ;; +esac + +if test -n "$cf_xopen_source" ; then + +cf_fix_cppflags=no +cf_new_cflags= +cf_new_cppflags= +cf_new_extra_cppflags= + +for cf_add_cflags in $cf_xopen_source +do +case $cf_fix_cppflags in +(no) + case $cf_add_cflags in + (-undef|-nostdinc*|-I*|-D*|-U*|-E|-P|-C) + case $cf_add_cflags in + (-D*) + cf_tst_cflags=`echo ${cf_add_cflags} |sed -e 's/^-D[^=]*='\''\"[^"]*//'` + + test "x${cf_add_cflags}" != "x${cf_tst_cflags}" \ + && test -z "${cf_tst_cflags}" \ + && cf_fix_cppflags=yes + + if test $cf_fix_cppflags = yes ; then + + test -n "$cf_new_extra_cppflags" && cf_new_extra_cppflags="$cf_new_extra_cppflags " + cf_new_extra_cppflags="${cf_new_extra_cppflags}$cf_add_cflags" + + continue + elif test "${cf_tst_cflags}" = "\"'" ; then + + test -n "$cf_new_extra_cppflags" && cf_new_extra_cppflags="$cf_new_extra_cppflags " + cf_new_extra_cppflags="${cf_new_extra_cppflags}$cf_add_cflags" + + continue + fi + ;; + esac + case "$CPPFLAGS" in + (*$cf_add_cflags) + ;; + (*) + case $cf_add_cflags in + (-D*) + cf_tst_cppflags=`echo "x$cf_add_cflags" | sed -e 's/^...//' -e 's/=.*//'` + +CPPFLAGS=`echo "$CPPFLAGS" | \ + sed -e 's/-[UD]'"$cf_tst_cppflags"'\(=[^ ]*\)\?[ ]/ /g' \ + -e 's/-[UD]'"$cf_tst_cppflags"'\(=[^ ]*\)\?$//g'` + + ;; + esac + + test -n "$cf_new_cppflags" && cf_new_cppflags="$cf_new_cppflags " + cf_new_cppflags="${cf_new_cppflags}$cf_add_cflags" + + ;; + esac + ;; + (*) + + test -n "$cf_new_cflags" && cf_new_cflags="$cf_new_cflags " + cf_new_cflags="${cf_new_cflags}$cf_add_cflags" + + ;; + esac + ;; +(yes) + + test -n "$cf_new_extra_cppflags" && cf_new_extra_cppflags="$cf_new_extra_cppflags " + cf_new_extra_cppflags="${cf_new_extra_cppflags}$cf_add_cflags" + + cf_tst_cflags=`echo ${cf_add_cflags} |sed -e 's/^[^"]*"'\''//'` + + test "x${cf_add_cflags}" != "x${cf_tst_cflags}" \ + && test -z "${cf_tst_cflags}" \ + && cf_fix_cppflags=no + ;; +esac +done + +if test -n "$cf_new_cflags" ; then + test -n "$verbose" && echo " add to \$CFLAGS $cf_new_cflags" 1>&6 + +echo "${as_me:-configure}:4517: testing add to \$CFLAGS $cf_new_cflags ..." 1>&5 + + test -n "$CFLAGS" && CFLAGS="$CFLAGS " + CFLAGS="${CFLAGS}$cf_new_cflags" + +fi + +if test -n "$cf_new_cppflags" ; then + test -n "$verbose" && echo " add to \$CPPFLAGS $cf_new_cppflags" 1>&6 + +echo "${as_me:-configure}:4527: testing add to \$CPPFLAGS $cf_new_cppflags ..." 1>&5 + + test -n "$CPPFLAGS" && CPPFLAGS="$CPPFLAGS " + CPPFLAGS="${CPPFLAGS}$cf_new_cppflags" + +fi + +if test -n "$cf_new_extra_cppflags" ; then + test -n "$verbose" && echo " add to \$EXTRA_CPPFLAGS $cf_new_extra_cppflags" 1>&6 + +echo "${as_me:-configure}:4537: testing add to \$EXTRA_CPPFLAGS $cf_new_extra_cppflags ..." 1>&5 + + test -n "$EXTRA_CPPFLAGS" && EXTRA_CPPFLAGS="$EXTRA_CPPFLAGS " + EXTRA_CPPFLAGS="${EXTRA_CPPFLAGS}$cf_new_extra_cppflags" + +fi + +fi + +if test -n "$cf_XOPEN_SOURCE" && test -z "$cf_cv_xopen_source" ; then + echo "$as_me:4547: checking if _XOPEN_SOURCE really is set" >&5 +echo $ECHO_N "checking if _XOPEN_SOURCE really is set... $ECHO_C" >&6 + cat >conftest.$ac_ext <<_ACEOF +#line 4550 "configure" +#include "confdefs.h" +#include +int +main (void) +{ + +#ifndef _XOPEN_SOURCE +make an error +#endif + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:4565: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:4568: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:4571: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:4574: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + cf_XOPEN_SOURCE_set=yes +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +cf_XOPEN_SOURCE_set=no +fi +rm -f conftest.$ac_objext conftest.$ac_ext + echo "$as_me:4583: result: $cf_XOPEN_SOURCE_set" >&5 +echo "${ECHO_T}$cf_XOPEN_SOURCE_set" >&6 + if test $cf_XOPEN_SOURCE_set = yes + then + cat >conftest.$ac_ext <<_ACEOF +#line 4588 "configure" +#include "confdefs.h" +#include +int +main (void) +{ + +#if (_XOPEN_SOURCE - 0) < $cf_XOPEN_SOURCE +make an error +#endif + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:4603: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:4606: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:4609: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:4612: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + cf_XOPEN_SOURCE_set_ok=yes +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +cf_XOPEN_SOURCE_set_ok=no +fi +rm -f conftest.$ac_objext conftest.$ac_ext + if test $cf_XOPEN_SOURCE_set_ok = no + then + { echo "$as_me:4623: WARNING: _XOPEN_SOURCE is lower than requested" >&5 +echo "$as_me: WARNING: _XOPEN_SOURCE is lower than requested" >&2;} + fi + else + +echo "$as_me:4628: checking if we should define _XOPEN_SOURCE" >&5 +echo $ECHO_N "checking if we should define _XOPEN_SOURCE... $ECHO_C" >&6 +if test "${cf_cv_xopen_source+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + + cat >conftest.$ac_ext <<_ACEOF +#line 4635 "configure" +#include "confdefs.h" + +#include +#include +#include + +int +main (void) +{ + +#ifndef _XOPEN_SOURCE +make an error +#endif + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:4654: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:4657: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:4660: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:4663: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + cf_cv_xopen_source=no +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +cf_save="$CPPFLAGS" + + test -n "$CPPFLAGS" && CPPFLAGS="$CPPFLAGS " + CPPFLAGS="${CPPFLAGS}-D_XOPEN_SOURCE=$cf_XOPEN_SOURCE" + + cat >conftest.$ac_ext <<_ACEOF +#line 4675 "configure" +#include "confdefs.h" + +#include +#include +#include + +int +main (void) +{ + +#ifdef _XOPEN_SOURCE +make an error +#endif + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:4694: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:4697: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:4700: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:4703: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + cf_cv_xopen_source=no +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +cf_cv_xopen_source=$cf_XOPEN_SOURCE +fi +rm -f conftest.$ac_objext conftest.$ac_ext + CPPFLAGS="$cf_save" + +fi +rm -f conftest.$ac_objext conftest.$ac_ext + +fi +echo "$as_me:4718: result: $cf_cv_xopen_source" >&5 +echo "${ECHO_T}$cf_cv_xopen_source" >&6 + +if test "$cf_cv_xopen_source" != no ; then + +CFLAGS=`echo "$CFLAGS" | \ + sed -e 's/-[UD]'"_XOPEN_SOURCE"'\(=[^ ]*\)\?[ ]/ /g' \ + -e 's/-[UD]'"_XOPEN_SOURCE"'\(=[^ ]*\)\?$//g'` + +CPPFLAGS=`echo "$CPPFLAGS" | \ + sed -e 's/-[UD]'"_XOPEN_SOURCE"'\(=[^ ]*\)\?[ ]/ /g' \ + -e 's/-[UD]'"_XOPEN_SOURCE"'\(=[^ ]*\)\?$//g'` + + cf_temp_xopen_source="-D_XOPEN_SOURCE=$cf_cv_xopen_source" + +cf_fix_cppflags=no +cf_new_cflags= +cf_new_cppflags= +cf_new_extra_cppflags= + +for cf_add_cflags in $cf_temp_xopen_source +do +case $cf_fix_cppflags in +(no) + case $cf_add_cflags in + (-undef|-nostdinc*|-I*|-D*|-U*|-E|-P|-C) + case $cf_add_cflags in + (-D*) + cf_tst_cflags=`echo ${cf_add_cflags} |sed -e 's/^-D[^=]*='\''\"[^"]*//'` + + test "x${cf_add_cflags}" != "x${cf_tst_cflags}" \ + && test -z "${cf_tst_cflags}" \ + && cf_fix_cppflags=yes + + if test $cf_fix_cppflags = yes ; then + + test -n "$cf_new_extra_cppflags" && cf_new_extra_cppflags="$cf_new_extra_cppflags " + cf_new_extra_cppflags="${cf_new_extra_cppflags}$cf_add_cflags" + + continue + elif test "${cf_tst_cflags}" = "\"'" ; then + + test -n "$cf_new_extra_cppflags" && cf_new_extra_cppflags="$cf_new_extra_cppflags " + cf_new_extra_cppflags="${cf_new_extra_cppflags}$cf_add_cflags" + + continue + fi + ;; + esac + case "$CPPFLAGS" in + (*$cf_add_cflags) + ;; + (*) + case $cf_add_cflags in + (-D*) + cf_tst_cppflags=`echo "x$cf_add_cflags" | sed -e 's/^...//' -e 's/=.*//'` + +CPPFLAGS=`echo "$CPPFLAGS" | \ + sed -e 's/-[UD]'"$cf_tst_cppflags"'\(=[^ ]*\)\?[ ]/ /g' \ + -e 's/-[UD]'"$cf_tst_cppflags"'\(=[^ ]*\)\?$//g'` + + ;; + esac + + test -n "$cf_new_cppflags" && cf_new_cppflags="$cf_new_cppflags " + cf_new_cppflags="${cf_new_cppflags}$cf_add_cflags" + + ;; + esac + ;; + (*) + + test -n "$cf_new_cflags" && cf_new_cflags="$cf_new_cflags " + cf_new_cflags="${cf_new_cflags}$cf_add_cflags" + + ;; + esac + ;; +(yes) + + test -n "$cf_new_extra_cppflags" && cf_new_extra_cppflags="$cf_new_extra_cppflags " + cf_new_extra_cppflags="${cf_new_extra_cppflags}$cf_add_cflags" + + cf_tst_cflags=`echo ${cf_add_cflags} |sed -e 's/^[^"]*"'\''//'` + + test "x${cf_add_cflags}" != "x${cf_tst_cflags}" \ + && test -z "${cf_tst_cflags}" \ + && cf_fix_cppflags=no + ;; +esac +done + +if test -n "$cf_new_cflags" ; then + + test -n "$CFLAGS" && CFLAGS="$CFLAGS " + CFLAGS="${CFLAGS}$cf_new_cflags" + +fi + +if test -n "$cf_new_cppflags" ; then + + test -n "$CPPFLAGS" && CPPFLAGS="$CPPFLAGS " + CPPFLAGS="${CPPFLAGS}$cf_new_cppflags" + +fi + +if test -n "$cf_new_extra_cppflags" ; then + + test -n "$EXTRA_CPPFLAGS" && EXTRA_CPPFLAGS="$EXTRA_CPPFLAGS " + EXTRA_CPPFLAGS="${EXTRA_CPPFLAGS}$cf_new_extra_cppflags" + +fi + +fi + + fi +fi + +# Check whether --enable-largefile or --disable-largefile was given. +if test "${enable_largefile+set}" = set; then + enableval="$enable_largefile" + +fi; +if test "$enable_largefile" != no; then + + echo "$as_me:4843: checking for special C compiler options needed for large files" >&5 +echo $ECHO_N "checking for special C compiler options needed for large files... $ECHO_C" >&6 +if test "${ac_cv_sys_largefile_CC+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_cv_sys_largefile_CC=no + if test "$GCC" != yes; then + ac_save_CC=$CC + while :; do + # IRIX 6.2 and later do not support large files by default, + # so use the C compiler's -n32 option if that helps. + cat >conftest.$ac_ext <<_ACEOF +#line 4855 "configure" +#include "confdefs.h" +#include + /* Check that off_t can represent 2**63 - 1 correctly. + We can't simply define LARGE_OFF_T to be 9223372036854775807, + since some C++ compilers masquerading as C compilers + incorrectly reject 9223372036854775807. */ +#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62)) + int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721 + && LARGE_OFF_T % 2147483647 == 1) + ? 1 : -1]; +int +main (void) +{ + + ; + return 0; +} +_ACEOF + rm -f conftest.$ac_objext +if { (eval echo "$as_me:4875: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:4878: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:4881: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:4884: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + break +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +fi +rm -f conftest.$ac_objext + CC="$CC -n32" + rm -f conftest.$ac_objext +if { (eval echo "$as_me:4894: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:4897: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:4900: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:4903: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_sys_largefile_CC=' -n32'; break +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +fi +rm -f conftest.$ac_objext + break + done + CC=$ac_save_CC + rm -f conftest.$ac_ext + fi +fi +echo "$as_me:4917: result: $ac_cv_sys_largefile_CC" >&5 +echo "${ECHO_T}$ac_cv_sys_largefile_CC" >&6 + if test "$ac_cv_sys_largefile_CC" != no; then + CC=$CC$ac_cv_sys_largefile_CC + fi + + echo "$as_me:4923: checking for _FILE_OFFSET_BITS value needed for large files" >&5 +echo $ECHO_N "checking for _FILE_OFFSET_BITS value needed for large files... $ECHO_C" >&6 +if test "${ac_cv_sys_file_offset_bits+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + while :; do + ac_cv_sys_file_offset_bits=no + cat >conftest.$ac_ext <<_ACEOF +#line 4931 "configure" +#include "confdefs.h" +#include + /* Check that off_t can represent 2**63 - 1 correctly. + We can't simply define LARGE_OFF_T to be 9223372036854775807, + since some C++ compilers masquerading as C compilers + incorrectly reject 9223372036854775807. */ +#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62)) + int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721 + && LARGE_OFF_T % 2147483647 == 1) + ? 1 : -1]; +int +main (void) +{ + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:4951: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:4954: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:4957: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:4960: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + break +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +fi +rm -f conftest.$ac_objext conftest.$ac_ext + cat >conftest.$ac_ext <<_ACEOF +#line 4969 "configure" +#include "confdefs.h" +#define _FILE_OFFSET_BITS 64 +#include + /* Check that off_t can represent 2**63 - 1 correctly. + We can't simply define LARGE_OFF_T to be 9223372036854775807, + since some C++ compilers masquerading as C compilers + incorrectly reject 9223372036854775807. */ +#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62)) + int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721 + && LARGE_OFF_T % 2147483647 == 1) + ? 1 : -1]; +int +main (void) +{ + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:4990: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:4993: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:4996: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:4999: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_sys_file_offset_bits=64; break +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +fi +rm -f conftest.$ac_objext conftest.$ac_ext + break +done +fi +echo "$as_me:5010: result: $ac_cv_sys_file_offset_bits" >&5 +echo "${ECHO_T}$ac_cv_sys_file_offset_bits" >&6 +if test "$ac_cv_sys_file_offset_bits" != no; then + +cat >>confdefs.h <&5 +echo $ECHO_N "checking for _LARGE_FILES value needed for large files... $ECHO_C" >&6 +if test "${ac_cv_sys_large_files+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + while :; do + ac_cv_sys_large_files=no + cat >conftest.$ac_ext <<_ACEOF +#line 5028 "configure" +#include "confdefs.h" +#include + /* Check that off_t can represent 2**63 - 1 correctly. + We can't simply define LARGE_OFF_T to be 9223372036854775807, + since some C++ compilers masquerading as C compilers + incorrectly reject 9223372036854775807. */ +#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62)) + int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721 + && LARGE_OFF_T % 2147483647 == 1) + ? 1 : -1]; +int +main (void) +{ + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:5048: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:5051: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:5054: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:5057: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + break +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +fi +rm -f conftest.$ac_objext conftest.$ac_ext + cat >conftest.$ac_ext <<_ACEOF +#line 5066 "configure" +#include "confdefs.h" +#define _LARGE_FILES 1 +#include + /* Check that off_t can represent 2**63 - 1 correctly. + We can't simply define LARGE_OFF_T to be 9223372036854775807, + since some C++ compilers masquerading as C compilers + incorrectly reject 9223372036854775807. */ +#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62)) + int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721 + && LARGE_OFF_T % 2147483647 == 1) + ? 1 : -1]; +int +main (void) +{ + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:5087: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:5090: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:5093: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:5096: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_sys_large_files=1; break +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +fi +rm -f conftest.$ac_objext conftest.$ac_ext + break +done +fi +echo "$as_me:5107: result: $ac_cv_sys_large_files" >&5 +echo "${ECHO_T}$ac_cv_sys_large_files" >&6 +if test "$ac_cv_sys_large_files" != no; then + +cat >>confdefs.h <&5 +echo $ECHO_N "checking for _LARGEFILE_SOURCE value needed for large files... $ECHO_C" >&6 +if test "${ac_cv_sys_largefile_source+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + while :; do + ac_cv_sys_largefile_source=no + cat >conftest.$ac_ext <<_ACEOF +#line 5128 "configure" +#include "confdefs.h" +#include +int +main (void) +{ +return !fseeko; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:5140: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:5143: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:5146: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:5149: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + break +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +fi +rm -f conftest.$ac_objext conftest.$ac_ext + cat >conftest.$ac_ext <<_ACEOF +#line 5158 "configure" +#include "confdefs.h" +#define _LARGEFILE_SOURCE 1 +#include +int +main (void) +{ +return !fseeko; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:5171: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:5174: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:5177: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:5180: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_sys_largefile_source=1; break +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +fi +rm -f conftest.$ac_objext conftest.$ac_ext + break +done +fi +echo "$as_me:5191: result: $ac_cv_sys_largefile_source" >&5 +echo "${ECHO_T}$ac_cv_sys_largefile_source" >&6 +if test "$ac_cv_sys_largefile_source" != no; then + +cat >>confdefs.h <&5 +echo $ECHO_N "checking for fseeko... $ECHO_C" >&6 +if test "${ac_cv_func_fseeko+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +#line 5211 "configure" +#include "confdefs.h" +#include +int +main (void) +{ +return fseeko && fseeko (stdin, 0, 0); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:5223: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:5226: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:5229: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:5232: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_func_fseeko=yes +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +ac_cv_func_fseeko=no +fi +rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext +fi +echo "$as_me:5242: result: $ac_cv_func_fseeko" >&5 +echo "${ECHO_T}$ac_cv_func_fseeko" >&6 +if test $ac_cv_func_fseeko = yes; then + +cat >>confdefs.h <<\EOF +#define HAVE_FSEEKO 1 +EOF + +fi + + # Normally we would collect these definitions in the config.h, + # but (like _XOPEN_SOURCE), some environments rely on having these + # defined before any of the system headers are included. Another + # case comes up with C++, e.g., on AIX the compiler compiles the + # header files by themselves before looking at the body files it is + # told to compile. For ncurses, those header files do not include + # the config.h + if test "$ac_cv_sys_large_files" != no + then + + test -n "$CPPFLAGS" && CPPFLAGS="$CPPFLAGS " + CPPFLAGS="${CPPFLAGS}-D_LARGE_FILES" + + fi + if test "$ac_cv_sys_largefile_source" != no + then + + test -n "$CPPFLAGS" && CPPFLAGS="$CPPFLAGS " + CPPFLAGS="${CPPFLAGS}-D_LARGEFILE_SOURCE" + + fi + if test "$ac_cv_sys_file_offset_bits" != no + then + + test -n "$CPPFLAGS" && CPPFLAGS="$CPPFLAGS " + CPPFLAGS="${CPPFLAGS}-D_FILE_OFFSET_BITS=$ac_cv_sys_file_offset_bits" + + fi + + echo "$as_me:5281: checking whether to use struct dirent64" >&5 +echo $ECHO_N "checking whether to use struct dirent64... $ECHO_C" >&6 +if test "${cf_cv_struct_dirent64+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + + cat >conftest.$ac_ext <<_ACEOF +#line 5288 "configure" +#include "confdefs.h" + +#pragma GCC diagnostic error "-Wincompatible-pointer-types" +#include +#include + +int +main (void) +{ + + /* if transitional largefile support is setup, this is true */ + extern struct dirent64 * readdir(DIR *); + struct dirent64 *x = readdir((DIR *)0); + struct dirent *y = readdir((DIR *)0); + int z = x - y; + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:5310: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:5313: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:5316: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:5319: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + cf_cv_struct_dirent64=yes +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +cf_cv_struct_dirent64=no +fi +rm -f conftest.$ac_objext conftest.$ac_ext + +fi +echo "$as_me:5330: result: $cf_cv_struct_dirent64" >&5 +echo "${ECHO_T}$cf_cv_struct_dirent64" >&6 + test "$cf_cv_struct_dirent64" = yes && +cat >>confdefs.h <<\EOF +#define HAVE_STRUCT_DIRENT64 1 +EOF + + fi + +echo "$as_me:5339: checking for install-prefix" >&5 +echo $ECHO_N "checking for install-prefix... $ECHO_C" >&6 + +# Check whether --with-install-prefix or --without-install-prefix was given. +if test "${with_install_prefix+set}" = set; then + withval="$with_install_prefix" + cf_opt_with_install_prefix=$withval +else + cf_opt_with_install_prefix=${DESTDIR:-no} +fi; +echo "$as_me:5349: result: $cf_opt_with_install_prefix" >&5 +echo "${ECHO_T}$cf_opt_with_install_prefix" >&6 +if test "$cf_opt_with_install_prefix" != no ; then + +if test "x$prefix" != xNONE; then + cf_path_syntax="$prefix" +else + cf_path_syntax="$ac_default_prefix" +fi + +case ".$cf_opt_with_install_prefix" in +(.\$\(*\)*|.\'*\'*) + ;; +(..|./*|.\\*) + ;; +(.[a-zA-Z]:[\\/]*) # OS/2 EMX + ;; +(.\${*prefix}*|.\${*dir}*) + eval cf_opt_with_install_prefix="$cf_opt_with_install_prefix" + case ".$cf_opt_with_install_prefix" in + (.NONE/*) + cf_opt_with_install_prefix=`echo $cf_opt_with_install_prefix | sed -e s%NONE%$cf_path_syntax%` + ;; + esac + ;; +(.no|.NONE/*) + cf_opt_with_install_prefix=`echo $cf_opt_with_install_prefix | sed -e s%NONE%$cf_path_syntax%` + ;; +(*) + { { echo "$as_me:5378: error: expected a pathname, not \"$cf_opt_with_install_prefix\"" >&5 +echo "$as_me: error: expected a pathname, not \"$cf_opt_with_install_prefix\"" >&2;} + { (exit 1); exit 1; }; } + ;; +esac + + DESTDIR=$cf_opt_with_install_prefix +fi + +if ( test "$GCC" = yes || test "$GXX" = yes ) +then +echo "$as_me:5389: checking if you want to check for gcc warnings" >&5 +echo $ECHO_N "checking if you want to check for gcc warnings... $ECHO_C" >&6 + +# Check whether --with-warnings or --without-warnings was given. +if test "${with_warnings+set}" = set; then + withval="$with_warnings" + cf_opt_with_warnings=$withval +else + cf_opt_with_warnings=no +fi; +echo "$as_me:5399: result: $cf_opt_with_warnings" >&5 +echo "${ECHO_T}$cf_opt_with_warnings" >&6 +if test "$cf_opt_with_warnings" != no ; then + +if test "$GCC" = yes +then +cat > conftest.i <&5 +echo "$as_me: checking for $CC __attribute__ directives..." >&6;} +cat > conftest.$ac_ext <&5 + + case $cf_attribute in + (printf) + cf_printf_attribute=yes + cat >conftest.h <conftest.h <conftest.h <&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:5476: \$? = $ac_status" >&5 + (exit $ac_status); }; then + test -n "$verbose" && echo "$as_me:5478: result: ... $cf_attribute" >&5 +echo "${ECHO_T}... $cf_attribute" >&6 + cat conftest.h >>confdefs.h + case $cf_attribute in + (noreturn) + +cat >>confdefs.h <>confdefs.h <<\EOF +#define GCC_PRINTF 1 +EOF + + fi + +cat >>confdefs.h <>confdefs.h <<\EOF +#define GCC_SCANF 1 +EOF + + fi + +cat >>confdefs.h <>confdefs.h <>confdefs.h +fi +rm -rf conftest* +fi + +INTEL_COMPILER=no + +if test "$GCC" = yes ; then + case $host_os in + (linux*|gnu*) + echo "$as_me:5542: checking if this is really Intel C compiler" >&5 +echo $ECHO_N "checking if this is really Intel C compiler... $ECHO_C" >&6 + cf_save_CFLAGS="$CFLAGS" + CFLAGS="$CFLAGS -no-gcc" + cat >conftest.$ac_ext <<_ACEOF +#line 5547 "configure" +#include "confdefs.h" + +int +main (void) +{ + +#ifdef __INTEL_COMPILER +#else +make an error +#endif + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:5564: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:5567: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:5570: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:5573: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + INTEL_COMPILER=yes +cf_save_CFLAGS="$cf_save_CFLAGS -we147" + +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +fi +rm -f conftest.$ac_objext conftest.$ac_ext + CFLAGS="$cf_save_CFLAGS" + echo "$as_me:5584: result: $INTEL_COMPILER" >&5 +echo "${ECHO_T}$INTEL_COMPILER" >&6 + ;; + esac +fi + +CLANG_COMPILER=no + +if test "$GCC" = yes ; then + echo "$as_me:5593: checking if this is really Clang C compiler" >&5 +echo $ECHO_N "checking if this is really Clang C compiler... $ECHO_C" >&6 + cf_save_CFLAGS="$CFLAGS" + CFLAGS="$CFLAGS -Qunused-arguments" + cat >conftest.$ac_ext <<_ACEOF +#line 5598 "configure" +#include "confdefs.h" + +int +main (void) +{ + +#ifdef __clang__ +#else +make an error +#endif + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:5615: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:5618: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:5621: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:5624: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + CLANG_COMPILER=yes +cf_save_CFLAGS="$cf_save_CFLAGS -Qunused-arguments" + +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +fi +rm -f conftest.$ac_objext conftest.$ac_ext + CFLAGS="$cf_save_CFLAGS" + echo "$as_me:5635: result: $CLANG_COMPILER" >&5 +echo "${ECHO_T}$CLANG_COMPILER" >&6 +fi + +cat > conftest.$ac_ext <&5 +echo "$as_me: checking for $CC warning options..." >&6;} + cf_save_CFLAGS="$CFLAGS" + EXTRA_CFLAGS="-Wall" + for cf_opt in \ + wd1419 \ + wd1683 \ + wd1684 \ + wd193 \ + wd593 \ + wd279 \ + wd810 \ + wd869 \ + wd981 + do + CFLAGS="$cf_save_CFLAGS $EXTRA_CFLAGS -$cf_opt" + if { (eval echo "$as_me:5673: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:5676: \$? = $ac_status" >&5 + (exit $ac_status); }; then + test -n "$verbose" && echo "$as_me:5678: result: ... -$cf_opt" >&5 +echo "${ECHO_T}... -$cf_opt" >&6 + EXTRA_CFLAGS="$EXTRA_CFLAGS -$cf_opt" + fi + done + CFLAGS="$cf_save_CFLAGS" + +elif test "$GCC" = yes +then + { echo "$as_me:5687: checking for $CC warning options..." >&5 +echo "$as_me: checking for $CC warning options..." >&6;} + cf_save_CFLAGS="$CFLAGS" + EXTRA_CFLAGS= + cf_warn_CONST="" + test "$with_ext_const" = yes && cf_warn_CONST="Wwrite-strings" + cf_gcc_warnings="Wignored-qualifiers Wlogical-op Wvarargs" + test "x$CLANG_COMPILER" = xyes && cf_gcc_warnings= + for cf_opt in W Wall \ + Wbad-function-cast \ + Wcast-align \ + Wcast-qual \ + Wdeclaration-after-statement \ + Wextra \ + Winline \ + Wmissing-declarations \ + Wmissing-prototypes \ + Wnested-externs \ + Wpointer-arith \ + Wshadow \ + Wstrict-prototypes \ + Wundef $cf_gcc_warnings $cf_warn_CONST + do + CFLAGS="$cf_save_CFLAGS $EXTRA_CFLAGS -$cf_opt" + if { (eval echo "$as_me:5711: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:5714: \$? = $ac_status" >&5 + (exit $ac_status); }; then + test -n "$verbose" && echo "$as_me:5716: result: ... -$cf_opt" >&5 +echo "${ECHO_T}... -$cf_opt" >&6 + case $cf_opt in + (Wcast-qual) + + test -n "$CPPFLAGS" && CPPFLAGS="$CPPFLAGS " + CPPFLAGS="${CPPFLAGS}-DXTSTRINGDEFINES" + + ;; + (Winline) + case $GCC_VERSION in + ([34].*) + test -n "$verbose" && echo " feature is broken in gcc $GCC_VERSION" 1>&6 + +echo "${as_me:-configure}:5730: testing feature is broken in gcc $GCC_VERSION ..." 1>&5 + + continue;; + esac + ;; + (Wpointer-arith) + case $GCC_VERSION in + ([12].*) + test -n "$verbose" && echo " feature is broken in gcc $GCC_VERSION" 1>&6 + +echo "${as_me:-configure}:5740: testing feature is broken in gcc $GCC_VERSION ..." 1>&5 + + continue;; + esac + ;; + esac + EXTRA_CFLAGS="$EXTRA_CFLAGS -$cf_opt" + fi + done + CFLAGS="$cf_save_CFLAGS" +fi +rm -rf conftest* + +fi +fi + +echo "$as_me:5756: checking if you want to use pkg-config" >&5 +echo $ECHO_N "checking if you want to use pkg-config... $ECHO_C" >&6 + +# Check whether --with-pkg-config or --without-pkg-config was given. +if test "${with_pkg_config+set}" = set; then + withval="$with_pkg_config" + cf_pkg_config=$withval +else + cf_pkg_config=yes +fi; +echo "$as_me:5766: result: $cf_pkg_config" >&5 +echo "${ECHO_T}$cf_pkg_config" >&6 + +case $cf_pkg_config in +(no) + PKG_CONFIG=none + ;; +(yes) + +if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}pkg-config", so it can be a program name with args. +set dummy ${ac_tool_prefix}pkg-config; ac_word=$2 +echo "$as_me:5778: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_path_PKG_CONFIG+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + case $PKG_CONFIG in + [\\/]* | ?:[\\/]*) + ac_cv_path_PKG_CONFIG="$PKG_CONFIG" # Let the user override the test with a path. + ;; + *) + ac_save_IFS=$IFS; IFS=$ac_path_separator +ac_dummy="$PATH" +for ac_dir in $ac_dummy; do + IFS=$ac_save_IFS + test -z "$ac_dir" && ac_dir=. + if $as_executable_p "$ac_dir/$ac_word"; then + ac_cv_path_PKG_CONFIG="$ac_dir/$ac_word" + echo "$as_me:5795: found $ac_dir/$ac_word" >&5 + break +fi +done + + ;; +esac +fi +PKG_CONFIG=$ac_cv_path_PKG_CONFIG + +if test -n "$PKG_CONFIG"; then + echo "$as_me:5806: result: $PKG_CONFIG" >&5 +echo "${ECHO_T}$PKG_CONFIG" >&6 +else + echo "$as_me:5809: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + +fi +if test -z "$ac_cv_path_PKG_CONFIG"; then + ac_pt_PKG_CONFIG=$PKG_CONFIG + # Extract the first word of "pkg-config", so it can be a program name with args. +set dummy pkg-config; ac_word=$2 +echo "$as_me:5818: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_path_ac_pt_PKG_CONFIG+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + case $ac_pt_PKG_CONFIG in + [\\/]* | ?:[\\/]*) + ac_cv_path_ac_pt_PKG_CONFIG="$ac_pt_PKG_CONFIG" # Let the user override the test with a path. + ;; + *) + ac_save_IFS=$IFS; IFS=$ac_path_separator +ac_dummy="$PATH" +for ac_dir in $ac_dummy; do + IFS=$ac_save_IFS + test -z "$ac_dir" && ac_dir=. + if $as_executable_p "$ac_dir/$ac_word"; then + ac_cv_path_ac_pt_PKG_CONFIG="$ac_dir/$ac_word" + echo "$as_me:5835: found $ac_dir/$ac_word" >&5 + break +fi +done + + test -z "$ac_cv_path_ac_pt_PKG_CONFIG" && ac_cv_path_ac_pt_PKG_CONFIG="none" + ;; +esac +fi +ac_pt_PKG_CONFIG=$ac_cv_path_ac_pt_PKG_CONFIG + +if test -n "$ac_pt_PKG_CONFIG"; then + echo "$as_me:5847: result: $ac_pt_PKG_CONFIG" >&5 +echo "${ECHO_T}$ac_pt_PKG_CONFIG" >&6 +else + echo "$as_me:5850: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + PKG_CONFIG=$ac_pt_PKG_CONFIG +else + PKG_CONFIG="$ac_cv_path_PKG_CONFIG" +fi + + ;; +(*) + PKG_CONFIG=$withval + ;; +esac + +test -z "$PKG_CONFIG" && PKG_CONFIG=none +if test "$PKG_CONFIG" != none ; then + +if test "x$prefix" != xNONE; then + cf_path_syntax="$prefix" +else + cf_path_syntax="$ac_default_prefix" +fi + +case ".$PKG_CONFIG" in +(.\$\(*\)*|.\'*\'*) + ;; +(..|./*|.\\*) + ;; +(.[a-zA-Z]:[\\/]*) # OS/2 EMX + ;; +(.\${*prefix}*|.\${*dir}*) + eval PKG_CONFIG="$PKG_CONFIG" + case ".$PKG_CONFIG" in + (.NONE/*) + PKG_CONFIG=`echo $PKG_CONFIG | sed -e s%NONE%$cf_path_syntax%` + ;; + esac + ;; +(.no|.NONE/*) + PKG_CONFIG=`echo $PKG_CONFIG | sed -e s%NONE%$cf_path_syntax%` + ;; +(*) + { { echo "$as_me:5893: error: expected a pathname, not \"$PKG_CONFIG\"" >&5 +echo "$as_me: error: expected a pathname, not \"$PKG_CONFIG\"" >&2;} + { (exit 1); exit 1; }; } + ;; +esac + +elif test "x$cf_pkg_config" != xno ; then + { echo "$as_me:5900: WARNING: pkg-config is not installed" >&5 +echo "$as_me: WARNING: pkg-config is not installed" >&2;} +fi + +echo "$as_me:5904: checking for this package's name" >&5 +echo $ECHO_N "checking for this package's name... $ECHO_C" >&6 + +# Check whether --with-package or --without-package was given. +if test "${with_package+set}" = set; then + withval="$with_package" + PACKAGE=$withval +else + PACKAGE=dialog +fi; +echo "$as_me:5914: result: $PACKAGE" >&5 +echo "${ECHO_T}$PACKAGE" >&6 + +if test -f $srcdir/VERSION ; then + echo "$as_me:5918: checking for package version" >&5 +echo $ECHO_N "checking for package version... $ECHO_C" >&6 + + # if there are not enough fields, cut returns the last one... + cf_field1=`sed -e '2,$d' $srcdir/VERSION|cut -f1` + cf_field2=`sed -e '2,$d' $srcdir/VERSION|cut -f2` + cf_field3=`sed -e '2,$d' $srcdir/VERSION|cut -f3` + + # this is how CF_BUNDLED_INTL uses $VERSION: + VERSION="$cf_field1" + + VERSION_MAJOR=`echo "$cf_field2" | sed -e 's/\..*//'` + test -z "$VERSION_MAJOR" && { { echo "$as_me:5930: error: missing major-version" >&5 +echo "$as_me: error: missing major-version" >&2;} + { (exit 1); exit 1; }; } + + VERSION_MINOR=`echo "$cf_field2" | sed -e 's/^[^.]*\.//' -e 's/-.*//'` + test -z "$VERSION_MINOR" && { { echo "$as_me:5935: error: missing minor-version" >&5 +echo "$as_me: error: missing minor-version" >&2;} + { (exit 1); exit 1; }; } + + echo "$as_me:5939: result: ${VERSION_MAJOR}.${VERSION_MINOR}" >&5 +echo "${ECHO_T}${VERSION_MAJOR}.${VERSION_MINOR}" >&6 + + echo "$as_me:5942: checking for package patch date" >&5 +echo $ECHO_N "checking for package patch date... $ECHO_C" >&6 + VERSION_PATCH=`echo "$cf_field3" | sed -e 's/^[^-]*-//'` + case .$VERSION_PATCH in + (.) + { { echo "$as_me:5947: error: missing patch-date $VERSION_PATCH" >&5 +echo "$as_me: error: missing patch-date $VERSION_PATCH" >&2;} + { (exit 1); exit 1; }; } + ;; + (.[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]) + ;; + (*) + { { echo "$as_me:5954: error: illegal patch-date $VERSION_PATCH" >&5 +echo "$as_me: error: illegal patch-date $VERSION_PATCH" >&2;} + { (exit 1); exit 1; }; } + ;; + esac + echo "$as_me:5959: result: $VERSION_PATCH" >&5 +echo "${ECHO_T}$VERSION_PATCH" >&6 +else + { { echo "$as_me:5962: error: did not find $srcdir/VERSION" >&5 +echo "$as_me: error: did not find $srcdir/VERSION" >&2;} + { (exit 1); exit 1; }; } +fi + +# show the actual data that we have for versions: +test -n "$verbose" && echo " ABI VERSION $VERSION" 1>&6 + +echo "${as_me:-configure}:5970: testing ABI VERSION $VERSION ..." 1>&5 + +test -n "$verbose" && echo " VERSION_MAJOR $VERSION_MAJOR" 1>&6 + +echo "${as_me:-configure}:5974: testing VERSION_MAJOR $VERSION_MAJOR ..." 1>&5 + +test -n "$verbose" && echo " VERSION_MINOR $VERSION_MINOR" 1>&6 + +echo "${as_me:-configure}:5978: testing VERSION_MINOR $VERSION_MINOR ..." 1>&5 + +test -n "$verbose" && echo " VERSION_PATCH $VERSION_PATCH" 1>&6 + +echo "${as_me:-configure}:5982: testing VERSION_PATCH $VERSION_PATCH ..." 1>&5 + + cf_PACKAGE=dialog + PACKAGE=$PACKAGE + +cat >>confdefs.h <>confdefs.h <>confdefs.h <&5 +echo $ECHO_N "checking if we should install dlg_XXX headers to subdirectory... $ECHO_C" >&6 + +# Check whether --enable-header-subdir or --disable-header-subdir was given. +if test "${enable_header_subdir+set}" = set; then + enableval="$enable_header_subdir" + SUB_INC=$enableval +else + SUB_INC=no +fi; +echo "$as_me:6015: result: $SUB_INC" >&5 +echo "${ECHO_T}$SUB_INC" >&6 + +case "x${with_man2html}" in +(xno) + cf_man2html=no + ;; +(x|xyes) + # Extract the first word of "man2html", so it can be a program name with args. +set dummy man2html; ac_word=$2 +echo "$as_me:6025: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_path_cf_man2html+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + case $cf_man2html in + [\\/]* | ?:[\\/]*) + ac_cv_path_cf_man2html="$cf_man2html" # Let the user override the test with a path. + ;; + *) + ac_save_IFS=$IFS; IFS=$ac_path_separator +ac_dummy="$PATH" +for ac_dir in $ac_dummy; do + IFS=$ac_save_IFS + test -z "$ac_dir" && ac_dir=. + if $as_executable_p "$ac_dir/$ac_word"; then + ac_cv_path_cf_man2html="$ac_dir/$ac_word" + echo "$as_me:6042: found $ac_dir/$ac_word" >&5 + break +fi +done + + test -z "$ac_cv_path_cf_man2html" && ac_cv_path_cf_man2html="no" + ;; +esac +fi +cf_man2html=$ac_cv_path_cf_man2html + +if test -n "$cf_man2html"; then + echo "$as_me:6054: result: $cf_man2html" >&5 +echo "${ECHO_T}$cf_man2html" >&6 +else + echo "$as_me:6057: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + case "x$cf_man2html" in + (x/*) + echo "$as_me:6063: checking for the modified Earl Hood script" >&5 +echo $ECHO_N "checking for the modified Earl Hood script... $ECHO_C" >&6 + if ( $cf_man2html -help 2>&1 | grep 'Make an index of headers at the end' >/dev/null ) + then + cf_man2html_ok=yes + else + cf_man2html=no + cf_man2html_ok=no + fi + echo "$as_me:6072: result: $cf_man2html_ok" >&5 +echo "${ECHO_T}$cf_man2html_ok" >&6 + ;; + (*) + cf_man2html=no + ;; + esac +esac + +echo "$as_me:6081: checking for program to convert manpage to html" >&5 +echo $ECHO_N "checking for program to convert manpage to html... $ECHO_C" >&6 + +# Check whether --with-man2html or --without-man2html was given. +if test "${with_man2html+set}" = set; then + withval="$with_man2html" + cf_man2html=$withval +else + cf_man2html=$cf_man2html +fi; + +cf_with_groff=no + +case $cf_man2html in +(yes) + echo "$as_me:6096: result: man2html" >&5 +echo "${ECHO_T}man2html" >&6 + # Extract the first word of "man2html", so it can be a program name with args. +set dummy man2html; ac_word=$2 +echo "$as_me:6100: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_path_cf_man2html+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + case $cf_man2html in + [\\/]* | ?:[\\/]*) + ac_cv_path_cf_man2html="$cf_man2html" # Let the user override the test with a path. + ;; + *) + ac_save_IFS=$IFS; IFS=$ac_path_separator +ac_dummy="$PATH" +for ac_dir in $ac_dummy; do + IFS=$ac_save_IFS + test -z "$ac_dir" && ac_dir=. + if $as_executable_p "$ac_dir/$ac_word"; then + ac_cv_path_cf_man2html="$ac_dir/$ac_word" + echo "$as_me:6117: found $ac_dir/$ac_word" >&5 + break +fi +done + + test -z "$ac_cv_path_cf_man2html" && ac_cv_path_cf_man2html="no" + ;; +esac +fi +cf_man2html=$ac_cv_path_cf_man2html + +if test -n "$cf_man2html"; then + echo "$as_me:6129: result: $cf_man2html" >&5 +echo "${ECHO_T}$cf_man2html" >&6 +else + echo "$as_me:6132: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + ;; +(no|groff|*/groff*) + cf_with_groff=yes + cf_man2html=$GROFF_PATH + echo "$as_me:6140: result: $cf_man2html" >&5 +echo "${ECHO_T}$cf_man2html" >&6 + ;; +(*) + echo "$as_me:6144: result: $cf_man2html" >&5 +echo "${ECHO_T}$cf_man2html" >&6 + ;; +esac + +MAN2HTML_TEMP="man2html.tmp" + cat >$MAN2HTML_TEMP <>$MAN2HTML_TEMP <&5 +echo "$as_me: error: expected a pathname, not \"$cf_man2html\"" >&2;} + { (exit 1); exit 1; }; } + ;; +esac + + MAN2HTML_PATH="$cf_man2html" + echo "$as_me:6215: checking for $cf_man2html top/bottom margins" >&5 +echo $ECHO_N "checking for $cf_man2html top/bottom margins... $ECHO_C" >&6 + + # for this example, expect 3 lines of content, the remainder is head/foot + cat >conftest.in <conftest.out + + cf_man2html_1st=`fgrep -n MARKER conftest.out |sed -e 's/^[^0-9]*://' -e 's/:.*//'` + cf_man2html_top=`expr $cf_man2html_1st - 2` + cf_man2html_bot=`wc -l conftest.out |sed -e 's/[^0-9]//g'` + cf_man2html_bot=`expr $cf_man2html_bot - 2 - $cf_man2html_top` + cf_man2html_top_bot="-topm=$cf_man2html_top -botm=$cf_man2html_bot" + + echo "$as_me:6233: result: $cf_man2html_top_bot" >&5 +echo "${ECHO_T}$cf_man2html_top_bot" >&6 + + echo "$as_me:6236: checking for pagesize to use" >&5 +echo $ECHO_N "checking for pagesize to use... $ECHO_C" >&6 + for cf_block in 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 + do + cat >>conftest.in <conftest.out + cf_man2html_page=`fgrep -n HEAD1 conftest.out |tail -n 1 |sed -e 's/^[^0-9]*://' -e 's/:.*//'` + test -z "$cf_man2html_page" && cf_man2html_page=99999 + test "$cf_man2html_page" -gt 100 && cf_man2html_page=99999 + + rm -rf conftest* + echo "$as_me:6261: result: $cf_man2html_page" >&5 +echo "${ECHO_T}$cf_man2html_page" >&6 + + cat >>$MAN2HTML_TEMP <&5 +echo $ECHO_N "checking for ANSI C header files... $ECHO_C" >&6 +if test "${ac_cv_header_stdc+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +#line 6288 "configure" +#include "confdefs.h" +#include +#include +#include +#include + +_ACEOF +if { (eval echo "$as_me:6296: \"$ac_cpp conftest.$ac_ext\"") >&5 + (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 + ac_status=$? + egrep -v '^ *\+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:6302: \$? = $ac_status" >&5 + (exit $ac_status); } >/dev/null; then + if test -s conftest.err; then + ac_cpp_err=$ac_c_preproc_warn_flag + else + ac_cpp_err= + fi +else + ac_cpp_err=yes +fi +if test -z "$ac_cpp_err"; then + ac_cv_header_stdc=yes +else + echo "$as_me: failed program was:" >&5 + cat conftest.$ac_ext >&5 + ac_cv_header_stdc=no +fi +rm -f conftest.err conftest.$ac_ext + +if test $ac_cv_header_stdc = yes; then + # SunOS 4.x string.h does not declare mem*, contrary to ANSI. + cat >conftest.$ac_ext <<_ACEOF +#line 6324 "configure" +#include "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 -rf conftest* + +fi + +if test $ac_cv_header_stdc = yes; then + # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI. + cat >conftest.$ac_ext <<_ACEOF +#line 6342 "configure" +#include "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 -rf conftest* + +fi + +if test $ac_cv_header_stdc = yes; then + # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi. + if test "$cross_compiling" = yes; then + : +else + cat >conftest.$ac_ext <<_ACEOF +#line 6363 "configure" +#include "confdefs.h" +#include +#if ((' ' & 0x0FF) == 0x020) +# define ISLOWER(c) ('a' <= (c) && (c) <= 'z') +# define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c)) +#else +# define ISLOWER(c) (('a' <= (c) && (c) <= 'i') \ + || ('j' <= (c) && (c) <= 'r') \ + || ('s' <= (c) && (c) <= 'z')) +# define TOUPPER(c) (ISLOWER(c) ? ((c) | 0x40) : (c)) +#endif + +#define XOR(e, f) (((e) && !(f)) || (!(e) && (f))) +int +main (void) +{ + int i; + for (i = 0; i < 256; i++) + if (XOR (islower (i), ISLOWER (i)) + || toupper (i) != TOUPPER (i)) + $ac_main_return(2); + $ac_main_return (0); +} +_ACEOF +rm -f conftest$ac_exeext +if { (eval echo "$as_me:6389: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:6392: \$? = $ac_status" >&5 + (exit $ac_status); } && { ac_try='./conftest$ac_exeext' + { (eval echo "$as_me:6394: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:6397: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + : +else + echo "$as_me: program exited with status $ac_status" >&5 +echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +ac_cv_header_stdc=no +fi +rm -f core core.* *.core conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext +fi +fi +fi +echo "$as_me:6410: result: $ac_cv_header_stdc" >&5 +echo "${ECHO_T}$ac_cv_header_stdc" >&6 +if test $ac_cv_header_stdc = yes; then + +cat >>confdefs.h <<\EOF +#define STDC_HEADERS 1 +EOF + +fi + +echo "$as_me:6420: checking for inline" >&5 +echo $ECHO_N "checking for inline... $ECHO_C" >&6 +if test "${ac_cv_c_inline+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_cv_c_inline=no +for ac_kw in inline __inline__ __inline; do + cat >conftest.$ac_ext <<_ACEOF +#line 6428 "configure" +#include "confdefs.h" +#ifndef __cplusplus +static $ac_kw int static_foo () {return 0; } +$ac_kw int foo () {return 0; } +#endif + +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:6437: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:6440: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:6443: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:6446: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_c_inline=$ac_kw; break +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +fi +rm -f conftest.$ac_objext conftest.$ac_ext +done + +fi +echo "$as_me:6457: result: $ac_cv_c_inline" >&5 +echo "${ECHO_T}$ac_cv_c_inline" >&6 +case $ac_cv_c_inline in + inline | yes) ;; + no) +cat >>confdefs.h <<\EOF +#define inline +EOF + ;; + *) cat >>confdefs.h <&5 +echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 +if eval "test \"\${$as_ac_Header+set}\" = set"; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +#line 6484 "configure" +#include "confdefs.h" +$ac_includes_default +#include <$ac_header> +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:6490: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:6493: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:6496: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:6499: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + eval "$as_ac_Header=yes" +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +eval "$as_ac_Header=no" +fi +rm -f conftest.$ac_objext conftest.$ac_ext +fi +echo "$as_me:6509: result: `eval echo '${'$as_ac_Header'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 +if test `eval echo '${'$as_ac_Header'}'` = yes; then + cat >>confdefs.h <&5 +echo $ECHO_N "checking for off_t... $ECHO_C" >&6 +if test "${ac_cv_type_off_t+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +#line 6525 "configure" +#include "confdefs.h" +$ac_includes_default +int +main (void) +{ +if ((off_t *) 0) + return 0; +if (sizeof (off_t)) + return 0; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:6540: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:6543: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:6546: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:6549: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_type_off_t=yes +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +ac_cv_type_off_t=no +fi +rm -f conftest.$ac_objext conftest.$ac_ext +fi +echo "$as_me:6559: result: $ac_cv_type_off_t" >&5 +echo "${ECHO_T}$ac_cv_type_off_t" >&6 +if test $ac_cv_type_off_t = yes; then + : +else + +cat >>confdefs.h <&5 +echo $ECHO_N "checking for size_t... $ECHO_C" >&6 +if test "${ac_cv_type_size_t+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +#line 6577 "configure" +#include "confdefs.h" +$ac_includes_default +int +main (void) +{ +if ((size_t *) 0) + return 0; +if (sizeof (size_t)) + return 0; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:6592: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:6595: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:6598: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:6601: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_type_size_t=yes +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +ac_cv_type_size_t=no +fi +rm -f conftest.$ac_objext conftest.$ac_ext +fi +echo "$as_me:6611: result: $ac_cv_type_size_t" >&5 +echo "${ECHO_T}$ac_cv_type_size_t" >&6 +if test $ac_cv_type_size_t = yes; then + : +else + +cat >>confdefs.h <&5 +echo $ECHO_N "checking for working alloca.h... $ECHO_C" >&6 +if test "${ac_cv_working_alloca_h+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +#line 6631 "configure" +#include "confdefs.h" +#include +int +main (void) +{ +char *p = (char *) alloca (2 * sizeof (int)); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:6643: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:6646: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:6649: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:6652: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_working_alloca_h=yes +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +ac_cv_working_alloca_h=no +fi +rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext +fi +echo "$as_me:6662: result: $ac_cv_working_alloca_h" >&5 +echo "${ECHO_T}$ac_cv_working_alloca_h" >&6 +if test $ac_cv_working_alloca_h = yes; then + +cat >>confdefs.h <<\EOF +#define HAVE_ALLOCA_H 1 +EOF + +fi + +echo "$as_me:6672: checking for alloca" >&5 +echo $ECHO_N "checking for alloca... $ECHO_C" >&6 +if test "${ac_cv_func_alloca_works+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +#line 6678 "configure" +#include "confdefs.h" +#ifdef __GNUC__ +# define alloca __builtin_alloca +#else +# ifdef _MSC_VER +# include +# define alloca _alloca +# else +# if HAVE_ALLOCA_H +# include +# else +# ifdef _AIX + #pragma alloca +# else +# ifndef alloca /* predefined by HP cc +Olibcalls */ +char *alloca (); +# endif +# endif +# endif +# endif +#endif + +int +main (void) +{ +char *p = (char *) alloca (1); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:6710: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:6713: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:6716: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:6719: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_func_alloca_works=yes +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +ac_cv_func_alloca_works=no +fi +rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext +fi +echo "$as_me:6729: result: $ac_cv_func_alloca_works" >&5 +echo "${ECHO_T}$ac_cv_func_alloca_works" >&6 + +if test $ac_cv_func_alloca_works = yes; then + +cat >>confdefs.h <<\EOF +#define HAVE_ALLOCA 1 +EOF + +else + # The SVR3 libPW and SVR4 libucb both contain incompatible functions +# that cause trouble. Some versions do not even contain alloca or +# contain a buggy version. If you still want to use their alloca, +# use ar to extract alloca.o from them instead of compiling alloca.c. + +ALLOCA=alloca.$ac_objext + +cat >>confdefs.h <<\EOF +#define C_ALLOCA 1 +EOF + +echo "$as_me:6750: checking whether \`alloca.c' needs Cray hooks" >&5 +echo $ECHO_N "checking whether \`alloca.c' needs Cray hooks... $ECHO_C" >&6 +if test "${ac_cv_os_cray+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +#line 6756 "configure" +#include "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 -rf conftest* + +fi +echo "$as_me:6774: result: $ac_cv_os_cray" >&5 +echo "${ECHO_T}$ac_cv_os_cray" >&6 +if test $ac_cv_os_cray = yes; then + for ac_func in _getb67 GETB67 getb67; do + as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` +echo "$as_me:6779: checking for $ac_func" >&5 +echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6 +if eval "test \"\${$as_ac_var+set}\" = set"; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +#line 6785 "configure" +#include "confdefs.h" +/* System header to define __stub macros and hopefully few prototypes, + which can conflict with char $ac_func (); below. */ +#include +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char $ac_func (); +char (*f) (); + +int +main (void) +{ +/* 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 +f = $ac_func; /* workaround for ICC 12.0.3 */ if (f == 0) return 1; +#endif + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:6816: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:6819: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:6822: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:6825: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + eval "$as_ac_var=yes" +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +eval "$as_ac_var=no" +fi +rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext +fi +echo "$as_me:6835: result: `eval echo '${'$as_ac_var'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6 +if test `eval echo '${'$as_ac_var'}'` = yes; then + +cat >>confdefs.h <&5 +echo $ECHO_N "checking stack direction for C alloca... $ECHO_C" >&6 +if test "${ac_cv_c_stack_direction+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test "$cross_compiling" = yes; then + ac_cv_c_stack_direction=0 +else + cat >conftest.$ac_ext <<_ACEOF +#line 6858 "configure" +#include "confdefs.h" +int +find_stack_direction (void) +{ + static char *addr = 0; + auto char dummy; + if (addr == 0) + { + addr = &dummy; + return find_stack_direction (); + } + else + return (&dummy > addr) ? 1 : -1; +} + +int +main (void) +{ + $ac_main_return (find_stack_direction () < 0); +} +_ACEOF +rm -f conftest$ac_exeext +if { (eval echo "$as_me:6881: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:6884: \$? = $ac_status" >&5 + (exit $ac_status); } && { ac_try='./conftest$ac_exeext' + { (eval echo "$as_me:6886: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:6889: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_c_stack_direction=1 +else + echo "$as_me: program exited with status $ac_status" >&5 +echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +ac_cv_c_stack_direction=-1 +fi +rm -f core core.* *.core conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext +fi +fi +echo "$as_me:6901: result: $ac_cv_c_stack_direction" >&5 +echo "${ECHO_T}$ac_cv_c_stack_direction" >&6 + +cat >>confdefs.h <&5 +echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 +if eval "test \"\${$as_ac_Header+set}\" = set"; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +#line 6919 "configure" +#include "confdefs.h" +#include <$ac_header> +_ACEOF +if { (eval echo "$as_me:6923: \"$ac_cpp conftest.$ac_ext\"") >&5 + (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 + ac_status=$? + egrep -v '^ *\+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:6929: \$? = $ac_status" >&5 + (exit $ac_status); } >/dev/null; then + if test -s conftest.err; then + ac_cpp_err=$ac_c_preproc_warn_flag + else + ac_cpp_err= + fi +else + ac_cpp_err=yes +fi +if test -z "$ac_cpp_err"; then + eval "$as_ac_Header=yes" +else + echo "$as_me: failed program was:" >&5 + cat conftest.$ac_ext >&5 + eval "$as_ac_Header=no" +fi +rm -f conftest.err conftest.$ac_ext +fi +echo "$as_me:6948: result: `eval echo '${'$as_ac_Header'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 +if test `eval echo '${'$as_ac_Header'}'` = yes; then + cat >>confdefs.h <&5 +echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6 +if eval "test \"\${$as_ac_var+set}\" = set"; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +#line 6967 "configure" +#include "confdefs.h" +/* System header to define __stub macros and hopefully few prototypes, + which can conflict with char $ac_func (); below. */ +#include +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char $ac_func (); +char (*f) (); + +int +main (void) +{ +/* 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 +f = $ac_func; /* workaround for ICC 12.0.3 */ if (f == 0) return 1; +#endif + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:6998: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:7001: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:7004: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:7007: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + eval "$as_ac_var=yes" +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +eval "$as_ac_var=no" +fi +rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext +fi +echo "$as_me:7017: result: `eval echo '${'$as_ac_var'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6 +if test `eval echo '${'$as_ac_var'}'` = yes; then + cat >>confdefs.h <&5 +echo $ECHO_N "checking for working mmap... $ECHO_C" >&6 +if test "${ac_cv_func_mmap_fixed_mapped+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test "$cross_compiling" = yes; then + ac_cv_func_mmap_fixed_mapped=no +else + cat >conftest.$ac_ext <<_ACEOF +#line 7036 "configure" +#include "confdefs.h" +$ac_includes_default +/* 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 + propogated back to all the places they're supposed to be. + + Grep wants private fixed already mapped. + The main things grep needs to know about mmap are: + * does it exist and is it safe to write into the mmap'd area + * how to use it (BSD variants) */ + +#include +#include + +#if !STDC_HEADERS && !HAVE_STDLIB_H +char *malloc (); +#endif + +/* This mess was copied from the GNU getpagesize.h. */ +#if !HAVE_GETPAGESIZE +/* Assume that all systems that can run configure have sys/param.h. */ +# if !HAVE_SYS_PARAM_H +# define HAVE_SYS_PARAM_H 1 +# endif + +# ifdef _SC_PAGESIZE +# define getpagesize() sysconf(_SC_PAGESIZE) +# else /* no _SC_PAGESIZE */ +# if HAVE_SYS_PARAM_H +# include +# ifdef EXEC_PAGESIZE +# define getpagesize() EXEC_PAGESIZE +# else /* no EXEC_PAGESIZE */ +# ifdef NBPG +# define getpagesize() NBPG * CLSIZE +# ifndef CLSIZE +# define CLSIZE 1 +# endif /* no CLSIZE */ +# else /* no NBPG */ +# ifdef NBPC +# define getpagesize() NBPC +# else /* no NBPC */ +# ifdef PAGESIZE +# define getpagesize() PAGESIZE +# endif /* PAGESIZE */ +# endif /* no NBPC */ +# endif /* no NBPG */ +# endif /* no EXEC_PAGESIZE */ +# else /* no HAVE_SYS_PARAM_H */ +# define getpagesize() 8192 /* punt totally */ +# endif /* no HAVE_SYS_PARAM_H */ +# endif /* no _SC_PAGESIZE */ + +#endif /* no HAVE_GETPAGESIZE */ + +int +main (void) +{ + char *data, *data2, *data3; + int i, pagesize; + int fd; + + pagesize = getpagesize (); + + /* First, make a file with some known garbage in it. */ + data = (char *) malloc (pagesize); + if (!data) + $ac_main_return (1); + for (i = 0; i < pagesize; ++i) + *(data + i) = rand (); + umask (0); + fd = creat ("conftest.mmap", 0600); + if (fd < 0) + $ac_main_return (1); + if (write (fd, data, pagesize) != pagesize) + $ac_main_return (1); + close (fd); + + /* Next, try to mmap the file at a fixed address which already has + something else allocated at it. If we can, also make sure that + we see the same garbage. */ + fd = open ("conftest.mmap", O_RDWR); + if (fd < 0) + $ac_main_return (1); + data2 = (char *) malloc (2 * pagesize); + if (!data2) + $ac_main_return (1); + data2 += (pagesize - ((int) data2 & (pagesize - 1))) & (pagesize - 1); + if (data2 != mmap (data2, pagesize, PROT_READ | PROT_WRITE, + MAP_PRIVATE | MAP_FIXED, fd, 0L)) + $ac_main_return (1); + for (i = 0; i < pagesize; ++i) + if (*(data + i) != *(data2 + i)) + $ac_main_return (1); + + /* Finally, make sure that changes to the mapped area do not + percolate back to the file as seen by read(). (This is a bug on + some variants of i386 svr4.0.) */ + for (i = 0; i < pagesize; ++i) + *(data2 + i) = *(data2 + i) + 1; + data3 = (char *) malloc (pagesize); + if (!data3) + $ac_main_return (1); + if (read (fd, data3, pagesize) != pagesize) + $ac_main_return (1); + for (i = 0; i < pagesize; ++i) + if (*(data + i) != *(data3 + i)) + $ac_main_return (1); + close (fd); + $ac_main_return (0); +} +_ACEOF +rm -f conftest$ac_exeext +if { (eval echo "$as_me:7163: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:7166: \$? = $ac_status" >&5 + (exit $ac_status); } && { ac_try='./conftest$ac_exeext' + { (eval echo "$as_me:7168: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:7171: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_func_mmap_fixed_mapped=yes +else + echo "$as_me: program exited with status $ac_status" >&5 +echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +ac_cv_func_mmap_fixed_mapped=no +fi +rm -f core core.* *.core conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext +fi +fi +echo "$as_me:7183: result: $ac_cv_func_mmap_fixed_mapped" >&5 +echo "${ECHO_T}$ac_cv_func_mmap_fixed_mapped" >&6 +if test $ac_cv_func_mmap_fixed_mapped = yes; then + +cat >>confdefs.h <<\EOF +#define HAVE_MMAP 1 +EOF + +fi +rm -f conftest.mmap + +echo "$as_me:7194: checking whether we are using the GNU C Library 2.1 or newer" >&5 +echo $ECHO_N "checking whether we are using the GNU C Library 2.1 or newer... $ECHO_C" >&6 +if test "${ac_cv_gnu_library_2_1+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +#line 7200 "configure" +#include "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 -rf conftest* + +fi +echo "$as_me:7220: result: $ac_cv_gnu_library_2_1" >&5 +echo "${ECHO_T}$ac_cv_gnu_library_2_1" >&6 + + GLIBC21="$ac_cv_gnu_library_2_1" + +cf_makefile=makefile + +test -z "$ALL_LINGUAS" && ALL_LINGUAS=`test -d $srcdir/po && cd $srcdir/po && echo *.po|sed -e 's/\.po//g' -e 's/*//'` + +# Allow override of "config.h" definition: +: ${CONFIG_H:=config.h} + +if test -z "$PACKAGE" ; then + { { echo "$as_me:7233: error: CF_BUNDLED_INTL used without setting PACKAGE variable" >&5 +echo "$as_me: error: CF_BUNDLED_INTL used without setting PACKAGE variable" >&2;} + { (exit 1); exit 1; }; } +fi + +if test -z "$VERSION" ; then +if test -f $srcdir/VERSION ; then + VERSION=`sed -e '2,$d' $srcdir/VERSION|cut -f1` +else + VERSION=unknown +fi +fi + +for ac_header in argz.h limits.h locale.h nl_types.h malloc.h stddef.h \ +stdlib.h string.h unistd.h sys/param.h +do +as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` +echo "$as_me:7250: checking for $ac_header" >&5 +echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 +if eval "test \"\${$as_ac_Header+set}\" = set"; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +#line 7256 "configure" +#include "confdefs.h" +#include <$ac_header> +_ACEOF +if { (eval echo "$as_me:7260: \"$ac_cpp conftest.$ac_ext\"") >&5 + (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 + ac_status=$? + egrep -v '^ *\+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:7266: \$? = $ac_status" >&5 + (exit $ac_status); } >/dev/null; then + if test -s conftest.err; then + ac_cpp_err=$ac_c_preproc_warn_flag + else + ac_cpp_err= + fi +else + ac_cpp_err=yes +fi +if test -z "$ac_cpp_err"; then + eval "$as_ac_Header=yes" +else + echo "$as_me: failed program was:" >&5 + cat conftest.$ac_ext >&5 + eval "$as_ac_Header=no" +fi +rm -f conftest.err conftest.$ac_ext +fi +echo "$as_me:7285: result: `eval echo '${'$as_ac_Header'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 +if test `eval echo '${'$as_ac_Header'}'` = yes; then + cat >>confdefs.h <&5 +echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6 +if eval "test \"\${$as_ac_var+set}\" = set"; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +#line 7306 "configure" +#include "confdefs.h" +/* System header to define __stub macros and hopefully few prototypes, + which can conflict with char $ac_func (); below. */ +#include +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char $ac_func (); +char (*f) (); + +int +main (void) +{ +/* 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 +f = $ac_func; /* workaround for ICC 12.0.3 */ if (f == 0) return 1; +#endif + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:7337: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:7340: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:7343: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:7346: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + eval "$as_ac_var=yes" +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +eval "$as_ac_var=no" +fi +rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext +fi +echo "$as_me:7356: result: `eval echo '${'$as_ac_var'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6 +if test `eval echo '${'$as_ac_var'}'` = yes; then + cat >>confdefs.h <conftest.$ac_ext <<_ACEOF +#line 7407 "configure" +#include "confdefs.h" +#include +int +main (void) +{ +printf("Hello") + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:7419: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:7422: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:7425: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:7428: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + : +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +cf_have_incdir=yes +fi +rm -f conftest.$ac_objext conftest.$ac_ext + CPPFLAGS=$cf_save_CPPFLAGS + fi + fi + fi + + if test "$cf_have_incdir" = no ; then + test -n "$verbose" && echo " adding $cf_add_incdir to include-path" 1>&6 + +echo "${as_me:-configure}:7445: testing adding $cf_add_incdir to include-path ..." 1>&5 + + CPPFLAGS="$CPPFLAGS -I$cf_add_incdir" + + cf_top_incdir=`echo $cf_add_incdir | sed -e 's%/include/.*$%/include%'` + test "$cf_top_incdir" = "$cf_add_incdir" && break + cf_add_incdir="$cf_top_incdir" + else + break + fi + else + break + fi + done + done +fi + + elif test -d $cf_searchpath/../include ; then + +if test -n "$cf_searchpath/../include" ; then + for cf_add_incdir in $cf_searchpath/../include + do + while test $cf_add_incdir != /usr/include + do + if test -d $cf_add_incdir + then + cf_have_incdir=no + if test -n "$CFLAGS$CPPFLAGS" ; then + # a loop is needed to ensure we can add subdirs of existing dirs + for cf_test_incdir in $CFLAGS $CPPFLAGS ; do + if test ".$cf_test_incdir" = ".-I$cf_add_incdir" ; then + cf_have_incdir=yes; break + fi + done + fi + + if test "$cf_have_incdir" = no ; then + if test "$cf_add_incdir" = /usr/local/include ; then + if test "$GCC" = yes + then + cf_save_CPPFLAGS=$CPPFLAGS + + test -n "$CPPFLAGS" && CPPFLAGS="$CPPFLAGS " + CPPFLAGS="${CPPFLAGS}-I$cf_add_incdir" + + cat >conftest.$ac_ext <<_ACEOF +#line 7491 "configure" +#include "confdefs.h" +#include +int +main (void) +{ +printf("Hello") + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:7503: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:7506: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:7509: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:7512: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + : +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +cf_have_incdir=yes +fi +rm -f conftest.$ac_objext conftest.$ac_ext + CPPFLAGS=$cf_save_CPPFLAGS + fi + fi + fi + + if test "$cf_have_incdir" = no ; then + test -n "$verbose" && echo " adding $cf_add_incdir to include-path" 1>&6 + +echo "${as_me:-configure}:7529: testing adding $cf_add_incdir to include-path ..." 1>&5 + + CPPFLAGS="$CPPFLAGS -I$cf_add_incdir" + + cf_top_incdir=`echo $cf_add_incdir | sed -e 's%/include/.*$%/include%'` + test "$cf_top_incdir" = "$cf_add_incdir" && break + cf_add_incdir="$cf_top_incdir" + else + break + fi + else + break + fi + done + done +fi + + else +{ { echo "$as_me:7547: error: cannot find libiconv under $withval" >&5 +echo "$as_me: error: cannot find libiconv under $withval" >&2;} + { (exit 1); exit 1; }; } + fi + if test -d $cf_searchpath/lib; then + +if test -n "$cf_searchpath/lib" ; then + for cf_add_libdir in $cf_searchpath/lib + do + if test $cf_add_libdir = /usr/lib ; then + : + elif test -d $cf_add_libdir + then + cf_have_libdir=no + if test -n "$LDFLAGS$LIBS" ; then + # a loop is needed to ensure we can add subdirs of existing dirs + for cf_test_libdir in $LDFLAGS $LIBS ; do + if test ".$cf_test_libdir" = ".-L$cf_add_libdir" ; then + cf_have_libdir=yes; break + fi + done + fi + if test "$cf_have_libdir" = no ; then + test -n "$verbose" && echo " adding $cf_add_libdir to library-path" 1>&6 + +echo "${as_me:-configure}:7572: testing adding $cf_add_libdir to library-path ..." 1>&5 + + LDFLAGS="-L$cf_add_libdir $LDFLAGS" + fi + fi + done +fi + + elif test -d $cf_searchpath ; then + +if test -n "$cf_searchpath" ; then + for cf_add_libdir in $cf_searchpath + do + if test $cf_add_libdir = /usr/lib ; then + : + elif test -d $cf_add_libdir + then + cf_have_libdir=no + if test -n "$LDFLAGS$LIBS" ; then + # a loop is needed to ensure we can add subdirs of existing dirs + for cf_test_libdir in $LDFLAGS $LIBS ; do + if test ".$cf_test_libdir" = ".-L$cf_add_libdir" ; then + cf_have_libdir=yes; break + fi + done + fi + if test "$cf_have_libdir" = no ; then + test -n "$verbose" && echo " adding $cf_add_libdir to library-path" 1>&6 + +echo "${as_me:-configure}:7601: testing adding $cf_add_libdir to library-path ..." 1>&5 + + LDFLAGS="-L$cf_add_libdir $LDFLAGS" + fi + fi + done +fi + + else +{ { echo "$as_me:7610: error: cannot find libiconv under $withval" >&5 +echo "$as_me: error: cannot find libiconv under $withval" >&2;} + { (exit 1); exit 1; }; } + fi +done + + ;; +esac + +fi; + + echo "$as_me:7621: checking for iconv" >&5 +echo $ECHO_N "checking for iconv... $ECHO_C" >&6 +if test "${am_cv_func_iconv+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + +# If the linkage is not already in the $CPPFLAGS/$LDFLAGS configuration, these +# will be set on completion of the AC_TRY_LINK below. +cf_cv_header_path_iconv= +cf_cv_library_path_iconv= + +echo "${as_me:-configure}:7632: testing Starting FIND_LINKAGE(iconv,) ..." 1>&5 + +cf_save_LIBS="$LIBS" + +cat >conftest.$ac_ext <<_ACEOF +#line 7637 "configure" +#include "confdefs.h" + +#include +#include + +int +main (void) +{ + + iconv_t cd = iconv_open("",""); + iconv(cd,NULL,NULL,NULL,NULL); + iconv_close(cd); + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:7656: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:7659: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:7662: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:7665: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + + cf_cv_find_linkage_iconv=yes + cf_cv_header_path_iconv=/usr/include + cf_cv_library_path_iconv=/usr/lib + +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 + +LIBS="-liconv $cf_save_LIBS" + +cat >conftest.$ac_ext <<_ACEOF +#line 7679 "configure" +#include "confdefs.h" + +#include +#include + +int +main (void) +{ + + iconv_t cd = iconv_open("",""); + iconv(cd,NULL,NULL,NULL,NULL); + iconv_close(cd); + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:7698: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:7701: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:7704: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:7707: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + + cf_cv_find_linkage_iconv=yes + cf_cv_header_path_iconv=/usr/include + cf_cv_library_path_iconv=/usr/lib + cf_cv_library_file_iconv="-liconv" + +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 + + cf_cv_find_linkage_iconv=no + LIBS="$cf_save_LIBS" + + test -n "$verbose" && echo " find linkage for iconv library" 1>&6 + +echo "${as_me:-configure}:7724: testing find linkage for iconv library ..." 1>&5 + +echo "${as_me:-configure}:7726: testing Searching for headers in FIND_LINKAGE(iconv,) ..." 1>&5 + + cf_save_CPPFLAGS="$CPPFLAGS" + cf_test_CPPFLAGS="$CPPFLAGS" + +cf_search= + +# collect the current set of include-directories from compiler flags +cf_header_path_list="" +if test -n "${CFLAGS}${CPPFLAGS}" ; then + for cf_header_path in $CPPFLAGS $CFLAGS + do + case $cf_header_path in + (-I*) + cf_header_path=`echo ".$cf_header_path" |sed -e 's/^...//' -e 's,/include$,,'` + +test "x$cf_header_path" != "xNONE" && \ +test -d "$cf_header_path" && \ + { + test -n "$verbose" && echo " ... testing for include-directories under $cf_header_path" + test -d $cf_header_path/include && cf_search="$cf_search $cf_header_path/include" + test -d $cf_header_path/include/iconv && cf_search="$cf_search $cf_header_path/include/iconv" + test -d $cf_header_path/include/iconv/include && cf_search="$cf_search $cf_header_path/include/iconv/include" + test -d $cf_header_path/iconv/include && cf_search="$cf_search $cf_header_path/iconv/include" + test -d $cf_header_path/iconv/include/iconv && cf_search="$cf_search $cf_header_path/iconv/include/iconv" +} + + cf_header_path_list="$cf_header_path_list $cf_search" + ;; + esac + done +fi + +# add the variations for the package we are looking for + +cf_search= + +test "x$prefix" != "xNONE" && \ +test -d "$prefix" && \ + { + test -n "$verbose" && echo " ... testing for include-directories under $prefix" + test -d $prefix/include && cf_search="$cf_search $prefix/include" + test -d $prefix/include/iconv && cf_search="$cf_search $prefix/include/iconv" + test -d $prefix/include/iconv/include && cf_search="$cf_search $prefix/include/iconv/include" + test -d $prefix/iconv/include && cf_search="$cf_search $prefix/iconv/include" + test -d $prefix/iconv/include/iconv && cf_search="$cf_search $prefix/iconv/include/iconv" +} + +for cf_subdir_prefix in \ + /usr \ + /usr/local \ + /usr/pkg \ + /opt \ + /opt/local \ + $HOME +do + +test "x$cf_subdir_prefix" != "x$prefix" && \ +test -d "$cf_subdir_prefix" && \ +(test -z "$prefix" || test x$prefix = xNONE || test "x$cf_subdir_prefix" != "x$prefix") && { + test -n "$verbose" && echo " ... testing for include-directories under $cf_subdir_prefix" + test -d $cf_subdir_prefix/include && cf_search="$cf_search $cf_subdir_prefix/include" + test -d $cf_subdir_prefix/include/iconv && cf_search="$cf_search $cf_subdir_prefix/include/iconv" + test -d $cf_subdir_prefix/include/iconv/include && cf_search="$cf_search $cf_subdir_prefix/include/iconv/include" + test -d $cf_subdir_prefix/iconv/include && cf_search="$cf_search $cf_subdir_prefix/iconv/include" + test -d $cf_subdir_prefix/iconv/include/iconv && cf_search="$cf_search $cf_subdir_prefix/iconv/include/iconv" +} + +done + +test "$includedir" != NONE && \ +test "$includedir" != "/usr/include" && \ +test -d "$includedir" && { + test -d $includedir && cf_search="$cf_search $includedir" + test -d $includedir/iconv && cf_search="$cf_search $includedir/iconv" +} + +test "$oldincludedir" != NONE && \ +test "$oldincludedir" != "/usr/include" && \ +test -d "$oldincludedir" && { + test -d $oldincludedir && cf_search="$cf_search $oldincludedir" + test -d $oldincludedir/iconv && cf_search="$cf_search $oldincludedir/iconv" +} + +cf_search="$cf_search $cf_header_path_list" + + for cf_cv_header_path_iconv in $cf_search + do + if test -d $cf_cv_header_path_iconv ; then + test -n "$verbose" && echo " ... testing $cf_cv_header_path_iconv" 1>&6 + +echo "${as_me:-configure}:7817: testing ... testing $cf_cv_header_path_iconv ..." 1>&5 + + CPPFLAGS="$cf_save_CPPFLAGS" + + test -n "$CPPFLAGS" && CPPFLAGS="$CPPFLAGS " + CPPFLAGS="${CPPFLAGS}-I$cf_cv_header_path_iconv" + + cat >conftest.$ac_ext <<_ACEOF +#line 7825 "configure" +#include "confdefs.h" + +#include +#include + +int +main (void) +{ + + iconv_t cd = iconv_open("",""); + iconv(cd,NULL,NULL,NULL,NULL); + iconv_close(cd); + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:7844: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:7847: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:7850: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:7853: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + + test -n "$verbose" && echo " ... found iconv headers in $cf_cv_header_path_iconv" 1>&6 + +echo "${as_me:-configure}:7858: testing ... found iconv headers in $cf_cv_header_path_iconv ..." 1>&5 + + cf_cv_find_linkage_iconv=maybe + cf_test_CPPFLAGS="$CPPFLAGS" + break +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 + + CPPFLAGS="$cf_save_CPPFLAGS" + +fi +rm -f conftest.$ac_objext conftest.$ac_ext + fi + done + + if test "$cf_cv_find_linkage_iconv" = maybe ; then + +echo "${as_me:-configure}:7876: testing Searching for iconv library in FIND_LINKAGE(iconv,) ..." 1>&5 + + cf_save_LIBS="$LIBS" + cf_save_LDFLAGS="$LDFLAGS" + + if test "$cf_cv_find_linkage_iconv" != yes ; then + +cf_search= +cf_library_path_list="" +if test -n "${LDFLAGS}${LIBS}" ; then + for cf_library_path in $LDFLAGS $LIBS + do + case $cf_library_path in + (-L*) + cf_library_path=`echo ".$cf_library_path" |sed -e 's/^...//' -e 's,/lib$,,'` + +test "x$cf_library_path" != "xNONE" && \ +test -d "$cf_library_path" && \ + { + test -n "$verbose" && echo " ... testing for lib-directories under $cf_library_path" + test -d $cf_library_path/lib && cf_search="$cf_search $cf_library_path/lib" + test -d $cf_library_path/lib/iconv && cf_search="$cf_search $cf_library_path/lib/iconv" + test -d $cf_library_path/lib/iconv/lib && cf_search="$cf_search $cf_library_path/lib/iconv/lib" + test -d $cf_library_path/iconv/lib && cf_search="$cf_search $cf_library_path/iconv/lib" + test -d $cf_library_path/iconv/lib/iconv && cf_search="$cf_search $cf_library_path/iconv/lib/iconv" +} + + cf_library_path_list="$cf_library_path_list $cf_search" + ;; + esac + done +fi + +cf_search= + +test "x$prefix" != "xNONE" && \ +test -d "$prefix" && \ + { + test -n "$verbose" && echo " ... testing for lib-directories under $prefix" + test -d $prefix/lib && cf_search="$cf_search $prefix/lib" + test -d $prefix/lib/iconv && cf_search="$cf_search $prefix/lib/iconv" + test -d $prefix/lib/iconv/lib && cf_search="$cf_search $prefix/lib/iconv/lib" + test -d $prefix/iconv/lib && cf_search="$cf_search $prefix/iconv/lib" + test -d $prefix/iconv/lib/iconv && cf_search="$cf_search $prefix/iconv/lib/iconv" +} + +for cf_subdir_prefix in \ + /usr \ + /usr/local \ + /usr/pkg \ + /opt \ + /opt/local \ + $HOME +do + +test "x$cf_subdir_prefix" != "x$prefix" && \ +test -d "$cf_subdir_prefix" && \ +(test -z "$prefix" || test x$prefix = xNONE || test "x$cf_subdir_prefix" != "x$prefix") && { + test -n "$verbose" && echo " ... testing for lib-directories under $cf_subdir_prefix" + test -d $cf_subdir_prefix/lib && cf_search="$cf_search $cf_subdir_prefix/lib" + test -d $cf_subdir_prefix/lib/iconv && cf_search="$cf_search $cf_subdir_prefix/lib/iconv" + test -d $cf_subdir_prefix/lib/iconv/lib && cf_search="$cf_search $cf_subdir_prefix/lib/iconv/lib" + test -d $cf_subdir_prefix/iconv/lib && cf_search="$cf_search $cf_subdir_prefix/iconv/lib" + test -d $cf_subdir_prefix/iconv/lib/iconv && cf_search="$cf_search $cf_subdir_prefix/iconv/lib/iconv" +} + +done + +cf_search="$cf_library_path_list $cf_search" + + for cf_cv_library_path_iconv in $cf_search + do + if test -d $cf_cv_library_path_iconv ; then + test -n "$verbose" && echo " ... testing $cf_cv_library_path_iconv" 1>&6 + +echo "${as_me:-configure}:7951: testing ... testing $cf_cv_library_path_iconv ..." 1>&5 + + CPPFLAGS="$cf_test_CPPFLAGS" + LIBS="-liconv $cf_save_LIBS" + LDFLAGS="$cf_save_LDFLAGS -L$cf_cv_library_path_iconv" + cat >conftest.$ac_ext <<_ACEOF +#line 7957 "configure" +#include "confdefs.h" + +#include +#include + +int +main (void) +{ + + iconv_t cd = iconv_open("",""); + iconv(cd,NULL,NULL,NULL,NULL); + iconv_close(cd); + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:7976: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:7979: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:7982: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:7985: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + + test -n "$verbose" && echo " ... found iconv library in $cf_cv_library_path_iconv" 1>&6 + +echo "${as_me:-configure}:7990: testing ... found iconv library in $cf_cv_library_path_iconv ..." 1>&5 + + cf_cv_find_linkage_iconv=yes + cf_cv_library_file_iconv="-liconv" + break +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 + + CPPFLAGS="$cf_save_CPPFLAGS" + LIBS="$cf_save_LIBS" + LDFLAGS="$cf_save_LDFLAGS" + +fi +rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext + fi + done + CPPFLAGS="$cf_save_CPPFLAGS" + LDFLAGS="$cf_save_LDFLAGS" + fi + + else + cf_cv_find_linkage_iconv=no + fi + +fi +rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext + +fi +rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext + +LIBS="$cf_save_LIBS" + +if test "$cf_cv_find_linkage_iconv" = yes ; then +am_cv_func_iconv=yes +else +am_cv_func_iconv="no, consider installing GNU libiconv" +fi + +fi +echo "$as_me:8030: result: $am_cv_func_iconv" >&5 +echo "${ECHO_T}$am_cv_func_iconv" >&6 + + if test "$am_cv_func_iconv" = yes; then + +cat >>confdefs.h <<\EOF +#define HAVE_ICONV 1 +EOF + + echo "$as_me:8039: checking if the declaration of iconv() needs const." >&5 +echo $ECHO_N "checking if the declaration of iconv() needs const.... $ECHO_C" >&6 +if test "${am_cv_proto_iconv_const+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + + cat >conftest.$ac_ext <<_ACEOF +#line 8046 "configure" +#include "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 (void) +{ + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:8071: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:8074: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:8077: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:8080: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + am_cv_proto_iconv_const=no +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +am_cv_proto_iconv_const=yes +fi +rm -f conftest.$ac_objext conftest.$ac_ext +fi +echo "$as_me:8090: result: $am_cv_proto_iconv_const" >&5 +echo "${ECHO_T}$am_cv_proto_iconv_const" >&6 + + if test "$am_cv_proto_iconv_const" = yes ; then + am_cv_proto_iconv_arg1="const" + else + am_cv_proto_iconv_arg1="" + fi + +cat >>confdefs.h <conftest.$ac_ext <<_ACEOF +#line 8135 "configure" +#include "confdefs.h" +#include +int +main (void) +{ +printf("Hello") + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:8147: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:8150: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:8153: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:8156: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + : +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +cf_have_incdir=yes +fi +rm -f conftest.$ac_objext conftest.$ac_ext + CPPFLAGS=$cf_save_CPPFLAGS + fi + fi + fi + + if test "$cf_have_incdir" = no ; then + test -n "$verbose" && echo " adding $cf_add_incdir to include-path" 1>&6 + +echo "${as_me:-configure}:8173: testing adding $cf_add_incdir to include-path ..." 1>&5 + + CPPFLAGS="$CPPFLAGS -I$cf_add_incdir" + + cf_top_incdir=`echo $cf_add_incdir | sed -e 's%/include/.*$%/include%'` + test "$cf_top_incdir" = "$cf_add_incdir" && break + cf_add_incdir="$cf_top_incdir" + else + break + fi + else + break + fi + done + done +fi + + if test -n "$cf_cv_library_file_iconv" ; then + LIBICONV="-liconv" + +if test -n "$cf_cv_library_path_iconv" ; then + for cf_add_libdir in $cf_cv_library_path_iconv + do + if test $cf_add_libdir = /usr/lib ; then + : + elif test -d $cf_add_libdir + then + cf_have_libdir=no + if test -n "$LDFLAGS$LIBS" ; then + # a loop is needed to ensure we can add subdirs of existing dirs + for cf_test_libdir in $LDFLAGS $LIBS ; do + if test ".$cf_test_libdir" = ".-L$cf_add_libdir" ; then + cf_have_libdir=yes; break + fi + done + fi + if test "$cf_have_libdir" = no ; then + test -n "$verbose" && echo " adding $cf_add_libdir to library-path" 1>&6 + +echo "${as_me:-configure}:8212: testing adding $cf_add_libdir to library-path ..." 1>&5 + + LDFLAGS="-L$cf_add_libdir $LDFLAGS" + fi + fi + done +fi + + fi + fi + +echo "$as_me:8223: checking for nl_langinfo and CODESET" >&5 +echo $ECHO_N "checking for nl_langinfo and CODESET... $ECHO_C" >&6 +if test "${am_cv_langinfo_codeset+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +#line 8229 "configure" +#include "confdefs.h" +#include +int +main (void) +{ +char* cs = nl_langinfo(CODESET); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:8241: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:8244: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:8247: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:8250: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + am_cv_langinfo_codeset=yes +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +am_cv_langinfo_codeset=no +fi +rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext + +fi +echo "$as_me:8261: result: $am_cv_langinfo_codeset" >&5 +echo "${ECHO_T}$am_cv_langinfo_codeset" >&6 + if test $am_cv_langinfo_codeset = yes; then + +cat >>confdefs.h <<\EOF +#define HAVE_LANGINFO_CODESET 1 +EOF + + fi + + if test $ac_cv_header_locale_h = yes; then + echo "$as_me:8272: checking for LC_MESSAGES" >&5 +echo $ECHO_N "checking for LC_MESSAGES... $ECHO_C" >&6 +if test "${am_cv_val_LC_MESSAGES+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +#line 8278 "configure" +#include "confdefs.h" +#include +int +main (void) +{ +return LC_MESSAGES + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:8290: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:8293: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:8296: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:8299: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + am_cv_val_LC_MESSAGES=yes +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +am_cv_val_LC_MESSAGES=no +fi +rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext +fi +echo "$as_me:8309: result: $am_cv_val_LC_MESSAGES" >&5 +echo "${ECHO_T}$am_cv_val_LC_MESSAGES" >&6 + if test $am_cv_val_LC_MESSAGES = yes; then + +cat >>confdefs.h <<\EOF +#define HAVE_LC_MESSAGES 1 +EOF + + fi +fi + echo "$as_me:8319: checking whether NLS is requested" >&5 +echo $ECHO_N "checking whether NLS is requested... $ECHO_C" >&6 + +# Check whether --enable-nls or --disable-nls was given. +if test "${enable_nls+set}" = set; then + enableval="$enable_nls" + USE_NLS=$enableval +else + USE_NLS=no +fi; + echo "$as_me:8329: result: $USE_NLS" >&5 +echo "${ECHO_T}$USE_NLS" >&6 + + BUILD_INCLUDED_LIBINTL=no + USE_INCLUDED_LIBINTL=no + INTLLIBS= + + if test "$USE_NLS" = "yes"; then + POSUB=po + +cat >>confdefs.h <<\EOF +#define ENABLE_NLS 1 +EOF + + echo "$as_me:8343: checking whether included gettext is requested" >&5 +echo $ECHO_N "checking whether included gettext is requested... $ECHO_C" >&6 + +# Check whether --with-included-gettext or --without-included-gettext was given. +if test "${with_included_gettext+set}" = set; then + withval="$with_included_gettext" + nls_cv_force_use_gnu_gettext=$withval +else + nls_cv_force_use_gnu_gettext=no +fi; + echo "$as_me:8353: result: $nls_cv_force_use_gnu_gettext" >&5 +echo "${ECHO_T}$nls_cv_force_use_gnu_gettext" >&6 + + nls_cv_use_gnu_gettext="$nls_cv_force_use_gnu_gettext" + if test "$nls_cv_force_use_gnu_gettext" != "yes"; then + CATOBJEXT=NONE + + cf_save_msgfmt_path="$MSGFMT" + cf_save_xgettext_path="$XGETTEXT" + + # Extract the first word of "msgfmt", so it can be a program name with args. + +set dummy msgfmt; ac_word=$2 +echo "$as_me:8366: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_path_MSGFMT+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + case "$MSGFMT" in + ([\\/]*|?:[\\/]*) + ac_cv_path_MSGFMT="$MSGFMT" # Let the user override the test with a path. + ;; + (*) + IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}${PATH_SEPARATOR}" + for ac_dir in $PATH; do + test -z "$ac_dir" && ac_dir=. + if test -f $ac_dir/$ac_word$ac_exeext; then + if $ac_dir/$ac_word --statistics /dev/null >/dev/null 2>&1; then + ac_cv_path_MSGFMT="$ac_dir/$ac_word$ac_exeext" + break + fi + fi + done + IFS="$ac_save_ifs" + test -z "$ac_cv_path_MSGFMT" && ac_cv_path_MSGFMT=":" + ;; +esac +fi +MSGFMT="$ac_cv_path_MSGFMT" +if test "$MSGFMT" != ":"; then + echo "$as_me:8393: result: $MSGFMT" >&5 +echo "${ECHO_T}$MSGFMT" >&6 +else + echo "$as_me:8396: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + # Extract the first word of "gmsgfmt", so it can be a program name with args. +set dummy gmsgfmt; ac_word=$2 +echo "$as_me:8402: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_path_GMSGFMT+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + case $GMSGFMT in + [\\/]* | ?:[\\/]*) + ac_cv_path_GMSGFMT="$GMSGFMT" # Let the user override the test with a path. + ;; + *) + ac_save_IFS=$IFS; IFS=$ac_path_separator +ac_dummy="$PATH" +for ac_dir in $ac_dummy; do + IFS=$ac_save_IFS + test -z "$ac_dir" && ac_dir=. + if $as_executable_p "$ac_dir/$ac_word"; then + ac_cv_path_GMSGFMT="$ac_dir/$ac_word" + echo "$as_me:8419: found $ac_dir/$ac_word" >&5 + break +fi +done + + test -z "$ac_cv_path_GMSGFMT" && ac_cv_path_GMSGFMT="$MSGFMT" + ;; +esac +fi +GMSGFMT=$ac_cv_path_GMSGFMT + +if test -n "$GMSGFMT"; then + echo "$as_me:8431: result: $GMSGFMT" >&5 +echo "${ECHO_T}$GMSGFMT" >&6 +else + echo "$as_me:8434: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + # Extract the first word of "xgettext", so it can be a program name with args. + +set dummy xgettext; ac_word=$2 +echo "$as_me:8441: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_path_XGETTEXT+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + case "$XGETTEXT" in + ([\\/]*|?:[\\/]*) + ac_cv_path_XGETTEXT="$XGETTEXT" # Let the user override the test with a path. + ;; + (*) + IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}${PATH_SEPARATOR}" + for ac_dir in $PATH; do + test -z "$ac_dir" && ac_dir=. + if test -f $ac_dir/$ac_word$ac_exeext; then + if $ac_dir/$ac_word --omit-header /dev/null >/dev/null 2>&1; then + ac_cv_path_XGETTEXT="$ac_dir/$ac_word$ac_exeext" + break + fi + fi + done + IFS="$ac_save_ifs" + test -z "$ac_cv_path_XGETTEXT" && ac_cv_path_XGETTEXT=":" + ;; +esac +fi +XGETTEXT="$ac_cv_path_XGETTEXT" +if test "$XGETTEXT" != ":"; then + echo "$as_me:8468: result: $XGETTEXT" >&5 +echo "${ECHO_T}$XGETTEXT" >&6 +else + echo "$as_me:8471: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + cf_save_OPTS_1="$CPPFLAGS" + if test "x$cf_save_msgfmt_path" = "x$MSGFMT" && \ + test "x$cf_save_xgettext_path" = "x$XGETTEXT" ; then + +cf_fix_cppflags=no +cf_new_cflags= +cf_new_cppflags= +cf_new_extra_cppflags= + +for cf_add_cflags in -DIGNORE_MSGFMT_HACK +do +case $cf_fix_cppflags in +(no) + case $cf_add_cflags in + (-undef|-nostdinc*|-I*|-D*|-U*|-E|-P|-C) + case $cf_add_cflags in + (-D*) + cf_tst_cflags=`echo ${cf_add_cflags} |sed -e 's/^-D[^=]*='\''\"[^"]*//'` + + test "x${cf_add_cflags}" != "x${cf_tst_cflags}" \ + && test -z "${cf_tst_cflags}" \ + && cf_fix_cppflags=yes + + if test $cf_fix_cppflags = yes ; then + + test -n "$cf_new_extra_cppflags" && cf_new_extra_cppflags="$cf_new_extra_cppflags " + cf_new_extra_cppflags="${cf_new_extra_cppflags}$cf_add_cflags" + + continue + elif test "${cf_tst_cflags}" = "\"'" ; then + + test -n "$cf_new_extra_cppflags" && cf_new_extra_cppflags="$cf_new_extra_cppflags " + cf_new_extra_cppflags="${cf_new_extra_cppflags}$cf_add_cflags" + + continue + fi + ;; + esac + case "$CPPFLAGS" in + (*$cf_add_cflags) + ;; + (*) + case $cf_add_cflags in + (-D*) + cf_tst_cppflags=`echo "x$cf_add_cflags" | sed -e 's/^...//' -e 's/=.*//'` + +CPPFLAGS=`echo "$CPPFLAGS" | \ + sed -e 's/-[UD]'"$cf_tst_cppflags"'\(=[^ ]*\)\?[ ]/ /g' \ + -e 's/-[UD]'"$cf_tst_cppflags"'\(=[^ ]*\)\?$//g'` + + ;; + esac + + test -n "$cf_new_cppflags" && cf_new_cppflags="$cf_new_cppflags " + cf_new_cppflags="${cf_new_cppflags}$cf_add_cflags" + + ;; + esac + ;; + (*) + + test -n "$cf_new_cflags" && cf_new_cflags="$cf_new_cflags " + cf_new_cflags="${cf_new_cflags}$cf_add_cflags" + + ;; + esac + ;; +(yes) + + test -n "$cf_new_extra_cppflags" && cf_new_extra_cppflags="$cf_new_extra_cppflags " + cf_new_extra_cppflags="${cf_new_extra_cppflags}$cf_add_cflags" + + cf_tst_cflags=`echo ${cf_add_cflags} |sed -e 's/^[^"]*"'\''//'` + + test "x${cf_add_cflags}" != "x${cf_tst_cflags}" \ + && test -z "${cf_tst_cflags}" \ + && cf_fix_cppflags=no + ;; +esac +done + +if test -n "$cf_new_cflags" ; then + + test -n "$CFLAGS" && CFLAGS="$CFLAGS " + CFLAGS="${CFLAGS}$cf_new_cflags" + +fi + +if test -n "$cf_new_cppflags" ; then + + test -n "$CPPFLAGS" && CPPFLAGS="$CPPFLAGS " + CPPFLAGS="${CPPFLAGS}$cf_new_cppflags" + +fi + +if test -n "$cf_new_extra_cppflags" ; then + + test -n "$EXTRA_CPPFLAGS" && EXTRA_CPPFLAGS="$EXTRA_CPPFLAGS " + EXTRA_CPPFLAGS="${EXTRA_CPPFLAGS}$cf_new_extra_cppflags" + +fi + + fi + + cf_save_LIBS_1="$LIBS" + +cf_add_libs="$LIBICONV" +# Filter out duplicates - this happens with badly-designed ".pc" files... +for cf_add_1lib in $LIBS +do + for cf_add_2lib in $cf_add_libs + do + if test "x$cf_add_1lib" = "x$cf_add_2lib" + then + cf_add_1lib= + break + fi + done + test -n "$cf_add_1lib" && cf_add_libs="$cf_add_libs $cf_add_1lib" +done +LIBS="$cf_add_libs" + +# If the linkage is not already in the $CPPFLAGS/$LDFLAGS configuration, these +# will be set on completion of the AC_TRY_LINK below. +cf_cv_header_path_intl= +cf_cv_library_path_intl= + +echo "${as_me:-configure}:8602: testing Starting FIND_LINKAGE(intl,) ..." 1>&5 + +cf_save_LIBS="$LIBS" + +cat >conftest.$ac_ext <<_ACEOF +#line 8607 "configure" +#include "confdefs.h" + +#include +extern int _nl_msg_cat_cntr; + +int +main (void) +{ + + bindtextdomain ("", ""); + return (int) gettext ("") + +#ifndef IGNORE_MSGFMT_HACK + + _nl_msg_cat_cntr +#endif + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:8629: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:8632: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:8635: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:8638: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + + cf_cv_find_linkage_intl=yes + cf_cv_header_path_intl=/usr/include + cf_cv_library_path_intl=/usr/lib + +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 + +LIBS="-lintl $cf_save_LIBS" + +cat >conftest.$ac_ext <<_ACEOF +#line 8652 "configure" +#include "confdefs.h" + +#include +extern int _nl_msg_cat_cntr; + +int +main (void) +{ + + bindtextdomain ("", ""); + return (int) gettext ("") + +#ifndef IGNORE_MSGFMT_HACK + + _nl_msg_cat_cntr +#endif + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:8674: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:8677: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:8680: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:8683: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + + cf_cv_find_linkage_intl=yes + cf_cv_header_path_intl=/usr/include + cf_cv_library_path_intl=/usr/lib + cf_cv_library_file_intl="-lintl" + +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 + + cf_cv_find_linkage_intl=no + LIBS="$cf_save_LIBS" + + test -n "$verbose" && echo " find linkage for intl library" 1>&6 + +echo "${as_me:-configure}:8700: testing find linkage for intl library ..." 1>&5 + +echo "${as_me:-configure}:8702: testing Searching for headers in FIND_LINKAGE(intl,) ..." 1>&5 + + cf_save_CPPFLAGS="$CPPFLAGS" + cf_test_CPPFLAGS="$CPPFLAGS" + +cf_search= + +# collect the current set of include-directories from compiler flags +cf_header_path_list="" +if test -n "${CFLAGS}${CPPFLAGS}" ; then + for cf_header_path in $CPPFLAGS $CFLAGS + do + case $cf_header_path in + (-I*) + cf_header_path=`echo ".$cf_header_path" |sed -e 's/^...//' -e 's,/include$,,'` + +test "x$cf_header_path" != "xNONE" && \ +test -d "$cf_header_path" && \ + { + test -n "$verbose" && echo " ... testing for include-directories under $cf_header_path" + test -d $cf_header_path/include && cf_search="$cf_search $cf_header_path/include" + test -d $cf_header_path/include/intl && cf_search="$cf_search $cf_header_path/include/intl" + test -d $cf_header_path/include/intl/include && cf_search="$cf_search $cf_header_path/include/intl/include" + test -d $cf_header_path/intl/include && cf_search="$cf_search $cf_header_path/intl/include" + test -d $cf_header_path/intl/include/intl && cf_search="$cf_search $cf_header_path/intl/include/intl" +} + + cf_header_path_list="$cf_header_path_list $cf_search" + ;; + esac + done +fi + +# add the variations for the package we are looking for + +cf_search= + +test "x$prefix" != "xNONE" && \ +test -d "$prefix" && \ + { + test -n "$verbose" && echo " ... testing for include-directories under $prefix" + test -d $prefix/include && cf_search="$cf_search $prefix/include" + test -d $prefix/include/intl && cf_search="$cf_search $prefix/include/intl" + test -d $prefix/include/intl/include && cf_search="$cf_search $prefix/include/intl/include" + test -d $prefix/intl/include && cf_search="$cf_search $prefix/intl/include" + test -d $prefix/intl/include/intl && cf_search="$cf_search $prefix/intl/include/intl" +} + +for cf_subdir_prefix in \ + /usr \ + /usr/local \ + /usr/pkg \ + /opt \ + /opt/local \ + $HOME +do + +test "x$cf_subdir_prefix" != "x$prefix" && \ +test -d "$cf_subdir_prefix" && \ +(test -z "$prefix" || test x$prefix = xNONE || test "x$cf_subdir_prefix" != "x$prefix") && { + test -n "$verbose" && echo " ... testing for include-directories under $cf_subdir_prefix" + test -d $cf_subdir_prefix/include && cf_search="$cf_search $cf_subdir_prefix/include" + test -d $cf_subdir_prefix/include/intl && cf_search="$cf_search $cf_subdir_prefix/include/intl" + test -d $cf_subdir_prefix/include/intl/include && cf_search="$cf_search $cf_subdir_prefix/include/intl/include" + test -d $cf_subdir_prefix/intl/include && cf_search="$cf_search $cf_subdir_prefix/intl/include" + test -d $cf_subdir_prefix/intl/include/intl && cf_search="$cf_search $cf_subdir_prefix/intl/include/intl" +} + +done + +test "$includedir" != NONE && \ +test "$includedir" != "/usr/include" && \ +test -d "$includedir" && { + test -d $includedir && cf_search="$cf_search $includedir" + test -d $includedir/intl && cf_search="$cf_search $includedir/intl" +} + +test "$oldincludedir" != NONE && \ +test "$oldincludedir" != "/usr/include" && \ +test -d "$oldincludedir" && { + test -d $oldincludedir && cf_search="$cf_search $oldincludedir" + test -d $oldincludedir/intl && cf_search="$cf_search $oldincludedir/intl" +} + +cf_search="$cf_search $cf_header_path_list" + + for cf_cv_header_path_intl in $cf_search + do + if test -d $cf_cv_header_path_intl ; then + test -n "$verbose" && echo " ... testing $cf_cv_header_path_intl" 1>&6 + +echo "${as_me:-configure}:8793: testing ... testing $cf_cv_header_path_intl ..." 1>&5 + + CPPFLAGS="$cf_save_CPPFLAGS" + + test -n "$CPPFLAGS" && CPPFLAGS="$CPPFLAGS " + CPPFLAGS="${CPPFLAGS}-I$cf_cv_header_path_intl" + + cat >conftest.$ac_ext <<_ACEOF +#line 8801 "configure" +#include "confdefs.h" + +#include +extern int _nl_msg_cat_cntr; + +int +main (void) +{ + + bindtextdomain ("", ""); + return (int) gettext ("") + +#ifndef IGNORE_MSGFMT_HACK + + _nl_msg_cat_cntr +#endif + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:8823: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:8826: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:8829: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:8832: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + + test -n "$verbose" && echo " ... found intl headers in $cf_cv_header_path_intl" 1>&6 + +echo "${as_me:-configure}:8837: testing ... found intl headers in $cf_cv_header_path_intl ..." 1>&5 + + cf_cv_find_linkage_intl=maybe + cf_test_CPPFLAGS="$CPPFLAGS" + break +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 + + CPPFLAGS="$cf_save_CPPFLAGS" + +fi +rm -f conftest.$ac_objext conftest.$ac_ext + fi + done + + if test "$cf_cv_find_linkage_intl" = maybe ; then + +echo "${as_me:-configure}:8855: testing Searching for intl library in FIND_LINKAGE(intl,) ..." 1>&5 + + cf_save_LIBS="$LIBS" + cf_save_LDFLAGS="$LDFLAGS" + + if test "$cf_cv_find_linkage_intl" != yes ; then + +cf_search= +cf_library_path_list="" +if test -n "${LDFLAGS}${LIBS}" ; then + for cf_library_path in $LDFLAGS $LIBS + do + case $cf_library_path in + (-L*) + cf_library_path=`echo ".$cf_library_path" |sed -e 's/^...//' -e 's,/lib$,,'` + +test "x$cf_library_path" != "xNONE" && \ +test -d "$cf_library_path" && \ + { + test -n "$verbose" && echo " ... testing for lib-directories under $cf_library_path" + test -d $cf_library_path/lib && cf_search="$cf_search $cf_library_path/lib" + test -d $cf_library_path/lib/intl && cf_search="$cf_search $cf_library_path/lib/intl" + test -d $cf_library_path/lib/intl/lib && cf_search="$cf_search $cf_library_path/lib/intl/lib" + test -d $cf_library_path/intl/lib && cf_search="$cf_search $cf_library_path/intl/lib" + test -d $cf_library_path/intl/lib/intl && cf_search="$cf_search $cf_library_path/intl/lib/intl" +} + + cf_library_path_list="$cf_library_path_list $cf_search" + ;; + esac + done +fi + +cf_search= + +test "x$prefix" != "xNONE" && \ +test -d "$prefix" && \ + { + test -n "$verbose" && echo " ... testing for lib-directories under $prefix" + test -d $prefix/lib && cf_search="$cf_search $prefix/lib" + test -d $prefix/lib/intl && cf_search="$cf_search $prefix/lib/intl" + test -d $prefix/lib/intl/lib && cf_search="$cf_search $prefix/lib/intl/lib" + test -d $prefix/intl/lib && cf_search="$cf_search $prefix/intl/lib" + test -d $prefix/intl/lib/intl && cf_search="$cf_search $prefix/intl/lib/intl" +} + +for cf_subdir_prefix in \ + /usr \ + /usr/local \ + /usr/pkg \ + /opt \ + /opt/local \ + $HOME +do + +test "x$cf_subdir_prefix" != "x$prefix" && \ +test -d "$cf_subdir_prefix" && \ +(test -z "$prefix" || test x$prefix = xNONE || test "x$cf_subdir_prefix" != "x$prefix") && { + test -n "$verbose" && echo " ... testing for lib-directories under $cf_subdir_prefix" + test -d $cf_subdir_prefix/lib && cf_search="$cf_search $cf_subdir_prefix/lib" + test -d $cf_subdir_prefix/lib/intl && cf_search="$cf_search $cf_subdir_prefix/lib/intl" + test -d $cf_subdir_prefix/lib/intl/lib && cf_search="$cf_search $cf_subdir_prefix/lib/intl/lib" + test -d $cf_subdir_prefix/intl/lib && cf_search="$cf_search $cf_subdir_prefix/intl/lib" + test -d $cf_subdir_prefix/intl/lib/intl && cf_search="$cf_search $cf_subdir_prefix/intl/lib/intl" +} + +done + +cf_search="$cf_library_path_list $cf_search" + + for cf_cv_library_path_intl in $cf_search + do + if test -d $cf_cv_library_path_intl ; then + test -n "$verbose" && echo " ... testing $cf_cv_library_path_intl" 1>&6 + +echo "${as_me:-configure}:8930: testing ... testing $cf_cv_library_path_intl ..." 1>&5 + + CPPFLAGS="$cf_test_CPPFLAGS" + LIBS="-lintl $cf_save_LIBS" + LDFLAGS="$cf_save_LDFLAGS -L$cf_cv_library_path_intl" + cat >conftest.$ac_ext <<_ACEOF +#line 8936 "configure" +#include "confdefs.h" + +#include +extern int _nl_msg_cat_cntr; + +int +main (void) +{ + + bindtextdomain ("", ""); + return (int) gettext ("") + +#ifndef IGNORE_MSGFMT_HACK + + _nl_msg_cat_cntr +#endif + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:8958: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:8961: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:8964: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:8967: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + + test -n "$verbose" && echo " ... found intl library in $cf_cv_library_path_intl" 1>&6 + +echo "${as_me:-configure}:8972: testing ... found intl library in $cf_cv_library_path_intl ..." 1>&5 + + cf_cv_find_linkage_intl=yes + cf_cv_library_file_intl="-lintl" + break +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 + + CPPFLAGS="$cf_save_CPPFLAGS" + LIBS="$cf_save_LIBS" + LDFLAGS="$cf_save_LDFLAGS" + +fi +rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext + fi + done + CPPFLAGS="$cf_save_CPPFLAGS" + LDFLAGS="$cf_save_LDFLAGS" + fi + + else + cf_cv_find_linkage_intl=no + fi + +fi +rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext + +fi +rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext + +LIBS="$cf_save_LIBS" + +if test "$cf_cv_find_linkage_intl" = yes ; then +cf_cv_func_gettext=yes +else +cf_cv_func_gettext=no +fi + + echo "$as_me:9011: checking for libintl.h and gettext()" >&5 +echo $ECHO_N "checking for libintl.h and gettext()... $ECHO_C" >&6 + echo "$as_me:9013: result: $cf_cv_func_gettext" >&5 +echo "${ECHO_T}$cf_cv_func_gettext" >&6 + + LIBS="$cf_save_LIBS_1" + CPPFLAGS="$cf_save_OPTS_1" + + if test "$cf_cv_func_gettext" = yes ; then + +cat >>confdefs.h <<\EOF +#define HAVE_LIBINTL_H 1 +EOF + + if test "$PACKAGE" != gettext; then + +cat >>confdefs.h <<\EOF +#define HAVE_GETTEXT 1 +EOF + +if test -n "$cf_cv_header_path_intl" ; then + for cf_add_incdir in $cf_cv_header_path_intl + do + while test $cf_add_incdir != /usr/include + do + if test -d $cf_add_incdir + then + cf_have_incdir=no + if test -n "$CFLAGS$CPPFLAGS" ; then + # a loop is needed to ensure we can add subdirs of existing dirs + for cf_test_incdir in $CFLAGS $CPPFLAGS ; do + if test ".$cf_test_incdir" = ".-I$cf_add_incdir" ; then + cf_have_incdir=yes; break + fi + done + fi + + if test "$cf_have_incdir" = no ; then + if test "$cf_add_incdir" = /usr/local/include ; then + if test "$GCC" = yes + then + cf_save_CPPFLAGS=$CPPFLAGS + + test -n "$CPPFLAGS" && CPPFLAGS="$CPPFLAGS " + CPPFLAGS="${CPPFLAGS}-I$cf_add_incdir" + + cat >conftest.$ac_ext <<_ACEOF +#line 9058 "configure" +#include "confdefs.h" +#include +int +main (void) +{ +printf("Hello") + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:9070: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:9073: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:9076: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:9079: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + : +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +cf_have_incdir=yes +fi +rm -f conftest.$ac_objext conftest.$ac_ext + CPPFLAGS=$cf_save_CPPFLAGS + fi + fi + fi + + if test "$cf_have_incdir" = no ; then + test -n "$verbose" && echo " adding $cf_add_incdir to include-path" 1>&6 + +echo "${as_me:-configure}:9096: testing adding $cf_add_incdir to include-path ..." 1>&5 + + CPPFLAGS="$CPPFLAGS -I$cf_add_incdir" + + cf_top_incdir=`echo $cf_add_incdir | sed -e 's%/include/.*$%/include%'` + test "$cf_top_incdir" = "$cf_add_incdir" && break + cf_add_incdir="$cf_top_incdir" + else + break + fi + else + break + fi + done + done +fi + + if test -n "$cf_cv_library_file_intl" ; then + INTLLIBS="$cf_cv_library_file_intl $LIBICONV" + +if test -n "$cf_cv_library_path_intl" ; then + for cf_add_libdir in $cf_cv_library_path_intl + do + if test $cf_add_libdir = /usr/lib ; then + : + elif test -d $cf_add_libdir + then + cf_have_libdir=no + if test -n "$LDFLAGS$LIBS" ; then + # a loop is needed to ensure we can add subdirs of existing dirs + for cf_test_libdir in $LDFLAGS $LIBS ; do + if test ".$cf_test_libdir" = ".-L$cf_add_libdir" ; then + cf_have_libdir=yes; break + fi + done + fi + if test "$cf_have_libdir" = no ; then + test -n "$verbose" && echo " adding $cf_add_libdir to library-path" 1>&6 + +echo "${as_me:-configure}:9135: testing adding $cf_add_libdir to library-path ..." 1>&5 + + INTLLIBS="-L$cf_add_libdir $INTLLIBS" + fi + fi + done +fi + + fi + + gt_save_LIBS="$LIBS" + LIBS="$LIBS $INTLLIBS" + +for ac_func in dcgettext +do +as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` +echo "$as_me:9151: checking for $ac_func" >&5 +echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6 +if eval "test \"\${$as_ac_var+set}\" = set"; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +#line 9157 "configure" +#include "confdefs.h" +/* System header to define __stub macros and hopefully few prototypes, + which can conflict with char $ac_func (); below. */ +#include +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char $ac_func (); +char (*f) (); + +int +main (void) +{ +/* 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 +f = $ac_func; /* workaround for ICC 12.0.3 */ if (f == 0) return 1; +#endif + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:9188: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:9191: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:9194: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:9197: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + eval "$as_ac_var=yes" +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +eval "$as_ac_var=no" +fi +rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext +fi +echo "$as_me:9207: result: `eval echo '${'$as_ac_var'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6 +if test `eval echo '${'$as_ac_var'}'` = yes; then + cat >>confdefs.h <&5 +echo "$as_me: WARNING: disabling NLS feature" >&2;} + sed -e /ENABLE_NLS/d confdefs.h >confdefs.tmp + mv confdefs.tmp confdefs.h + ALL_LINGUAS= + CATOBJEXT=.ignored + MSGFMT=":" + GMSGFMT=":" + XGETTEXT=":" + POSUB= + BUILD_INCLUDED_LIBINTL=no + USE_INCLUDED_LIBINTL=no + USE_NLS=no + nls_cv_use_gnu_gettext=no + fi + + if test "$CATOBJEXT" = "NONE"; then + nls_cv_use_gnu_gettext=maybe + fi + fi + + if test "$nls_cv_use_gnu_gettext" != "no"; then + CATOBJEXT=.gmo + if test -f $srcdir/intl/libintl.h ; then + INTLOBJS="\$(GETTOBJS)" + BUILD_INCLUDED_LIBINTL=yes + USE_INCLUDED_LIBINTL=yes + INTLLIBS="\$(top_builddir)/intl/libintl.a $LIBICONV" + LIBS=`echo " $LIBS " | sed -e 's/ -lintl / /' -e 's/^ //' -e 's/ $//'` + elif test "$nls_cv_use_gnu_gettext" = "yes"; then + nls_cv_use_gnu_gettext=no + { echo "$as_me:9253: WARNING: no NLS library is packaged with this application" >&5 +echo "$as_me: WARNING: no NLS library is packaged with this application" >&2;} + fi + fi + + if test "$GMSGFMT" != ":"; then + if $GMSGFMT --statistics /dev/null >/dev/null 2>&1; then + : ; + else + { echo "$as_me:9262: WARNING: found msgfmt program is not GNU msgfmt" >&5 +echo "$as_me: WARNING: found msgfmt program is not GNU msgfmt" >&2;} + fi + fi + + if test "$XGETTEXT" != ":"; then + if $XGETTEXT --omit-header /dev/null >/dev/null 2>&1; then + : ; + else + { echo "$as_me:9271: WARNING: found xgettext program is not GNU xgettext" >&5 +echo "$as_me: WARNING: found xgettext program is not GNU xgettext" >&2;} + fi + fi + fi + + if test "$XGETTEXT" != ":"; then + ac_config_commands="$ac_config_commands default-1" + + if test "$PACKAGE" = gettext; then + BUILD_INCLUDED_LIBINTL=yes + fi + + if test "$nls_cv_use_gnu_gettext" = "yes"; then + for ac_prog in bison +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +echo "$as_me:9289: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_INTLBISON+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$INTLBISON"; then + ac_cv_prog_INTLBISON="$INTLBISON" # Let the user override the test. +else + ac_save_IFS=$IFS; IFS=$ac_path_separator +ac_dummy="$PATH" +for ac_dir in $ac_dummy; do + IFS=$ac_save_IFS + test -z "$ac_dir" && ac_dir=. + $as_executable_p "$ac_dir/$ac_word" || continue +ac_cv_prog_INTLBISON="$ac_prog" +echo "$as_me:9304: found $ac_dir/$ac_word" >&5 +break +done + +fi +fi +INTLBISON=$ac_cv_prog_INTLBISON +if test -n "$INTLBISON"; then + echo "$as_me:9312: result: $INTLBISON" >&5 +echo "${ECHO_T}$INTLBISON" >&6 +else + echo "$as_me:9315: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + test -n "$INTLBISON" && break +done + + if test -z "$INTLBISON"; then + ac_verc_fail=yes + else + echo "$as_me:9325: checking version of bison" >&5 +echo $ECHO_N "checking version of bison... $ECHO_C" >&6 + ac_prog_version=`$INTLBISON --version 2>&1 | sed -n 's/^.*GNU Bison.* \([0-9]*\.[0-9.]*\).*$/\1/p'` + case $ac_prog_version in + ('') ac_prog_version="v. ?.??, bad"; ac_verc_fail=yes;; + (1.2[6-9]*|1.[3-9][0-9]*|[2-9].*) + ac_prog_version="$ac_prog_version, ok"; ac_verc_fail=no;; + (*) ac_prog_version="$ac_prog_version, bad"; ac_verc_fail=yes;; + esac + echo "$as_me:9334: result: $ac_prog_version" >&5 +echo "${ECHO_T}$ac_prog_version" >&6 + fi + if test $ac_verc_fail = yes; then + INTLBISON=: + fi + fi + + for lang in $ALL_LINGUAS; do + GMOFILES="$GMOFILES $lang.gmo" + POFILES="$POFILES $lang.po" + done + fi + + 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 "$as_me:9361: checking for catalogs to be installed" >&5 +echo $ECHO_N "checking for catalogs to be installed... $ECHO_C" >&6 + 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 "$as_me:9381: result: $LINGUAS" >&5 +echo "${ECHO_T}$LINGUAS" >&6 + fi + + if test -n "$LINGUAS"; then + for lang in $LINGUAS; do CATALOGS="$CATALOGS $lang$CATOBJEXT"; done + fi + fi + + INTL_LIBTOOL_SUFFIX_PREFIX= + +if test "$USE_NLS" = yes ; then + +# Check whether --with-textdomain or --without-textdomain was given. +if test "${with_textdomain+set}" = set; then + withval="$with_textdomain" + NLS_TEXTDOMAIN=$withval +else + NLS_TEXTDOMAIN=$PACKAGE +fi; + +cat >>confdefs.h <&5 +echo $ECHO_N "checking if we should use included message-library... $ECHO_C" >&6 + +# Check whether --enable-included-msgs or --disable-included-msgs was given. +if test "${enable_included_msgs+set}" = set; then + enableval="$enable_included_msgs" + use_our_messages=$enableval +else + use_our_messages=yes +fi; +fi +echo "$as_me:9428: result: $use_our_messages" >&5 +echo "${ECHO_T}$use_our_messages" >&6 +fi + +MSG_DIR_MAKE="#" +if test "$use_our_messages" = yes +then + SUB_MAKEFILE="$SUB_MAKEFILE po/$cf_makefile.in:$srcdir/po/$cf_makefile.inn" + MSG_DIR_MAKE= +fi + +if test "$USE_INCLUDED_LIBINTL" = yes ; then + if test "$nls_cv_force_use_gnu_gettext" = yes ; then + : + elif test "$nls_cv_use_gnu_gettext" = yes ; then + : + else + INTLDIR_MAKE="#" + fi + if test -z "$INTLDIR_MAKE"; then + +cat >>confdefs.h <<\EOF +#define HAVE_LIBGETTEXT_H 1 +EOF + + for cf_makefile in \ + $srcdir/intl/Makefile.in \ + $srcdir/intl/makefile.in + do + if test -f "$cf_makefile" ; then + SUB_MAKEFILE="$SUB_MAKEFILE `echo \"${cf_makefile}\"|sed -e 's,^'$srcdir/',,' -e 's/\.in$//'`:${cf_makefile}" + break + fi + done + fi +else + INTLDIR_MAKE="#" + if test "$USE_NLS" = yes ; then + +for ac_header in libintl.h +do +as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` +echo "$as_me:9470: checking for $ac_header" >&5 +echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 +if eval "test \"\${$as_ac_Header+set}\" = set"; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +#line 9476 "configure" +#include "confdefs.h" +#include <$ac_header> +_ACEOF +if { (eval echo "$as_me:9480: \"$ac_cpp conftest.$ac_ext\"") >&5 + (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 + ac_status=$? + egrep -v '^ *\+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:9486: \$? = $ac_status" >&5 + (exit $ac_status); } >/dev/null; then + if test -s conftest.err; then + ac_cpp_err=$ac_c_preproc_warn_flag + else + ac_cpp_err= + fi +else + ac_cpp_err=yes +fi +if test -z "$ac_cpp_err"; then + eval "$as_ac_Header=yes" +else + echo "$as_me: failed program was:" >&5 + cat conftest.$ac_ext >&5 + eval "$as_ac_Header=no" +fi +rm -f conftest.err conftest.$ac_ext +fi +echo "$as_me:9505: result: `eval echo '${'$as_ac_Header'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 +if test `eval echo '${'$as_ac_Header'}'` = yes; then + cat >>confdefs.h <>confdefs.h <<\EOF +#define HAVE_GETTEXT 1 +EOF + + elif test "$nls_cv_use_gnu_gettext" = yes ; then + +cat >>confdefs.h <<\EOF +#define HAVE_GETTEXT 1 +EOF + + fi + if test -n "$nls_cv_header_intl" ; then + +cat >>confdefs.h <<\EOF +#define HAVE_LIBINTL_H 1 +EOF + + fi +fi + +echo "$as_me:9556: checking if -lm needed for math functions" >&5 +echo $ECHO_N "checking if -lm needed for math functions... $ECHO_C" >&6 +if test "${cf_cv_need_libm+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + + cat >conftest.$ac_ext <<_ACEOF +#line 9563 "configure" +#include "confdefs.h" + + #include + #include + #include + +int +main (void) +{ +double x = rand(); printf("result = %g\n", sqrt(x)) + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:9579: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:9582: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:9585: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:9588: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + cf_cv_need_libm=no +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +cf_cv_need_libm=yes +fi +rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext +fi +echo "$as_me:9598: result: $cf_cv_need_libm" >&5 +echo "${ECHO_T}$cf_cv_need_libm" >&6 +if test "$cf_cv_need_libm" = yes +then + +cf_add_libs="-lm" +# Filter out duplicates - this happens with badly-designed ".pc" files... +for cf_add_1lib in $LIBS +do + for cf_add_2lib in $cf_add_libs + do + if test "x$cf_add_1lib" = "x$cf_add_2lib" + then + cf_add_1lib= + break + fi + done + test -n "$cf_add_1lib" && cf_add_libs="$cf_add_libs $cf_add_1lib" +done +LIBS="$cf_add_libs" + +fi + +echo "$as_me:9621: checking if you want to use dmalloc for testing" >&5 +echo $ECHO_N "checking if you want to use dmalloc for testing... $ECHO_C" >&6 + +# Check whether --with-dmalloc or --without-dmalloc was given. +if test "${with_dmalloc+set}" = set; then + withval="$with_dmalloc" + +cat >>confdefs.h <&5 +echo "${ECHO_T}${with_dmalloc:-no}" >&6 + +case .$with_cflags in +(.*-g*) + case .$CFLAGS in + (.*-g*) + ;; + (*) + +cf_fix_cppflags=no +cf_new_cflags= +cf_new_cppflags= +cf_new_extra_cppflags= + +for cf_add_cflags in -g +do +case $cf_fix_cppflags in +(no) + case $cf_add_cflags in + (-undef|-nostdinc*|-I*|-D*|-U*|-E|-P|-C) + case $cf_add_cflags in + (-D*) + cf_tst_cflags=`echo ${cf_add_cflags} |sed -e 's/^-D[^=]*='\''\"[^"]*//'` + + test "x${cf_add_cflags}" != "x${cf_tst_cflags}" \ + && test -z "${cf_tst_cflags}" \ + && cf_fix_cppflags=yes + + if test $cf_fix_cppflags = yes ; then + + test -n "$cf_new_extra_cppflags" && cf_new_extra_cppflags="$cf_new_extra_cppflags " + cf_new_extra_cppflags="${cf_new_extra_cppflags}$cf_add_cflags" + + continue + elif test "${cf_tst_cflags}" = "\"'" ; then + + test -n "$cf_new_extra_cppflags" && cf_new_extra_cppflags="$cf_new_extra_cppflags " + cf_new_extra_cppflags="${cf_new_extra_cppflags}$cf_add_cflags" + + continue + fi + ;; + esac + case "$CPPFLAGS" in + (*$cf_add_cflags) + ;; + (*) + case $cf_add_cflags in + (-D*) + cf_tst_cppflags=`echo "x$cf_add_cflags" | sed -e 's/^...//' -e 's/=.*//'` + +CPPFLAGS=`echo "$CPPFLAGS" | \ + sed -e 's/-[UD]'"$cf_tst_cppflags"'\(=[^ ]*\)\?[ ]/ /g' \ + -e 's/-[UD]'"$cf_tst_cppflags"'\(=[^ ]*\)\?$//g'` + + ;; + esac + + test -n "$cf_new_cppflags" && cf_new_cppflags="$cf_new_cppflags " + cf_new_cppflags="${cf_new_cppflags}$cf_add_cflags" + + ;; + esac + ;; + (*) + + test -n "$cf_new_cflags" && cf_new_cflags="$cf_new_cflags " + cf_new_cflags="${cf_new_cflags}$cf_add_cflags" + + ;; + esac + ;; +(yes) + + test -n "$cf_new_extra_cppflags" && cf_new_extra_cppflags="$cf_new_extra_cppflags " + cf_new_extra_cppflags="${cf_new_extra_cppflags}$cf_add_cflags" + + cf_tst_cflags=`echo ${cf_add_cflags} |sed -e 's/^[^"]*"'\''//'` + + test "x${cf_add_cflags}" != "x${cf_tst_cflags}" \ + && test -z "${cf_tst_cflags}" \ + && cf_fix_cppflags=no + ;; +esac +done + +if test -n "$cf_new_cflags" ; then + + test -n "$CFLAGS" && CFLAGS="$CFLAGS " + CFLAGS="${CFLAGS}$cf_new_cflags" + +fi + +if test -n "$cf_new_cppflags" ; then + + test -n "$CPPFLAGS" && CPPFLAGS="$CPPFLAGS " + CPPFLAGS="${CPPFLAGS}$cf_new_cppflags" + +fi + +if test -n "$cf_new_extra_cppflags" ; then + + test -n "$EXTRA_CPPFLAGS" && EXTRA_CPPFLAGS="$EXTRA_CPPFLAGS " + EXTRA_CPPFLAGS="${EXTRA_CPPFLAGS}$cf_new_extra_cppflags" + +fi + + ;; + esac + ;; +esac + +if test "$with_dmalloc" = yes ; then + echo "$as_me:9752: checking for dmalloc.h" >&5 +echo $ECHO_N "checking for dmalloc.h... $ECHO_C" >&6 +if test "${ac_cv_header_dmalloc_h+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +#line 9758 "configure" +#include "confdefs.h" +#include +_ACEOF +if { (eval echo "$as_me:9762: \"$ac_cpp conftest.$ac_ext\"") >&5 + (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 + ac_status=$? + egrep -v '^ *\+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:9768: \$? = $ac_status" >&5 + (exit $ac_status); } >/dev/null; then + if test -s conftest.err; then + ac_cpp_err=$ac_c_preproc_warn_flag + else + ac_cpp_err= + fi +else + ac_cpp_err=yes +fi +if test -z "$ac_cpp_err"; then + ac_cv_header_dmalloc_h=yes +else + echo "$as_me: failed program was:" >&5 + cat conftest.$ac_ext >&5 + ac_cv_header_dmalloc_h=no +fi +rm -f conftest.err conftest.$ac_ext +fi +echo "$as_me:9787: result: $ac_cv_header_dmalloc_h" >&5 +echo "${ECHO_T}$ac_cv_header_dmalloc_h" >&6 +if test $ac_cv_header_dmalloc_h = yes; then + +echo "$as_me:9791: checking for dmalloc_debug in -ldmalloc" >&5 +echo $ECHO_N "checking for dmalloc_debug in -ldmalloc... $ECHO_C" >&6 +if test "${ac_cv_lib_dmalloc_dmalloc_debug+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-ldmalloc $LIBS" +cat >conftest.$ac_ext <<_ACEOF +#line 9799 "configure" +#include "confdefs.h" + +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char dmalloc_debug (); +int +main (void) +{ +dmalloc_debug (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:9818: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:9821: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:9824: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:9827: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_lib_dmalloc_dmalloc_debug=yes +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +ac_cv_lib_dmalloc_dmalloc_debug=no +fi +rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +echo "$as_me:9838: result: $ac_cv_lib_dmalloc_dmalloc_debug" >&5 +echo "${ECHO_T}$ac_cv_lib_dmalloc_dmalloc_debug" >&6 +if test $ac_cv_lib_dmalloc_dmalloc_debug = yes; then + cat >>confdefs.h <&5 +echo $ECHO_N "checking if you want to use dbmalloc for testing... $ECHO_C" >&6 + +# Check whether --with-dbmalloc or --without-dbmalloc was given. +if test "${with_dbmalloc+set}" = set; then + withval="$with_dbmalloc" + +cat >>confdefs.h <&5 +echo "${ECHO_T}${with_dbmalloc:-no}" >&6 + +case .$with_cflags in +(.*-g*) + case .$CFLAGS in + (.*-g*) + ;; + (*) + +cf_fix_cppflags=no +cf_new_cflags= +cf_new_cppflags= +cf_new_extra_cppflags= + +for cf_add_cflags in -g +do +case $cf_fix_cppflags in +(no) + case $cf_add_cflags in + (-undef|-nostdinc*|-I*|-D*|-U*|-E|-P|-C) + case $cf_add_cflags in + (-D*) + cf_tst_cflags=`echo ${cf_add_cflags} |sed -e 's/^-D[^=]*='\''\"[^"]*//'` + + test "x${cf_add_cflags}" != "x${cf_tst_cflags}" \ + && test -z "${cf_tst_cflags}" \ + && cf_fix_cppflags=yes + + if test $cf_fix_cppflags = yes ; then + + test -n "$cf_new_extra_cppflags" && cf_new_extra_cppflags="$cf_new_extra_cppflags " + cf_new_extra_cppflags="${cf_new_extra_cppflags}$cf_add_cflags" + + continue + elif test "${cf_tst_cflags}" = "\"'" ; then + + test -n "$cf_new_extra_cppflags" && cf_new_extra_cppflags="$cf_new_extra_cppflags " + cf_new_extra_cppflags="${cf_new_extra_cppflags}$cf_add_cflags" + + continue + fi + ;; + esac + case "$CPPFLAGS" in + (*$cf_add_cflags) + ;; + (*) + case $cf_add_cflags in + (-D*) + cf_tst_cppflags=`echo "x$cf_add_cflags" | sed -e 's/^...//' -e 's/=.*//'` + +CPPFLAGS=`echo "$CPPFLAGS" | \ + sed -e 's/-[UD]'"$cf_tst_cppflags"'\(=[^ ]*\)\?[ ]/ /g' \ + -e 's/-[UD]'"$cf_tst_cppflags"'\(=[^ ]*\)\?$//g'` + + ;; + esac + + test -n "$cf_new_cppflags" && cf_new_cppflags="$cf_new_cppflags " + cf_new_cppflags="${cf_new_cppflags}$cf_add_cflags" + + ;; + esac + ;; + (*) + + test -n "$cf_new_cflags" && cf_new_cflags="$cf_new_cflags " + cf_new_cflags="${cf_new_cflags}$cf_add_cflags" + + ;; + esac + ;; +(yes) + + test -n "$cf_new_extra_cppflags" && cf_new_extra_cppflags="$cf_new_extra_cppflags " + cf_new_extra_cppflags="${cf_new_extra_cppflags}$cf_add_cflags" + + cf_tst_cflags=`echo ${cf_add_cflags} |sed -e 's/^[^"]*"'\''//'` + + test "x${cf_add_cflags}" != "x${cf_tst_cflags}" \ + && test -z "${cf_tst_cflags}" \ + && cf_fix_cppflags=no + ;; +esac +done + +if test -n "$cf_new_cflags" ; then + + test -n "$CFLAGS" && CFLAGS="$CFLAGS " + CFLAGS="${CFLAGS}$cf_new_cflags" + +fi + +if test -n "$cf_new_cppflags" ; then + + test -n "$CPPFLAGS" && CPPFLAGS="$CPPFLAGS " + CPPFLAGS="${CPPFLAGS}$cf_new_cppflags" + +fi + +if test -n "$cf_new_extra_cppflags" ; then + + test -n "$EXTRA_CPPFLAGS" && EXTRA_CPPFLAGS="$EXTRA_CPPFLAGS " + EXTRA_CPPFLAGS="${EXTRA_CPPFLAGS}$cf_new_extra_cppflags" + +fi + + ;; + esac + ;; +esac + +if test "$with_dbmalloc" = yes ; then + echo "$as_me:9984: checking for dbmalloc.h" >&5 +echo $ECHO_N "checking for dbmalloc.h... $ECHO_C" >&6 +if test "${ac_cv_header_dbmalloc_h+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +#line 9990 "configure" +#include "confdefs.h" +#include +_ACEOF +if { (eval echo "$as_me:9994: \"$ac_cpp conftest.$ac_ext\"") >&5 + (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 + ac_status=$? + egrep -v '^ *\+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:10000: \$? = $ac_status" >&5 + (exit $ac_status); } >/dev/null; then + if test -s conftest.err; then + ac_cpp_err=$ac_c_preproc_warn_flag + else + ac_cpp_err= + fi +else + ac_cpp_err=yes +fi +if test -z "$ac_cpp_err"; then + ac_cv_header_dbmalloc_h=yes +else + echo "$as_me: failed program was:" >&5 + cat conftest.$ac_ext >&5 + ac_cv_header_dbmalloc_h=no +fi +rm -f conftest.err conftest.$ac_ext +fi +echo "$as_me:10019: result: $ac_cv_header_dbmalloc_h" >&5 +echo "${ECHO_T}$ac_cv_header_dbmalloc_h" >&6 +if test $ac_cv_header_dbmalloc_h = yes; then + +echo "$as_me:10023: checking for debug_malloc in -ldbmalloc" >&5 +echo $ECHO_N "checking for debug_malloc in -ldbmalloc... $ECHO_C" >&6 +if test "${ac_cv_lib_dbmalloc_debug_malloc+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-ldbmalloc $LIBS" +cat >conftest.$ac_ext <<_ACEOF +#line 10031 "configure" +#include "confdefs.h" + +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char debug_malloc (); +int +main (void) +{ +debug_malloc (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:10050: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:10053: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:10056: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:10059: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_lib_dbmalloc_debug_malloc=yes +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +ac_cv_lib_dbmalloc_debug_malloc=no +fi +rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +echo "$as_me:10070: result: $ac_cv_lib_dbmalloc_debug_malloc" >&5 +echo "${ECHO_T}$ac_cv_lib_dbmalloc_debug_malloc" >&6 +if test $ac_cv_lib_dbmalloc_debug_malloc = yes; then + cat >>confdefs.h <&5 +echo $ECHO_N "checking if you want to use purify for testing... $ECHO_C" >&6 + +# Check whether --with-purify or --without-purify was given. +if test "${with_purify+set}" = set; then + withval="$with_purify" + +cat >>confdefs.h <&5 +echo "${ECHO_T}${with_purify:-no}" >&6 + +case .$with_cflags in +(.*-g*) + case .$CFLAGS in + (.*-g*) + ;; + (*) + +cf_fix_cppflags=no +cf_new_cflags= +cf_new_cppflags= +cf_new_extra_cppflags= + +for cf_add_cflags in -g +do +case $cf_fix_cppflags in +(no) + case $cf_add_cflags in + (-undef|-nostdinc*|-I*|-D*|-U*|-E|-P|-C) + case $cf_add_cflags in + (-D*) + cf_tst_cflags=`echo ${cf_add_cflags} |sed -e 's/^-D[^=]*='\''\"[^"]*//'` + + test "x${cf_add_cflags}" != "x${cf_tst_cflags}" \ + && test -z "${cf_tst_cflags}" \ + && cf_fix_cppflags=yes + + if test $cf_fix_cppflags = yes ; then + + test -n "$cf_new_extra_cppflags" && cf_new_extra_cppflags="$cf_new_extra_cppflags " + cf_new_extra_cppflags="${cf_new_extra_cppflags}$cf_add_cflags" + + continue + elif test "${cf_tst_cflags}" = "\"'" ; then + + test -n "$cf_new_extra_cppflags" && cf_new_extra_cppflags="$cf_new_extra_cppflags " + cf_new_extra_cppflags="${cf_new_extra_cppflags}$cf_add_cflags" + + continue + fi + ;; + esac + case "$CPPFLAGS" in + (*$cf_add_cflags) + ;; + (*) + case $cf_add_cflags in + (-D*) + cf_tst_cppflags=`echo "x$cf_add_cflags" | sed -e 's/^...//' -e 's/=.*//'` + +CPPFLAGS=`echo "$CPPFLAGS" | \ + sed -e 's/-[UD]'"$cf_tst_cppflags"'\(=[^ ]*\)\?[ ]/ /g' \ + -e 's/-[UD]'"$cf_tst_cppflags"'\(=[^ ]*\)\?$//g'` + + ;; + esac + + test -n "$cf_new_cppflags" && cf_new_cppflags="$cf_new_cppflags " + cf_new_cppflags="${cf_new_cppflags}$cf_add_cflags" + + ;; + esac + ;; + (*) + + test -n "$cf_new_cflags" && cf_new_cflags="$cf_new_cflags " + cf_new_cflags="${cf_new_cflags}$cf_add_cflags" + + ;; + esac + ;; +(yes) + + test -n "$cf_new_extra_cppflags" && cf_new_extra_cppflags="$cf_new_extra_cppflags " + cf_new_extra_cppflags="${cf_new_extra_cppflags}$cf_add_cflags" + + cf_tst_cflags=`echo ${cf_add_cflags} |sed -e 's/^[^"]*"'\''//'` + + test "x${cf_add_cflags}" != "x${cf_tst_cflags}" \ + && test -z "${cf_tst_cflags}" \ + && cf_fix_cppflags=no + ;; +esac +done + +if test -n "$cf_new_cflags" ; then + + test -n "$CFLAGS" && CFLAGS="$CFLAGS " + CFLAGS="${CFLAGS}$cf_new_cflags" + +fi + +if test -n "$cf_new_cppflags" ; then + + test -n "$CPPFLAGS" && CPPFLAGS="$CPPFLAGS " + CPPFLAGS="${CPPFLAGS}$cf_new_cppflags" + +fi + +if test -n "$cf_new_extra_cppflags" ; then + + test -n "$EXTRA_CPPFLAGS" && EXTRA_CPPFLAGS="$EXTRA_CPPFLAGS " + EXTRA_CPPFLAGS="${EXTRA_CPPFLAGS}$cf_new_extra_cppflags" + +fi + + ;; + esac + ;; +esac + +echo "$as_me:10215: checking if you want to use valgrind for testing" >&5 +echo $ECHO_N "checking if you want to use valgrind for testing... $ECHO_C" >&6 + +# Check whether --with-valgrind or --without-valgrind was given. +if test "${with_valgrind+set}" = set; then + withval="$with_valgrind" + +cat >>confdefs.h <&5 +echo "${ECHO_T}${with_valgrind:-no}" >&6 + +case .$with_cflags in +(.*-g*) + case .$CFLAGS in + (.*-g*) + ;; + (*) + +cf_fix_cppflags=no +cf_new_cflags= +cf_new_cppflags= +cf_new_extra_cppflags= + +for cf_add_cflags in -g +do +case $cf_fix_cppflags in +(no) + case $cf_add_cflags in + (-undef|-nostdinc*|-I*|-D*|-U*|-E|-P|-C) + case $cf_add_cflags in + (-D*) + cf_tst_cflags=`echo ${cf_add_cflags} |sed -e 's/^-D[^=]*='\''\"[^"]*//'` + + test "x${cf_add_cflags}" != "x${cf_tst_cflags}" \ + && test -z "${cf_tst_cflags}" \ + && cf_fix_cppflags=yes + + if test $cf_fix_cppflags = yes ; then + + test -n "$cf_new_extra_cppflags" && cf_new_extra_cppflags="$cf_new_extra_cppflags " + cf_new_extra_cppflags="${cf_new_extra_cppflags}$cf_add_cflags" + + continue + elif test "${cf_tst_cflags}" = "\"'" ; then + + test -n "$cf_new_extra_cppflags" && cf_new_extra_cppflags="$cf_new_extra_cppflags " + cf_new_extra_cppflags="${cf_new_extra_cppflags}$cf_add_cflags" + + continue + fi + ;; + esac + case "$CPPFLAGS" in + (*$cf_add_cflags) + ;; + (*) + case $cf_add_cflags in + (-D*) + cf_tst_cppflags=`echo "x$cf_add_cflags" | sed -e 's/^...//' -e 's/=.*//'` + +CPPFLAGS=`echo "$CPPFLAGS" | \ + sed -e 's/-[UD]'"$cf_tst_cppflags"'\(=[^ ]*\)\?[ ]/ /g' \ + -e 's/-[UD]'"$cf_tst_cppflags"'\(=[^ ]*\)\?$//g'` + + ;; + esac + + test -n "$cf_new_cppflags" && cf_new_cppflags="$cf_new_cppflags " + cf_new_cppflags="${cf_new_cppflags}$cf_add_cflags" + + ;; + esac + ;; + (*) + + test -n "$cf_new_cflags" && cf_new_cflags="$cf_new_cflags " + cf_new_cflags="${cf_new_cflags}$cf_add_cflags" + + ;; + esac + ;; +(yes) + + test -n "$cf_new_extra_cppflags" && cf_new_extra_cppflags="$cf_new_extra_cppflags " + cf_new_extra_cppflags="${cf_new_extra_cppflags}$cf_add_cflags" + + cf_tst_cflags=`echo ${cf_add_cflags} |sed -e 's/^[^"]*"'\''//'` + + test "x${cf_add_cflags}" != "x${cf_tst_cflags}" \ + && test -z "${cf_tst_cflags}" \ + && cf_fix_cppflags=no + ;; +esac +done + +if test -n "$cf_new_cflags" ; then + + test -n "$CFLAGS" && CFLAGS="$CFLAGS " + CFLAGS="${CFLAGS}$cf_new_cflags" + +fi + +if test -n "$cf_new_cppflags" ; then + + test -n "$CPPFLAGS" && CPPFLAGS="$CPPFLAGS " + CPPFLAGS="${CPPFLAGS}$cf_new_cppflags" + +fi + +if test -n "$cf_new_extra_cppflags" ; then + + test -n "$EXTRA_CPPFLAGS" && EXTRA_CPPFLAGS="$EXTRA_CPPFLAGS " + EXTRA_CPPFLAGS="${EXTRA_CPPFLAGS}$cf_new_extra_cppflags" + +fi + + ;; + esac + ;; +esac + +echo "$as_me:10345: checking if you want to perform memory-leak testing" >&5 +echo $ECHO_N "checking if you want to perform memory-leak testing... $ECHO_C" >&6 + +# Check whether --with-no-leaks or --without-no-leaks was given. +if test "${with_no_leaks+set}" = set; then + withval="$with_no_leaks" + +cat >>confdefs.h <<\EOF +#define NO_LEAKS 1 +EOF + + cf_doalloc=".${with_dmalloc}${with_dbmalloc}${with_purify}${with_valgrind}" + case ${cf_doalloc} in + (*yes*) ;; + (*) +cat >>confdefs.h <<\EOF +#define DOALLOC 10000 +EOF + ;; + esac + with_no_leaks=yes +else + with_no_leaks= +fi; +echo "$as_me:10369: result: $with_no_leaks" >&5 +echo "${ECHO_T}$with_no_leaks" >&6 + +echo "$as_me:10372: checking if you want --trace option" >&5 +echo $ECHO_N "checking if you want --trace option... $ECHO_C" >&6 + +# Check whether --enable-trace or --disable-trace was given. +if test "${enable_trace+set}" = set; then + enableval="$enable_trace" + +else + enableval=yes +fi; +echo "$as_me:10382: result: $enableval" >&5 +echo "${ECHO_T}$enableval" >&6 +if test "$enableval" != no ; then +EXTRAOBJS="$EXTRAOBJS trace\$o" + +cat >>confdefs.h <<\EOF +#define HAVE_DLG_TRACE 1 +EOF + +else + : +fi + +LD_RPATH_OPT= +echo "$as_me:10396: checking for an rpath option" >&5 +echo $ECHO_N "checking for an rpath option... $ECHO_C" >&6 +case $cf_cv_system_name in +(irix*) + if test "$GCC" = yes; then + LD_RPATH_OPT="-Wl,-rpath," + else + LD_RPATH_OPT="-rpath " + fi + ;; +(linux*|gnu*|k*bsd*-gnu|freebsd*) + LD_RPATH_OPT="-Wl,-rpath," + ;; +(openbsd[2-9].*|mirbsd*) + LD_RPATH_OPT="-Wl,-rpath," + ;; +(dragonfly*) + LD_RPATH_OPT="-rpath " + ;; +(netbsd*) + LD_RPATH_OPT="-Wl,-rpath," + ;; +(osf*|mls+*) + LD_RPATH_OPT="-rpath " + ;; +(solaris2*) + LD_RPATH_OPT="-R" + ;; +(*) + ;; +esac +echo "$as_me:10427: result: $LD_RPATH_OPT" >&5 +echo "${ECHO_T}$LD_RPATH_OPT" >&6 + +case "x$LD_RPATH_OPT" in +(x-R*) + echo "$as_me:10432: checking if we need a space after rpath option" >&5 +echo $ECHO_N "checking if we need a space after rpath option... $ECHO_C" >&6 + cf_save_LIBS="$LIBS" + +cf_add_libs="${LD_RPATH_OPT}$libdir" +# Filter out duplicates - this happens with badly-designed ".pc" files... +for cf_add_1lib in $LIBS +do + for cf_add_2lib in $cf_add_libs + do + if test "x$cf_add_1lib" = "x$cf_add_2lib" + then + cf_add_1lib= + break + fi + done + test -n "$cf_add_1lib" && cf_add_libs="$cf_add_libs $cf_add_1lib" +done +LIBS="$cf_add_libs" + + cat >conftest.$ac_ext <<_ACEOF +#line 10453 "configure" +#include "confdefs.h" + +int +main (void) +{ + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:10465: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:10468: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:10471: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:10474: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + cf_rpath_space=no +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +cf_rpath_space=yes +fi +rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext + LIBS="$cf_save_LIBS" + echo "$as_me:10484: result: $cf_rpath_space" >&5 +echo "${ECHO_T}$cf_rpath_space" >&6 + test "$cf_rpath_space" = yes && LD_RPATH_OPT="$LD_RPATH_OPT " + ;; +esac + +REL_VERSION=${VERSION_MAJOR}.${VERSION_MINOR} +ABI_VERSION=`echo "$VERSION" |sed -e 's/:/./g'` +cf_cv_rel_version=$REL_VERSION + +test -z "$cf_cv_rel_version" && cf_cv_rel_version=0.0 + +# Check whether --with-rel-version or --without-rel-version was given. +if test "${with_rel_version+set}" = set; then + withval="$with_rel_version" + { echo "$as_me:10499: WARNING: overriding release version $cf_cv_rel_version to $withval" >&5 +echo "$as_me: WARNING: overriding release version $cf_cv_rel_version to $withval" >&2;} + cf_cv_rel_version=$withval +fi; + + DIALOG_MAJOR=`echo "$cf_cv_rel_version" | sed -e 's/\..*//'` + DIALOG_MINOR=`echo "$cf_cv_rel_version" | sed -e 's/^[^.]*//' -e 's/^\.//' -e 's/\..*//'` + +if test -n "$DIALOG_MAJOR" ; then + case $DIALOG_MAJOR in + ([0-9]*) + ;; + (*) + { { echo "$as_me:10512: error: Release major-version is not a number: $DIALOG_MAJOR" >&5 +echo "$as_me: error: Release major-version is not a number: $DIALOG_MAJOR" >&2;} + { (exit 1); exit 1; }; } + ;; + esac +else + { { echo "$as_me:10518: error: Release major-version value is empty" >&5 +echo "$as_me: error: Release major-version value is empty" >&2;} + { (exit 1); exit 1; }; } +fi + +if test -n "$DIALOG_MINOR" ; then + case $DIALOG_MINOR in + ([0-9]*) + ;; + (*) + { { echo "$as_me:10528: error: Release minor-version is not a number: $DIALOG_MINOR" >&5 +echo "$as_me: error: Release minor-version is not a number: $DIALOG_MINOR" >&2;} + { (exit 1); exit 1; }; } + ;; + esac +else + { { echo "$as_me:10534: error: Release minor-version value is empty" >&5 +echo "$as_me: error: Release minor-version value is empty" >&2;} + { (exit 1); exit 1; }; } +fi + +test -z "$cf_cv_abi_version" && cf_cv_abi_version=0 + +# Check whether --with-abi-version or --without-abi-version was given. +if test "${with_abi_version+set}" = set; then + withval="$with_abi_version" + + if test "x$cf_cv_abi_version" != "x$withval" + then + { echo "$as_me:10547: WARNING: overriding ABI version $cf_cv_abi_version to $withval" >&5 +echo "$as_me: WARNING: overriding ABI version $cf_cv_abi_version to $withval" >&2;} + case $cf_cv_rel_version in + (5.*) + cf_cv_rel_version=$withval.0 + ;; + (6.*) + cf_cv_rel_version=$withval.9 # FIXME: should be 10 as of 6.0 release + ;; + esac + fi + cf_cv_abi_version=$withval +fi; + +if test -n "$cf_cv_abi_version" ; then + case $cf_cv_abi_version in + ([0-9]*) + ;; + (*) + { { echo "$as_me:10566: error: ABI version is not a number: $cf_cv_abi_version" >&5 +echo "$as_me: error: ABI version is not a number: $cf_cv_abi_version" >&2;} + { (exit 1); exit 1; }; } + ;; + esac +else + { { echo "$as_me:10572: error: ABI version value is empty" >&5 +echo "$as_me: error: ABI version value is empty" >&2;} + { (exit 1); exit 1; }; } +fi + +LIB_MODEL=static +DFT_LWR_MODEL=$LIB_MODEL +LIBTOOL_MAKE="#" + +# use to comment-out makefile lines +MAKE_NORMAL= +MAKE_STATIC= +MAKE_SHARED="#" +MAKE_DLLS="#" + +shlibdir=$libdir + +echo "$as_me:10589: checking if libtool -version-number should be used" >&5 +echo $ECHO_N "checking if libtool -version-number should be used... $ECHO_C" >&6 + +# Check whether --enable-libtool-version or --disable-libtool-version was given. +if test "${enable_libtool_version+set}" = set; then + enableval="$enable_libtool_version" + test "$enableval" != no && enableval=yes + if test "$enableval" != "yes" ; then + cf_libtool_version=no + else + cf_libtool_version=yes + fi +else + enableval=yes + cf_libtool_version=yes + +fi; +echo "$as_me:10606: result: $cf_libtool_version" >&5 +echo "${ECHO_T}$cf_libtool_version" >&6 + +if test "$cf_libtool_version" = yes ; then + LIBTOOL_VERSION="-version-number" +else + LIBTOOL_VERSION="-version-info" + case "x$VERSION" in + (x) + { echo "$as_me:10615: WARNING: VERSION was not set" >&5 +echo "$as_me: WARNING: VERSION was not set" >&2;} + ;; + (x*.*.*) + ABI_VERSION="$VERSION" + test -n "$verbose" && echo " ABI_VERSION: $ABI_VERSION" 1>&6 + +echo "${as_me:-configure}:10622: testing ABI_VERSION: $ABI_VERSION ..." 1>&5 + + ;; + (x*:*:*) + ABI_VERSION=`echo "$VERSION" | sed -e 's/:/./g'` + test -n "$verbose" && echo " ABI_VERSION: $ABI_VERSION" 1>&6 + +echo "${as_me:-configure}:10629: testing ABI_VERSION: $ABI_VERSION ..." 1>&5 + + ;; + (*) + { echo "$as_me:10633: WARNING: unexpected VERSION value: $VERSION" >&5 +echo "$as_me: WARNING: unexpected VERSION value: $VERSION" >&2;} + ;; + esac +fi + +LIBTOOL= + +# common library maintenance symbols that are convenient for libtool scripts: +LIB_CREATE='${AR} -cr' +LIB_OBJECT='${OBJECTS}' +LIB_SUFFIX=.a +LIB_PREP="$RANLIB" + +# symbols used to prop libtool up to enable it to determine what it should be +# doing: +LIB_CLEAN= +LIB_COMPILE= +LIB_LINK='${CC}' +LIB_INSTALL= +LIB_UNINSTALL= + +echo "$as_me:10655: checking if you want to build libraries with libtool" >&5 +echo $ECHO_N "checking if you want to build libraries with libtool... $ECHO_C" >&6 + +# Check whether --with-libtool or --without-libtool was given. +if test "${with_libtool+set}" = set; then + withval="$with_libtool" + with_libtool=$withval +else + with_libtool=no +fi; +echo "$as_me:10665: result: $with_libtool" >&5 +echo "${ECHO_T}$with_libtool" >&6 +if test "$with_libtool" != "no"; then + + if test "$with_libtool" != "yes" ; then + +if test "x$prefix" != xNONE; then + cf_path_syntax="$prefix" +else + cf_path_syntax="$ac_default_prefix" +fi + +case ".$with_libtool" in +(.\$\(*\)*|.\'*\'*) + ;; +(..|./*|.\\*) + ;; +(.[a-zA-Z]:[\\/]*) # OS/2 EMX + ;; +(.\${*prefix}*|.\${*dir}*) + eval with_libtool="$with_libtool" + case ".$with_libtool" in + (.NONE/*) + with_libtool=`echo $with_libtool | sed -e s%NONE%$cf_path_syntax%` + ;; + esac + ;; +(.no|.NONE/*) + with_libtool=`echo $with_libtool | sed -e s%NONE%$cf_path_syntax%` + ;; +(*) + { { echo "$as_me:10696: error: expected a pathname, not \"$with_libtool\"" >&5 +echo "$as_me: error: expected a pathname, not \"$with_libtool\"" >&2;} + { (exit 1); exit 1; }; } + ;; +esac + + LIBTOOL=$with_libtool + else + if test -n "$ac_tool_prefix"; then + for ac_prog in libtool glibtool + do + # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. +set dummy $ac_tool_prefix$ac_prog; ac_word=$2 +echo "$as_me:10709: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_LIBTOOL+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$LIBTOOL"; then + ac_cv_prog_LIBTOOL="$LIBTOOL" # Let the user override the test. +else + ac_save_IFS=$IFS; IFS=$ac_path_separator +ac_dummy="$PATH" +for ac_dir in $ac_dummy; do + IFS=$ac_save_IFS + test -z "$ac_dir" && ac_dir=. + $as_executable_p "$ac_dir/$ac_word" || continue +ac_cv_prog_LIBTOOL="$ac_tool_prefix$ac_prog" +echo "$as_me:10724: found $ac_dir/$ac_word" >&5 +break +done + +fi +fi +LIBTOOL=$ac_cv_prog_LIBTOOL +if test -n "$LIBTOOL"; then + echo "$as_me:10732: result: $LIBTOOL" >&5 +echo "${ECHO_T}$LIBTOOL" >&6 +else + echo "$as_me:10735: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + test -n "$LIBTOOL" && break + done +fi +if test -z "$LIBTOOL"; then + ac_ct_LIBTOOL=$LIBTOOL + for ac_prog in libtool glibtool +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +echo "$as_me:10748: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_ac_ct_LIBTOOL+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$ac_ct_LIBTOOL"; then + ac_cv_prog_ac_ct_LIBTOOL="$ac_ct_LIBTOOL" # Let the user override the test. +else + ac_save_IFS=$IFS; IFS=$ac_path_separator +ac_dummy="$PATH" +for ac_dir in $ac_dummy; do + IFS=$ac_save_IFS + test -z "$ac_dir" && ac_dir=. + $as_executable_p "$ac_dir/$ac_word" || continue +ac_cv_prog_ac_ct_LIBTOOL="$ac_prog" +echo "$as_me:10763: found $ac_dir/$ac_word" >&5 +break +done + +fi +fi +ac_ct_LIBTOOL=$ac_cv_prog_ac_ct_LIBTOOL +if test -n "$ac_ct_LIBTOOL"; then + echo "$as_me:10771: result: $ac_ct_LIBTOOL" >&5 +echo "${ECHO_T}$ac_ct_LIBTOOL" >&6 +else + echo "$as_me:10774: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + test -n "$ac_ct_LIBTOOL" && break +done +test -n "$ac_ct_LIBTOOL" || ac_ct_LIBTOOL="none" + + LIBTOOL=$ac_ct_LIBTOOL +fi + +if test -n "$LIBTOOL" && test "$LIBTOOL" != none +then + cf_cv_libtool_version=`$LIBTOOL --version 2>&1 | sed -e '/^$/d' |sed -e '2,$d' -e 's/([^)]*)//g' -e 's/^[^1-9]*//' -e 's/[^0-9.].*//'` +else + cf_cv_libtool_version= +fi +test -z "$cf_cv_libtool_version" && unset cf_cv_libtool_version + + if test -z "$cf_cv_libtool_version" && test "$LIBTOOL" = libtool + then + +unset ac_cv_prog_ac_ct_LIBTOOL +unset ac_ct_LIBTOOL +unset LIBTOOL + + if test -n "$ac_tool_prefix"; then + for ac_prog in glibtool + do + # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. +set dummy $ac_tool_prefix$ac_prog; ac_word=$2 +echo "$as_me:10805: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_LIBTOOL+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$LIBTOOL"; then + ac_cv_prog_LIBTOOL="$LIBTOOL" # Let the user override the test. +else + ac_save_IFS=$IFS; IFS=$ac_path_separator +ac_dummy="$PATH" +for ac_dir in $ac_dummy; do + IFS=$ac_save_IFS + test -z "$ac_dir" && ac_dir=. + $as_executable_p "$ac_dir/$ac_word" || continue +ac_cv_prog_LIBTOOL="$ac_tool_prefix$ac_prog" +echo "$as_me:10820: found $ac_dir/$ac_word" >&5 +break +done + +fi +fi +LIBTOOL=$ac_cv_prog_LIBTOOL +if test -n "$LIBTOOL"; then + echo "$as_me:10828: result: $LIBTOOL" >&5 +echo "${ECHO_T}$LIBTOOL" >&6 +else + echo "$as_me:10831: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + test -n "$LIBTOOL" && break + done +fi +if test -z "$LIBTOOL"; then + ac_ct_LIBTOOL=$LIBTOOL + for ac_prog in glibtool +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +echo "$as_me:10844: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_ac_ct_LIBTOOL+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$ac_ct_LIBTOOL"; then + ac_cv_prog_ac_ct_LIBTOOL="$ac_ct_LIBTOOL" # Let the user override the test. +else + ac_save_IFS=$IFS; IFS=$ac_path_separator +ac_dummy="$PATH" +for ac_dir in $ac_dummy; do + IFS=$ac_save_IFS + test -z "$ac_dir" && ac_dir=. + $as_executable_p "$ac_dir/$ac_word" || continue +ac_cv_prog_ac_ct_LIBTOOL="$ac_prog" +echo "$as_me:10859: found $ac_dir/$ac_word" >&5 +break +done + +fi +fi +ac_ct_LIBTOOL=$ac_cv_prog_ac_ct_LIBTOOL +if test -n "$ac_ct_LIBTOOL"; then + echo "$as_me:10867: result: $ac_ct_LIBTOOL" >&5 +echo "${ECHO_T}$ac_ct_LIBTOOL" >&6 +else + echo "$as_me:10870: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + test -n "$ac_ct_LIBTOOL" && break +done +test -n "$ac_ct_LIBTOOL" || ac_ct_LIBTOOL="none" + + LIBTOOL=$ac_ct_LIBTOOL +fi + +if test -n "$LIBTOOL" && test "$LIBTOOL" != none +then + cf_cv_libtool_version=`$LIBTOOL --version 2>&1 | sed -e '/^$/d' |sed -e '2,$d' -e 's/([^)]*)//g' -e 's/^[^1-9]*//' -e 's/[^0-9.].*//'` +else + cf_cv_libtool_version= +fi +test -z "$cf_cv_libtool_version" && unset cf_cv_libtool_version + + fi + fi + if test -z "$LIBTOOL" ; then + { { echo "$as_me:10892: error: Cannot find libtool" >&5 +echo "$as_me: error: Cannot find libtool" >&2;} + { (exit 1); exit 1; }; } + fi + LIB_CREATE='${LIBTOOL} --mode=link ${CC} -rpath ${libdir} ${LIBTOOL_VERSION} `cut -f1 ${top_srcdir}/VERSION` ${LIBTOOL_OPTS} ${LT_UNDEF} $(LIBS) -o' + LIB_OBJECT='${OBJECTS:.o=.lo}' + LIB_SUFFIX=.la + LIB_CLEAN='${LIBTOOL} --mode=clean' + LIB_COMPILE='${LIBTOOL} --mode=compile' + LIB_LINK='${LIBTOOL} --mode=link ${CC} ${LIBTOOL_OPTS}' + LIB_INSTALL='${LIBTOOL} --mode=install' + LIB_UNINSTALL='${LIBTOOL} --mode=uninstall' + LIB_PREP=: + +if test -n "$LIBTOOL" && test "$LIBTOOL" != none +then + echo "$as_me:10908: checking version of $LIBTOOL" >&5 +echo $ECHO_N "checking version of $LIBTOOL... $ECHO_C" >&6 + +if test -n "$LIBTOOL" && test "$LIBTOOL" != none +then + cf_cv_libtool_version=`$LIBTOOL --version 2>&1 | sed -e '/^$/d' |sed -e '2,$d' -e 's/([^)]*)//g' -e 's/^[^1-9]*//' -e 's/[^0-9.].*//'` +else + cf_cv_libtool_version= +fi +test -z "$cf_cv_libtool_version" && unset cf_cv_libtool_version + + echo "$as_me:10919: result: $cf_cv_libtool_version" >&5 +echo "${ECHO_T}$cf_cv_libtool_version" >&6 + if test -z "$cf_cv_libtool_version" ; then + { { echo "$as_me:10922: error: This is not GNU libtool" >&5 +echo "$as_me: error: This is not GNU libtool" >&2;} + { (exit 1); exit 1; }; } + fi +else + { { echo "$as_me:10927: error: GNU libtool has not been found" >&5 +echo "$as_me: error: GNU libtool has not been found" >&2;} + { (exit 1); exit 1; }; } +fi + + # special hack to add -no-undefined (which libtool should do for itself) + LT_UNDEF= + case "$cf_cv_system_name" in + (cygwin*|msys*|mingw32*|os2*|uwin*|aix[4-7]) + LT_UNDEF=-no-undefined + ;; + esac + + # special hack to add --tag option for C++ compiler + case $cf_cv_libtool_version in + (1.[5-9]*|[2-9].[0-9.a-z]*) + LIBTOOL_CXX="$LIBTOOL --tag=CXX" + LIBTOOL="$LIBTOOL --tag=CC" + ;; + (*) + LIBTOOL_CXX="$LIBTOOL" + ;; + esac +else + LIBTOOL="" + LIBTOOL_CXX="" +fi + +test -z "$LIBTOOL" && ECHO_LT= + +LIB_CREATE="$LIB_CREATE \$@" + +if test "$with_libtool" = "yes" ; then + OBJEXT="lo" + LIB_MODEL=libtool + DFT_LWR_MODEL=$LIB_MODEL + LIBTOOL_MAKE= + +echo "$as_me:10965: checking for additional libtool options" >&5 +echo $ECHO_N "checking for additional libtool options... $ECHO_C" >&6 + +# Check whether --with-libtool-opts or --without-libtool-opts was given. +if test "${with_libtool_opts+set}" = set; then + withval="$with_libtool_opts" + with_libtool_opts=$withval +else + with_libtool_opts=no +fi; +echo "$as_me:10975: result: $with_libtool_opts" >&5 +echo "${ECHO_T}$with_libtool_opts" >&6 + +case .$with_libtool_opts in +(.yes|.no|.) + ;; +(*) + LIBTOOL_OPTS="$LIBTOOL_OPTS $with_libtool_opts" + ;; +esac + +echo "$as_me:10986: checking if exported-symbols file should be used" >&5 +echo $ECHO_N "checking if exported-symbols file should be used... $ECHO_C" >&6 + +# Check whether --with-export-syms or --without-export-syms was given. +if test "${with_export_syms+set}" = set; then + withval="$with_export_syms" + with_export_syms=$withval +else + with_export_syms=no +fi; +if test "x$with_export_syms" = xyes +then + with_export_syms='${top_srcdir}/package/${PACKAGE}.sym' + +fi +echo "$as_me:11001: result: $with_export_syms" >&5 +echo "${ECHO_T}$with_export_syms" >&6 +if test "x$with_export_syms" != xno +then + EXPORT_SYMS="-export-symbols $with_export_syms" + +fi + + MAKE_NORMAL="#" + MAKE_STATIC="#" + MAKE_SHARED= +else + echo "$as_me:11013: checking if you want to build shared libraries" >&5 +echo $ECHO_N "checking if you want to build shared libraries... $ECHO_C" >&6 + +# Check whether --with-shared or --without-shared was given. +if test "${with_shared+set}" = set; then + withval="$with_shared" + with_shared=$withval +else + with_shared=no +fi; + echo "$as_me:11023: result: $with_shared" >&5 +echo "${ECHO_T}$with_shared" >&6 + if test "$with_shared" = "yes" ; then + LIB_MODEL=shared + DFT_LWR_MODEL=$LIB_MODEL + + RM_SHARED_OPTS= + LOCAL_LDFLAGS= + LOCAL_LDFLAGS2= + LD_SHARED_OPTS= + INSTALL_LIB="-m 644" + : ${rel_builddir:=.} + + shlibdir=$libdir + + MAKE_DLLS="#" + + cf_cv_do_symlinks=no + cf_ld_rpath_opt= + test "$cf_cv_enable_rpath" = yes && cf_ld_rpath_opt="$LD_RPATH_OPT" + + echo "$as_me:11044: checking if release/abi version should be used for shared libs" >&5 +echo $ECHO_N "checking if release/abi version should be used for shared libs... $ECHO_C" >&6 + +# Check whether --with-shlib-version or --without-shlib-version was given. +if test "${with_shlib_version+set}" = set; then + withval="$with_shlib_version" + test -z "$withval" && withval=auto + case $withval in + (yes) + cf_cv_shlib_version=auto + ;; + (rel|abi|auto) + cf_cv_shlib_version=$withval + ;; + (*) + echo "$as_me:11059: result: $withval" >&5 +echo "${ECHO_T}$withval" >&6 + { { echo "$as_me:11061: error: option value must be one of: rel, abi, or auto" >&5 +echo "$as_me: error: option value must be one of: rel, abi, or auto" >&2;} + { (exit 1); exit 1; }; } + ;; + esac + +else + cf_cv_shlib_version=auto +fi; + echo "$as_me:11070: result: $cf_cv_shlib_version" >&5 +echo "${ECHO_T}$cf_cv_shlib_version" >&6 + + cf_cv_rm_so_locs=no + cf_try_cflags= + + # Some less-capable ports of gcc support only -fpic + CC_SHARED_OPTS= + + cf_try_fPIC=no + if test "$GCC" = yes + then + cf_try_fPIC=yes + else + case $cf_cv_system_name in + (*linux*) # e.g., PGI compiler + cf_try_fPIC=yes + ;; + esac + fi + + if test "$cf_try_fPIC" = yes + then + echo "$as_me:11093: checking which $CC option to use" >&5 +echo $ECHO_N "checking which $CC option to use... $ECHO_C" >&6 + cf_save_CFLAGS="$CFLAGS" + for CC_SHARED_OPTS in -fPIC -fpic '' + do + CFLAGS="$cf_save_CFLAGS $CC_SHARED_OPTS" + cat >conftest.$ac_ext <<_ACEOF +#line 11100 "configure" +#include "confdefs.h" +#include +int +main (void) +{ +int x = 1 + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:11112: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:11115: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:11118: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:11121: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + break +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +fi +rm -f conftest.$ac_objext conftest.$ac_ext + done + echo "$as_me:11130: result: $CC_SHARED_OPTS" >&5 +echo "${ECHO_T}$CC_SHARED_OPTS" >&6 + CFLAGS="$cf_save_CFLAGS" + fi + + cf_cv_shlib_version_infix=no + + case $cf_cv_system_name in + (aix4.3-9*|aix[5-7]*) + if test "$GCC" = yes; then + CC_SHARED_OPTS='-Wl,-brtl' + MK_SHARED_LIB='${CC} ${LDFLAGS} ${CFLAGS} -shared -Wl,-brtl -Wl,-blibpath:${RPATH_LIST}:/usr/lib -o $@' + else + CC_SHARED_OPTS='-brtl' + # as well as '-qpic=large -G' or perhaps "-bM:SRE -bnoentry -bexpall" + MK_SHARED_LIB='${CC} ${LDFLAGS} ${CFLAGS} -G -Wl,-brtl -Wl,-blibpath:${RPATH_LIST}:/usr/lib -o $@' + fi + ;; + (beos*) + MK_SHARED_LIB='${CC} ${LDFLAGS} ${CFLAGS} -o $@ -Xlinker -soname=`basename $@` -nostart -e 0' + ;; + (cygwin*) + CC_SHARED_OPTS= + MK_SHARED_LIB=$SHELL' '$rel_builddir'/mk_shared_lib.sh $@ ${CC} ${CFLAGS}' + RM_SHARED_OPTS="$RM_SHARED_OPTS $rel_builddir/mk_shared_lib.sh *.dll.a" + cf_cv_shlib_version=cygdll + cf_cv_shlib_version_infix=cygdll + shlibdir=$bindir + MAKE_DLLS= + cat >mk_shared_lib.sh <<-CF_EOF + #!$SHELL + SHARED_LIB=\$1 + IMPORT_LIB=\`echo "\$1" | sed -e 's/cyg/lib/' -e 's/[0-9]*\.dll$/.dll.a/'\` + shift + cat <<-EOF + Linking shared library + ** SHARED_LIB \$SHARED_LIB + ** IMPORT_LIB \$IMPORT_LIB +EOF + exec \$* ${LDFLAGS} -shared -Wl,--out-implib=\${IMPORT_LIB} -Wl,--export-all-symbols -o \${SHARED_LIB} +CF_EOF + chmod +x mk_shared_lib.sh + ;; + (msys*) + CC_SHARED_OPTS= + MK_SHARED_LIB=$SHELL' '$rel_builddir'/mk_shared_lib.sh $@ ${CC} ${CFLAGS}' + RM_SHARED_OPTS="$RM_SHARED_OPTS $rel_builddir/mk_shared_lib.sh *.dll.a" + cf_cv_shlib_version=msysdll + cf_cv_shlib_version_infix=msysdll + shlibdir=$bindir + MAKE_DLLS= + cat >mk_shared_lib.sh <<-CF_EOF + #!$SHELL + SHARED_LIB=\$1 + IMPORT_LIB=\`echo "\$1" | sed -e 's/msys-/lib/' -e 's/[0-9]*\.dll$/.dll.a/'\` + shift + cat <<-EOF + Linking shared library + ** SHARED_LIB \$SHARED_LIB + ** IMPORT_LIB \$IMPORT_LIB +EOF + exec \$* ${LDFLAGS} -shared -Wl,--out-implib=\${IMPORT_LIB} -Wl,--export-all-symbols -o \${SHARED_LIB} +CF_EOF + chmod +x mk_shared_lib.sh + ;; + (darwin*) + cf_try_cflags="no-cpp-precomp" + CC_SHARED_OPTS="-dynamic" + MK_SHARED_LIB='${CC} ${LDFLAGS} ${CFLAGS} -dynamiclib -install_name ${libdir}/`basename $@` -compatibility_version ${ABI_VERSION} -current_version ${ABI_VERSION} -o $@' + test "$cf_cv_shlib_version" = auto && cf_cv_shlib_version=abi + cf_cv_shlib_version_infix=yes + echo "$as_me:11201: checking if ld -search_paths_first works" >&5 +echo $ECHO_N "checking if ld -search_paths_first works... $ECHO_C" >&6 +if test "${cf_cv_ldflags_search_paths_first+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + + cf_save_LDFLAGS=$LDFLAGS + LDFLAGS="$LDFLAGS -Wl,-search_paths_first" + cat >conftest.$ac_ext <<_ACEOF +#line 11210 "configure" +#include "confdefs.h" + +int +main (void) +{ +int i; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:11222: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:11225: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:11228: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:11231: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + cf_cv_ldflags_search_paths_first=yes +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +cf_cv_ldflags_search_paths_first=no +fi +rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext + LDFLAGS=$cf_save_LDFLAGS +fi +echo "$as_me:11242: result: $cf_cv_ldflags_search_paths_first" >&5 +echo "${ECHO_T}$cf_cv_ldflags_search_paths_first" >&6 + if test $cf_cv_ldflags_search_paths_first = yes; then + LDFLAGS="$LDFLAGS -Wl,-search_paths_first" + fi + ;; + (hpux[7-8]*) + # HP-UX 8.07 ld lacks "+b" option used for libdir search-list + if test "$GCC" != yes; then + CC_SHARED_OPTS='+Z' + fi + MK_SHARED_LIB='${LD} ${LDFLAGS} -b -o $@' + INSTALL_LIB="-m 555" + ;; + (hpux*) + # (tested with gcc 2.7.2 -- I don't have c89) + if test "$GCC" = yes; then + LD_SHARED_OPTS='-Xlinker +b -Xlinker ${libdir}' + else + CC_SHARED_OPTS='+Z' + LD_SHARED_OPTS='-Wl,+b,${libdir}' + fi + MK_SHARED_LIB='${LD} ${LDFLAGS} +b ${libdir} -b -o $@' + # HP-UX shared libraries must be executable, and should be + # readonly to exploit a quirk in the memory manager. + INSTALL_LIB="-m 555" + ;; + (interix*) + test "$cf_cv_shlib_version" = auto && cf_cv_shlib_version=rel + if test "$cf_cv_shlib_version" = rel; then + cf_shared_soname='`basename $@ .${REL_VERSION}`.${ABI_VERSION}' + else + cf_shared_soname='`basename $@`' + fi + CC_SHARED_OPTS= + MK_SHARED_LIB='${CC} ${LDFLAGS} ${CFLAGS} -shared -Wl,-rpath,${RPATH_LIST} -Wl,-h,'$cf_shared_soname' -o $@' + ;; + (irix*) + if test "$cf_cv_enable_rpath" = yes ; then + EXTRA_LDFLAGS="${cf_ld_rpath_opt}\${RPATH_LIST} $EXTRA_LDFLAGS" + fi + # tested with IRIX 5.2 and 'cc'. + if test "$GCC" != yes; then + CC_SHARED_OPTS='-KPIC' + MK_SHARED_LIB='${CC} ${LDFLAGS} ${CFLAGS} -shared -rdata_shared -soname `basename $@` -o $@' + else + MK_SHARED_LIB='${CC} ${LDFLAGS} ${CFLAGS} -shared -Wl,-soname,`basename $@` -o $@' + fi + cf_cv_rm_so_locs=yes + ;; + (linux*|gnu*|k*bsd*-gnu) + if test "$DFT_LWR_MODEL" = "shared" ; then + LOCAL_LDFLAGS="${LD_RPATH_OPT}\$(LOCAL_LIBDIR)" + LOCAL_LDFLAGS2="$LOCAL_LDFLAGS" + fi + if test "$cf_cv_enable_rpath" = yes ; then + EXTRA_LDFLAGS="${cf_ld_rpath_opt}\${RPATH_LIST} $EXTRA_LDFLAGS" + fi + + test "$cf_cv_shlib_version" = auto && cf_cv_shlib_version=rel + if test "$cf_cv_shlib_version" = rel; then + cf_cv_shared_soname='`basename $@ .${REL_VERSION}`.${ABI_VERSION}' + else + cf_cv_shared_soname='`basename $@`' + fi + + MK_SHARED_LIB='${CC} ${LDFLAGS} ${CFLAGS} -shared -Wl,-soname,'$cf_cv_shared_soname',-stats,-lc -o $@' + ;; + (mingw*) + cf_cv_shlib_version=mingw + cf_cv_shlib_version_infix=mingw + shlibdir=$bindir + MAKE_DLLS= + if test "$DFT_LWR_MODEL" = "shared" ; then + LOCAL_LDFLAGS="-Wl,--enable-auto-import" + LOCAL_LDFLAGS2="$LOCAL_LDFLAGS" + EXTRA_LDFLAGS="-Wl,--enable-auto-import $EXTRA_LDFLAGS" + fi + CC_SHARED_OPTS= + MK_SHARED_LIB=$SHELL' '$rel_builddir'/mk_shared_lib.sh $@ ${CC} ${CFLAGS}' + RM_SHARED_OPTS="$RM_SHARED_OPTS $rel_builddir/mk_shared_lib.sh *.dll.a" + cat >mk_shared_lib.sh <<-CF_EOF + #!$SHELL + SHARED_LIB=\$1 + IMPORT_LIB=\`echo "\$1" | sed -e 's/[0-9]*\.dll$/.dll.a/'\` + shift + cat <<-EOF + Linking shared library + ** SHARED_LIB \$SHARED_LIB + ** IMPORT_LIB \$IMPORT_LIB +EOF + exec \$* ${LDFLAGS} -shared -Wl,--enable-auto-import,--out-implib=\${IMPORT_LIB} -Wl,--export-all-symbols -o \${SHARED_LIB} +CF_EOF + chmod +x mk_shared_lib.sh + ;; + (openbsd[2-9].*|mirbsd*) + if test "$DFT_LWR_MODEL" = "shared" ; then + LOCAL_LDFLAGS="${LD_RPATH_OPT}\$(LOCAL_LIBDIR)" + LOCAL_LDFLAGS2="$LOCAL_LDFLAGS" + fi + if test "$cf_cv_enable_rpath" = yes ; then + EXTRA_LDFLAGS="${cf_ld_rpath_opt}\${RPATH_LIST} $EXTRA_LDFLAGS" + fi + CC_SHARED_OPTS="$CC_SHARED_OPTS -DPIC" + + test "$cf_cv_shlib_version" = auto && cf_cv_shlib_version=rel + if test "$cf_cv_shlib_version" = rel; then + cf_cv_shared_soname='`basename $@ .${REL_VERSION}`.${ABI_VERSION}' + else + cf_cv_shared_soname='`basename $@`' + fi + + MK_SHARED_LIB='${CC} ${LDFLAGS} ${CFLAGS} -shared -Wl,-Bshareable,-soname,'$cf_cv_shared_soname',-stats,-lc -o $@' + ;; + (nto-qnx*|openbsd*|freebsd[12].*) + CC_SHARED_OPTS="$CC_SHARED_OPTS -DPIC" + MK_SHARED_LIB='${LD} ${LDFLAGS} -Bshareable -o $@' + test "$cf_cv_shlib_version" = auto && cf_cv_shlib_version=rel + ;; + (dragonfly*|freebsd*) + CC_SHARED_OPTS="$CC_SHARED_OPTS -DPIC" + if test "$DFT_LWR_MODEL" = "shared" && test "$cf_cv_enable_rpath" = yes ; then + LOCAL_LDFLAGS="${cf_ld_rpath_opt}\$(LOCAL_LIBDIR)" + LOCAL_LDFLAGS2="${cf_ld_rpath_opt}\${RPATH_LIST} $LOCAL_LDFLAGS" + EXTRA_LDFLAGS="${cf_ld_rpath_opt}\${RPATH_LIST} $EXTRA_LDFLAGS" + fi + + test "$cf_cv_shlib_version" = auto && cf_cv_shlib_version=rel + if test "$cf_cv_shlib_version" = rel; then + cf_cv_shared_soname='`basename $@ .${REL_VERSION}`.${ABI_VERSION}' + else + cf_cv_shared_soname='`basename $@`' + fi + + MK_SHARED_LIB='${CC} ${LDFLAGS} ${CFLAGS} -shared -Wl,-soname,'$cf_cv_shared_soname',-stats,-lc -o $@' + ;; + (netbsd*) + CC_SHARED_OPTS="$CC_SHARED_OPTS -DPIC" + if test "$DFT_LWR_MODEL" = "shared" && test "$cf_cv_enable_rpath" = yes ; then + LOCAL_LDFLAGS="${cf_ld_rpath_opt}\$(LOCAL_LIBDIR)" + LOCAL_LDFLAGS2="$LOCAL_LDFLAGS" + EXTRA_LDFLAGS="${cf_ld_rpath_opt}\${RPATH_LIST} $EXTRA_LDFLAGS" + if test "$cf_cv_shlib_version" = auto; then + if test -f /usr/libexec/ld.elf_so; then + cf_cv_shlib_version=abi + else + cf_cv_shlib_version=rel + fi + fi + + test "$cf_cv_shlib_version" = auto && cf_cv_shlib_version=rel + if test "$cf_cv_shlib_version" = rel; then + cf_cv_shared_soname='`basename $@ .${REL_VERSION}`.${ABI_VERSION}' + else + cf_cv_shared_soname='`basename $@`' + fi + + MK_SHARED_LIB='${CC} ${LDFLAGS} ${CFLAGS} -shared -Wl,-soname,'$cf_cv_shared_soname' -o $@' + else + MK_SHARED_LIB='${CC} ${LDFLAGS} ${CFLAGS} -Wl,-shared -Wl,-Bshareable -o $@' + fi + ;; + (osf*|mls+*) + # tested with OSF/1 V3.2 and 'cc' + # tested with OSF/1 V3.2 and gcc 2.6.3 (but the c++ demo didn't + # link with shared libs). + MK_SHARED_LIB='${LD} ${LDFLAGS} -set_version ${REL_VERSION}:${ABI_VERSION} -expect_unresolved "*" -shared -soname `basename $@`' + case $host_os in + (osf4*) + MK_SHARED_LIB="${MK_SHARED_LIB} -msym" + ;; + esac + MK_SHARED_LIB="${MK_SHARED_LIB}"' -o $@' + if test "$DFT_LWR_MODEL" = "shared" ; then + LOCAL_LDFLAGS="${LD_RPATH_OPT}\$(LOCAL_LIBDIR)" + LOCAL_LDFLAGS2="$LOCAL_LDFLAGS" + fi + cf_cv_rm_so_locs=yes + ;; + (sco3.2v5*) # also uw2* and UW7: hops 13-Apr-98 + # tested with osr5.0.5 + if test "$GCC" != yes; then + CC_SHARED_OPTS='-belf -KPIC' + fi + MK_SHARED_LIB='${LD} ${LDFLAGS} -dy -G -h `basename $@ .${REL_VERSION}`.${ABI_VERSION} -o $@' + if test "$cf_cv_enable_rpath" = yes ; then + # only way is to set LD_RUN_PATH but no switch for it + RUN_PATH=$libdir + fi + test "$cf_cv_shlib_version" = auto && cf_cv_shlib_version=rel + LINK_PROGS='LD_RUN_PATH=${libdir}' + LINK_TESTS='Pwd=`pwd`;LD_RUN_PATH=`dirname $${Pwd}`/lib' + ;; + (sunos4*) + # tested with SunOS 4.1.1 and gcc 2.7.0 + if test "$GCC" != yes; then + CC_SHARED_OPTS='-KPIC' + fi + MK_SHARED_LIB='${LD} ${LDFLAGS} -assert pure-text -o $@' + test "$cf_cv_shlib_version" = auto && cf_cv_shlib_version=rel + ;; + (solaris2*) + # tested with SunOS 5.5.1 (solaris 2.5.1) and gcc 2.7.2 + # tested with SunOS 5.10 (solaris 10) and gcc 3.4.3 + if test "$DFT_LWR_MODEL" = "shared" ; then + LOCAL_LDFLAGS="-R \$(LOCAL_LIBDIR):\${libdir}" + LOCAL_LDFLAGS2="$LOCAL_LDFLAGS" + fi + if test "$cf_cv_enable_rpath" = yes ; then + EXTRA_LDFLAGS="-R \${libdir} $EXTRA_LDFLAGS" + fi + + test "$cf_cv_shlib_version" = auto && cf_cv_shlib_version=rel + if test "$cf_cv_shlib_version" = rel; then + cf_cv_shared_soname='`basename $@ .${REL_VERSION}`.${ABI_VERSION}' + else + cf_cv_shared_soname='`basename $@`' + fi + + if test "$GCC" != yes; then + cf_save_CFLAGS="$CFLAGS" + for cf_shared_opts in -xcode=pic32 -xcode=pic13 -KPIC -Kpic -O + do + CFLAGS="$cf_shared_opts $cf_save_CFLAGS" + cat >conftest.$ac_ext <<_ACEOF +#line 11467 "configure" +#include "confdefs.h" +#include +int +main (void) +{ +printf("Hello\n"); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:11479: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:11482: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:11485: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:11488: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + break +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +fi +rm -f conftest.$ac_objext conftest.$ac_ext + done + CFLAGS="$cf_save_CFLAGS" + CC_SHARED_OPTS=$cf_shared_opts + MK_SHARED_LIB='${CC} ${LDFLAGS} ${CFLAGS} -dy -G -h '$cf_cv_shared_soname' -o $@' + else + MK_SHARED_LIB='${CC} ${LDFLAGS} ${CFLAGS} -shared -dy -G -h '$cf_cv_shared_soname' -o $@' + fi + ;; + (sysv5uw7*|unix_sv*) + # tested with UnixWare 7.1.0 (gcc 2.95.2 and cc) + if test "$GCC" != yes; then + CC_SHARED_OPTS='-KPIC' + fi + MK_SHARED_LIB='${LD} ${LDFLAGS} -d y -G -o $@' + ;; + (*) + CC_SHARED_OPTS='unknown' + MK_SHARED_LIB='echo unknown' + ;; + esac + + # This works if the last tokens in $MK_SHARED_LIB are the -o target. + case "$cf_cv_shlib_version" in + (rel|abi) + case "$MK_SHARED_LIB" in + (*'-o $@') + test "$cf_cv_do_symlinks" = no && cf_cv_do_symlinks=yes + ;; + (*) + { echo "$as_me:11525: WARNING: ignored --with-shlib-version" >&5 +echo "$as_me: WARNING: ignored --with-shlib-version" >&2;} + ;; + esac + ;; + esac + + if test -n "$cf_try_cflags" + then +cat > conftest.$ac_ext < +int main(int argc, char *argv[]) +{ + printf("hello\n"); + return (argv[argc-1] == 0) ; +} +EOF + cf_save_CFLAGS="$CFLAGS" + for cf_opt in $cf_try_cflags + do + CFLAGS="$cf_save_CFLAGS -$cf_opt" + echo "$as_me:11547: checking if CFLAGS option -$cf_opt works" >&5 +echo $ECHO_N "checking if CFLAGS option -$cf_opt works... $ECHO_C" >&6 + if { (eval echo "$as_me:11549: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:11552: \$? = $ac_status" >&5 + (exit $ac_status); }; then + echo "$as_me:11554: result: yes" >&5 +echo "${ECHO_T}yes" >&6 + cf_save_CFLAGS="$CFLAGS" + else + echo "$as_me:11558: result: no" >&5 +echo "${ECHO_T}no" >&6 + fi + done + CFLAGS="$cf_save_CFLAGS" + fi + + # RPATH_LIST is a colon-separated list of directories + test -n "$cf_ld_rpath_opt" && MK_SHARED_LIB="$MK_SHARED_LIB $cf_ld_rpath_opt\${RPATH_LIST}" + test -z "$RPATH_LIST" && RPATH_LIST="\${libdir}" + + test $cf_cv_rm_so_locs = yes && RM_SHARED_OPTS="$RM_SHARED_OPTS so_locations" + + test -n "$verbose" && echo " CC_SHARED_OPTS: $CC_SHARED_OPTS" 1>&6 + +echo "${as_me:-configure}:11573: testing CC_SHARED_OPTS: $CC_SHARED_OPTS ..." 1>&5 + + test -n "$verbose" && echo " MK_SHARED_LIB: $MK_SHARED_LIB" 1>&6 + +echo "${as_me:-configure}:11577: testing MK_SHARED_LIB: $MK_SHARED_LIB ..." 1>&5 + +echo "$as_me:11579: checking if versioned-symbols file should be used" >&5 +echo $ECHO_N "checking if versioned-symbols file should be used... $ECHO_C" >&6 + +# Check whether --with-versioned-syms or --without-versioned-syms was given. +if test "${with_versioned_syms+set}" = set; then + withval="$with_versioned_syms" + with_versioned_syms=$withval +else + with_versioned_syms=no +fi; +if test "x$with_versioned_syms" = xyes +then + with_versioned_syms='${top_srcdir}/package/${PACKAGE}.map' + +fi +echo "$as_me:11594: result: $with_versioned_syms" >&5 +echo "${ECHO_T}$with_versioned_syms" >&6 + +RESULTING_SYMS= +VERSIONED_SYMS= +WILDCARD_SYMS= + +if test "x$with_versioned_syms" != xno +then + RESULTING_SYMS=$with_versioned_syms + case "x$MK_SHARED_LIB" in + (*-Wl,*) + VERSIONED_SYMS="-Wl,--version-script,\${RESULTING_SYMS}" + MK_SHARED_LIB=`echo "$MK_SHARED_LIB" | sed -e "s%-Wl,%\\${VERSIONED_SYMS} -Wl,%"` + test -n "$verbose" && echo " MK_SHARED_LIB: $MK_SHARED_LIB" 1>&6 + +echo "${as_me:-configure}:11610: testing MK_SHARED_LIB: $MK_SHARED_LIB ..." 1>&5 + + ;; + (*-dy\ *) + VERSIONED_SYMS="-Wl,-M,\${RESULTING_SYMS}" + MK_SHARED_LIB=`echo "$MK_SHARED_LIB" | sed -e "s%-dy%\\${VERSIONED_SYMS} -dy%"` + test -n "$verbose" && echo " MK_SHARED_LIB: $MK_SHARED_LIB" 1>&6 + +echo "${as_me:-configure}:11618: testing MK_SHARED_LIB: $MK_SHARED_LIB ..." 1>&5 + + ;; + (*) + { echo "$as_me:11622: WARNING: this system does not support versioned-symbols" >&5 +echo "$as_me: WARNING: this system does not support versioned-symbols" >&2;} + ;; + esac + + # Linux ld can selectively override scope, e.g., of symbols beginning with + # "_" by first declaring some as global, and then using a wildcard to + # declare the others as local. Some other loaders cannot do this. Check + # by constructing a (very) simple shared library and inspecting its + # symbols. + if test "x$VERSIONED_SYMS" != "x" + then + echo "$as_me:11634: checking if wildcards can be used to selectively omit symbols" >&5 +echo $ECHO_N "checking if wildcards can be used to selectively omit symbols... $ECHO_C" >&6 + WILDCARD_SYMS=no + + # make sources + rm -f conftest.* + + cat >conftest.ver <conftest.$ac_ext <conftest.mk <&5 >/dev/null + then + # test for missing symbol in either Data or Text section + cf_missing=`nm -P conftest.so 2>&5 |fgrep _ismissing | egrep '[ ][DT][ ]'` + test -n "$cf_missing" && WILDCARD_SYMS=yes + fi + echo "$as_me:11702: result: $WILDCARD_SYMS" >&5 +echo "${ECHO_T}$WILDCARD_SYMS" >&6 + rm -f conftest.* + fi +fi + + LIB_PREP=: + LIB_CREATE="$MK_SHARED_LIB" + CFLAGS="$CFLAGS $CC_SHARED_OPTS" + MAKE_NORMAL="#" + MAKE_STATIC="#" + MAKE_SHARED= + fi +fi + +LIB_SUFFIX= + + case X$LIB_MODEL in + (Xlibtool) + DFT_LIB_SUFFIX='.la' + DFT_DEP_SUFFIX=$DFT_LIB_SUFFIX + ;; + (Xdebug) + DFT_LIB_SUFFIX='_g.a' + DFT_DEP_SUFFIX=$DFT_LIB_SUFFIX + ;; + (Xprofile) + DFT_LIB_SUFFIX='_p.a' + DFT_DEP_SUFFIX=$DFT_LIB_SUFFIX + ;; + (Xshared) + case $cf_cv_system_name in + (aix[5-7]*) + DFT_LIB_SUFFIX='.so' + DFT_DEP_SUFFIX=$DFT_LIB_SUFFIX + ;; + (cygwin*|msys*|mingw*) + DFT_LIB_SUFFIX='.dll' + DFT_DEP_SUFFIX='.dll.a' + ;; + (darwin*) + DFT_LIB_SUFFIX='.dylib' + DFT_DEP_SUFFIX=$DFT_LIB_SUFFIX + ;; + (hpux*) + case $target in + (ia64*) + DFT_LIB_SUFFIX='.so' + DFT_DEP_SUFFIX=$DFT_LIB_SUFFIX + ;; + (*) + DFT_LIB_SUFFIX='.sl' + DFT_DEP_SUFFIX=$DFT_LIB_SUFFIX + ;; + esac + ;; + (*) + DFT_LIB_SUFFIX='.so' + DFT_DEP_SUFFIX=$DFT_LIB_SUFFIX + ;; + esac + ;; + (*) + DFT_LIB_SUFFIX='.a' + DFT_DEP_SUFFIX=$DFT_LIB_SUFFIX + ;; + esac + if test -n "${LIB_SUFFIX}${EXTRA_SUFFIX}" + then + DFT_LIB_SUFFIX="${LIB_SUFFIX}${EXTRA_SUFFIX}${DFT_LIB_SUFFIX}" + DFT_DEP_SUFFIX="${LIB_SUFFIX}${EXTRA_SUFFIX}${DFT_DEP_SUFFIX}" + fi + +LIB_SUFFIX=$DFT_LIB_SUFFIX + +echo "$as_me:11777: checking for specific curses-directory" >&5 +echo $ECHO_N "checking for specific curses-directory... $ECHO_C" >&6 + +# Check whether --with-curses-dir or --without-curses-dir was given. +if test "${with_curses_dir+set}" = set; then + withval="$with_curses_dir" + cf_cv_curses_dir=$withval +else + cf_cv_curses_dir=no +fi; +echo "$as_me:11787: result: $cf_cv_curses_dir" >&5 +echo "${ECHO_T}$cf_cv_curses_dir" >&6 + +if ( test -n "$cf_cv_curses_dir" && test "$cf_cv_curses_dir" != "no" ) +then + +if test "x$prefix" != xNONE; then + cf_path_syntax="$prefix" +else + cf_path_syntax="$ac_default_prefix" +fi + +case ".$withval" in +(.\$\(*\)*|.\'*\'*) + ;; +(..|./*|.\\*) + ;; +(.[a-zA-Z]:[\\/]*) # OS/2 EMX + ;; +(.\${*prefix}*|.\${*dir}*) + eval withval="$withval" + case ".$withval" in + (.NONE/*) + withval=`echo $withval | sed -e s%NONE%$cf_path_syntax%` + ;; + esac + ;; +(.no|.NONE/*) + withval=`echo $withval | sed -e s%NONE%$cf_path_syntax%` + ;; +(*) + { { echo "$as_me:11818: error: expected a pathname, not \"$withval\"" >&5 +echo "$as_me: error: expected a pathname, not \"$withval\"" >&2;} + { (exit 1); exit 1; }; } + ;; +esac + + if test -d "$cf_cv_curses_dir" + then + +if test -n "$cf_cv_curses_dir/include" ; then + for cf_add_incdir in $cf_cv_curses_dir/include + do + while test $cf_add_incdir != /usr/include + do + if test -d $cf_add_incdir + then + cf_have_incdir=no + if test -n "$CFLAGS$CPPFLAGS" ; then + # a loop is needed to ensure we can add subdirs of existing dirs + for cf_test_incdir in $CFLAGS $CPPFLAGS ; do + if test ".$cf_test_incdir" = ".-I$cf_add_incdir" ; then + cf_have_incdir=yes; break + fi + done + fi + + if test "$cf_have_incdir" = no ; then + if test "$cf_add_incdir" = /usr/local/include ; then + if test "$GCC" = yes + then + cf_save_CPPFLAGS=$CPPFLAGS + + test -n "$CPPFLAGS" && CPPFLAGS="$CPPFLAGS " + CPPFLAGS="${CPPFLAGS}-I$cf_add_incdir" + + cat >conftest.$ac_ext <<_ACEOF +#line 11854 "configure" +#include "confdefs.h" +#include +int +main (void) +{ +printf("Hello") + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:11866: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:11869: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:11872: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:11875: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + : +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +cf_have_incdir=yes +fi +rm -f conftest.$ac_objext conftest.$ac_ext + CPPFLAGS=$cf_save_CPPFLAGS + fi + fi + fi + + if test "$cf_have_incdir" = no ; then + test -n "$verbose" && echo " adding $cf_add_incdir to include-path" 1>&6 + +echo "${as_me:-configure}:11892: testing adding $cf_add_incdir to include-path ..." 1>&5 + + CPPFLAGS="$CPPFLAGS -I$cf_add_incdir" + + cf_top_incdir=`echo $cf_add_incdir | sed -e 's%/include/.*$%/include%'` + test "$cf_top_incdir" = "$cf_add_incdir" && break + cf_add_incdir="$cf_top_incdir" + else + break + fi + else + break + fi + done + done +fi + +if test -n "$cf_cv_curses_dir/lib" ; then + for cf_add_libdir in $cf_cv_curses_dir/lib + do + if test $cf_add_libdir = /usr/lib ; then + : + elif test -d $cf_add_libdir + then + cf_have_libdir=no + if test -n "$LDFLAGS$LIBS" ; then + # a loop is needed to ensure we can add subdirs of existing dirs + for cf_test_libdir in $LDFLAGS $LIBS ; do + if test ".$cf_test_libdir" = ".-L$cf_add_libdir" ; then + cf_have_libdir=yes; break + fi + done + fi + if test "$cf_have_libdir" = no ; then + test -n "$verbose" && echo " adding $cf_add_libdir to library-path" 1>&6 + +echo "${as_me:-configure}:11928: testing adding $cf_add_libdir to library-path ..." 1>&5 + + LDFLAGS="-L$cf_add_libdir $LDFLAGS" + fi + fi + done +fi + + fi +fi + +echo "$as_me:11939: checking if rpath option should be used" >&5 +echo $ECHO_N "checking if rpath option should be used... $ECHO_C" >&6 + +# Check whether --enable-rpath or --disable-rpath was given. +if test "${enable_rpath+set}" = set; then + enableval="$enable_rpath" + cf_cv_enable_rpath=$enableval +else + cf_cv_enable_rpath=no +fi; +echo "$as_me:11949: result: $cf_cv_enable_rpath" >&5 +echo "${ECHO_T}$cf_cv_enable_rpath" >&6 + +echo "$as_me:11952: checking for specific curses-directory" >&5 +echo $ECHO_N "checking for specific curses-directory... $ECHO_C" >&6 + +# Check whether --with-curses-dir or --without-curses-dir was given. +if test "${with_curses_dir+set}" = set; then + withval="$with_curses_dir" + cf_cv_curses_dir=$withval +else + cf_cv_curses_dir=no +fi; +echo "$as_me:11962: result: $cf_cv_curses_dir" >&5 +echo "${ECHO_T}$cf_cv_curses_dir" >&6 + +if ( test -n "$cf_cv_curses_dir" && test "$cf_cv_curses_dir" != "no" ) +then + +if test "x$prefix" != xNONE; then + cf_path_syntax="$prefix" +else + cf_path_syntax="$ac_default_prefix" +fi + +case ".$withval" in +(.\$\(*\)*|.\'*\'*) + ;; +(..|./*|.\\*) + ;; +(.[a-zA-Z]:[\\/]*) # OS/2 EMX + ;; +(.\${*prefix}*|.\${*dir}*) + eval withval="$withval" + case ".$withval" in + (.NONE/*) + withval=`echo $withval | sed -e s%NONE%$cf_path_syntax%` + ;; + esac + ;; +(.no|.NONE/*) + withval=`echo $withval | sed -e s%NONE%$cf_path_syntax%` + ;; +(*) + { { echo "$as_me:11993: error: expected a pathname, not \"$withval\"" >&5 +echo "$as_me: error: expected a pathname, not \"$withval\"" >&2;} + { (exit 1); exit 1; }; } + ;; +esac + + if test -d "$cf_cv_curses_dir" + then + +if test -n "$cf_cv_curses_dir/include" ; then + for cf_add_incdir in $cf_cv_curses_dir/include + do + while test $cf_add_incdir != /usr/include + do + if test -d $cf_add_incdir + then + cf_have_incdir=no + if test -n "$CFLAGS$CPPFLAGS" ; then + # a loop is needed to ensure we can add subdirs of existing dirs + for cf_test_incdir in $CFLAGS $CPPFLAGS ; do + if test ".$cf_test_incdir" = ".-I$cf_add_incdir" ; then + cf_have_incdir=yes; break + fi + done + fi + + if test "$cf_have_incdir" = no ; then + if test "$cf_add_incdir" = /usr/local/include ; then + if test "$GCC" = yes + then + cf_save_CPPFLAGS=$CPPFLAGS + + test -n "$CPPFLAGS" && CPPFLAGS="$CPPFLAGS " + CPPFLAGS="${CPPFLAGS}-I$cf_add_incdir" + + cat >conftest.$ac_ext <<_ACEOF +#line 12029 "configure" +#include "confdefs.h" +#include +int +main (void) +{ +printf("Hello") + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:12041: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:12044: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:12047: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:12050: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + : +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +cf_have_incdir=yes +fi +rm -f conftest.$ac_objext conftest.$ac_ext + CPPFLAGS=$cf_save_CPPFLAGS + fi + fi + fi + + if test "$cf_have_incdir" = no ; then + test -n "$verbose" && echo " adding $cf_add_incdir to include-path" 1>&6 + +echo "${as_me:-configure}:12067: testing adding $cf_add_incdir to include-path ..." 1>&5 + + CPPFLAGS="$CPPFLAGS -I$cf_add_incdir" + + cf_top_incdir=`echo $cf_add_incdir | sed -e 's%/include/.*$%/include%'` + test "$cf_top_incdir" = "$cf_add_incdir" && break + cf_add_incdir="$cf_top_incdir" + else + break + fi + else + break + fi + done + done +fi + +if test -n "$cf_cv_curses_dir/lib" ; then + for cf_add_libdir in $cf_cv_curses_dir/lib + do + if test $cf_add_libdir = /usr/lib ; then + : + elif test -d $cf_add_libdir + then + cf_have_libdir=no + if test -n "$LDFLAGS$LIBS" ; then + # a loop is needed to ensure we can add subdirs of existing dirs + for cf_test_libdir in $LDFLAGS $LIBS ; do + if test ".$cf_test_libdir" = ".-L$cf_add_libdir" ; then + cf_have_libdir=yes; break + fi + done + fi + if test "$cf_have_libdir" = no ; then + test -n "$verbose" && echo " adding $cf_add_libdir to library-path" 1>&6 + +echo "${as_me:-configure}:12103: testing adding $cf_add_libdir to library-path ..." 1>&5 + + LDFLAGS="-L$cf_add_libdir $LDFLAGS" + fi + fi + done +fi + + fi +fi + +cf_cv_screen=curses + +echo "$as_me:12116: checking for specified curses library type" >&5 +echo $ECHO_N "checking for specified curses library type... $ECHO_C" >&6 + +# Check whether --with-screen or --without-screen was given. +if test "${with_screen+set}" = set; then + withval="$with_screen" + cf_cv_screen=$withval +else + +# Check whether --with-ncursesw or --without-ncursesw was given. +if test "${with_ncursesw+set}" = set; then + withval="$with_ncursesw" + cf_cv_screen=ncursesw +else + +# Check whether --with-ncurses or --without-ncurses was given. +if test "${with_ncurses+set}" = set; then + withval="$with_ncurses" + cf_cv_screen=ncurses +else + +# Check whether --with-pdcurses or --without-pdcurses was given. +if test "${with_pdcurses+set}" = set; then + withval="$with_pdcurses" + cf_cv_screen=pdcurses +else + +# Check whether --with-curses-colr or --without-curses-colr was given. +if test "${with_curses_colr+set}" = set; then + withval="$with_curses_colr" + cf_cv_screen=curses_colr +else + +# Check whether --with-curses-5lib or --without-curses-5lib was given. +if test "${with_curses_5lib+set}" = set; then + withval="$with_curses_5lib" + cf_cv_screen=curses_5lib +fi; +fi; +fi; +fi; +fi; +fi; + +echo "$as_me:12160: result: $cf_cv_screen" >&5 +echo "${ECHO_T}$cf_cv_screen" >&6 + +case $cf_cv_screen in +(curses|curses_*) + +echo "$as_me:12166: checking for extra include directories" >&5 +echo $ECHO_N "checking for extra include directories... $ECHO_C" >&6 +if test "${cf_cv_curses_incdir+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + +cf_cv_curses_incdir=no +case $host_os in +(hpux10.*) + if test "x$cf_cv_screen" = "xcurses_colr" + then + test -d /usr/include/curses_colr && \ + cf_cv_curses_incdir="-I/usr/include/curses_colr" + fi + ;; +(sunos3*|sunos4*) + if test "x$cf_cv_screen" = "xcurses_5lib" + then + test -d /usr/5lib && \ + test -d /usr/5include && \ + cf_cv_curses_incdir="-I/usr/5include" + fi + ;; +esac + +fi +echo "$as_me:12192: result: $cf_cv_curses_incdir" >&5 +echo "${ECHO_T}$cf_cv_curses_incdir" >&6 +if test "$cf_cv_curses_incdir" != no +then + + test -n "$CPPFLAGS" && CPPFLAGS="$CPPFLAGS " + CPPFLAGS="${CPPFLAGS}$cf_cv_curses_incdir" + +fi + +echo "$as_me:12202: checking if we have identified curses headers" >&5 +echo $ECHO_N "checking if we have identified curses headers... $ECHO_C" >&6 +if test "${cf_cv_ncurses_header+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + +cf_cv_ncurses_header=none +for cf_header in \ + ncurses.h \ + curses.h ncurses/ncurses.h ncurses/curses.h +do +cat >conftest.$ac_ext <<_ACEOF +#line 12214 "configure" +#include "confdefs.h" +#include <${cf_header}> +int +main (void) +{ +initscr(); tgoto("?", 0,0) + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:12226: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:12229: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:12232: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:12235: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + cf_cv_ncurses_header=$cf_header; break +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +fi +rm -f conftest.$ac_objext conftest.$ac_ext +done + +fi +echo "$as_me:12246: result: $cf_cv_ncurses_header" >&5 +echo "${ECHO_T}$cf_cv_ncurses_header" >&6 + +if test "$cf_cv_ncurses_header" = none ; then + { { echo "$as_me:12250: error: No curses header-files found" >&5 +echo "$as_me: error: No curses header-files found" >&2;} + { (exit 1); exit 1; }; } +fi + +# cheat, to get the right #define's for HAVE_NCURSES_H, etc. + +for ac_header in $cf_cv_ncurses_header +do +as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` +echo "$as_me:12260: checking for $ac_header" >&5 +echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 +if eval "test \"\${$as_ac_Header+set}\" = set"; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +#line 12266 "configure" +#include "confdefs.h" +#include <$ac_header> +_ACEOF +if { (eval echo "$as_me:12270: \"$ac_cpp conftest.$ac_ext\"") >&5 + (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 + ac_status=$? + egrep -v '^ *\+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:12276: \$? = $ac_status" >&5 + (exit $ac_status); } >/dev/null; then + if test -s conftest.err; then + ac_cpp_err=$ac_c_preproc_warn_flag + else + ac_cpp_err= + fi +else + ac_cpp_err=yes +fi +if test -z "$ac_cpp_err"; then + eval "$as_ac_Header=yes" +else + echo "$as_me: failed program was:" >&5 + cat conftest.$ac_ext >&5 + eval "$as_ac_Header=no" +fi +rm -f conftest.err conftest.$ac_ext +fi +echo "$as_me:12295: result: `eval echo '${'$as_ac_Header'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 +if test `eval echo '${'$as_ac_Header'}'` = yes; then + cat >>confdefs.h <&5 +echo $ECHO_N "checking for terminfo header... $ECHO_C" >&6 +if test "${cf_cv_term_header+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + +case ${cf_cv_ncurses_header} in +(*/ncurses.h|*/ncursesw.h) + cf_term_header=`echo "$cf_cv_ncurses_header" | sed -e 's%ncurses[^.]*\.h$%term.h%'` + ;; +(*) + cf_term_header=term.h + ;; +esac + +for cf_test in $cf_term_header "ncurses/term.h" "ncursesw/term.h" +do +cat >conftest.$ac_ext <<_ACEOF +#line 12323 "configure" +#include "confdefs.h" +#include +#include <${cf_cv_ncurses_header:-curses.h}> +#include <$cf_test> + +int +main (void) +{ +int x = auto_left_margin + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:12338: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:12341: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:12344: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:12347: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + + cf_cv_term_header="$cf_test" +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 + + cf_cv_term_header=unknown + +fi +rm -f conftest.$ac_objext conftest.$ac_ext + test "$cf_cv_term_header" != unknown && break +done + +fi +echo "$as_me:12363: result: $cf_cv_term_header" >&5 +echo "${ECHO_T}$cf_cv_term_header" >&6 + +# Set definitions to allow ifdef'ing to accommodate subdirectories + +case $cf_cv_term_header in +(*term.h) + +cat >>confdefs.h <<\EOF +#define HAVE_TERM_H 1 +EOF + + ;; +esac + +case $cf_cv_term_header in +(ncurses/term.h) + +cat >>confdefs.h <<\EOF +#define HAVE_NCURSES_TERM_H 1 +EOF + + ;; +(ncursesw/term.h) + +cat >>confdefs.h <<\EOF +#define HAVE_NCURSESW_TERM_H 1 +EOF + + ;; +esac + +echo "$as_me:12395: checking for ncurses version" >&5 +echo $ECHO_N "checking for ncurses version... $ECHO_C" >&6 +if test "${cf_cv_ncurses_version+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + + cf_cv_ncurses_version=no + cf_tempfile=out$$ + rm -f $cf_tempfile + if test "$cross_compiling" = yes; then + + # This will not work if the preprocessor splits the line after the + # Autoconf token. The 'unproto' program does that. + cat > conftest.$ac_ext < +#undef Autoconf +#ifdef NCURSES_VERSION +Autoconf NCURSES_VERSION +#else +#ifdef __NCURSES_H +Autoconf "old" +#endif +; +#endif +EOF + cf_try="$ac_cpp conftest.$ac_ext 2>&5 | grep '^Autoconf ' >conftest.out" + { (eval echo "$as_me:12421: \"$cf_try\"") >&5 + (eval $cf_try) 2>&5 + ac_status=$? + echo "$as_me:12424: \$? = $ac_status" >&5 + (exit $ac_status); } + if test -f conftest.out ; then + cf_out=`cat conftest.out | sed -e 's%^Autoconf %%' -e 's%^[^"]*"%%' -e 's%".*%%'` + test -n "$cf_out" && cf_cv_ncurses_version="$cf_out" + rm -f conftest.out + fi + +else + cat >conftest.$ac_ext <<_ACEOF +#line 12434 "configure" +#include "confdefs.h" + +#include <${cf_cv_ncurses_header:-curses.h}> +#include +int main(void) +{ + FILE *fp = fopen("$cf_tempfile", "w"); +#ifdef NCURSES_VERSION +# ifdef NCURSES_VERSION_PATCH + fprintf(fp, "%s.%d\n", NCURSES_VERSION, NCURSES_VERSION_PATCH); +# else + fprintf(fp, "%s\n", NCURSES_VERSION); +# endif +#else +# ifdef __NCURSES_H + fprintf(fp, "old\n"); +# else + make an error +# endif +#endif + ${cf_cv_main_return:-return}(0); +} +_ACEOF +rm -f conftest$ac_exeext +if { (eval echo "$as_me:12459: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:12462: \$? = $ac_status" >&5 + (exit $ac_status); } && { ac_try='./conftest$ac_exeext' + { (eval echo "$as_me:12464: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:12467: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + + cf_cv_ncurses_version=`cat $cf_tempfile` +else + echo "$as_me: program exited with status $ac_status" >&5 +echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +fi +rm -f core core.* *.core conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext +fi + rm -f $cf_tempfile + +fi +echo "$as_me:12481: result: $cf_cv_ncurses_version" >&5 +echo "${ECHO_T}$cf_cv_ncurses_version" >&6 +test "$cf_cv_ncurses_version" = no || +cat >>confdefs.h <<\EOF +#define NCURSES 1 +EOF + +echo "$as_me:12488: checking if we have identified curses libraries" >&5 +echo $ECHO_N "checking if we have identified curses libraries... $ECHO_C" >&6 +cat >conftest.$ac_ext <<_ACEOF +#line 12491 "configure" +#include "confdefs.h" +#include <${cf_cv_ncurses_header:-curses.h}> +int +main (void) +{ +initscr(); tgoto("?", 0,0) + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:12503: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:12506: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:12509: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:12512: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + cf_result=yes +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +cf_result=no +fi +rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext +echo "$as_me:12521: result: $cf_result" >&5 +echo "${ECHO_T}$cf_result" >&6 + +if test "$cf_result" = no ; then +case $host_os in +(freebsd*) + echo "$as_me:12527: checking for tgoto in -lmytinfo" >&5 +echo $ECHO_N "checking for tgoto in -lmytinfo... $ECHO_C" >&6 +if test "${ac_cv_lib_mytinfo_tgoto+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-lmytinfo $LIBS" +cat >conftest.$ac_ext <<_ACEOF +#line 12535 "configure" +#include "confdefs.h" + +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char tgoto (); +int +main (void) +{ +tgoto (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:12554: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:12557: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:12560: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:12563: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_lib_mytinfo_tgoto=yes +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +ac_cv_lib_mytinfo_tgoto=no +fi +rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +echo "$as_me:12574: result: $ac_cv_lib_mytinfo_tgoto" >&5 +echo "${ECHO_T}$ac_cv_lib_mytinfo_tgoto" >&6 +if test $ac_cv_lib_mytinfo_tgoto = yes; then + +cf_add_libs="-lmytinfo" +# Filter out duplicates - this happens with badly-designed ".pc" files... +for cf_add_1lib in $LIBS +do + for cf_add_2lib in $cf_add_libs + do + if test "x$cf_add_1lib" = "x$cf_add_2lib" + then + cf_add_1lib= + break + fi + done + test -n "$cf_add_1lib" && cf_add_libs="$cf_add_libs $cf_add_1lib" +done +LIBS="$cf_add_libs" + +fi + + ;; +(hpux10.*) + # Looking at HPUX 10.20, the Hcurses library is the oldest (1997), cur_colr + # next (1998), and xcurses "newer" (2000). There is no header file for + # Hcurses; the subdirectory curses_colr has the headers (curses.h and + # term.h) for cur_colr + if test "x$cf_cv_screen" = "xcurses_colr" + then + echo "$as_me:12604: checking for initscr in -lcur_colr" >&5 +echo $ECHO_N "checking for initscr in -lcur_colr... $ECHO_C" >&6 +if test "${ac_cv_lib_cur_colr_initscr+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-lcur_colr $LIBS" +cat >conftest.$ac_ext <<_ACEOF +#line 12612 "configure" +#include "confdefs.h" + +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char initscr (); +int +main (void) +{ +initscr (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:12631: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:12634: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:12637: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:12640: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_lib_cur_colr_initscr=yes +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +ac_cv_lib_cur_colr_initscr=no +fi +rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +echo "$as_me:12651: result: $ac_cv_lib_cur_colr_initscr" >&5 +echo "${ECHO_T}$ac_cv_lib_cur_colr_initscr" >&6 +if test $ac_cv_lib_cur_colr_initscr = yes; then + +cf_add_libs="-lcur_colr" +# Filter out duplicates - this happens with badly-designed ".pc" files... +for cf_add_1lib in $LIBS +do + for cf_add_2lib in $cf_add_libs + do + if test "x$cf_add_1lib" = "x$cf_add_2lib" + then + cf_add_1lib= + break + fi + done + test -n "$cf_add_1lib" && cf_add_libs="$cf_add_libs $cf_add_1lib" +done +LIBS="$cf_add_libs" + + ac_cv_func_initscr=yes + +else + + echo "$as_me:12675: checking for initscr in -lHcurses" >&5 +echo $ECHO_N "checking for initscr in -lHcurses... $ECHO_C" >&6 +if test "${ac_cv_lib_Hcurses_initscr+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-lHcurses $LIBS" +cat >conftest.$ac_ext <<_ACEOF +#line 12683 "configure" +#include "confdefs.h" + +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char initscr (); +int +main (void) +{ +initscr (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:12702: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:12705: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:12708: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:12711: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_lib_Hcurses_initscr=yes +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +ac_cv_lib_Hcurses_initscr=no +fi +rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +echo "$as_me:12722: result: $ac_cv_lib_Hcurses_initscr" >&5 +echo "${ECHO_T}$ac_cv_lib_Hcurses_initscr" >&6 +if test $ac_cv_lib_Hcurses_initscr = yes; then + + # HP's header uses __HP_CURSES, but user claims _HP_CURSES. + +cf_add_libs="-lHcurses" +# Filter out duplicates - this happens with badly-designed ".pc" files... +for cf_add_1lib in $LIBS +do + for cf_add_2lib in $cf_add_libs + do + if test "x$cf_add_1lib" = "x$cf_add_2lib" + then + cf_add_1lib= + break + fi + done + test -n "$cf_add_1lib" && cf_add_libs="$cf_add_libs $cf_add_1lib" +done +LIBS="$cf_add_libs" + + test -n "$CPPFLAGS" && CPPFLAGS="$CPPFLAGS " + CPPFLAGS="${CPPFLAGS}-D__HP_CURSES -D_HP_CURSES" + + ac_cv_func_initscr=yes + +fi + +fi + + fi + ;; +(linux*) + case `arch 2>/dev/null` in + (x86_64) + if test -d /lib64 + then + +if test -n "/lib64" ; then + for cf_add_libdir in /lib64 + do + if test $cf_add_libdir = /usr/lib ; then + : + elif test -d $cf_add_libdir + then + cf_have_libdir=no + if test -n "$LDFLAGS$LIBS" ; then + # a loop is needed to ensure we can add subdirs of existing dirs + for cf_test_libdir in $LDFLAGS $LIBS ; do + if test ".$cf_test_libdir" = ".-L$cf_add_libdir" ; then + cf_have_libdir=yes; break + fi + done + fi + if test "$cf_have_libdir" = no ; then + test -n "$verbose" && echo " adding $cf_add_libdir to library-path" 1>&6 + +echo "${as_me:-configure}:12780: testing adding $cf_add_libdir to library-path ..." 1>&5 + + LDFLAGS="-L$cf_add_libdir $LDFLAGS" + fi + fi + done +fi + + else + +if test -n "/lib" ; then + for cf_add_libdir in /lib + do + if test $cf_add_libdir = /usr/lib ; then + : + elif test -d $cf_add_libdir + then + cf_have_libdir=no + if test -n "$LDFLAGS$LIBS" ; then + # a loop is needed to ensure we can add subdirs of existing dirs + for cf_test_libdir in $LDFLAGS $LIBS ; do + if test ".$cf_test_libdir" = ".-L$cf_add_libdir" ; then + cf_have_libdir=yes; break + fi + done + fi + if test "$cf_have_libdir" = no ; then + test -n "$verbose" && echo " adding $cf_add_libdir to library-path" 1>&6 + +echo "${as_me:-configure}:12809: testing adding $cf_add_libdir to library-path ..." 1>&5 + + LDFLAGS="-L$cf_add_libdir $LDFLAGS" + fi + fi + done +fi + + fi + ;; + (*) + +if test -n "/lib" ; then + for cf_add_libdir in /lib + do + if test $cf_add_libdir = /usr/lib ; then + : + elif test -d $cf_add_libdir + then + cf_have_libdir=no + if test -n "$LDFLAGS$LIBS" ; then + # a loop is needed to ensure we can add subdirs of existing dirs + for cf_test_libdir in $LDFLAGS $LIBS ; do + if test ".$cf_test_libdir" = ".-L$cf_add_libdir" ; then + cf_have_libdir=yes; break + fi + done + fi + if test "$cf_have_libdir" = no ; then + test -n "$verbose" && echo " adding $cf_add_libdir to library-path" 1>&6 + +echo "${as_me:-configure}:12840: testing adding $cf_add_libdir to library-path ..." 1>&5 + + LDFLAGS="-L$cf_add_libdir $LDFLAGS" + fi + fi + done +fi + + ;; + esac + ;; +(sunos3*|sunos4*) + if test "x$cf_cv_screen" = "xcurses_5lib" + then + if test -d /usr/5lib ; then + +if test -n "/usr/5lib" ; then + for cf_add_libdir in /usr/5lib + do + if test $cf_add_libdir = /usr/lib ; then + : + elif test -d $cf_add_libdir + then + cf_have_libdir=no + if test -n "$LDFLAGS$LIBS" ; then + # a loop is needed to ensure we can add subdirs of existing dirs + for cf_test_libdir in $LDFLAGS $LIBS ; do + if test ".$cf_test_libdir" = ".-L$cf_add_libdir" ; then + cf_have_libdir=yes; break + fi + done + fi + if test "$cf_have_libdir" = no ; then + test -n "$verbose" && echo " adding $cf_add_libdir to library-path" 1>&6 + +echo "${as_me:-configure}:12875: testing adding $cf_add_libdir to library-path ..." 1>&5 + + LDFLAGS="-L$cf_add_libdir $LDFLAGS" + fi + fi + done +fi + +cf_add_libs="-lcurses -ltermcap" +# Filter out duplicates - this happens with badly-designed ".pc" files... +for cf_add_1lib in $LIBS +do + for cf_add_2lib in $cf_add_libs + do + if test "x$cf_add_1lib" = "x$cf_add_2lib" + then + cf_add_1lib= + break + fi + done + test -n "$cf_add_1lib" && cf_add_libs="$cf_add_libs $cf_add_1lib" +done +LIBS="$cf_add_libs" + + fi + fi + ac_cv_func_initscr=yes + ;; +esac + +if test ".$ac_cv_func_initscr" != .yes ; then + cf_save_LIBS="$LIBS" + + if test ".${cf_cv_ncurses_version:-no}" != .no + then + cf_check_list="ncurses curses cursesX" + else + cf_check_list="cursesX curses ncurses" + fi + + # Check for library containing tgoto. Do this before curses library + # because it may be needed to link the test-case for initscr. + if test "x$cf_term_lib" = x + then + echo "$as_me:12919: checking for tgoto" >&5 +echo $ECHO_N "checking for tgoto... $ECHO_C" >&6 +if test "${ac_cv_func_tgoto+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +#line 12925 "configure" +#include "confdefs.h" +/* System header to define __stub macros and hopefully few prototypes, + which can conflict with char tgoto (); below. */ +#include +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char tgoto (); +char (*f) (); + +int +main (void) +{ +/* 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_tgoto) || defined (__stub___tgoto) +choke me +#else +f = tgoto; /* workaround for ICC 12.0.3 */ if (f == 0) return 1; +#endif + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:12956: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:12959: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:12962: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:12965: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_func_tgoto=yes +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +ac_cv_func_tgoto=no +fi +rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext +fi +echo "$as_me:12975: result: $ac_cv_func_tgoto" >&5 +echo "${ECHO_T}$ac_cv_func_tgoto" >&6 +if test $ac_cv_func_tgoto = yes; then + cf_term_lib=predefined +else + + for cf_term_lib in $cf_check_list otermcap termcap tinfo termlib unknown + do + as_ac_Lib=`echo "ac_cv_lib_$cf_term_lib''_tgoto" | $as_tr_sh` +echo "$as_me:12984: checking for tgoto in -l$cf_term_lib" >&5 +echo $ECHO_N "checking for tgoto in -l$cf_term_lib... $ECHO_C" >&6 +if eval "test \"\${$as_ac_Lib+set}\" = set"; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-l$cf_term_lib $LIBS" +cat >conftest.$ac_ext <<_ACEOF +#line 12992 "configure" +#include "confdefs.h" + +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char tgoto (); +int +main (void) +{ +tgoto (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:13011: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:13014: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:13017: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:13020: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + eval "$as_ac_Lib=yes" +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +eval "$as_ac_Lib=no" +fi +rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +echo "$as_me:13031: result: `eval echo '${'$as_ac_Lib'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_Lib'}'`" >&6 +if test `eval echo '${'$as_ac_Lib'}'` = yes; then + + : ${cf_nculib_root:=$cf_term_lib} + break + +fi + + done + +fi + + fi + + # Check for library containing initscr + test "$cf_term_lib" != predefined && test "$cf_term_lib" != unknown && LIBS="-l$cf_term_lib $cf_save_LIBS" + if test "x$cf_curs_lib" = x + then + for cf_curs_lib in $cf_check_list xcurses jcurses pdcurses unknown + do + LIBS="-l$cf_curs_lib $cf_save_LIBS" + if test "$cf_term_lib" = unknown || test "$cf_term_lib" = "$cf_curs_lib" ; then + echo "$as_me:13054: checking if we can link with $cf_curs_lib library" >&5 +echo $ECHO_N "checking if we can link with $cf_curs_lib library... $ECHO_C" >&6 + cat >conftest.$ac_ext <<_ACEOF +#line 13057 "configure" +#include "confdefs.h" +#include <${cf_cv_ncurses_header:-curses.h}> +int +main (void) +{ +initscr() + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:13069: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:13072: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:13075: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:13078: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + cf_result=yes +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +cf_result=no +fi +rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext + echo "$as_me:13087: result: $cf_result" >&5 +echo "${ECHO_T}$cf_result" >&6 + test $cf_result = yes && break + elif test "$cf_curs_lib" = "$cf_term_lib" ; then + cf_result=no + elif test "$cf_term_lib" != predefined ; then + echo "$as_me:13093: checking if we need both $cf_curs_lib and $cf_term_lib libraries" >&5 +echo $ECHO_N "checking if we need both $cf_curs_lib and $cf_term_lib libraries... $ECHO_C" >&6 + cat >conftest.$ac_ext <<_ACEOF +#line 13096 "configure" +#include "confdefs.h" +#include <${cf_cv_ncurses_header:-curses.h}> +int +main (void) +{ +initscr(); tgoto((char *)0, 0, 0); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:13108: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:13111: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:13114: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:13117: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + cf_result=no +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 + + LIBS="-l$cf_curs_lib -l$cf_term_lib $cf_save_LIBS" + cat >conftest.$ac_ext <<_ACEOF +#line 13126 "configure" +#include "confdefs.h" +#include <${cf_cv_ncurses_header:-curses.h}> +int +main (void) +{ +initscr() + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:13138: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:13141: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:13144: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:13147: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + cf_result=yes +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +cf_result=error +fi +rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext + +fi +rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext + echo "$as_me:13159: result: $cf_result" >&5 +echo "${ECHO_T}$cf_result" >&6 + test $cf_result != error && break + fi + done + fi + test $cf_curs_lib = unknown && { { echo "$as_me:13165: error: no curses library found" >&5 +echo "$as_me: error: no curses library found" >&2;} + { (exit 1); exit 1; }; } +fi +fi + + ;; +(ncursesw*) + +echo "$as_me:13174: checking for multibyte character support" >&5 +echo $ECHO_N "checking for multibyte character support... $ECHO_C" >&6 +if test "${cf_cv_utf8_lib+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + + cf_save_LIBS="$LIBS" + cat >conftest.$ac_ext <<_ACEOF +#line 13182 "configure" +#include "confdefs.h" + +#include +int +main (void) +{ +putwc(0,0); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:13195: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:13198: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:13201: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:13204: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + cf_cv_utf8_lib=yes +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 + +# If the linkage is not already in the $CPPFLAGS/$LDFLAGS configuration, these +# will be set on completion of the AC_TRY_LINK below. +cf_cv_header_path_utf8= +cf_cv_library_path_utf8= + +echo "${as_me:-configure}:13216: testing Starting FIND_LINKAGE(utf8,) ..." 1>&5 + +cf_save_LIBS="$LIBS" + +cat >conftest.$ac_ext <<_ACEOF +#line 13221 "configure" +#include "confdefs.h" + +#include +int +main (void) +{ +putwc(0,0); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:13234: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:13237: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:13240: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:13243: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + + cf_cv_find_linkage_utf8=yes + cf_cv_header_path_utf8=/usr/include + cf_cv_library_path_utf8=/usr/lib + +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 + +LIBS="-lutf8 $cf_save_LIBS" + +cat >conftest.$ac_ext <<_ACEOF +#line 13257 "configure" +#include "confdefs.h" + +#include +int +main (void) +{ +putwc(0,0); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:13270: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:13273: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:13276: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:13279: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + + cf_cv_find_linkage_utf8=yes + cf_cv_header_path_utf8=/usr/include + cf_cv_library_path_utf8=/usr/lib + cf_cv_library_file_utf8="-lutf8" + +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 + + cf_cv_find_linkage_utf8=no + LIBS="$cf_save_LIBS" + + test -n "$verbose" && echo " find linkage for utf8 library" 1>&6 + +echo "${as_me:-configure}:13296: testing find linkage for utf8 library ..." 1>&5 + +echo "${as_me:-configure}:13298: testing Searching for headers in FIND_LINKAGE(utf8,) ..." 1>&5 + + cf_save_CPPFLAGS="$CPPFLAGS" + cf_test_CPPFLAGS="$CPPFLAGS" + +cf_search= + +# collect the current set of include-directories from compiler flags +cf_header_path_list="" +if test -n "${CFLAGS}${CPPFLAGS}" ; then + for cf_header_path in $CPPFLAGS $CFLAGS + do + case $cf_header_path in + (-I*) + cf_header_path=`echo ".$cf_header_path" |sed -e 's/^...//' -e 's,/include$,,'` + +test "x$cf_header_path" != "xNONE" && \ +test -d "$cf_header_path" && \ + { + test -n "$verbose" && echo " ... testing for include-directories under $cf_header_path" + test -d $cf_header_path/include && cf_search="$cf_search $cf_header_path/include" + test -d $cf_header_path/include/utf8 && cf_search="$cf_search $cf_header_path/include/utf8" + test -d $cf_header_path/include/utf8/include && cf_search="$cf_search $cf_header_path/include/utf8/include" + test -d $cf_header_path/utf8/include && cf_search="$cf_search $cf_header_path/utf8/include" + test -d $cf_header_path/utf8/include/utf8 && cf_search="$cf_search $cf_header_path/utf8/include/utf8" +} + + cf_header_path_list="$cf_header_path_list $cf_search" + ;; + esac + done +fi + +# add the variations for the package we are looking for + +cf_search= + +test "x$prefix" != "xNONE" && \ +test -d "$prefix" && \ + { + test -n "$verbose" && echo " ... testing for include-directories under $prefix" + test -d $prefix/include && cf_search="$cf_search $prefix/include" + test -d $prefix/include/utf8 && cf_search="$cf_search $prefix/include/utf8" + test -d $prefix/include/utf8/include && cf_search="$cf_search $prefix/include/utf8/include" + test -d $prefix/utf8/include && cf_search="$cf_search $prefix/utf8/include" + test -d $prefix/utf8/include/utf8 && cf_search="$cf_search $prefix/utf8/include/utf8" +} + +for cf_subdir_prefix in \ + /usr \ + /usr/local \ + /usr/pkg \ + /opt \ + /opt/local \ + $HOME +do + +test "x$cf_subdir_prefix" != "x$prefix" && \ +test -d "$cf_subdir_prefix" && \ +(test -z "$prefix" || test x$prefix = xNONE || test "x$cf_subdir_prefix" != "x$prefix") && { + test -n "$verbose" && echo " ... testing for include-directories under $cf_subdir_prefix" + test -d $cf_subdir_prefix/include && cf_search="$cf_search $cf_subdir_prefix/include" + test -d $cf_subdir_prefix/include/utf8 && cf_search="$cf_search $cf_subdir_prefix/include/utf8" + test -d $cf_subdir_prefix/include/utf8/include && cf_search="$cf_search $cf_subdir_prefix/include/utf8/include" + test -d $cf_subdir_prefix/utf8/include && cf_search="$cf_search $cf_subdir_prefix/utf8/include" + test -d $cf_subdir_prefix/utf8/include/utf8 && cf_search="$cf_search $cf_subdir_prefix/utf8/include/utf8" +} + +done + +test "$includedir" != NONE && \ +test "$includedir" != "/usr/include" && \ +test -d "$includedir" && { + test -d $includedir && cf_search="$cf_search $includedir" + test -d $includedir/utf8 && cf_search="$cf_search $includedir/utf8" +} + +test "$oldincludedir" != NONE && \ +test "$oldincludedir" != "/usr/include" && \ +test -d "$oldincludedir" && { + test -d $oldincludedir && cf_search="$cf_search $oldincludedir" + test -d $oldincludedir/utf8 && cf_search="$cf_search $oldincludedir/utf8" +} + +cf_search="$cf_search $cf_header_path_list" + + for cf_cv_header_path_utf8 in $cf_search + do + if test -d $cf_cv_header_path_utf8 ; then + test -n "$verbose" && echo " ... testing $cf_cv_header_path_utf8" 1>&6 + +echo "${as_me:-configure}:13389: testing ... testing $cf_cv_header_path_utf8 ..." 1>&5 + + CPPFLAGS="$cf_save_CPPFLAGS" + + test -n "$CPPFLAGS" && CPPFLAGS="$CPPFLAGS " + CPPFLAGS="${CPPFLAGS}-I$cf_cv_header_path_utf8" + + cat >conftest.$ac_ext <<_ACEOF +#line 13397 "configure" +#include "confdefs.h" + +#include +int +main (void) +{ +putwc(0,0); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:13410: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:13413: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:13416: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:13419: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + + test -n "$verbose" && echo " ... found utf8 headers in $cf_cv_header_path_utf8" 1>&6 + +echo "${as_me:-configure}:13424: testing ... found utf8 headers in $cf_cv_header_path_utf8 ..." 1>&5 + + cf_cv_find_linkage_utf8=maybe + cf_test_CPPFLAGS="$CPPFLAGS" + break +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 + + CPPFLAGS="$cf_save_CPPFLAGS" + +fi +rm -f conftest.$ac_objext conftest.$ac_ext + fi + done + + if test "$cf_cv_find_linkage_utf8" = maybe ; then + +echo "${as_me:-configure}:13442: testing Searching for utf8 library in FIND_LINKAGE(utf8,) ..." 1>&5 + + cf_save_LIBS="$LIBS" + cf_save_LDFLAGS="$LDFLAGS" + + if test "$cf_cv_find_linkage_utf8" != yes ; then + +cf_search= +cf_library_path_list="" +if test -n "${LDFLAGS}${LIBS}" ; then + for cf_library_path in $LDFLAGS $LIBS + do + case $cf_library_path in + (-L*) + cf_library_path=`echo ".$cf_library_path" |sed -e 's/^...//' -e 's,/lib$,,'` + +test "x$cf_library_path" != "xNONE" && \ +test -d "$cf_library_path" && \ + { + test -n "$verbose" && echo " ... testing for lib-directories under $cf_library_path" + test -d $cf_library_path/lib && cf_search="$cf_search $cf_library_path/lib" + test -d $cf_library_path/lib/utf8 && cf_search="$cf_search $cf_library_path/lib/utf8" + test -d $cf_library_path/lib/utf8/lib && cf_search="$cf_search $cf_library_path/lib/utf8/lib" + test -d $cf_library_path/utf8/lib && cf_search="$cf_search $cf_library_path/utf8/lib" + test -d $cf_library_path/utf8/lib/utf8 && cf_search="$cf_search $cf_library_path/utf8/lib/utf8" +} + + cf_library_path_list="$cf_library_path_list $cf_search" + ;; + esac + done +fi + +cf_search= + +test "x$prefix" != "xNONE" && \ +test -d "$prefix" && \ + { + test -n "$verbose" && echo " ... testing for lib-directories under $prefix" + test -d $prefix/lib && cf_search="$cf_search $prefix/lib" + test -d $prefix/lib/utf8 && cf_search="$cf_search $prefix/lib/utf8" + test -d $prefix/lib/utf8/lib && cf_search="$cf_search $prefix/lib/utf8/lib" + test -d $prefix/utf8/lib && cf_search="$cf_search $prefix/utf8/lib" + test -d $prefix/utf8/lib/utf8 && cf_search="$cf_search $prefix/utf8/lib/utf8" +} + +for cf_subdir_prefix in \ + /usr \ + /usr/local \ + /usr/pkg \ + /opt \ + /opt/local \ + $HOME +do + +test "x$cf_subdir_prefix" != "x$prefix" && \ +test -d "$cf_subdir_prefix" && \ +(test -z "$prefix" || test x$prefix = xNONE || test "x$cf_subdir_prefix" != "x$prefix") && { + test -n "$verbose" && echo " ... testing for lib-directories under $cf_subdir_prefix" + test -d $cf_subdir_prefix/lib && cf_search="$cf_search $cf_subdir_prefix/lib" + test -d $cf_subdir_prefix/lib/utf8 && cf_search="$cf_search $cf_subdir_prefix/lib/utf8" + test -d $cf_subdir_prefix/lib/utf8/lib && cf_search="$cf_search $cf_subdir_prefix/lib/utf8/lib" + test -d $cf_subdir_prefix/utf8/lib && cf_search="$cf_search $cf_subdir_prefix/utf8/lib" + test -d $cf_subdir_prefix/utf8/lib/utf8 && cf_search="$cf_search $cf_subdir_prefix/utf8/lib/utf8" +} + +done + +cf_search="$cf_library_path_list $cf_search" + + for cf_cv_library_path_utf8 in $cf_search + do + if test -d $cf_cv_library_path_utf8 ; then + test -n "$verbose" && echo " ... testing $cf_cv_library_path_utf8" 1>&6 + +echo "${as_me:-configure}:13517: testing ... testing $cf_cv_library_path_utf8 ..." 1>&5 + + CPPFLAGS="$cf_test_CPPFLAGS" + LIBS="-lutf8 $cf_save_LIBS" + LDFLAGS="$cf_save_LDFLAGS -L$cf_cv_library_path_utf8" + cat >conftest.$ac_ext <<_ACEOF +#line 13523 "configure" +#include "confdefs.h" + +#include +int +main (void) +{ +putwc(0,0); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:13536: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:13539: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:13542: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:13545: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + + test -n "$verbose" && echo " ... found utf8 library in $cf_cv_library_path_utf8" 1>&6 + +echo "${as_me:-configure}:13550: testing ... found utf8 library in $cf_cv_library_path_utf8 ..." 1>&5 + + cf_cv_find_linkage_utf8=yes + cf_cv_library_file_utf8="-lutf8" + break +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 + + CPPFLAGS="$cf_save_CPPFLAGS" + LIBS="$cf_save_LIBS" + LDFLAGS="$cf_save_LDFLAGS" + +fi +rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext + fi + done + CPPFLAGS="$cf_save_CPPFLAGS" + LDFLAGS="$cf_save_LDFLAGS" + fi + + else + cf_cv_find_linkage_utf8=no + fi + +fi +rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext + +fi +rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext + +LIBS="$cf_save_LIBS" + +if test "$cf_cv_find_linkage_utf8" = yes ; then +cf_cv_utf8_lib=add-on +else +cf_cv_utf8_lib=no +fi + +fi +rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext +fi +echo "$as_me:13592: result: $cf_cv_utf8_lib" >&5 +echo "${ECHO_T}$cf_cv_utf8_lib" >&6 + +# HAVE_LIBUTF8_H is used by ncurses if curses.h is shared between +# ncurses/ncursesw: +if test "$cf_cv_utf8_lib" = "add-on" ; then + +cat >>confdefs.h <<\EOF +#define HAVE_LIBUTF8_H 1 +EOF + +if test -n "$cf_cv_header_path_utf8" ; then + for cf_add_incdir in $cf_cv_header_path_utf8 + do + while test $cf_add_incdir != /usr/include + do + if test -d $cf_add_incdir + then + cf_have_incdir=no + if test -n "$CFLAGS$CPPFLAGS" ; then + # a loop is needed to ensure we can add subdirs of existing dirs + for cf_test_incdir in $CFLAGS $CPPFLAGS ; do + if test ".$cf_test_incdir" = ".-I$cf_add_incdir" ; then + cf_have_incdir=yes; break + fi + done + fi + + if test "$cf_have_incdir" = no ; then + if test "$cf_add_incdir" = /usr/local/include ; then + if test "$GCC" = yes + then + cf_save_CPPFLAGS=$CPPFLAGS + + test -n "$CPPFLAGS" && CPPFLAGS="$CPPFLAGS " + CPPFLAGS="${CPPFLAGS}-I$cf_add_incdir" + + cat >conftest.$ac_ext <<_ACEOF +#line 13630 "configure" +#include "confdefs.h" +#include +int +main (void) +{ +printf("Hello") + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:13642: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:13645: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:13648: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:13651: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + : +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +cf_have_incdir=yes +fi +rm -f conftest.$ac_objext conftest.$ac_ext + CPPFLAGS=$cf_save_CPPFLAGS + fi + fi + fi + + if test "$cf_have_incdir" = no ; then + test -n "$verbose" && echo " adding $cf_add_incdir to include-path" 1>&6 + +echo "${as_me:-configure}:13668: testing adding $cf_add_incdir to include-path ..." 1>&5 + + CPPFLAGS="$CPPFLAGS -I$cf_add_incdir" + + cf_top_incdir=`echo $cf_add_incdir | sed -e 's%/include/.*$%/include%'` + test "$cf_top_incdir" = "$cf_add_incdir" && break + cf_add_incdir="$cf_top_incdir" + else + break + fi + else + break + fi + done + done +fi + +if test -n "$cf_cv_library_path_utf8" ; then + for cf_add_libdir in $cf_cv_library_path_utf8 + do + if test $cf_add_libdir = /usr/lib ; then + : + elif test -d $cf_add_libdir + then + cf_have_libdir=no + if test -n "$LDFLAGS$LIBS" ; then + # a loop is needed to ensure we can add subdirs of existing dirs + for cf_test_libdir in $LDFLAGS $LIBS ; do + if test ".$cf_test_libdir" = ".-L$cf_add_libdir" ; then + cf_have_libdir=yes; break + fi + done + fi + if test "$cf_have_libdir" = no ; then + test -n "$verbose" && echo " adding $cf_add_libdir to library-path" 1>&6 + +echo "${as_me:-configure}:13704: testing adding $cf_add_libdir to library-path ..." 1>&5 + + LDFLAGS="-L$cf_add_libdir $LDFLAGS" + fi + fi + done +fi + +cf_add_libs="$cf_cv_library_file_utf8" +# Filter out duplicates - this happens with badly-designed ".pc" files... +for cf_add_1lib in $LIBS +do + for cf_add_2lib in $cf_add_libs + do + if test "x$cf_add_1lib" = "x$cf_add_2lib" + then + cf_add_1lib= + break + fi + done + test -n "$cf_add_1lib" && cf_add_libs="$cf_add_libs $cf_add_1lib" +done +LIBS="$cf_add_libs" + +fi + +cf_ncuconfig_root=$cf_cv_screen +cf_have_ncuconfig=no + +if test "x${PKG_CONFIG:=none}" != xnone; then + echo "$as_me:13734: checking pkg-config for $cf_ncuconfig_root" >&5 +echo $ECHO_N "checking pkg-config for $cf_ncuconfig_root... $ECHO_C" >&6 + if "$PKG_CONFIG" --exists $cf_ncuconfig_root ; then + echo "$as_me:13737: result: yes" >&5 +echo "${ECHO_T}yes" >&6 + + echo "$as_me:13740: checking if the $cf_ncuconfig_root package files work" >&5 +echo $ECHO_N "checking if the $cf_ncuconfig_root package files work... $ECHO_C" >&6 + cf_have_ncuconfig=unknown + + cf_save_CPPFLAGS="$CPPFLAGS" + cf_save_LIBS="$LIBS" + +cf_fix_cppflags=no +cf_new_cflags= +cf_new_cppflags= +cf_new_extra_cppflags= + +for cf_add_cflags in `$PKG_CONFIG --cflags $cf_ncuconfig_root` +do +case $cf_fix_cppflags in +(no) + case $cf_add_cflags in + (-undef|-nostdinc*|-I*|-D*|-U*|-E|-P|-C) + case $cf_add_cflags in + (-D*) + cf_tst_cflags=`echo ${cf_add_cflags} |sed -e 's/^-D[^=]*='\''\"[^"]*//'` + + test "x${cf_add_cflags}" != "x${cf_tst_cflags}" \ + && test -z "${cf_tst_cflags}" \ + && cf_fix_cppflags=yes + + if test $cf_fix_cppflags = yes ; then + + test -n "$cf_new_extra_cppflags" && cf_new_extra_cppflags="$cf_new_extra_cppflags " + cf_new_extra_cppflags="${cf_new_extra_cppflags}$cf_add_cflags" + + continue + elif test "${cf_tst_cflags}" = "\"'" ; then + + test -n "$cf_new_extra_cppflags" && cf_new_extra_cppflags="$cf_new_extra_cppflags " + cf_new_extra_cppflags="${cf_new_extra_cppflags}$cf_add_cflags" + + continue + fi + ;; + esac + case "$CPPFLAGS" in + (*$cf_add_cflags) + ;; + (*) + case $cf_add_cflags in + (-D*) + cf_tst_cppflags=`echo "x$cf_add_cflags" | sed -e 's/^...//' -e 's/=.*//'` + +CPPFLAGS=`echo "$CPPFLAGS" | \ + sed -e 's/-[UD]'"$cf_tst_cppflags"'\(=[^ ]*\)\?[ ]/ /g' \ + -e 's/-[UD]'"$cf_tst_cppflags"'\(=[^ ]*\)\?$//g'` + + ;; + esac + + test -n "$cf_new_cppflags" && cf_new_cppflags="$cf_new_cppflags " + cf_new_cppflags="${cf_new_cppflags}$cf_add_cflags" + + ;; + esac + ;; + (*) + + test -n "$cf_new_cflags" && cf_new_cflags="$cf_new_cflags " + cf_new_cflags="${cf_new_cflags}$cf_add_cflags" + + ;; + esac + ;; +(yes) + + test -n "$cf_new_extra_cppflags" && cf_new_extra_cppflags="$cf_new_extra_cppflags " + cf_new_extra_cppflags="${cf_new_extra_cppflags}$cf_add_cflags" + + cf_tst_cflags=`echo ${cf_add_cflags} |sed -e 's/^[^"]*"'\''//'` + + test "x${cf_add_cflags}" != "x${cf_tst_cflags}" \ + && test -z "${cf_tst_cflags}" \ + && cf_fix_cppflags=no + ;; +esac +done + +if test -n "$cf_new_cflags" ; then + + test -n "$CFLAGS" && CFLAGS="$CFLAGS " + CFLAGS="${CFLAGS}$cf_new_cflags" + +fi + +if test -n "$cf_new_cppflags" ; then + + test -n "$CPPFLAGS" && CPPFLAGS="$CPPFLAGS " + CPPFLAGS="${CPPFLAGS}$cf_new_cppflags" + +fi + +if test -n "$cf_new_extra_cppflags" ; then + + test -n "$EXTRA_CPPFLAGS" && EXTRA_CPPFLAGS="$EXTRA_CPPFLAGS " + EXTRA_CPPFLAGS="${EXTRA_CPPFLAGS}$cf_new_extra_cppflags" + +fi + +cf_add_libs="`$PKG_CONFIG --libs $cf_ncuconfig_root`" +# Filter out duplicates - this happens with badly-designed ".pc" files... +for cf_add_1lib in $LIBS +do + for cf_add_2lib in $cf_add_libs + do + if test "x$cf_add_1lib" = "x$cf_add_2lib" + then + cf_add_1lib= + break + fi + done + test -n "$cf_add_1lib" && cf_add_libs="$cf_add_libs $cf_add_1lib" +done +LIBS="$cf_add_libs" + + cat >conftest.$ac_ext <<_ACEOF +#line 13862 "configure" +#include "confdefs.h" +#include <${cf_cv_ncurses_header:-curses.h}> +int +main (void) +{ +initscr(); mousemask(0,0); tgoto((char *)0, 0, 0); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:13874: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:13877: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:13880: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:13883: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + if test "$cross_compiling" = yes; then + cf_have_ncuconfig=maybe +else + cat >conftest.$ac_ext <<_ACEOF +#line 13889 "configure" +#include "confdefs.h" +#include <${cf_cv_ncurses_header:-curses.h}> + int main(void) + { char *xx = curses_version(); return (xx == 0); } +_ACEOF +rm -f conftest$ac_exeext +if { (eval echo "$as_me:13896: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:13899: \$? = $ac_status" >&5 + (exit $ac_status); } && { ac_try='./conftest$ac_exeext' + { (eval echo "$as_me:13901: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:13904: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + cf_have_ncuconfig=yes +else + echo "$as_me: program exited with status $ac_status" >&5 +echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +cf_have_ncuconfig=no +fi +rm -f core core.* *.core conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext +fi +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +cf_have_ncuconfig=no +fi +rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext + echo "$as_me:13921: result: $cf_have_ncuconfig" >&5 +echo "${ECHO_T}$cf_have_ncuconfig" >&6 + test "$cf_have_ncuconfig" = maybe && cf_have_ncuconfig=yes + if test "$cf_have_ncuconfig" != "yes" + then + CPPFLAGS="$cf_save_CPPFLAGS" + LIBS="$cf_save_LIBS" + NCURSES_CONFIG_PKG=none + else + +cat >>confdefs.h <<\EOF +#define NCURSES 1 +EOF + + NCURSES_CONFIG_PKG=$cf_ncuconfig_root + +echo "$as_me:13937: checking for terminfo header" >&5 +echo $ECHO_N "checking for terminfo header... $ECHO_C" >&6 +if test "${cf_cv_term_header+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + +case ${cf_cv_ncurses_header} in +(*/ncurses.h|*/ncursesw.h) + cf_term_header=`echo "$cf_cv_ncurses_header" | sed -e 's%ncurses[^.]*\.h$%term.h%'` + ;; +(*) + cf_term_header=term.h + ;; +esac + +for cf_test in $cf_term_header "ncurses/term.h" "ncursesw/term.h" +do +cat >conftest.$ac_ext <<_ACEOF +#line 13955 "configure" +#include "confdefs.h" +#include +#include <${cf_cv_ncurses_header:-curses.h}> +#include <$cf_test> + +int +main (void) +{ +int x = auto_left_margin + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:13970: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:13973: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:13976: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:13979: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + + cf_cv_term_header="$cf_test" +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 + + cf_cv_term_header=unknown + +fi +rm -f conftest.$ac_objext conftest.$ac_ext + test "$cf_cv_term_header" != unknown && break +done + +fi +echo "$as_me:13995: result: $cf_cv_term_header" >&5 +echo "${ECHO_T}$cf_cv_term_header" >&6 + +# Set definitions to allow ifdef'ing to accommodate subdirectories + +case $cf_cv_term_header in +(*term.h) + +cat >>confdefs.h <<\EOF +#define HAVE_TERM_H 1 +EOF + + ;; +esac + +case $cf_cv_term_header in +(ncurses/term.h) + +cat >>confdefs.h <<\EOF +#define HAVE_NCURSES_TERM_H 1 +EOF + + ;; +(ncursesw/term.h) + +cat >>confdefs.h <<\EOF +#define HAVE_NCURSESW_TERM_H 1 +EOF + + ;; +esac + + fi + + else + echo "$as_me:14030: result: no" >&5 +echo "${ECHO_T}no" >&6 + NCURSES_CONFIG_PKG=none + fi +else + NCURSES_CONFIG_PKG=none +fi + +if test "x$cf_have_ncuconfig" = "xno"; then + cf_ncurses_config="${cf_ncuconfig_root}${NCURSES_CONFIG_SUFFIX}-config"; echo "Looking for ${cf_ncurses_config}" + +if test -n "$ac_tool_prefix"; then + for ac_prog in ${cf_ncurses_config} ${cf_ncuconfig_root}6-config ${cf_ncuconfig_root}6-config ${cf_ncuconfig_root}5-config + do + # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. +set dummy $ac_tool_prefix$ac_prog; ac_word=$2 +echo "$as_me:14046: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_NCURSES_CONFIG+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$NCURSES_CONFIG"; then + ac_cv_prog_NCURSES_CONFIG="$NCURSES_CONFIG" # Let the user override the test. +else + ac_save_IFS=$IFS; IFS=$ac_path_separator +ac_dummy="$PATH" +for ac_dir in $ac_dummy; do + IFS=$ac_save_IFS + test -z "$ac_dir" && ac_dir=. + $as_executable_p "$ac_dir/$ac_word" || continue +ac_cv_prog_NCURSES_CONFIG="$ac_tool_prefix$ac_prog" +echo "$as_me:14061: found $ac_dir/$ac_word" >&5 +break +done + +fi +fi +NCURSES_CONFIG=$ac_cv_prog_NCURSES_CONFIG +if test -n "$NCURSES_CONFIG"; then + echo "$as_me:14069: result: $NCURSES_CONFIG" >&5 +echo "${ECHO_T}$NCURSES_CONFIG" >&6 +else + echo "$as_me:14072: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + test -n "$NCURSES_CONFIG" && break + done +fi +if test -z "$NCURSES_CONFIG"; then + ac_ct_NCURSES_CONFIG=$NCURSES_CONFIG + for ac_prog in ${cf_ncurses_config} ${cf_ncuconfig_root}6-config ${cf_ncuconfig_root}6-config ${cf_ncuconfig_root}5-config +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +echo "$as_me:14085: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_ac_ct_NCURSES_CONFIG+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$ac_ct_NCURSES_CONFIG"; then + ac_cv_prog_ac_ct_NCURSES_CONFIG="$ac_ct_NCURSES_CONFIG" # Let the user override the test. +else + ac_save_IFS=$IFS; IFS=$ac_path_separator +ac_dummy="$PATH" +for ac_dir in $ac_dummy; do + IFS=$ac_save_IFS + test -z "$ac_dir" && ac_dir=. + $as_executable_p "$ac_dir/$ac_word" || continue +ac_cv_prog_ac_ct_NCURSES_CONFIG="$ac_prog" +echo "$as_me:14100: found $ac_dir/$ac_word" >&5 +break +done + +fi +fi +ac_ct_NCURSES_CONFIG=$ac_cv_prog_ac_ct_NCURSES_CONFIG +if test -n "$ac_ct_NCURSES_CONFIG"; then + echo "$as_me:14108: result: $ac_ct_NCURSES_CONFIG" >&5 +echo "${ECHO_T}$ac_ct_NCURSES_CONFIG" >&6 +else + echo "$as_me:14111: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + test -n "$ac_ct_NCURSES_CONFIG" && break +done +test -n "$ac_ct_NCURSES_CONFIG" || ac_ct_NCURSES_CONFIG="none" + + NCURSES_CONFIG=$ac_ct_NCURSES_CONFIG +fi + + if test "$NCURSES_CONFIG" != none ; then + +cf_fix_cppflags=no +cf_new_cflags= +cf_new_cppflags= +cf_new_extra_cppflags= + +for cf_add_cflags in `$NCURSES_CONFIG --cflags` +do +case $cf_fix_cppflags in +(no) + case $cf_add_cflags in + (-undef|-nostdinc*|-I*|-D*|-U*|-E|-P|-C) + case $cf_add_cflags in + (-D*) + cf_tst_cflags=`echo ${cf_add_cflags} |sed -e 's/^-D[^=]*='\''\"[^"]*//'` + + test "x${cf_add_cflags}" != "x${cf_tst_cflags}" \ + && test -z "${cf_tst_cflags}" \ + && cf_fix_cppflags=yes + + if test $cf_fix_cppflags = yes ; then + + test -n "$cf_new_extra_cppflags" && cf_new_extra_cppflags="$cf_new_extra_cppflags " + cf_new_extra_cppflags="${cf_new_extra_cppflags}$cf_add_cflags" + + continue + elif test "${cf_tst_cflags}" = "\"'" ; then + + test -n "$cf_new_extra_cppflags" && cf_new_extra_cppflags="$cf_new_extra_cppflags " + cf_new_extra_cppflags="${cf_new_extra_cppflags}$cf_add_cflags" + + continue + fi + ;; + esac + case "$CPPFLAGS" in + (*$cf_add_cflags) + ;; + (*) + case $cf_add_cflags in + (-D*) + cf_tst_cppflags=`echo "x$cf_add_cflags" | sed -e 's/^...//' -e 's/=.*//'` + +CPPFLAGS=`echo "$CPPFLAGS" | \ + sed -e 's/-[UD]'"$cf_tst_cppflags"'\(=[^ ]*\)\?[ ]/ /g' \ + -e 's/-[UD]'"$cf_tst_cppflags"'\(=[^ ]*\)\?$//g'` + + ;; + esac + + test -n "$cf_new_cppflags" && cf_new_cppflags="$cf_new_cppflags " + cf_new_cppflags="${cf_new_cppflags}$cf_add_cflags" + + ;; + esac + ;; + (*) + + test -n "$cf_new_cflags" && cf_new_cflags="$cf_new_cflags " + cf_new_cflags="${cf_new_cflags}$cf_add_cflags" + + ;; + esac + ;; +(yes) + + test -n "$cf_new_extra_cppflags" && cf_new_extra_cppflags="$cf_new_extra_cppflags " + cf_new_extra_cppflags="${cf_new_extra_cppflags}$cf_add_cflags" + + cf_tst_cflags=`echo ${cf_add_cflags} |sed -e 's/^[^"]*"'\''//'` + + test "x${cf_add_cflags}" != "x${cf_tst_cflags}" \ + && test -z "${cf_tst_cflags}" \ + && cf_fix_cppflags=no + ;; +esac +done + +if test -n "$cf_new_cflags" ; then + + test -n "$CFLAGS" && CFLAGS="$CFLAGS " + CFLAGS="${CFLAGS}$cf_new_cflags" + +fi + +if test -n "$cf_new_cppflags" ; then + + test -n "$CPPFLAGS" && CPPFLAGS="$CPPFLAGS " + CPPFLAGS="${CPPFLAGS}$cf_new_cppflags" + +fi + +if test -n "$cf_new_extra_cppflags" ; then + + test -n "$EXTRA_CPPFLAGS" && EXTRA_CPPFLAGS="$EXTRA_CPPFLAGS " + EXTRA_CPPFLAGS="${EXTRA_CPPFLAGS}$cf_new_extra_cppflags" + +fi + +cf_add_libs="`$NCURSES_CONFIG --libs`" +# Filter out duplicates - this happens with badly-designed ".pc" files... +for cf_add_1lib in $LIBS +do + for cf_add_2lib in $cf_add_libs + do + if test "x$cf_add_1lib" = "x$cf_add_2lib" + then + cf_add_1lib= + break + fi + done + test -n "$cf_add_1lib" && cf_add_libs="$cf_add_libs $cf_add_1lib" +done +LIBS="$cf_add_libs" + + # even with config script, some packages use no-override for curses.h + +echo "$as_me:14240: checking if we have identified curses headers" >&5 +echo $ECHO_N "checking if we have identified curses headers... $ECHO_C" >&6 +if test "${cf_cv_ncurses_header+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + +cf_cv_ncurses_header=none +for cf_header in \ + ncurses.h $cf_cv_screen/ncurses.h \ + curses.h $cf_cv_screen/curses.h +do +cat >conftest.$ac_ext <<_ACEOF +#line 14252 "configure" +#include "confdefs.h" +#include <${cf_header}> +int +main (void) +{ +initscr(); tgoto("?", 0,0) + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:14264: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:14267: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:14270: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:14273: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + cf_cv_ncurses_header=$cf_header; break +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +fi +rm -f conftest.$ac_objext conftest.$ac_ext +done + +fi +echo "$as_me:14284: result: $cf_cv_ncurses_header" >&5 +echo "${ECHO_T}$cf_cv_ncurses_header" >&6 + +if test "$cf_cv_ncurses_header" = none ; then + { { echo "$as_me:14288: error: No curses header-files found" >&5 +echo "$as_me: error: No curses header-files found" >&2;} + { (exit 1); exit 1; }; } +fi + +# cheat, to get the right #define's for HAVE_NCURSES_H, etc. + +for ac_header in $cf_cv_ncurses_header +do +as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` +echo "$as_me:14298: checking for $ac_header" >&5 +echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 +if eval "test \"\${$as_ac_Header+set}\" = set"; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +#line 14304 "configure" +#include "confdefs.h" +#include <$ac_header> +_ACEOF +if { (eval echo "$as_me:14308: \"$ac_cpp conftest.$ac_ext\"") >&5 + (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 + ac_status=$? + egrep -v '^ *\+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:14314: \$? = $ac_status" >&5 + (exit $ac_status); } >/dev/null; then + if test -s conftest.err; then + ac_cpp_err=$ac_c_preproc_warn_flag + else + ac_cpp_err= + fi +else + ac_cpp_err=yes +fi +if test -z "$ac_cpp_err"; then + eval "$as_ac_Header=yes" +else + echo "$as_me: failed program was:" >&5 + cat conftest.$ac_ext >&5 + eval "$as_ac_Header=no" +fi +rm -f conftest.err conftest.$ac_ext +fi +echo "$as_me:14333: result: `eval echo '${'$as_ac_Header'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 +if test `eval echo '${'$as_ac_Header'}'` = yes; then + cat >>confdefs.h <>confdefs.h <<\EOF +#define NCURSES 1 +EOF + +cf_nculib_ROOT=`echo "HAVE_LIB$cf_ncuconfig_root" | sed y%abcdefghijklmnopqrstuvwxyz./-%ABCDEFGHIJKLMNOPQRSTUVWXYZ___%` + + cat >>confdefs.h <conftest.$ac_ext <<_ACEOF +#line 14389 "configure" +#include "confdefs.h" +#include +int +main (void) +{ +printf("Hello") + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:14401: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:14404: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:14407: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:14410: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + : +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +cf_have_incdir=yes +fi +rm -f conftest.$ac_objext conftest.$ac_ext + CPPFLAGS=$cf_save_CPPFLAGS + fi + fi + fi + + if test "$cf_have_incdir" = no ; then + test -n "$verbose" && echo " adding $cf_add_incdir to include-path" 1>&6 + +echo "${as_me:-configure}:14427: testing adding $cf_add_incdir to include-path ..." 1>&5 + + CPPFLAGS="$CPPFLAGS -I$cf_add_incdir" + + cf_top_incdir=`echo $cf_add_incdir | sed -e 's%/include/.*$%/include%'` + test "$cf_top_incdir" = "$cf_add_incdir" && break + cf_add_incdir="$cf_top_incdir" + else + break + fi + else + break + fi + done + done +fi + +} + +echo "$as_me:14446: checking for $cf_ncuhdr_root header in include-path" >&5 +echo $ECHO_N "checking for $cf_ncuhdr_root header in include-path... $ECHO_C" >&6 +if test "${cf_cv_ncurses_h+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + + cf_header_list="$cf_ncuhdr_root/curses.h $cf_ncuhdr_root/ncurses.h" + ( test "$cf_ncuhdr_root" = ncurses || test "$cf_ncuhdr_root" = ncursesw ) && cf_header_list="$cf_header_list curses.h ncurses.h" + for cf_header in $cf_header_list + do + + cat >conftest.$ac_ext <<_ACEOF +#line 14458 "configure" +#include "confdefs.h" + +#include <$cf_header> +int +main (void) +{ + +#ifdef NCURSES_VERSION + +printf("%s\n", NCURSES_VERSION); +#else +#ifdef __NCURSES_H +printf("old\n"); +#else + make an error +#endif +#endif + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:14482: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:14485: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:14488: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:14491: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + cf_cv_ncurses_h=$cf_header + +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +cf_cv_ncurses_h=no +fi +rm -f conftest.$ac_objext conftest.$ac_ext + + test "$cf_cv_ncurses_h" != no && break + done + +fi +echo "$as_me:14506: result: $cf_cv_ncurses_h" >&5 +echo "${ECHO_T}$cf_cv_ncurses_h" >&6 + +if test "$cf_cv_ncurses_h" != no ; then + cf_cv_ncurses_header=$cf_cv_ncurses_h +else + +echo "$as_me:14513: checking for $cf_ncuhdr_root include-path" >&5 +echo $ECHO_N "checking for $cf_ncuhdr_root include-path... $ECHO_C" >&6 +if test "${cf_cv_ncurses_h2+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + + test -n "$verbose" && echo + +cf_search= + +# collect the current set of include-directories from compiler flags +cf_header_path_list="" +if test -n "${CFLAGS}${CPPFLAGS}" ; then + for cf_header_path in $CPPFLAGS $CFLAGS + do + case $cf_header_path in + (-I*) + cf_header_path=`echo ".$cf_header_path" |sed -e 's/^...//' -e 's,/include$,,'` + +test "x$cf_header_path" != "xNONE" && \ +test -d "$cf_header_path" && \ + { + test -n "$verbose" && echo " ... testing for include-directories under $cf_header_path" + test -d $cf_header_path/include && cf_search="$cf_search $cf_header_path/include" + test -d $cf_header_path/include/$cf_ncuhdr_root && cf_search="$cf_search $cf_header_path/include/$cf_ncuhdr_root" + test -d $cf_header_path/include/$cf_ncuhdr_root/include && cf_search="$cf_search $cf_header_path/include/$cf_ncuhdr_root/include" + test -d $cf_header_path/$cf_ncuhdr_root/include && cf_search="$cf_search $cf_header_path/$cf_ncuhdr_root/include" + test -d $cf_header_path/$cf_ncuhdr_root/include/$cf_ncuhdr_root && cf_search="$cf_search $cf_header_path/$cf_ncuhdr_root/include/$cf_ncuhdr_root" +} + + cf_header_path_list="$cf_header_path_list $cf_search" + ;; + esac + done +fi + +# add the variations for the package we are looking for + +cf_search= + +test "x$prefix" != "xNONE" && \ +test -d "$prefix" && \ + { + test -n "$verbose" && echo " ... testing for include-directories under $prefix" + test -d $prefix/include && cf_search="$cf_search $prefix/include" + test -d $prefix/include/$cf_ncuhdr_root && cf_search="$cf_search $prefix/include/$cf_ncuhdr_root" + test -d $prefix/include/$cf_ncuhdr_root/include && cf_search="$cf_search $prefix/include/$cf_ncuhdr_root/include" + test -d $prefix/$cf_ncuhdr_root/include && cf_search="$cf_search $prefix/$cf_ncuhdr_root/include" + test -d $prefix/$cf_ncuhdr_root/include/$cf_ncuhdr_root && cf_search="$cf_search $prefix/$cf_ncuhdr_root/include/$cf_ncuhdr_root" +} + +for cf_subdir_prefix in \ + /usr \ + /usr/local \ + /usr/pkg \ + /opt \ + /opt/local \ + $HOME +do + +test "x$cf_subdir_prefix" != "x$prefix" && \ +test -d "$cf_subdir_prefix" && \ +(test -z "$prefix" || test x$prefix = xNONE || test "x$cf_subdir_prefix" != "x$prefix") && { + test -n "$verbose" && echo " ... testing for include-directories under $cf_subdir_prefix" + test -d $cf_subdir_prefix/include && cf_search="$cf_search $cf_subdir_prefix/include" + test -d $cf_subdir_prefix/include/$cf_ncuhdr_root && cf_search="$cf_search $cf_subdir_prefix/include/$cf_ncuhdr_root" + test -d $cf_subdir_prefix/include/$cf_ncuhdr_root/include && cf_search="$cf_search $cf_subdir_prefix/include/$cf_ncuhdr_root/include" + test -d $cf_subdir_prefix/$cf_ncuhdr_root/include && cf_search="$cf_search $cf_subdir_prefix/$cf_ncuhdr_root/include" + test -d $cf_subdir_prefix/$cf_ncuhdr_root/include/$cf_ncuhdr_root && cf_search="$cf_search $cf_subdir_prefix/$cf_ncuhdr_root/include/$cf_ncuhdr_root" +} + +done + +test "$includedir" != NONE && \ +test "$includedir" != "/usr/include" && \ +test -d "$includedir" && { + test -d $includedir && cf_search="$cf_search $includedir" + test -d $includedir/$cf_ncuhdr_root && cf_search="$cf_search $includedir/$cf_ncuhdr_root" +} + +test "$oldincludedir" != NONE && \ +test "$oldincludedir" != "/usr/include" && \ +test -d "$oldincludedir" && { + test -d $oldincludedir && cf_search="$cf_search $oldincludedir" + test -d $oldincludedir/$cf_ncuhdr_root && cf_search="$cf_search $oldincludedir/$cf_ncuhdr_root" +} + +cf_search="$cf_search $cf_header_path_list" + + test -n "$verbose" && echo search path $cf_search + cf_save2_CPPFLAGS="$CPPFLAGS" + for cf_incdir in $cf_search + do + +if test -n "$cf_incdir" ; then + for cf_add_incdir in $cf_incdir + do + while test $cf_add_incdir != /usr/include + do + if test -d $cf_add_incdir + then + cf_have_incdir=no + if test -n "$CFLAGS$CPPFLAGS" ; then + # a loop is needed to ensure we can add subdirs of existing dirs + for cf_test_incdir in $CFLAGS $CPPFLAGS ; do + if test ".$cf_test_incdir" = ".-I$cf_add_incdir" ; then + cf_have_incdir=yes; break + fi + done + fi + + if test "$cf_have_incdir" = no ; then + if test "$cf_add_incdir" = /usr/local/include ; then + if test "$GCC" = yes + then + cf_save_CPPFLAGS=$CPPFLAGS + + test -n "$CPPFLAGS" && CPPFLAGS="$CPPFLAGS " + CPPFLAGS="${CPPFLAGS}-I$cf_add_incdir" + + cat >conftest.$ac_ext <<_ACEOF +#line 14634 "configure" +#include "confdefs.h" +#include +int +main (void) +{ +printf("Hello") + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:14646: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:14649: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:14652: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:14655: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + : +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +cf_have_incdir=yes +fi +rm -f conftest.$ac_objext conftest.$ac_ext + CPPFLAGS=$cf_save_CPPFLAGS + fi + fi + fi + + if test "$cf_have_incdir" = no ; then + test -n "$verbose" && echo " adding $cf_add_incdir to include-path" 1>&6 + +echo "${as_me:-configure}:14672: testing adding $cf_add_incdir to include-path ..." 1>&5 + + CPPFLAGS="$CPPFLAGS -I$cf_add_incdir" + + cf_top_incdir=`echo $cf_add_incdir | sed -e 's%/include/.*$%/include%'` + test "$cf_top_incdir" = "$cf_add_incdir" && break + cf_add_incdir="$cf_top_incdir" + else + break + fi + else + break + fi + done + done +fi + + for cf_header in \ + ncurses.h \ + curses.h + do + + cat >conftest.$ac_ext <<_ACEOF +#line 14695 "configure" +#include "confdefs.h" + +#include <$cf_header> +int +main (void) +{ + +#ifdef NCURSES_VERSION + +printf("%s\n", NCURSES_VERSION); +#else +#ifdef __NCURSES_H +printf("old\n"); +#else + make an error +#endif +#endif + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:14719: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:14722: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:14725: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:14728: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + cf_cv_ncurses_h2=$cf_header + +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +cf_cv_ncurses_h2=no +fi +rm -f conftest.$ac_objext conftest.$ac_ext + + if test "$cf_cv_ncurses_h2" != no ; then + cf_cv_ncurses_h2=$cf_incdir/$cf_header + test -n "$verbose" && echo $ac_n " ... found $ac_c" 1>&6 + break + fi + test -n "$verbose" && echo " ... tested $cf_incdir/$cf_header" 1>&6 + done + CPPFLAGS="$cf_save2_CPPFLAGS" + test "$cf_cv_ncurses_h2" != no && break + done + test "$cf_cv_ncurses_h2" = no && { { echo "$as_me:14749: error: not found" >&5 +echo "$as_me: error: not found" >&2;} + { (exit 1); exit 1; }; } + +fi +echo "$as_me:14754: result: $cf_cv_ncurses_h2" >&5 +echo "${ECHO_T}$cf_cv_ncurses_h2" >&6 + + cf_1st_incdir=`echo $cf_cv_ncurses_h2 | sed -e 's%/[^/]*$%%'` + cf_cv_ncurses_header=`basename $cf_cv_ncurses_h2` + if test `basename $cf_1st_incdir` = $cf_ncuhdr_root ; then + cf_cv_ncurses_header=$cf_ncuhdr_root/$cf_cv_ncurses_header + fi + +if test -n "$cf_1st_incdir" ; then + for cf_add_incdir in $cf_1st_incdir + do + while test $cf_add_incdir != /usr/include + do + if test -d $cf_add_incdir + then + cf_have_incdir=no + if test -n "$CFLAGS$CPPFLAGS" ; then + # a loop is needed to ensure we can add subdirs of existing dirs + for cf_test_incdir in $CFLAGS $CPPFLAGS ; do + if test ".$cf_test_incdir" = ".-I$cf_add_incdir" ; then + cf_have_incdir=yes; break + fi + done + fi + + if test "$cf_have_incdir" = no ; then + if test "$cf_add_incdir" = /usr/local/include ; then + if test "$GCC" = yes + then + cf_save_CPPFLAGS=$CPPFLAGS + + test -n "$CPPFLAGS" && CPPFLAGS="$CPPFLAGS " + CPPFLAGS="${CPPFLAGS}-I$cf_add_incdir" + + cat >conftest.$ac_ext <<_ACEOF +#line 14790 "configure" +#include "confdefs.h" +#include +int +main (void) +{ +printf("Hello") + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:14802: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:14805: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:14808: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:14811: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + : +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +cf_have_incdir=yes +fi +rm -f conftest.$ac_objext conftest.$ac_ext + CPPFLAGS=$cf_save_CPPFLAGS + fi + fi + fi + + if test "$cf_have_incdir" = no ; then + test -n "$verbose" && echo " adding $cf_add_incdir to include-path" 1>&6 + +echo "${as_me:-configure}:14828: testing adding $cf_add_incdir to include-path ..." 1>&5 + + CPPFLAGS="$CPPFLAGS -I$cf_add_incdir" + + cf_top_incdir=`echo $cf_add_incdir | sed -e 's%/include/.*$%/include%'` + test "$cf_top_incdir" = "$cf_add_incdir" && break + cf_add_incdir="$cf_top_incdir" + else + break + fi + else + break + fi + done + done +fi + +fi + +# Set definitions to allow ifdef'ing for ncurses.h + +case $cf_cv_ncurses_header in +(*ncurses.h) + +cat >>confdefs.h <<\EOF +#define HAVE_NCURSES_H 1 +EOF + + ;; +esac + +case $cf_cv_ncurses_header in +(ncurses/curses.h|ncurses/ncurses.h) + +cat >>confdefs.h <<\EOF +#define HAVE_NCURSES_NCURSES_H 1 +EOF + + ;; +(ncursesw/curses.h|ncursesw/ncurses.h) + +cat >>confdefs.h <<\EOF +#define HAVE_NCURSESW_NCURSES_H 1 +EOF + + ;; +esac + +echo "$as_me:14876: checking for terminfo header" >&5 +echo $ECHO_N "checking for terminfo header... $ECHO_C" >&6 +if test "${cf_cv_term_header+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + +case ${cf_cv_ncurses_header} in +(*/ncurses.h|*/ncursesw.h) + cf_term_header=`echo "$cf_cv_ncurses_header" | sed -e 's%ncurses[^.]*\.h$%term.h%'` + ;; +(*) + cf_term_header=term.h + ;; +esac + +for cf_test in $cf_term_header "ncurses/term.h" "ncursesw/term.h" +do +cat >conftest.$ac_ext <<_ACEOF +#line 14894 "configure" +#include "confdefs.h" +#include +#include <${cf_cv_ncurses_header:-curses.h}> +#include <$cf_test> + +int +main (void) +{ +int x = auto_left_margin + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:14909: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:14912: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:14915: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:14918: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + + cf_cv_term_header="$cf_test" +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 + + cf_cv_term_header=unknown + +fi +rm -f conftest.$ac_objext conftest.$ac_ext + test "$cf_cv_term_header" != unknown && break +done + +fi +echo "$as_me:14934: result: $cf_cv_term_header" >&5 +echo "${ECHO_T}$cf_cv_term_header" >&6 + +# Set definitions to allow ifdef'ing to accommodate subdirectories + +case $cf_cv_term_header in +(*term.h) + +cat >>confdefs.h <<\EOF +#define HAVE_TERM_H 1 +EOF + + ;; +esac + +case $cf_cv_term_header in +(ncurses/term.h) + +cat >>confdefs.h <<\EOF +#define HAVE_NCURSES_TERM_H 1 +EOF + + ;; +(ncursesw/term.h) + +cat >>confdefs.h <<\EOF +#define HAVE_NCURSESW_TERM_H 1 +EOF + + ;; +esac + +# some applications need this, but should check for NCURSES_VERSION + +cat >>confdefs.h <<\EOF +#define NCURSES 1 +EOF + +echo "$as_me:14972: checking for ncurses version" >&5 +echo $ECHO_N "checking for ncurses version... $ECHO_C" >&6 +if test "${cf_cv_ncurses_version+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + + cf_cv_ncurses_version=no + cf_tempfile=out$$ + rm -f $cf_tempfile + if test "$cross_compiling" = yes; then + + # This will not work if the preprocessor splits the line after the + # Autoconf token. The 'unproto' program does that. + cat > conftest.$ac_ext < +#undef Autoconf +#ifdef NCURSES_VERSION +Autoconf NCURSES_VERSION +#else +#ifdef __NCURSES_H +Autoconf "old" +#endif +; +#endif +EOF + cf_try="$ac_cpp conftest.$ac_ext 2>&5 | grep '^Autoconf ' >conftest.out" + { (eval echo "$as_me:14998: \"$cf_try\"") >&5 + (eval $cf_try) 2>&5 + ac_status=$? + echo "$as_me:15001: \$? = $ac_status" >&5 + (exit $ac_status); } + if test -f conftest.out ; then + cf_out=`cat conftest.out | sed -e 's%^Autoconf %%' -e 's%^[^"]*"%%' -e 's%".*%%'` + test -n "$cf_out" && cf_cv_ncurses_version="$cf_out" + rm -f conftest.out + fi + +else + cat >conftest.$ac_ext <<_ACEOF +#line 15011 "configure" +#include "confdefs.h" + +#include <${cf_cv_ncurses_header:-curses.h}> +#include +int main(void) +{ + FILE *fp = fopen("$cf_tempfile", "w"); +#ifdef NCURSES_VERSION +# ifdef NCURSES_VERSION_PATCH + fprintf(fp, "%s.%d\n", NCURSES_VERSION, NCURSES_VERSION_PATCH); +# else + fprintf(fp, "%s\n", NCURSES_VERSION); +# endif +#else +# ifdef __NCURSES_H + fprintf(fp, "old\n"); +# else + make an error +# endif +#endif + ${cf_cv_main_return:-return}(0); +} +_ACEOF +rm -f conftest$ac_exeext +if { (eval echo "$as_me:15036: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:15039: \$? = $ac_status" >&5 + (exit $ac_status); } && { ac_try='./conftest$ac_exeext' + { (eval echo "$as_me:15041: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:15044: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + + cf_cv_ncurses_version=`cat $cf_tempfile` +else + echo "$as_me: program exited with status $ac_status" >&5 +echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +fi +rm -f core core.* *.core conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext +fi + rm -f $cf_tempfile + +fi +echo "$as_me:15058: result: $cf_cv_ncurses_version" >&5 +echo "${ECHO_T}$cf_cv_ncurses_version" >&6 +test "$cf_cv_ncurses_version" = no || +cat >>confdefs.h <<\EOF +#define NCURSES 1 +EOF + +cf_nculib_root=$cf_cv_screen + # This works, except for the special case where we find gpm, but + # ncurses is in a nonstandard location via $LIBS, and we really want + # to link gpm. +cf_ncurses_LIBS="" +cf_ncurses_SAVE="$LIBS" +echo "$as_me:15071: checking for Gpm_Open in -lgpm" >&5 +echo $ECHO_N "checking for Gpm_Open in -lgpm... $ECHO_C" >&6 +if test "${ac_cv_lib_gpm_Gpm_Open+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-lgpm $LIBS" +cat >conftest.$ac_ext <<_ACEOF +#line 15079 "configure" +#include "confdefs.h" + +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char Gpm_Open (); +int +main (void) +{ +Gpm_Open (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:15098: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:15101: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:15104: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:15107: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_lib_gpm_Gpm_Open=yes +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +ac_cv_lib_gpm_Gpm_Open=no +fi +rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +echo "$as_me:15118: result: $ac_cv_lib_gpm_Gpm_Open" >&5 +echo "${ECHO_T}$ac_cv_lib_gpm_Gpm_Open" >&6 +if test $ac_cv_lib_gpm_Gpm_Open = yes; then + echo "$as_me:15121: checking for initscr in -lgpm" >&5 +echo $ECHO_N "checking for initscr in -lgpm... $ECHO_C" >&6 +if test "${ac_cv_lib_gpm_initscr+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-lgpm $LIBS" +cat >conftest.$ac_ext <<_ACEOF +#line 15129 "configure" +#include "confdefs.h" + +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char initscr (); +int +main (void) +{ +initscr (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:15148: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:15151: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:15154: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:15157: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_lib_gpm_initscr=yes +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +ac_cv_lib_gpm_initscr=no +fi +rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +echo "$as_me:15168: result: $ac_cv_lib_gpm_initscr" >&5 +echo "${ECHO_T}$ac_cv_lib_gpm_initscr" >&6 +if test $ac_cv_lib_gpm_initscr = yes; then + LIBS="$cf_ncurses_SAVE" +else + cf_ncurses_LIBS="-lgpm" +fi + +fi + +case $host_os in +(freebsd*) + # This is only necessary if you are linking against an obsolete + # version of ncurses (but it should do no harm, since it's static). + if test "$cf_nculib_root" = ncurses ; then + echo "$as_me:15183: checking for tgoto in -lmytinfo" >&5 +echo $ECHO_N "checking for tgoto in -lmytinfo... $ECHO_C" >&6 +if test "${ac_cv_lib_mytinfo_tgoto+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-lmytinfo $LIBS" +cat >conftest.$ac_ext <<_ACEOF +#line 15191 "configure" +#include "confdefs.h" + +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char tgoto (); +int +main (void) +{ +tgoto (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:15210: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:15213: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:15216: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:15219: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_lib_mytinfo_tgoto=yes +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +ac_cv_lib_mytinfo_tgoto=no +fi +rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +echo "$as_me:15230: result: $ac_cv_lib_mytinfo_tgoto" >&5 +echo "${ECHO_T}$ac_cv_lib_mytinfo_tgoto" >&6 +if test $ac_cv_lib_mytinfo_tgoto = yes; then + cf_ncurses_LIBS="-lmytinfo $cf_ncurses_LIBS" +fi + + fi + ;; +esac + +cf_add_libs="$cf_ncurses_LIBS" +# Filter out duplicates - this happens with badly-designed ".pc" files... +for cf_add_1lib in $LIBS +do + for cf_add_2lib in $cf_add_libs + do + if test "x$cf_add_1lib" = "x$cf_add_2lib" + then + cf_add_1lib= + break + fi + done + test -n "$cf_add_1lib" && cf_add_libs="$cf_add_libs $cf_add_1lib" +done +LIBS="$cf_add_libs" + +if ( test -n "$cf_cv_curses_dir" && test "$cf_cv_curses_dir" != "no" ) +then + +cf_add_libs="-l$cf_nculib_root" +# Filter out duplicates - this happens with badly-designed ".pc" files... +for cf_add_1lib in $LIBS +do + for cf_add_2lib in $cf_add_libs + do + if test "x$cf_add_1lib" = "x$cf_add_2lib" + then + cf_add_1lib= + break + fi + done + test -n "$cf_add_1lib" && cf_add_libs="$cf_add_libs $cf_add_1lib" +done +LIBS="$cf_add_libs" + +else + + eval 'cf_cv_have_lib_'$cf_nculib_root'=no' + cf_libdir="" + echo "$as_me:15279: checking for initscr" >&5 +echo $ECHO_N "checking for initscr... $ECHO_C" >&6 +if test "${ac_cv_func_initscr+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +#line 15285 "configure" +#include "confdefs.h" +/* System header to define __stub macros and hopefully few prototypes, + which can conflict with char initscr (); below. */ +#include +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char initscr (); +char (*f) (); + +int +main (void) +{ +/* 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_initscr) || defined (__stub___initscr) +choke me +#else +f = initscr; /* workaround for ICC 12.0.3 */ if (f == 0) return 1; +#endif + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:15316: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:15319: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:15322: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:15325: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_func_initscr=yes +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +ac_cv_func_initscr=no +fi +rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext +fi +echo "$as_me:15335: result: $ac_cv_func_initscr" >&5 +echo "${ECHO_T}$ac_cv_func_initscr" >&6 +if test $ac_cv_func_initscr = yes; then + eval 'cf_cv_have_lib_'$cf_nculib_root'=yes' +else + + cf_save_LIBS="$LIBS" + echo "$as_me:15342: checking for initscr in -l$cf_nculib_root" >&5 +echo $ECHO_N "checking for initscr in -l$cf_nculib_root... $ECHO_C" >&6 + LIBS="-l$cf_nculib_root $LIBS" + cat >conftest.$ac_ext <<_ACEOF +#line 15346 "configure" +#include "confdefs.h" +#include <${cf_cv_ncurses_header:-curses.h}> +int +main (void) +{ +initscr() + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:15358: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:15361: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:15364: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:15367: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + echo "$as_me:15369: result: yes" >&5 +echo "${ECHO_T}yes" >&6 + eval 'cf_cv_have_lib_'$cf_nculib_root'=yes' + +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +echo "$as_me:15376: result: no" >&5 +echo "${ECHO_T}no" >&6 + +cf_search= +cf_library_path_list="" +if test -n "${LDFLAGS}${LIBS}" ; then + for cf_library_path in $LDFLAGS $LIBS + do + case $cf_library_path in + (-L*) + cf_library_path=`echo ".$cf_library_path" |sed -e 's/^...//' -e 's,/lib$,,'` + +test "x$cf_library_path" != "xNONE" && \ +test -d "$cf_library_path" && \ + { + test -n "$verbose" && echo " ... testing for lib-directories under $cf_library_path" + test -d $cf_library_path/lib && cf_search="$cf_search $cf_library_path/lib" + test -d $cf_library_path/lib/$cf_nculib_root && cf_search="$cf_search $cf_library_path/lib/$cf_nculib_root" + test -d $cf_library_path/lib/$cf_nculib_root/lib && cf_search="$cf_search $cf_library_path/lib/$cf_nculib_root/lib" + test -d $cf_library_path/$cf_nculib_root/lib && cf_search="$cf_search $cf_library_path/$cf_nculib_root/lib" + test -d $cf_library_path/$cf_nculib_root/lib/$cf_nculib_root && cf_search="$cf_search $cf_library_path/$cf_nculib_root/lib/$cf_nculib_root" +} + + cf_library_path_list="$cf_library_path_list $cf_search" + ;; + esac + done +fi + +cf_search= + +test "x$prefix" != "xNONE" && \ +test -d "$prefix" && \ + { + test -n "$verbose" && echo " ... testing for lib-directories under $prefix" + test -d $prefix/lib && cf_search="$cf_search $prefix/lib" + test -d $prefix/lib/$cf_nculib_root && cf_search="$cf_search $prefix/lib/$cf_nculib_root" + test -d $prefix/lib/$cf_nculib_root/lib && cf_search="$cf_search $prefix/lib/$cf_nculib_root/lib" + test -d $prefix/$cf_nculib_root/lib && cf_search="$cf_search $prefix/$cf_nculib_root/lib" + test -d $prefix/$cf_nculib_root/lib/$cf_nculib_root && cf_search="$cf_search $prefix/$cf_nculib_root/lib/$cf_nculib_root" +} + +for cf_subdir_prefix in \ + /usr \ + /usr/local \ + /usr/pkg \ + /opt \ + /opt/local \ + $HOME +do + +test "x$cf_subdir_prefix" != "x$prefix" && \ +test -d "$cf_subdir_prefix" && \ +(test -z "$prefix" || test x$prefix = xNONE || test "x$cf_subdir_prefix" != "x$prefix") && { + test -n "$verbose" && echo " ... testing for lib-directories under $cf_subdir_prefix" + test -d $cf_subdir_prefix/lib && cf_search="$cf_search $cf_subdir_prefix/lib" + test -d $cf_subdir_prefix/lib/$cf_nculib_root && cf_search="$cf_search $cf_subdir_prefix/lib/$cf_nculib_root" + test -d $cf_subdir_prefix/lib/$cf_nculib_root/lib && cf_search="$cf_search $cf_subdir_prefix/lib/$cf_nculib_root/lib" + test -d $cf_subdir_prefix/$cf_nculib_root/lib && cf_search="$cf_search $cf_subdir_prefix/$cf_nculib_root/lib" + test -d $cf_subdir_prefix/$cf_nculib_root/lib/$cf_nculib_root && cf_search="$cf_search $cf_subdir_prefix/$cf_nculib_root/lib/$cf_nculib_root" +} + +done + +cf_search="$cf_library_path_list $cf_search" + + for cf_libdir in $cf_search + do + echo "$as_me:15444: checking for -l$cf_nculib_root in $cf_libdir" >&5 +echo $ECHO_N "checking for -l$cf_nculib_root in $cf_libdir... $ECHO_C" >&6 + LIBS="-L$cf_libdir -l$cf_nculib_root $cf_save_LIBS" + cat >conftest.$ac_ext <<_ACEOF +#line 15448 "configure" +#include "confdefs.h" +#include <${cf_cv_ncurses_header:-curses.h}> +int +main (void) +{ +initscr() + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:15460: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:15463: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:15466: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:15469: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + echo "$as_me:15471: result: yes" >&5 +echo "${ECHO_T}yes" >&6 + eval 'cf_cv_have_lib_'$cf_nculib_root'=yes' + break +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +echo "$as_me:15478: result: no" >&5 +echo "${ECHO_T}no" >&6 + LIBS="$cf_save_LIBS" +fi +rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext + done + +fi +rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext + +fi + +eval 'cf_found_library=$cf_cv_have_lib_'$cf_nculib_root + +if test $cf_found_library = no ; then + { { echo "$as_me:15493: error: Cannot link $cf_nculib_root library" >&5 +echo "$as_me: error: Cannot link $cf_nculib_root library" >&2;} + { (exit 1); exit 1; }; } +fi + +fi + +if test -n "$cf_ncurses_LIBS" ; then + echo "$as_me:15501: checking if we can link $cf_nculib_root without $cf_ncurses_LIBS" >&5 +echo $ECHO_N "checking if we can link $cf_nculib_root without $cf_ncurses_LIBS... $ECHO_C" >&6 + cf_ncurses_SAVE="$LIBS" + for p in $cf_ncurses_LIBS ; do + q=`echo $LIBS | sed -e "s%$p %%" -e "s%$p$%%"` + if test "$q" != "$LIBS" ; then + LIBS="$q" + fi + done + cat >conftest.$ac_ext <<_ACEOF +#line 15511 "configure" +#include "confdefs.h" +#include <${cf_cv_ncurses_header:-curses.h}> +int +main (void) +{ +initscr(); mousemask(0,0); tgoto((char *)0, 0, 0); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:15523: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:15526: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:15529: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:15532: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + echo "$as_me:15534: result: yes" >&5 +echo "${ECHO_T}yes" >&6 +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +echo "$as_me:15539: result: no" >&5 +echo "${ECHO_T}no" >&6 + LIBS="$cf_ncurses_SAVE" +fi +rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext +fi + +cf_nculib_ROOT=`echo "HAVE_LIB$cf_nculib_root" | sed y%abcdefghijklmnopqrstuvwxyz./-%ABCDEFGHIJKLMNOPQRSTUVWXYZ___%` + +cat >>confdefs.h <&5 +echo $ECHO_N "checking pkg-config for $cf_ncuconfig_root... $ECHO_C" >&6 + if "$PKG_CONFIG" --exists $cf_ncuconfig_root ; then + echo "$as_me:15567: result: yes" >&5 +echo "${ECHO_T}yes" >&6 + + echo "$as_me:15570: checking if the $cf_ncuconfig_root package files work" >&5 +echo $ECHO_N "checking if the $cf_ncuconfig_root package files work... $ECHO_C" >&6 + cf_have_ncuconfig=unknown + + cf_save_CPPFLAGS="$CPPFLAGS" + cf_save_LIBS="$LIBS" + +cf_fix_cppflags=no +cf_new_cflags= +cf_new_cppflags= +cf_new_extra_cppflags= + +for cf_add_cflags in `$PKG_CONFIG --cflags $cf_ncuconfig_root` +do +case $cf_fix_cppflags in +(no) + case $cf_add_cflags in + (-undef|-nostdinc*|-I*|-D*|-U*|-E|-P|-C) + case $cf_add_cflags in + (-D*) + cf_tst_cflags=`echo ${cf_add_cflags} |sed -e 's/^-D[^=]*='\''\"[^"]*//'` + + test "x${cf_add_cflags}" != "x${cf_tst_cflags}" \ + && test -z "${cf_tst_cflags}" \ + && cf_fix_cppflags=yes + + if test $cf_fix_cppflags = yes ; then + + test -n "$cf_new_extra_cppflags" && cf_new_extra_cppflags="$cf_new_extra_cppflags " + cf_new_extra_cppflags="${cf_new_extra_cppflags}$cf_add_cflags" + + continue + elif test "${cf_tst_cflags}" = "\"'" ; then + + test -n "$cf_new_extra_cppflags" && cf_new_extra_cppflags="$cf_new_extra_cppflags " + cf_new_extra_cppflags="${cf_new_extra_cppflags}$cf_add_cflags" + + continue + fi + ;; + esac + case "$CPPFLAGS" in + (*$cf_add_cflags) + ;; + (*) + case $cf_add_cflags in + (-D*) + cf_tst_cppflags=`echo "x$cf_add_cflags" | sed -e 's/^...//' -e 's/=.*//'` + +CPPFLAGS=`echo "$CPPFLAGS" | \ + sed -e 's/-[UD]'"$cf_tst_cppflags"'\(=[^ ]*\)\?[ ]/ /g' \ + -e 's/-[UD]'"$cf_tst_cppflags"'\(=[^ ]*\)\?$//g'` + + ;; + esac + + test -n "$cf_new_cppflags" && cf_new_cppflags="$cf_new_cppflags " + cf_new_cppflags="${cf_new_cppflags}$cf_add_cflags" + + ;; + esac + ;; + (*) + + test -n "$cf_new_cflags" && cf_new_cflags="$cf_new_cflags " + cf_new_cflags="${cf_new_cflags}$cf_add_cflags" + + ;; + esac + ;; +(yes) + + test -n "$cf_new_extra_cppflags" && cf_new_extra_cppflags="$cf_new_extra_cppflags " + cf_new_extra_cppflags="${cf_new_extra_cppflags}$cf_add_cflags" + + cf_tst_cflags=`echo ${cf_add_cflags} |sed -e 's/^[^"]*"'\''//'` + + test "x${cf_add_cflags}" != "x${cf_tst_cflags}" \ + && test -z "${cf_tst_cflags}" \ + && cf_fix_cppflags=no + ;; +esac +done + +if test -n "$cf_new_cflags" ; then + + test -n "$CFLAGS" && CFLAGS="$CFLAGS " + CFLAGS="${CFLAGS}$cf_new_cflags" + +fi + +if test -n "$cf_new_cppflags" ; then + + test -n "$CPPFLAGS" && CPPFLAGS="$CPPFLAGS " + CPPFLAGS="${CPPFLAGS}$cf_new_cppflags" + +fi + +if test -n "$cf_new_extra_cppflags" ; then + + test -n "$EXTRA_CPPFLAGS" && EXTRA_CPPFLAGS="$EXTRA_CPPFLAGS " + EXTRA_CPPFLAGS="${EXTRA_CPPFLAGS}$cf_new_extra_cppflags" + +fi + +cf_add_libs="`$PKG_CONFIG --libs $cf_ncuconfig_root`" +# Filter out duplicates - this happens with badly-designed ".pc" files... +for cf_add_1lib in $LIBS +do + for cf_add_2lib in $cf_add_libs + do + if test "x$cf_add_1lib" = "x$cf_add_2lib" + then + cf_add_1lib= + break + fi + done + test -n "$cf_add_1lib" && cf_add_libs="$cf_add_libs $cf_add_1lib" +done +LIBS="$cf_add_libs" + + cat >conftest.$ac_ext <<_ACEOF +#line 15692 "configure" +#include "confdefs.h" +#include <${cf_cv_ncurses_header:-curses.h}> +int +main (void) +{ +initscr(); mousemask(0,0); tgoto((char *)0, 0, 0); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:15704: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:15707: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:15710: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:15713: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + if test "$cross_compiling" = yes; then + cf_have_ncuconfig=maybe +else + cat >conftest.$ac_ext <<_ACEOF +#line 15719 "configure" +#include "confdefs.h" +#include <${cf_cv_ncurses_header:-curses.h}> + int main(void) + { char *xx = curses_version(); return (xx == 0); } +_ACEOF +rm -f conftest$ac_exeext +if { (eval echo "$as_me:15726: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:15729: \$? = $ac_status" >&5 + (exit $ac_status); } && { ac_try='./conftest$ac_exeext' + { (eval echo "$as_me:15731: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:15734: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + cf_have_ncuconfig=yes +else + echo "$as_me: program exited with status $ac_status" >&5 +echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +cf_have_ncuconfig=no +fi +rm -f core core.* *.core conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext +fi +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +cf_have_ncuconfig=no +fi +rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext + echo "$as_me:15751: result: $cf_have_ncuconfig" >&5 +echo "${ECHO_T}$cf_have_ncuconfig" >&6 + test "$cf_have_ncuconfig" = maybe && cf_have_ncuconfig=yes + if test "$cf_have_ncuconfig" != "yes" + then + CPPFLAGS="$cf_save_CPPFLAGS" + LIBS="$cf_save_LIBS" + NCURSES_CONFIG_PKG=none + else + +cat >>confdefs.h <<\EOF +#define NCURSES 1 +EOF + + NCURSES_CONFIG_PKG=$cf_ncuconfig_root + +echo "$as_me:15767: checking for terminfo header" >&5 +echo $ECHO_N "checking for terminfo header... $ECHO_C" >&6 +if test "${cf_cv_term_header+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + +case ${cf_cv_ncurses_header} in +(*/ncurses.h|*/ncursesw.h) + cf_term_header=`echo "$cf_cv_ncurses_header" | sed -e 's%ncurses[^.]*\.h$%term.h%'` + ;; +(*) + cf_term_header=term.h + ;; +esac + +for cf_test in $cf_term_header "ncurses/term.h" "ncursesw/term.h" +do +cat >conftest.$ac_ext <<_ACEOF +#line 15785 "configure" +#include "confdefs.h" +#include +#include <${cf_cv_ncurses_header:-curses.h}> +#include <$cf_test> + +int +main (void) +{ +int x = auto_left_margin + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:15800: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:15803: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:15806: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:15809: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + + cf_cv_term_header="$cf_test" +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 + + cf_cv_term_header=unknown + +fi +rm -f conftest.$ac_objext conftest.$ac_ext + test "$cf_cv_term_header" != unknown && break +done + +fi +echo "$as_me:15825: result: $cf_cv_term_header" >&5 +echo "${ECHO_T}$cf_cv_term_header" >&6 + +# Set definitions to allow ifdef'ing to accommodate subdirectories + +case $cf_cv_term_header in +(*term.h) + +cat >>confdefs.h <<\EOF +#define HAVE_TERM_H 1 +EOF + + ;; +esac + +case $cf_cv_term_header in +(ncurses/term.h) + +cat >>confdefs.h <<\EOF +#define HAVE_NCURSES_TERM_H 1 +EOF + + ;; +(ncursesw/term.h) + +cat >>confdefs.h <<\EOF +#define HAVE_NCURSESW_TERM_H 1 +EOF + + ;; +esac + + fi + + else + echo "$as_me:15860: result: no" >&5 +echo "${ECHO_T}no" >&6 + NCURSES_CONFIG_PKG=none + fi +else + NCURSES_CONFIG_PKG=none +fi + +if test "x$cf_have_ncuconfig" = "xno"; then + cf_ncurses_config="${cf_ncuconfig_root}${NCURSES_CONFIG_SUFFIX}-config"; echo "Looking for ${cf_ncurses_config}" + +if test -n "$ac_tool_prefix"; then + for ac_prog in ${cf_ncurses_config} ${cf_ncuconfig_root}6-config ${cf_ncuconfig_root}6-config ${cf_ncuconfig_root}5-config + do + # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. +set dummy $ac_tool_prefix$ac_prog; ac_word=$2 +echo "$as_me:15876: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_NCURSES_CONFIG+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$NCURSES_CONFIG"; then + ac_cv_prog_NCURSES_CONFIG="$NCURSES_CONFIG" # Let the user override the test. +else + ac_save_IFS=$IFS; IFS=$ac_path_separator +ac_dummy="$PATH" +for ac_dir in $ac_dummy; do + IFS=$ac_save_IFS + test -z "$ac_dir" && ac_dir=. + $as_executable_p "$ac_dir/$ac_word" || continue +ac_cv_prog_NCURSES_CONFIG="$ac_tool_prefix$ac_prog" +echo "$as_me:15891: found $ac_dir/$ac_word" >&5 +break +done + +fi +fi +NCURSES_CONFIG=$ac_cv_prog_NCURSES_CONFIG +if test -n "$NCURSES_CONFIG"; then + echo "$as_me:15899: result: $NCURSES_CONFIG" >&5 +echo "${ECHO_T}$NCURSES_CONFIG" >&6 +else + echo "$as_me:15902: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + test -n "$NCURSES_CONFIG" && break + done +fi +if test -z "$NCURSES_CONFIG"; then + ac_ct_NCURSES_CONFIG=$NCURSES_CONFIG + for ac_prog in ${cf_ncurses_config} ${cf_ncuconfig_root}6-config ${cf_ncuconfig_root}6-config ${cf_ncuconfig_root}5-config +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +echo "$as_me:15915: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_ac_ct_NCURSES_CONFIG+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$ac_ct_NCURSES_CONFIG"; then + ac_cv_prog_ac_ct_NCURSES_CONFIG="$ac_ct_NCURSES_CONFIG" # Let the user override the test. +else + ac_save_IFS=$IFS; IFS=$ac_path_separator +ac_dummy="$PATH" +for ac_dir in $ac_dummy; do + IFS=$ac_save_IFS + test -z "$ac_dir" && ac_dir=. + $as_executable_p "$ac_dir/$ac_word" || continue +ac_cv_prog_ac_ct_NCURSES_CONFIG="$ac_prog" +echo "$as_me:15930: found $ac_dir/$ac_word" >&5 +break +done + +fi +fi +ac_ct_NCURSES_CONFIG=$ac_cv_prog_ac_ct_NCURSES_CONFIG +if test -n "$ac_ct_NCURSES_CONFIG"; then + echo "$as_me:15938: result: $ac_ct_NCURSES_CONFIG" >&5 +echo "${ECHO_T}$ac_ct_NCURSES_CONFIG" >&6 +else + echo "$as_me:15941: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + test -n "$ac_ct_NCURSES_CONFIG" && break +done +test -n "$ac_ct_NCURSES_CONFIG" || ac_ct_NCURSES_CONFIG="none" + + NCURSES_CONFIG=$ac_ct_NCURSES_CONFIG +fi + + if test "$NCURSES_CONFIG" != none ; then + +cf_fix_cppflags=no +cf_new_cflags= +cf_new_cppflags= +cf_new_extra_cppflags= + +for cf_add_cflags in `$NCURSES_CONFIG --cflags` +do +case $cf_fix_cppflags in +(no) + case $cf_add_cflags in + (-undef|-nostdinc*|-I*|-D*|-U*|-E|-P|-C) + case $cf_add_cflags in + (-D*) + cf_tst_cflags=`echo ${cf_add_cflags} |sed -e 's/^-D[^=]*='\''\"[^"]*//'` + + test "x${cf_add_cflags}" != "x${cf_tst_cflags}" \ + && test -z "${cf_tst_cflags}" \ + && cf_fix_cppflags=yes + + if test $cf_fix_cppflags = yes ; then + + test -n "$cf_new_extra_cppflags" && cf_new_extra_cppflags="$cf_new_extra_cppflags " + cf_new_extra_cppflags="${cf_new_extra_cppflags}$cf_add_cflags" + + continue + elif test "${cf_tst_cflags}" = "\"'" ; then + + test -n "$cf_new_extra_cppflags" && cf_new_extra_cppflags="$cf_new_extra_cppflags " + cf_new_extra_cppflags="${cf_new_extra_cppflags}$cf_add_cflags" + + continue + fi + ;; + esac + case "$CPPFLAGS" in + (*$cf_add_cflags) + ;; + (*) + case $cf_add_cflags in + (-D*) + cf_tst_cppflags=`echo "x$cf_add_cflags" | sed -e 's/^...//' -e 's/=.*//'` + +CPPFLAGS=`echo "$CPPFLAGS" | \ + sed -e 's/-[UD]'"$cf_tst_cppflags"'\(=[^ ]*\)\?[ ]/ /g' \ + -e 's/-[UD]'"$cf_tst_cppflags"'\(=[^ ]*\)\?$//g'` + + ;; + esac + + test -n "$cf_new_cppflags" && cf_new_cppflags="$cf_new_cppflags " + cf_new_cppflags="${cf_new_cppflags}$cf_add_cflags" + + ;; + esac + ;; + (*) + + test -n "$cf_new_cflags" && cf_new_cflags="$cf_new_cflags " + cf_new_cflags="${cf_new_cflags}$cf_add_cflags" + + ;; + esac + ;; +(yes) + + test -n "$cf_new_extra_cppflags" && cf_new_extra_cppflags="$cf_new_extra_cppflags " + cf_new_extra_cppflags="${cf_new_extra_cppflags}$cf_add_cflags" + + cf_tst_cflags=`echo ${cf_add_cflags} |sed -e 's/^[^"]*"'\''//'` + + test "x${cf_add_cflags}" != "x${cf_tst_cflags}" \ + && test -z "${cf_tst_cflags}" \ + && cf_fix_cppflags=no + ;; +esac +done + +if test -n "$cf_new_cflags" ; then + + test -n "$CFLAGS" && CFLAGS="$CFLAGS " + CFLAGS="${CFLAGS}$cf_new_cflags" + +fi + +if test -n "$cf_new_cppflags" ; then + + test -n "$CPPFLAGS" && CPPFLAGS="$CPPFLAGS " + CPPFLAGS="${CPPFLAGS}$cf_new_cppflags" + +fi + +if test -n "$cf_new_extra_cppflags" ; then + + test -n "$EXTRA_CPPFLAGS" && EXTRA_CPPFLAGS="$EXTRA_CPPFLAGS " + EXTRA_CPPFLAGS="${EXTRA_CPPFLAGS}$cf_new_extra_cppflags" + +fi + +cf_add_libs="`$NCURSES_CONFIG --libs`" +# Filter out duplicates - this happens with badly-designed ".pc" files... +for cf_add_1lib in $LIBS +do + for cf_add_2lib in $cf_add_libs + do + if test "x$cf_add_1lib" = "x$cf_add_2lib" + then + cf_add_1lib= + break + fi + done + test -n "$cf_add_1lib" && cf_add_libs="$cf_add_libs $cf_add_1lib" +done +LIBS="$cf_add_libs" + + # even with config script, some packages use no-override for curses.h + +echo "$as_me:16070: checking if we have identified curses headers" >&5 +echo $ECHO_N "checking if we have identified curses headers... $ECHO_C" >&6 +if test "${cf_cv_ncurses_header+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + +cf_cv_ncurses_header=none +for cf_header in \ + ncurses.h $cf_cv_screen/ncurses.h \ + curses.h $cf_cv_screen/curses.h +do +cat >conftest.$ac_ext <<_ACEOF +#line 16082 "configure" +#include "confdefs.h" +#include <${cf_header}> +int +main (void) +{ +initscr(); tgoto("?", 0,0) + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:16094: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:16097: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:16100: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:16103: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + cf_cv_ncurses_header=$cf_header; break +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +fi +rm -f conftest.$ac_objext conftest.$ac_ext +done + +fi +echo "$as_me:16114: result: $cf_cv_ncurses_header" >&5 +echo "${ECHO_T}$cf_cv_ncurses_header" >&6 + +if test "$cf_cv_ncurses_header" = none ; then + { { echo "$as_me:16118: error: No curses header-files found" >&5 +echo "$as_me: error: No curses header-files found" >&2;} + { (exit 1); exit 1; }; } +fi + +# cheat, to get the right #define's for HAVE_NCURSES_H, etc. + +for ac_header in $cf_cv_ncurses_header +do +as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` +echo "$as_me:16128: checking for $ac_header" >&5 +echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 +if eval "test \"\${$as_ac_Header+set}\" = set"; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +#line 16134 "configure" +#include "confdefs.h" +#include <$ac_header> +_ACEOF +if { (eval echo "$as_me:16138: \"$ac_cpp conftest.$ac_ext\"") >&5 + (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 + ac_status=$? + egrep -v '^ *\+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:16144: \$? = $ac_status" >&5 + (exit $ac_status); } >/dev/null; then + if test -s conftest.err; then + ac_cpp_err=$ac_c_preproc_warn_flag + else + ac_cpp_err= + fi +else + ac_cpp_err=yes +fi +if test -z "$ac_cpp_err"; then + eval "$as_ac_Header=yes" +else + echo "$as_me: failed program was:" >&5 + cat conftest.$ac_ext >&5 + eval "$as_ac_Header=no" +fi +rm -f conftest.err conftest.$ac_ext +fi +echo "$as_me:16163: result: `eval echo '${'$as_ac_Header'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 +if test `eval echo '${'$as_ac_Header'}'` = yes; then + cat >>confdefs.h <>confdefs.h <<\EOF +#define NCURSES 1 +EOF + +cf_nculib_ROOT=`echo "HAVE_LIB$cf_ncuconfig_root" | sed y%abcdefghijklmnopqrstuvwxyz./-%ABCDEFGHIJKLMNOPQRSTUVWXYZ___%` + + cat >>confdefs.h <conftest.$ac_ext <<_ACEOF +#line 16219 "configure" +#include "confdefs.h" +#include +int +main (void) +{ +printf("Hello") + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:16231: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:16234: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:16237: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:16240: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + : +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +cf_have_incdir=yes +fi +rm -f conftest.$ac_objext conftest.$ac_ext + CPPFLAGS=$cf_save_CPPFLAGS + fi + fi + fi + + if test "$cf_have_incdir" = no ; then + test -n "$verbose" && echo " adding $cf_add_incdir to include-path" 1>&6 + +echo "${as_me:-configure}:16257: testing adding $cf_add_incdir to include-path ..." 1>&5 + + CPPFLAGS="$CPPFLAGS -I$cf_add_incdir" + + cf_top_incdir=`echo $cf_add_incdir | sed -e 's%/include/.*$%/include%'` + test "$cf_top_incdir" = "$cf_add_incdir" && break + cf_add_incdir="$cf_top_incdir" + else + break + fi + else + break + fi + done + done +fi + +} + +echo "$as_me:16276: checking for $cf_ncuhdr_root header in include-path" >&5 +echo $ECHO_N "checking for $cf_ncuhdr_root header in include-path... $ECHO_C" >&6 +if test "${cf_cv_ncurses_h+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + + cf_header_list="$cf_ncuhdr_root/curses.h $cf_ncuhdr_root/ncurses.h" + ( test "$cf_ncuhdr_root" = ncurses || test "$cf_ncuhdr_root" = ncursesw ) && cf_header_list="$cf_header_list curses.h ncurses.h" + for cf_header in $cf_header_list + do + + cat >conftest.$ac_ext <<_ACEOF +#line 16288 "configure" +#include "confdefs.h" + +#include <$cf_header> +int +main (void) +{ + +#ifdef NCURSES_VERSION + +printf("%s\n", NCURSES_VERSION); +#else +#ifdef __NCURSES_H +printf("old\n"); +#else + make an error +#endif +#endif + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:16312: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:16315: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:16318: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:16321: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + cf_cv_ncurses_h=$cf_header + +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +cf_cv_ncurses_h=no +fi +rm -f conftest.$ac_objext conftest.$ac_ext + + test "$cf_cv_ncurses_h" != no && break + done + +fi +echo "$as_me:16336: result: $cf_cv_ncurses_h" >&5 +echo "${ECHO_T}$cf_cv_ncurses_h" >&6 + +if test "$cf_cv_ncurses_h" != no ; then + cf_cv_ncurses_header=$cf_cv_ncurses_h +else + +echo "$as_me:16343: checking for $cf_ncuhdr_root include-path" >&5 +echo $ECHO_N "checking for $cf_ncuhdr_root include-path... $ECHO_C" >&6 +if test "${cf_cv_ncurses_h2+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + + test -n "$verbose" && echo + +cf_search= + +# collect the current set of include-directories from compiler flags +cf_header_path_list="" +if test -n "${CFLAGS}${CPPFLAGS}" ; then + for cf_header_path in $CPPFLAGS $CFLAGS + do + case $cf_header_path in + (-I*) + cf_header_path=`echo ".$cf_header_path" |sed -e 's/^...//' -e 's,/include$,,'` + +test "x$cf_header_path" != "xNONE" && \ +test -d "$cf_header_path" && \ + { + test -n "$verbose" && echo " ... testing for include-directories under $cf_header_path" + test -d $cf_header_path/include && cf_search="$cf_search $cf_header_path/include" + test -d $cf_header_path/include/$cf_ncuhdr_root && cf_search="$cf_search $cf_header_path/include/$cf_ncuhdr_root" + test -d $cf_header_path/include/$cf_ncuhdr_root/include && cf_search="$cf_search $cf_header_path/include/$cf_ncuhdr_root/include" + test -d $cf_header_path/$cf_ncuhdr_root/include && cf_search="$cf_search $cf_header_path/$cf_ncuhdr_root/include" + test -d $cf_header_path/$cf_ncuhdr_root/include/$cf_ncuhdr_root && cf_search="$cf_search $cf_header_path/$cf_ncuhdr_root/include/$cf_ncuhdr_root" +} + + cf_header_path_list="$cf_header_path_list $cf_search" + ;; + esac + done +fi + +# add the variations for the package we are looking for + +cf_search= + +test "x$prefix" != "xNONE" && \ +test -d "$prefix" && \ + { + test -n "$verbose" && echo " ... testing for include-directories under $prefix" + test -d $prefix/include && cf_search="$cf_search $prefix/include" + test -d $prefix/include/$cf_ncuhdr_root && cf_search="$cf_search $prefix/include/$cf_ncuhdr_root" + test -d $prefix/include/$cf_ncuhdr_root/include && cf_search="$cf_search $prefix/include/$cf_ncuhdr_root/include" + test -d $prefix/$cf_ncuhdr_root/include && cf_search="$cf_search $prefix/$cf_ncuhdr_root/include" + test -d $prefix/$cf_ncuhdr_root/include/$cf_ncuhdr_root && cf_search="$cf_search $prefix/$cf_ncuhdr_root/include/$cf_ncuhdr_root" +} + +for cf_subdir_prefix in \ + /usr \ + /usr/local \ + /usr/pkg \ + /opt \ + /opt/local \ + $HOME +do + +test "x$cf_subdir_prefix" != "x$prefix" && \ +test -d "$cf_subdir_prefix" && \ +(test -z "$prefix" || test x$prefix = xNONE || test "x$cf_subdir_prefix" != "x$prefix") && { + test -n "$verbose" && echo " ... testing for include-directories under $cf_subdir_prefix" + test -d $cf_subdir_prefix/include && cf_search="$cf_search $cf_subdir_prefix/include" + test -d $cf_subdir_prefix/include/$cf_ncuhdr_root && cf_search="$cf_search $cf_subdir_prefix/include/$cf_ncuhdr_root" + test -d $cf_subdir_prefix/include/$cf_ncuhdr_root/include && cf_search="$cf_search $cf_subdir_prefix/include/$cf_ncuhdr_root/include" + test -d $cf_subdir_prefix/$cf_ncuhdr_root/include && cf_search="$cf_search $cf_subdir_prefix/$cf_ncuhdr_root/include" + test -d $cf_subdir_prefix/$cf_ncuhdr_root/include/$cf_ncuhdr_root && cf_search="$cf_search $cf_subdir_prefix/$cf_ncuhdr_root/include/$cf_ncuhdr_root" +} + +done + +test "$includedir" != NONE && \ +test "$includedir" != "/usr/include" && \ +test -d "$includedir" && { + test -d $includedir && cf_search="$cf_search $includedir" + test -d $includedir/$cf_ncuhdr_root && cf_search="$cf_search $includedir/$cf_ncuhdr_root" +} + +test "$oldincludedir" != NONE && \ +test "$oldincludedir" != "/usr/include" && \ +test -d "$oldincludedir" && { + test -d $oldincludedir && cf_search="$cf_search $oldincludedir" + test -d $oldincludedir/$cf_ncuhdr_root && cf_search="$cf_search $oldincludedir/$cf_ncuhdr_root" +} + +cf_search="$cf_search $cf_header_path_list" + + test -n "$verbose" && echo search path $cf_search + cf_save2_CPPFLAGS="$CPPFLAGS" + for cf_incdir in $cf_search + do + +if test -n "$cf_incdir" ; then + for cf_add_incdir in $cf_incdir + do + while test $cf_add_incdir != /usr/include + do + if test -d $cf_add_incdir + then + cf_have_incdir=no + if test -n "$CFLAGS$CPPFLAGS" ; then + # a loop is needed to ensure we can add subdirs of existing dirs + for cf_test_incdir in $CFLAGS $CPPFLAGS ; do + if test ".$cf_test_incdir" = ".-I$cf_add_incdir" ; then + cf_have_incdir=yes; break + fi + done + fi + + if test "$cf_have_incdir" = no ; then + if test "$cf_add_incdir" = /usr/local/include ; then + if test "$GCC" = yes + then + cf_save_CPPFLAGS=$CPPFLAGS + + test -n "$CPPFLAGS" && CPPFLAGS="$CPPFLAGS " + CPPFLAGS="${CPPFLAGS}-I$cf_add_incdir" + + cat >conftest.$ac_ext <<_ACEOF +#line 16464 "configure" +#include "confdefs.h" +#include +int +main (void) +{ +printf("Hello") + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:16476: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:16479: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:16482: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:16485: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + : +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +cf_have_incdir=yes +fi +rm -f conftest.$ac_objext conftest.$ac_ext + CPPFLAGS=$cf_save_CPPFLAGS + fi + fi + fi + + if test "$cf_have_incdir" = no ; then + test -n "$verbose" && echo " adding $cf_add_incdir to include-path" 1>&6 + +echo "${as_me:-configure}:16502: testing adding $cf_add_incdir to include-path ..." 1>&5 + + CPPFLAGS="$CPPFLAGS -I$cf_add_incdir" + + cf_top_incdir=`echo $cf_add_incdir | sed -e 's%/include/.*$%/include%'` + test "$cf_top_incdir" = "$cf_add_incdir" && break + cf_add_incdir="$cf_top_incdir" + else + break + fi + else + break + fi + done + done +fi + + for cf_header in \ + ncurses.h \ + curses.h + do + + cat >conftest.$ac_ext <<_ACEOF +#line 16525 "configure" +#include "confdefs.h" + +#include <$cf_header> +int +main (void) +{ + +#ifdef NCURSES_VERSION + +printf("%s\n", NCURSES_VERSION); +#else +#ifdef __NCURSES_H +printf("old\n"); +#else + make an error +#endif +#endif + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:16549: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:16552: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:16555: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:16558: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + cf_cv_ncurses_h2=$cf_header + +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +cf_cv_ncurses_h2=no +fi +rm -f conftest.$ac_objext conftest.$ac_ext + + if test "$cf_cv_ncurses_h2" != no ; then + cf_cv_ncurses_h2=$cf_incdir/$cf_header + test -n "$verbose" && echo $ac_n " ... found $ac_c" 1>&6 + break + fi + test -n "$verbose" && echo " ... tested $cf_incdir/$cf_header" 1>&6 + done + CPPFLAGS="$cf_save2_CPPFLAGS" + test "$cf_cv_ncurses_h2" != no && break + done + test "$cf_cv_ncurses_h2" = no && { { echo "$as_me:16579: error: not found" >&5 +echo "$as_me: error: not found" >&2;} + { (exit 1); exit 1; }; } + +fi +echo "$as_me:16584: result: $cf_cv_ncurses_h2" >&5 +echo "${ECHO_T}$cf_cv_ncurses_h2" >&6 + + cf_1st_incdir=`echo $cf_cv_ncurses_h2 | sed -e 's%/[^/]*$%%'` + cf_cv_ncurses_header=`basename $cf_cv_ncurses_h2` + if test `basename $cf_1st_incdir` = $cf_ncuhdr_root ; then + cf_cv_ncurses_header=$cf_ncuhdr_root/$cf_cv_ncurses_header + fi + +if test -n "$cf_1st_incdir" ; then + for cf_add_incdir in $cf_1st_incdir + do + while test $cf_add_incdir != /usr/include + do + if test -d $cf_add_incdir + then + cf_have_incdir=no + if test -n "$CFLAGS$CPPFLAGS" ; then + # a loop is needed to ensure we can add subdirs of existing dirs + for cf_test_incdir in $CFLAGS $CPPFLAGS ; do + if test ".$cf_test_incdir" = ".-I$cf_add_incdir" ; then + cf_have_incdir=yes; break + fi + done + fi + + if test "$cf_have_incdir" = no ; then + if test "$cf_add_incdir" = /usr/local/include ; then + if test "$GCC" = yes + then + cf_save_CPPFLAGS=$CPPFLAGS + + test -n "$CPPFLAGS" && CPPFLAGS="$CPPFLAGS " + CPPFLAGS="${CPPFLAGS}-I$cf_add_incdir" + + cat >conftest.$ac_ext <<_ACEOF +#line 16620 "configure" +#include "confdefs.h" +#include +int +main (void) +{ +printf("Hello") + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:16632: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:16635: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:16638: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:16641: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + : +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +cf_have_incdir=yes +fi +rm -f conftest.$ac_objext conftest.$ac_ext + CPPFLAGS=$cf_save_CPPFLAGS + fi + fi + fi + + if test "$cf_have_incdir" = no ; then + test -n "$verbose" && echo " adding $cf_add_incdir to include-path" 1>&6 + +echo "${as_me:-configure}:16658: testing adding $cf_add_incdir to include-path ..." 1>&5 + + CPPFLAGS="$CPPFLAGS -I$cf_add_incdir" + + cf_top_incdir=`echo $cf_add_incdir | sed -e 's%/include/.*$%/include%'` + test "$cf_top_incdir" = "$cf_add_incdir" && break + cf_add_incdir="$cf_top_incdir" + else + break + fi + else + break + fi + done + done +fi + +fi + +# Set definitions to allow ifdef'ing for ncurses.h + +case $cf_cv_ncurses_header in +(*ncurses.h) + +cat >>confdefs.h <<\EOF +#define HAVE_NCURSES_H 1 +EOF + + ;; +esac + +case $cf_cv_ncurses_header in +(ncurses/curses.h|ncurses/ncurses.h) + +cat >>confdefs.h <<\EOF +#define HAVE_NCURSES_NCURSES_H 1 +EOF + + ;; +(ncursesw/curses.h|ncursesw/ncurses.h) + +cat >>confdefs.h <<\EOF +#define HAVE_NCURSESW_NCURSES_H 1 +EOF + + ;; +esac + +echo "$as_me:16706: checking for terminfo header" >&5 +echo $ECHO_N "checking for terminfo header... $ECHO_C" >&6 +if test "${cf_cv_term_header+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + +case ${cf_cv_ncurses_header} in +(*/ncurses.h|*/ncursesw.h) + cf_term_header=`echo "$cf_cv_ncurses_header" | sed -e 's%ncurses[^.]*\.h$%term.h%'` + ;; +(*) + cf_term_header=term.h + ;; +esac + +for cf_test in $cf_term_header "ncurses/term.h" "ncursesw/term.h" +do +cat >conftest.$ac_ext <<_ACEOF +#line 16724 "configure" +#include "confdefs.h" +#include +#include <${cf_cv_ncurses_header:-curses.h}> +#include <$cf_test> + +int +main (void) +{ +int x = auto_left_margin + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:16739: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:16742: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:16745: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:16748: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + + cf_cv_term_header="$cf_test" +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 + + cf_cv_term_header=unknown + +fi +rm -f conftest.$ac_objext conftest.$ac_ext + test "$cf_cv_term_header" != unknown && break +done + +fi +echo "$as_me:16764: result: $cf_cv_term_header" >&5 +echo "${ECHO_T}$cf_cv_term_header" >&6 + +# Set definitions to allow ifdef'ing to accommodate subdirectories + +case $cf_cv_term_header in +(*term.h) + +cat >>confdefs.h <<\EOF +#define HAVE_TERM_H 1 +EOF + + ;; +esac + +case $cf_cv_term_header in +(ncurses/term.h) + +cat >>confdefs.h <<\EOF +#define HAVE_NCURSES_TERM_H 1 +EOF + + ;; +(ncursesw/term.h) + +cat >>confdefs.h <<\EOF +#define HAVE_NCURSESW_TERM_H 1 +EOF + + ;; +esac + +# some applications need this, but should check for NCURSES_VERSION + +cat >>confdefs.h <<\EOF +#define NCURSES 1 +EOF + +echo "$as_me:16802: checking for ncurses version" >&5 +echo $ECHO_N "checking for ncurses version... $ECHO_C" >&6 +if test "${cf_cv_ncurses_version+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + + cf_cv_ncurses_version=no + cf_tempfile=out$$ + rm -f $cf_tempfile + if test "$cross_compiling" = yes; then + + # This will not work if the preprocessor splits the line after the + # Autoconf token. The 'unproto' program does that. + cat > conftest.$ac_ext < +#undef Autoconf +#ifdef NCURSES_VERSION +Autoconf NCURSES_VERSION +#else +#ifdef __NCURSES_H +Autoconf "old" +#endif +; +#endif +EOF + cf_try="$ac_cpp conftest.$ac_ext 2>&5 | grep '^Autoconf ' >conftest.out" + { (eval echo "$as_me:16828: \"$cf_try\"") >&5 + (eval $cf_try) 2>&5 + ac_status=$? + echo "$as_me:16831: \$? = $ac_status" >&5 + (exit $ac_status); } + if test -f conftest.out ; then + cf_out=`cat conftest.out | sed -e 's%^Autoconf %%' -e 's%^[^"]*"%%' -e 's%".*%%'` + test -n "$cf_out" && cf_cv_ncurses_version="$cf_out" + rm -f conftest.out + fi + +else + cat >conftest.$ac_ext <<_ACEOF +#line 16841 "configure" +#include "confdefs.h" + +#include <${cf_cv_ncurses_header:-curses.h}> +#include +int main(void) +{ + FILE *fp = fopen("$cf_tempfile", "w"); +#ifdef NCURSES_VERSION +# ifdef NCURSES_VERSION_PATCH + fprintf(fp, "%s.%d\n", NCURSES_VERSION, NCURSES_VERSION_PATCH); +# else + fprintf(fp, "%s\n", NCURSES_VERSION); +# endif +#else +# ifdef __NCURSES_H + fprintf(fp, "old\n"); +# else + make an error +# endif +#endif + ${cf_cv_main_return:-return}(0); +} +_ACEOF +rm -f conftest$ac_exeext +if { (eval echo "$as_me:16866: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:16869: \$? = $ac_status" >&5 + (exit $ac_status); } && { ac_try='./conftest$ac_exeext' + { (eval echo "$as_me:16871: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:16874: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + + cf_cv_ncurses_version=`cat $cf_tempfile` +else + echo "$as_me: program exited with status $ac_status" >&5 +echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +fi +rm -f core core.* *.core conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext +fi + rm -f $cf_tempfile + +fi +echo "$as_me:16888: result: $cf_cv_ncurses_version" >&5 +echo "${ECHO_T}$cf_cv_ncurses_version" >&6 +test "$cf_cv_ncurses_version" = no || +cat >>confdefs.h <<\EOF +#define NCURSES 1 +EOF + +cf_nculib_root=$cf_cv_screen + # This works, except for the special case where we find gpm, but + # ncurses is in a nonstandard location via $LIBS, and we really want + # to link gpm. +cf_ncurses_LIBS="" +cf_ncurses_SAVE="$LIBS" +echo "$as_me:16901: checking for Gpm_Open in -lgpm" >&5 +echo $ECHO_N "checking for Gpm_Open in -lgpm... $ECHO_C" >&6 +if test "${ac_cv_lib_gpm_Gpm_Open+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-lgpm $LIBS" +cat >conftest.$ac_ext <<_ACEOF +#line 16909 "configure" +#include "confdefs.h" + +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char Gpm_Open (); +int +main (void) +{ +Gpm_Open (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:16928: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:16931: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:16934: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:16937: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_lib_gpm_Gpm_Open=yes +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +ac_cv_lib_gpm_Gpm_Open=no +fi +rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +echo "$as_me:16948: result: $ac_cv_lib_gpm_Gpm_Open" >&5 +echo "${ECHO_T}$ac_cv_lib_gpm_Gpm_Open" >&6 +if test $ac_cv_lib_gpm_Gpm_Open = yes; then + echo "$as_me:16951: checking for initscr in -lgpm" >&5 +echo $ECHO_N "checking for initscr in -lgpm... $ECHO_C" >&6 +if test "${ac_cv_lib_gpm_initscr+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-lgpm $LIBS" +cat >conftest.$ac_ext <<_ACEOF +#line 16959 "configure" +#include "confdefs.h" + +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char initscr (); +int +main (void) +{ +initscr (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:16978: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:16981: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:16984: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:16987: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_lib_gpm_initscr=yes +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +ac_cv_lib_gpm_initscr=no +fi +rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +echo "$as_me:16998: result: $ac_cv_lib_gpm_initscr" >&5 +echo "${ECHO_T}$ac_cv_lib_gpm_initscr" >&6 +if test $ac_cv_lib_gpm_initscr = yes; then + LIBS="$cf_ncurses_SAVE" +else + cf_ncurses_LIBS="-lgpm" +fi + +fi + +case $host_os in +(freebsd*) + # This is only necessary if you are linking against an obsolete + # version of ncurses (but it should do no harm, since it's static). + if test "$cf_nculib_root" = ncurses ; then + echo "$as_me:17013: checking for tgoto in -lmytinfo" >&5 +echo $ECHO_N "checking for tgoto in -lmytinfo... $ECHO_C" >&6 +if test "${ac_cv_lib_mytinfo_tgoto+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-lmytinfo $LIBS" +cat >conftest.$ac_ext <<_ACEOF +#line 17021 "configure" +#include "confdefs.h" + +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char tgoto (); +int +main (void) +{ +tgoto (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:17040: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:17043: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:17046: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:17049: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_lib_mytinfo_tgoto=yes +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +ac_cv_lib_mytinfo_tgoto=no +fi +rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +echo "$as_me:17060: result: $ac_cv_lib_mytinfo_tgoto" >&5 +echo "${ECHO_T}$ac_cv_lib_mytinfo_tgoto" >&6 +if test $ac_cv_lib_mytinfo_tgoto = yes; then + cf_ncurses_LIBS="-lmytinfo $cf_ncurses_LIBS" +fi + + fi + ;; +esac + +cf_add_libs="$cf_ncurses_LIBS" +# Filter out duplicates - this happens with badly-designed ".pc" files... +for cf_add_1lib in $LIBS +do + for cf_add_2lib in $cf_add_libs + do + if test "x$cf_add_1lib" = "x$cf_add_2lib" + then + cf_add_1lib= + break + fi + done + test -n "$cf_add_1lib" && cf_add_libs="$cf_add_libs $cf_add_1lib" +done +LIBS="$cf_add_libs" + +if ( test -n "$cf_cv_curses_dir" && test "$cf_cv_curses_dir" != "no" ) +then + +cf_add_libs="-l$cf_nculib_root" +# Filter out duplicates - this happens with badly-designed ".pc" files... +for cf_add_1lib in $LIBS +do + for cf_add_2lib in $cf_add_libs + do + if test "x$cf_add_1lib" = "x$cf_add_2lib" + then + cf_add_1lib= + break + fi + done + test -n "$cf_add_1lib" && cf_add_libs="$cf_add_libs $cf_add_1lib" +done +LIBS="$cf_add_libs" + +else + + eval 'cf_cv_have_lib_'$cf_nculib_root'=no' + cf_libdir="" + echo "$as_me:17109: checking for initscr" >&5 +echo $ECHO_N "checking for initscr... $ECHO_C" >&6 +if test "${ac_cv_func_initscr+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +#line 17115 "configure" +#include "confdefs.h" +/* System header to define __stub macros and hopefully few prototypes, + which can conflict with char initscr (); below. */ +#include +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char initscr (); +char (*f) (); + +int +main (void) +{ +/* 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_initscr) || defined (__stub___initscr) +choke me +#else +f = initscr; /* workaround for ICC 12.0.3 */ if (f == 0) return 1; +#endif + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:17146: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:17149: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:17152: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:17155: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_func_initscr=yes +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +ac_cv_func_initscr=no +fi +rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext +fi +echo "$as_me:17165: result: $ac_cv_func_initscr" >&5 +echo "${ECHO_T}$ac_cv_func_initscr" >&6 +if test $ac_cv_func_initscr = yes; then + eval 'cf_cv_have_lib_'$cf_nculib_root'=yes' +else + + cf_save_LIBS="$LIBS" + echo "$as_me:17172: checking for initscr in -l$cf_nculib_root" >&5 +echo $ECHO_N "checking for initscr in -l$cf_nculib_root... $ECHO_C" >&6 + LIBS="-l$cf_nculib_root $LIBS" + cat >conftest.$ac_ext <<_ACEOF +#line 17176 "configure" +#include "confdefs.h" +#include <${cf_cv_ncurses_header:-curses.h}> +int +main (void) +{ +initscr() + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:17188: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:17191: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:17194: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:17197: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + echo "$as_me:17199: result: yes" >&5 +echo "${ECHO_T}yes" >&6 + eval 'cf_cv_have_lib_'$cf_nculib_root'=yes' + +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +echo "$as_me:17206: result: no" >&5 +echo "${ECHO_T}no" >&6 + +cf_search= +cf_library_path_list="" +if test -n "${LDFLAGS}${LIBS}" ; then + for cf_library_path in $LDFLAGS $LIBS + do + case $cf_library_path in + (-L*) + cf_library_path=`echo ".$cf_library_path" |sed -e 's/^...//' -e 's,/lib$,,'` + +test "x$cf_library_path" != "xNONE" && \ +test -d "$cf_library_path" && \ + { + test -n "$verbose" && echo " ... testing for lib-directories under $cf_library_path" + test -d $cf_library_path/lib && cf_search="$cf_search $cf_library_path/lib" + test -d $cf_library_path/lib/$cf_nculib_root && cf_search="$cf_search $cf_library_path/lib/$cf_nculib_root" + test -d $cf_library_path/lib/$cf_nculib_root/lib && cf_search="$cf_search $cf_library_path/lib/$cf_nculib_root/lib" + test -d $cf_library_path/$cf_nculib_root/lib && cf_search="$cf_search $cf_library_path/$cf_nculib_root/lib" + test -d $cf_library_path/$cf_nculib_root/lib/$cf_nculib_root && cf_search="$cf_search $cf_library_path/$cf_nculib_root/lib/$cf_nculib_root" +} + + cf_library_path_list="$cf_library_path_list $cf_search" + ;; + esac + done +fi + +cf_search= + +test "x$prefix" != "xNONE" && \ +test -d "$prefix" && \ + { + test -n "$verbose" && echo " ... testing for lib-directories under $prefix" + test -d $prefix/lib && cf_search="$cf_search $prefix/lib" + test -d $prefix/lib/$cf_nculib_root && cf_search="$cf_search $prefix/lib/$cf_nculib_root" + test -d $prefix/lib/$cf_nculib_root/lib && cf_search="$cf_search $prefix/lib/$cf_nculib_root/lib" + test -d $prefix/$cf_nculib_root/lib && cf_search="$cf_search $prefix/$cf_nculib_root/lib" + test -d $prefix/$cf_nculib_root/lib/$cf_nculib_root && cf_search="$cf_search $prefix/$cf_nculib_root/lib/$cf_nculib_root" +} + +for cf_subdir_prefix in \ + /usr \ + /usr/local \ + /usr/pkg \ + /opt \ + /opt/local \ + $HOME +do + +test "x$cf_subdir_prefix" != "x$prefix" && \ +test -d "$cf_subdir_prefix" && \ +(test -z "$prefix" || test x$prefix = xNONE || test "x$cf_subdir_prefix" != "x$prefix") && { + test -n "$verbose" && echo " ... testing for lib-directories under $cf_subdir_prefix" + test -d $cf_subdir_prefix/lib && cf_search="$cf_search $cf_subdir_prefix/lib" + test -d $cf_subdir_prefix/lib/$cf_nculib_root && cf_search="$cf_search $cf_subdir_prefix/lib/$cf_nculib_root" + test -d $cf_subdir_prefix/lib/$cf_nculib_root/lib && cf_search="$cf_search $cf_subdir_prefix/lib/$cf_nculib_root/lib" + test -d $cf_subdir_prefix/$cf_nculib_root/lib && cf_search="$cf_search $cf_subdir_prefix/$cf_nculib_root/lib" + test -d $cf_subdir_prefix/$cf_nculib_root/lib/$cf_nculib_root && cf_search="$cf_search $cf_subdir_prefix/$cf_nculib_root/lib/$cf_nculib_root" +} + +done + +cf_search="$cf_library_path_list $cf_search" + + for cf_libdir in $cf_search + do + echo "$as_me:17274: checking for -l$cf_nculib_root in $cf_libdir" >&5 +echo $ECHO_N "checking for -l$cf_nculib_root in $cf_libdir... $ECHO_C" >&6 + LIBS="-L$cf_libdir -l$cf_nculib_root $cf_save_LIBS" + cat >conftest.$ac_ext <<_ACEOF +#line 17278 "configure" +#include "confdefs.h" +#include <${cf_cv_ncurses_header:-curses.h}> +int +main (void) +{ +initscr() + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:17290: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:17293: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:17296: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:17299: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + echo "$as_me:17301: result: yes" >&5 +echo "${ECHO_T}yes" >&6 + eval 'cf_cv_have_lib_'$cf_nculib_root'=yes' + break +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +echo "$as_me:17308: result: no" >&5 +echo "${ECHO_T}no" >&6 + LIBS="$cf_save_LIBS" +fi +rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext + done + +fi +rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext + +fi + +eval 'cf_found_library=$cf_cv_have_lib_'$cf_nculib_root + +if test $cf_found_library = no ; then + { { echo "$as_me:17323: error: Cannot link $cf_nculib_root library" >&5 +echo "$as_me: error: Cannot link $cf_nculib_root library" >&2;} + { (exit 1); exit 1; }; } +fi + +fi + +if test -n "$cf_ncurses_LIBS" ; then + echo "$as_me:17331: checking if we can link $cf_nculib_root without $cf_ncurses_LIBS" >&5 +echo $ECHO_N "checking if we can link $cf_nculib_root without $cf_ncurses_LIBS... $ECHO_C" >&6 + cf_ncurses_SAVE="$LIBS" + for p in $cf_ncurses_LIBS ; do + q=`echo $LIBS | sed -e "s%$p %%" -e "s%$p$%%"` + if test "$q" != "$LIBS" ; then + LIBS="$q" + fi + done + cat >conftest.$ac_ext <<_ACEOF +#line 17341 "configure" +#include "confdefs.h" +#include <${cf_cv_ncurses_header:-curses.h}> +int +main (void) +{ +initscr(); mousemask(0,0); tgoto((char *)0, 0, 0); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:17353: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:17356: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:17359: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:17362: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + echo "$as_me:17364: result: yes" >&5 +echo "${ECHO_T}yes" >&6 +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +echo "$as_me:17369: result: no" >&5 +echo "${ECHO_T}no" >&6 + LIBS="$cf_ncurses_SAVE" +fi +rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext +fi + +cf_nculib_ROOT=`echo "HAVE_LIB$cf_nculib_root" | sed y%abcdefghijklmnopqrstuvwxyz./-%ABCDEFGHIJKLMNOPQRSTUVWXYZ___%` + +cat >>confdefs.h <&5 +echo $ECHO_N "checking for X... $ECHO_C" >&6 + +# Check whether --with-x or --without-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 + if test "x$x_includes" != xNONE && test "x$x_libraries" != xNONE; then + # Both variables are already set. + have_x=yes + else + if test "${ac_cv_have_x+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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 -fr conftest.dir +if mkdir conftest.dir; then + cd conftest.dir + # Make sure to not put "make" in the Imakefile rules, since we grep it out. + cat >Imakefile <<'EOF' +acfindx: + @echo 'ac_im_incroot="${INCROOT}"; ac_im_usrlibdir="${USRLIBDIR}"; ac_im_libdir="${LIBDIR}"' +EOF + if (xmkmf) >/dev/null 2>/dev/null && test -f Makefile; then + # GNU make sometimes prints "make[1]: Entering...", which would confuse us. + eval `${MAKE-make} acfindx 2>/dev/null | grep -v make` + # Open Windows xmkmf reportedly sets LIBDIR instead of USRLIBDIR. + for ac_extension in a so sl dylib 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) ;; + *) test -f "$ac_im_incroot/X11/Xos.h" && ac_x_includes=$ac_im_incroot;; + esac + case $ac_im_usrlibdir in + /usr/lib | /lib) ;; + *) test -d "$ac_im_usrlibdir" && ac_x_libraries=$ac_im_usrlibdir ;; + esac + fi + cd .. + rm -fr conftest.dir +fi + +# Standard set of common directories for X headers. +# Check X11 before X11Rn because it is often a symlink to the current release. +ac_x_header_dirs=' +/usr/X11/include +/usr/X11R6/include +/usr/X11R5/include +/usr/X11R4/include + +/usr/include/X11 +/usr/include/X11R6 +/usr/include/X11R5 +/usr/include/X11R4 + +/usr/local/X11/include +/usr/local/X11R6/include +/usr/local/X11R5/include +/usr/local/X11R4/include + +/usr/local/include/X11 +/usr/local/include/X11R6 +/usr/local/include/X11R5 +/usr/local/include/X11R4 + +/usr/X386/include +/usr/x386/include +/usr/XFree86/include/X11 + +/usr/include +/usr/local/include +/usr/unsupported/include +/usr/athena/include +/usr/local/x11r5/include +/usr/lpp/Xamples/include + +/usr/openwin/include +/usr/openwin/share/include' + +if test "$ac_x_includes" = no; then + # Guess where to find include files, by looking for Intrinsic.h. + # First, try using that file with no special directory specified. + cat >conftest.$ac_ext <<_ACEOF +#line 17486 "configure" +#include "confdefs.h" +#include +_ACEOF +if { (eval echo "$as_me:17490: \"$ac_cpp conftest.$ac_ext\"") >&5 + (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 + ac_status=$? + egrep -v '^ *\+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:17496: \$? = $ac_status" >&5 + (exit $ac_status); } >/dev/null; then + if test -s conftest.err; then + ac_cpp_err=$ac_c_preproc_warn_flag + else + ac_cpp_err= + fi +else + ac_cpp_err=yes +fi +if test -z "$ac_cpp_err"; then + # We can compile using X headers with no special include directory. +ac_x_includes= +else + echo "$as_me: failed program was:" >&5 + cat conftest.$ac_ext >&5 + for ac_dir in $ac_x_header_dirs; do + if test -r "$ac_dir/X11/Intrinsic.h"; then + ac_x_includes=$ac_dir + break + fi +done +fi +rm -f conftest.err conftest.$ac_ext +fi # $ac_x_includes = no + +if test "$ac_x_libraries" = no; then + # Check for the libraries. + # See if we find them without any special options. + # Don't add to $LIBS permanently. + ac_save_LIBS=$LIBS + LIBS="-lXt $LIBS" + cat >conftest.$ac_ext <<_ACEOF +#line 17529 "configure" +#include "confdefs.h" +#include +int +main (void) +{ +XtMalloc (0) + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:17541: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:17544: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:17547: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:17550: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + LIBS=$ac_save_LIBS +# We can link X programs with no special library path. +ac_x_libraries= +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +LIBS=$ac_save_LIBS +for ac_dir in `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 dll; do + if test -r $ac_dir/libXt.$ac_extension; then + ac_x_libraries=$ac_dir + break 2 + fi + done +done +fi +rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext +fi # $ac_x_libraries = no + +if test "$ac_x_includes" = no || test "$ac_x_libraries" = no; then + # Didn't find X anywhere. Cache the known absence of X. + ac_cv_have_x="have_x=no" +else + # 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" +fi +fi + + fi + eval "$ac_cv_have_x" +fi # $with_x != no + +if test "$have_x" != yes; then + echo "$as_me:17588: result: $have_x" >&5 +echo "${ECHO_T}$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" + echo "$as_me:17598: result: libraries $x_libraries, headers $x_includes" >&5 +echo "${ECHO_T}libraries $x_libraries, headers $x_includes" >&6 +fi + +if test "$no_x" = yes; then + # Not all programs may use this symbol, but it does not hurt to define it. + +cat >>confdefs.h <<\EOF +#define X_DISPLAY_MISSING 1 +EOF + + X_CFLAGS= X_PRE_LIBS= X_LIBS= X_EXTRA_LIBS= +else + if test -n "$x_includes"; then + X_CFLAGS="$X_CFLAGS -I$x_includes" + fi + + # It would also be nice to do this for all -L options, not just this one. + if test -n "$x_libraries"; then + X_LIBS="$X_LIBS -L$x_libraries" + # For Solaris; some versions of Sun CC require a space after -R and + # others require no space. Words are not sufficient . . . . + case `(uname -sr) 2>/dev/null` in + "SunOS 5"*) + echo "$as_me:17622: checking whether -R must be followed by a space" >&5 +echo $ECHO_N "checking whether -R must be followed by a space... $ECHO_C" >&6 + ac_xsave_LIBS=$LIBS; LIBS="$LIBS -R$x_libraries" + cat >conftest.$ac_ext <<_ACEOF +#line 17626 "configure" +#include "confdefs.h" + +int +main (void) +{ + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:17638: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:17641: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:17644: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:17647: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_R_nospace=yes +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +ac_R_nospace=no +fi +rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext + if test $ac_R_nospace = yes; then + echo "$as_me:17657: result: no" >&5 +echo "${ECHO_T}no" >&6 + X_LIBS="$X_LIBS -R$x_libraries" + else + LIBS="$ac_xsave_LIBS -R $x_libraries" + cat >conftest.$ac_ext <<_ACEOF +#line 17663 "configure" +#include "confdefs.h" + +int +main (void) +{ + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:17675: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:17678: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:17681: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:17684: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_R_space=yes +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +ac_R_space=no +fi +rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext + if test $ac_R_space = yes; then + echo "$as_me:17694: result: yes" >&5 +echo "${ECHO_T}yes" >&6 + X_LIBS="$X_LIBS -R $x_libraries" + else + echo "$as_me:17698: result: neither works" >&5 +echo "${ECHO_T}neither works" >&6 + fi + fi + LIBS=$ac_xsave_LIBS + esac + fi + + # Check for system-dependent libraries X programs must link with. + # Do this before checking for the system-independent R6 libraries + # (-lICE), since we may need -lsocket or whatever for X linking. + + if test "$ISC" = yes; then + X_EXTRA_LIBS="$X_EXTRA_LIBS -lnsl_s -linet" + else + # Martyn Johnson says this is needed for Ultrix, if the X + # libraries were built with DECnet support. And Karl Berry says + # the Alpha needs dnet_stub (dnet does not exist). + ac_xsave_LIBS="$LIBS"; LIBS="$LIBS $X_LIBS -lX11" + cat >conftest.$ac_ext <<_ACEOF +#line 17718 "configure" +#include "confdefs.h" + +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char XOpenDisplay (); +int +main (void) +{ +XOpenDisplay (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:17737: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:17740: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:17743: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:17746: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + : +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +echo "$as_me:17752: checking for dnet_ntoa in -ldnet" >&5 +echo $ECHO_N "checking for dnet_ntoa in -ldnet... $ECHO_C" >&6 +if test "${ac_cv_lib_dnet_dnet_ntoa+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-ldnet $LIBS" +cat >conftest.$ac_ext <<_ACEOF +#line 17760 "configure" +#include "confdefs.h" + +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char dnet_ntoa (); +int +main (void) +{ +dnet_ntoa (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:17779: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:17782: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:17785: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:17788: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_lib_dnet_dnet_ntoa=yes +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +ac_cv_lib_dnet_dnet_ntoa=no +fi +rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +echo "$as_me:17799: result: $ac_cv_lib_dnet_dnet_ntoa" >&5 +echo "${ECHO_T}$ac_cv_lib_dnet_dnet_ntoa" >&6 +if test $ac_cv_lib_dnet_dnet_ntoa = yes; then + X_EXTRA_LIBS="$X_EXTRA_LIBS -ldnet" +fi + + if test $ac_cv_lib_dnet_dnet_ntoa = no; then + echo "$as_me:17806: checking for dnet_ntoa in -ldnet_stub" >&5 +echo $ECHO_N "checking for dnet_ntoa in -ldnet_stub... $ECHO_C" >&6 +if test "${ac_cv_lib_dnet_stub_dnet_ntoa+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-ldnet_stub $LIBS" +cat >conftest.$ac_ext <<_ACEOF +#line 17814 "configure" +#include "confdefs.h" + +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char dnet_ntoa (); +int +main (void) +{ +dnet_ntoa (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:17833: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:17836: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:17839: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:17842: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_lib_dnet_stub_dnet_ntoa=yes +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +ac_cv_lib_dnet_stub_dnet_ntoa=no +fi +rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +echo "$as_me:17853: result: $ac_cv_lib_dnet_stub_dnet_ntoa" >&5 +echo "${ECHO_T}$ac_cv_lib_dnet_stub_dnet_ntoa" >&6 +if test $ac_cv_lib_dnet_stub_dnet_ntoa = yes; then + X_EXTRA_LIBS="$X_EXTRA_LIBS -ldnet_stub" +fi + + fi +fi +rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext + LIBS="$ac_xsave_LIBS" + + # msh@cis.ufl.edu says -lnsl (and -lsocket) are needed for his 386/AT, + # to get the SysV transport functions. + # Chad R. Larson says the Pyramis MIS-ES running DC/OSx (SVR4) + # needs -lnsl. + # The nsl library prevents programs from opening the X display + # on Irix 5.2, according to T.E. Dickey. + # The functions gethostbyname, getservbyname, and inet_addr are + # in -lbsd on LynxOS 3.0.1/i386, according to Lars Hecking. + echo "$as_me:17872: checking for gethostbyname" >&5 +echo $ECHO_N "checking for gethostbyname... $ECHO_C" >&6 +if test "${ac_cv_func_gethostbyname+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +#line 17878 "configure" +#include "confdefs.h" +/* System header to define __stub macros and hopefully few prototypes, + which can conflict with char gethostbyname (); below. */ +#include +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char gethostbyname (); +char (*f) (); + +int +main (void) +{ +/* The GNU C library defines this for functions which it implements + to always fail with ENOSYS. Some functions are actually named + something starting with __ and the normal name is an alias. */ +#if defined (__stub_gethostbyname) || defined (__stub___gethostbyname) +choke me +#else +f = gethostbyname; /* workaround for ICC 12.0.3 */ if (f == 0) return 1; +#endif + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:17909: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:17912: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:17915: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:17918: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_func_gethostbyname=yes +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +ac_cv_func_gethostbyname=no +fi +rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext +fi +echo "$as_me:17928: result: $ac_cv_func_gethostbyname" >&5 +echo "${ECHO_T}$ac_cv_func_gethostbyname" >&6 + + if test $ac_cv_func_gethostbyname = no; then + echo "$as_me:17932: checking for gethostbyname in -lnsl" >&5 +echo $ECHO_N "checking for gethostbyname in -lnsl... $ECHO_C" >&6 +if test "${ac_cv_lib_nsl_gethostbyname+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-lnsl $LIBS" +cat >conftest.$ac_ext <<_ACEOF +#line 17940 "configure" +#include "confdefs.h" + +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char gethostbyname (); +int +main (void) +{ +gethostbyname (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:17959: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:17962: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:17965: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:17968: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_lib_nsl_gethostbyname=yes +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +ac_cv_lib_nsl_gethostbyname=no +fi +rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +echo "$as_me:17979: result: $ac_cv_lib_nsl_gethostbyname" >&5 +echo "${ECHO_T}$ac_cv_lib_nsl_gethostbyname" >&6 +if test $ac_cv_lib_nsl_gethostbyname = yes; then + X_EXTRA_LIBS="$X_EXTRA_LIBS -lnsl" +fi + + if test $ac_cv_lib_nsl_gethostbyname = no; then + echo "$as_me:17986: checking for gethostbyname in -lbsd" >&5 +echo $ECHO_N "checking for gethostbyname in -lbsd... $ECHO_C" >&6 +if test "${ac_cv_lib_bsd_gethostbyname+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-lbsd $LIBS" +cat >conftest.$ac_ext <<_ACEOF +#line 17994 "configure" +#include "confdefs.h" + +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char gethostbyname (); +int +main (void) +{ +gethostbyname (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:18013: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:18016: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:18019: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:18022: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_lib_bsd_gethostbyname=yes +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +ac_cv_lib_bsd_gethostbyname=no +fi +rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +echo "$as_me:18033: result: $ac_cv_lib_bsd_gethostbyname" >&5 +echo "${ECHO_T}$ac_cv_lib_bsd_gethostbyname" >&6 +if test $ac_cv_lib_bsd_gethostbyname = yes; then + X_EXTRA_LIBS="$X_EXTRA_LIBS -lbsd" +fi + + fi + fi + + # lieder@skyler.mavd.honeywell.com says without -lsocket, + # socket/setsockopt and other routines are undefined under SCO ODT + # 2.0. But -lsocket is broken on IRIX 5.2 (and is not necessary + # on later versions), says Simon Leinen: it contains gethostby* + # variants that don't use the nameserver (or something). -lsocket + # must be given before -lnsl if both are needed. We assume that + # if connect needs -lnsl, so does gethostbyname. + echo "$as_me:18049: checking for connect" >&5 +echo $ECHO_N "checking for connect... $ECHO_C" >&6 +if test "${ac_cv_func_connect+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +#line 18055 "configure" +#include "confdefs.h" +/* System header to define __stub macros and hopefully few prototypes, + which can conflict with char connect (); below. */ +#include +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char connect (); +char (*f) (); + +int +main (void) +{ +/* The GNU C library defines this for functions which it implements + to always fail with ENOSYS. Some functions are actually named + something starting with __ and the normal name is an alias. */ +#if defined (__stub_connect) || defined (__stub___connect) +choke me +#else +f = connect; /* workaround for ICC 12.0.3 */ if (f == 0) return 1; +#endif + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:18086: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:18089: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:18092: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:18095: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_func_connect=yes +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +ac_cv_func_connect=no +fi +rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext +fi +echo "$as_me:18105: result: $ac_cv_func_connect" >&5 +echo "${ECHO_T}$ac_cv_func_connect" >&6 + + if test $ac_cv_func_connect = no; then + echo "$as_me:18109: checking for connect in -lsocket" >&5 +echo $ECHO_N "checking for connect in -lsocket... $ECHO_C" >&6 +if test "${ac_cv_lib_socket_connect+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-lsocket $X_EXTRA_LIBS $LIBS" +cat >conftest.$ac_ext <<_ACEOF +#line 18117 "configure" +#include "confdefs.h" + +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char connect (); +int +main (void) +{ +connect (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:18136: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:18139: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:18142: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:18145: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_lib_socket_connect=yes +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +ac_cv_lib_socket_connect=no +fi +rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +echo "$as_me:18156: result: $ac_cv_lib_socket_connect" >&5 +echo "${ECHO_T}$ac_cv_lib_socket_connect" >&6 +if test $ac_cv_lib_socket_connect = yes; then + X_EXTRA_LIBS="-lsocket $X_EXTRA_LIBS" +fi + + fi + + # Guillermo Gomez says -lposix is necessary on A/UX. + echo "$as_me:18165: checking for remove" >&5 +echo $ECHO_N "checking for remove... $ECHO_C" >&6 +if test "${ac_cv_func_remove+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +#line 18171 "configure" +#include "confdefs.h" +/* System header to define __stub macros and hopefully few prototypes, + which can conflict with char remove (); below. */ +#include +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char remove (); +char (*f) (); + +int +main (void) +{ +/* The GNU C library defines this for functions which it implements + to always fail with ENOSYS. Some functions are actually named + something starting with __ and the normal name is an alias. */ +#if defined (__stub_remove) || defined (__stub___remove) +choke me +#else +f = remove; /* workaround for ICC 12.0.3 */ if (f == 0) return 1; +#endif + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:18202: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:18205: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:18208: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:18211: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_func_remove=yes +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +ac_cv_func_remove=no +fi +rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext +fi +echo "$as_me:18221: result: $ac_cv_func_remove" >&5 +echo "${ECHO_T}$ac_cv_func_remove" >&6 + + if test $ac_cv_func_remove = no; then + echo "$as_me:18225: checking for remove in -lposix" >&5 +echo $ECHO_N "checking for remove in -lposix... $ECHO_C" >&6 +if test "${ac_cv_lib_posix_remove+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-lposix $LIBS" +cat >conftest.$ac_ext <<_ACEOF +#line 18233 "configure" +#include "confdefs.h" + +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char remove (); +int +main (void) +{ +remove (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:18252: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:18255: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:18258: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:18261: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_lib_posix_remove=yes +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +ac_cv_lib_posix_remove=no +fi +rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +echo "$as_me:18272: result: $ac_cv_lib_posix_remove" >&5 +echo "${ECHO_T}$ac_cv_lib_posix_remove" >&6 +if test $ac_cv_lib_posix_remove = yes; then + X_EXTRA_LIBS="$X_EXTRA_LIBS -lposix" +fi + + fi + + # BSDI BSD/OS 2.1 needs -lipc for XOpenDisplay. + echo "$as_me:18281: checking for shmat" >&5 +echo $ECHO_N "checking for shmat... $ECHO_C" >&6 +if test "${ac_cv_func_shmat+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +#line 18287 "configure" +#include "confdefs.h" +/* System header to define __stub macros and hopefully few prototypes, + which can conflict with char shmat (); below. */ +#include +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char shmat (); +char (*f) (); + +int +main (void) +{ +/* The GNU C library defines this for functions which it implements + to always fail with ENOSYS. Some functions are actually named + something starting with __ and the normal name is an alias. */ +#if defined (__stub_shmat) || defined (__stub___shmat) +choke me +#else +f = shmat; /* workaround for ICC 12.0.3 */ if (f == 0) return 1; +#endif + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:18318: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:18321: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:18324: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:18327: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_func_shmat=yes +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +ac_cv_func_shmat=no +fi +rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext +fi +echo "$as_me:18337: result: $ac_cv_func_shmat" >&5 +echo "${ECHO_T}$ac_cv_func_shmat" >&6 + + if test $ac_cv_func_shmat = no; then + echo "$as_me:18341: checking for shmat in -lipc" >&5 +echo $ECHO_N "checking for shmat in -lipc... $ECHO_C" >&6 +if test "${ac_cv_lib_ipc_shmat+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-lipc $LIBS" +cat >conftest.$ac_ext <<_ACEOF +#line 18349 "configure" +#include "confdefs.h" + +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char shmat (); +int +main (void) +{ +shmat (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:18368: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:18371: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:18374: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:18377: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_lib_ipc_shmat=yes +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +ac_cv_lib_ipc_shmat=no +fi +rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +echo "$as_me:18388: result: $ac_cv_lib_ipc_shmat" >&5 +echo "${ECHO_T}$ac_cv_lib_ipc_shmat" >&6 +if test $ac_cv_lib_ipc_shmat = yes; then + X_EXTRA_LIBS="$X_EXTRA_LIBS -lipc" +fi + + fi + fi + + # Check for libraries that X11R6 Xt/Xaw programs need. + ac_save_LDFLAGS=$LDFLAGS + test -n "$x_libraries" && LDFLAGS="$LDFLAGS -L$x_libraries" + # SM needs ICE to (dynamically) link under SunOS 4.x (so we have to + # check for ICE first), but we must link in the order -lSM -lICE or + # we get undefined symbols. So assume we have SM if we have ICE. + # These have to be linked with before -lX11, unlike the other + # libraries we check for below, so use a different variable. + # John Interrante, Karl Berry + echo "$as_me:18406: checking for IceConnectionNumber in -lICE" >&5 +echo $ECHO_N "checking for IceConnectionNumber in -lICE... $ECHO_C" >&6 +if test "${ac_cv_lib_ICE_IceConnectionNumber+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-lICE $X_EXTRA_LIBS $LIBS" +cat >conftest.$ac_ext <<_ACEOF +#line 18414 "configure" +#include "confdefs.h" + +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char IceConnectionNumber (); +int +main (void) +{ +IceConnectionNumber (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:18433: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:18436: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:18439: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:18442: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_lib_ICE_IceConnectionNumber=yes +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +ac_cv_lib_ICE_IceConnectionNumber=no +fi +rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +echo "$as_me:18453: result: $ac_cv_lib_ICE_IceConnectionNumber" >&5 +echo "${ECHO_T}$ac_cv_lib_ICE_IceConnectionNumber" >&6 +if test $ac_cv_lib_ICE_IceConnectionNumber = yes; then + X_PRE_LIBS="$X_PRE_LIBS -lSM -lICE" +fi + + LDFLAGS=$ac_save_LDFLAGS + +fi + +cf_x_athena=${cf_x_athena:-Xaw} + +echo "$as_me:18465: checking if you want to link with Xaw 3d library" >&5 +echo $ECHO_N "checking if you want to link with Xaw 3d library... $ECHO_C" >&6 +withval= + +# Check whether --with-Xaw3d or --without-Xaw3d was given. +if test "${with_Xaw3d+set}" = set; then + withval="$with_Xaw3d" + +fi; +if test "$withval" = yes ; then + cf_x_athena=Xaw3d + echo "$as_me:18476: result: yes" >&5 +echo "${ECHO_T}yes" >&6 +else + echo "$as_me:18479: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + +echo "$as_me:18483: checking if you want to link with Xaw 3d xft library" >&5 +echo $ECHO_N "checking if you want to link with Xaw 3d xft library... $ECHO_C" >&6 +withval= + +# Check whether --with-Xaw3dxft or --without-Xaw3dxft was given. +if test "${with_Xaw3dxft+set}" = set; then + withval="$with_Xaw3dxft" + +fi; +if test "$withval" = yes ; then + cf_x_athena=Xaw3dxft + echo "$as_me:18494: result: yes" >&5 +echo "${ECHO_T}yes" >&6 +else + echo "$as_me:18497: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + +echo "$as_me:18501: checking if you want to link with neXT Athena library" >&5 +echo $ECHO_N "checking if you want to link with neXT Athena library... $ECHO_C" >&6 +withval= + +# Check whether --with-neXtaw or --without-neXtaw was given. +if test "${with_neXtaw+set}" = set; then + withval="$with_neXtaw" + +fi; +if test "$withval" = yes ; then + cf_x_athena=neXtaw + echo "$as_me:18512: result: yes" >&5 +echo "${ECHO_T}yes" >&6 +else + echo "$as_me:18515: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + +echo "$as_me:18519: checking if you want to link with Athena-Plus library" >&5 +echo $ECHO_N "checking if you want to link with Athena-Plus library... $ECHO_C" >&6 +withval= + +# Check whether --with-XawPlus or --without-XawPlus was given. +if test "${with_XawPlus+set}" = set; then + withval="$with_XawPlus" + +fi; +if test "$withval" = yes ; then + cf_x_athena=XawPlus + echo "$as_me:18530: result: yes" >&5 +echo "${ECHO_T}yes" >&6 +else + echo "$as_me:18533: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + +cf_x_athena_lib="" + +if test "$PKG_CONFIG" != none ; then + cf_athena_list= + test "$cf_x_athena" = Xaw && cf_athena_list="xaw8 xaw7 xaw6" + for cf_athena_pkg in \ + $cf_athena_list \ + ${cf_x_athena} \ + ${cf_x_athena}-devel \ + lib${cf_x_athena} \ + lib${cf_x_athena}-devel + do + +if test "$PKG_CONFIG" != none && "$PKG_CONFIG" --exists $cf_athena_pkg; then + test -n "$verbose" && echo " found package $cf_athena_pkg" 1>&6 + +echo "${as_me:-configure}:18553: testing found package $cf_athena_pkg ..." 1>&5 + + cf_pkgconfig_incs="`$PKG_CONFIG --cflags $cf_athena_pkg 2>/dev/null`" + cf_pkgconfig_libs="`$PKG_CONFIG --libs $cf_athena_pkg 2>/dev/null`" + test -n "$verbose" && echo " package $cf_athena_pkg CFLAGS: $cf_pkgconfig_incs" 1>&6 + +echo "${as_me:-configure}:18559: testing package $cf_athena_pkg CFLAGS: $cf_pkgconfig_incs ..." 1>&5 + + test -n "$verbose" && echo " package $cf_athena_pkg LIBS: $cf_pkgconfig_libs" 1>&6 + +echo "${as_me:-configure}:18563: testing package $cf_athena_pkg LIBS: $cf_pkgconfig_libs ..." 1>&5 + +cf_fix_cppflags=no +cf_new_cflags= +cf_new_cppflags= +cf_new_extra_cppflags= + +for cf_add_cflags in $cf_pkgconfig_incs +do +case $cf_fix_cppflags in +(no) + case $cf_add_cflags in + (-undef|-nostdinc*|-I*|-D*|-U*|-E|-P|-C) + case $cf_add_cflags in + (-D*) + cf_tst_cflags=`echo ${cf_add_cflags} |sed -e 's/^-D[^=]*='\''\"[^"]*//'` + + test "x${cf_add_cflags}" != "x${cf_tst_cflags}" \ + && test -z "${cf_tst_cflags}" \ + && cf_fix_cppflags=yes + + if test $cf_fix_cppflags = yes ; then + + test -n "$cf_new_extra_cppflags" && cf_new_extra_cppflags="$cf_new_extra_cppflags " + cf_new_extra_cppflags="${cf_new_extra_cppflags}$cf_add_cflags" + + continue + elif test "${cf_tst_cflags}" = "\"'" ; then + + test -n "$cf_new_extra_cppflags" && cf_new_extra_cppflags="$cf_new_extra_cppflags " + cf_new_extra_cppflags="${cf_new_extra_cppflags}$cf_add_cflags" + + continue + fi + ;; + esac + case "$CPPFLAGS" in + (*$cf_add_cflags) + ;; + (*) + case $cf_add_cflags in + (-D*) + cf_tst_cppflags=`echo "x$cf_add_cflags" | sed -e 's/^...//' -e 's/=.*//'` + +CPPFLAGS=`echo "$CPPFLAGS" | \ + sed -e 's/-[UD]'"$cf_tst_cppflags"'\(=[^ ]*\)\?[ ]/ /g' \ + -e 's/-[UD]'"$cf_tst_cppflags"'\(=[^ ]*\)\?$//g'` + + ;; + esac + + test -n "$cf_new_cppflags" && cf_new_cppflags="$cf_new_cppflags " + cf_new_cppflags="${cf_new_cppflags}$cf_add_cflags" + + ;; + esac + ;; + (*) + + test -n "$cf_new_cflags" && cf_new_cflags="$cf_new_cflags " + cf_new_cflags="${cf_new_cflags}$cf_add_cflags" + + ;; + esac + ;; +(yes) + + test -n "$cf_new_extra_cppflags" && cf_new_extra_cppflags="$cf_new_extra_cppflags " + cf_new_extra_cppflags="${cf_new_extra_cppflags}$cf_add_cflags" + + cf_tst_cflags=`echo ${cf_add_cflags} |sed -e 's/^[^"]*"'\''//'` + + test "x${cf_add_cflags}" != "x${cf_tst_cflags}" \ + && test -z "${cf_tst_cflags}" \ + && cf_fix_cppflags=no + ;; +esac +done + +if test -n "$cf_new_cflags" ; then + + test -n "$CFLAGS" && CFLAGS="$CFLAGS " + CFLAGS="${CFLAGS}$cf_new_cflags" + +fi + +if test -n "$cf_new_cppflags" ; then + + test -n "$CPPFLAGS" && CPPFLAGS="$CPPFLAGS " + CPPFLAGS="${CPPFLAGS}$cf_new_cppflags" + +fi + +if test -n "$cf_new_extra_cppflags" ; then + + test -n "$EXTRA_CPPFLAGS" && EXTRA_CPPFLAGS="$EXTRA_CPPFLAGS " + EXTRA_CPPFLAGS="${EXTRA_CPPFLAGS}$cf_new_extra_cppflags" + +fi + +cf_add_libs="$cf_pkgconfig_libs" +# Filter out duplicates - this happens with badly-designed ".pc" files... +for cf_add_1lib in $LIBS +do + for cf_add_2lib in $cf_add_libs + do + if test "x$cf_add_1lib" = "x$cf_add_2lib" + then + cf_add_1lib= + break + fi + done + test -n "$cf_add_1lib" && cf_add_libs="$cf_add_libs $cf_add_1lib" +done +LIBS="$cf_add_libs" + + cf_x_athena_lib="$cf_pkgconfig_libs" + +cf_x_athena_LIBS=`echo "HAVE_LIB_$cf_x_athena" | sed y%abcdefghijklmnopqrstuvwxyz./-%ABCDEFGHIJKLMNOPQRSTUVWXYZ___%` + + cat >>confdefs.h <&6 + +echo "${as_me:-configure}:18694: testing ..trimmed $LIBS ..." 1>&5 + + ;; + esac + done + +echo "$as_me:18700: checking for usable $cf_x_athena/Xmu package" >&5 +echo $ECHO_N "checking for usable $cf_x_athena/Xmu package... $ECHO_C" >&6 +if test "${cf_cv_xaw_compat+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + +cat >conftest.$ac_ext <<_ACEOF +#line 18707 "configure" +#include "confdefs.h" + +#include + +int +main (void) +{ + +int check = XmuCompareISOLatin1("big", "small") + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:18723: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:18726: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:18729: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:18732: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + cf_cv_xaw_compat=yes +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +cf_cv_xaw_compat=no +fi +rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext +fi +echo "$as_me:18742: result: $cf_cv_xaw_compat" >&5 +echo "${ECHO_T}$cf_cv_xaw_compat" >&6 + + if test "$cf_cv_xaw_compat" = no + then + # workaround for broken ".pc" files... + case "$cf_x_athena_lib" in + (*-lXmu*) + ;; + (*) + test -n "$verbose" && echo " work around broken package" 1>&6 + +echo "${as_me:-configure}:18754: testing work around broken package ..." 1>&5 + + cf_save_xmu="$LIBS" + cf_first_lib=`echo "$cf_save_xmu" | sed -e 's/^ *//' -e 's/ .*//'` + +if test "$PKG_CONFIG" != none && "$PKG_CONFIG" --exists xmu; then + test -n "$verbose" && echo " found package xmu" 1>&6 + +echo "${as_me:-configure}:18762: testing found package xmu ..." 1>&5 + + cf_pkgconfig_incs="`$PKG_CONFIG --cflags xmu 2>/dev/null`" + cf_pkgconfig_libs="`$PKG_CONFIG --libs xmu 2>/dev/null`" + test -n "$verbose" && echo " package xmu CFLAGS: $cf_pkgconfig_incs" 1>&6 + +echo "${as_me:-configure}:18768: testing package xmu CFLAGS: $cf_pkgconfig_incs ..." 1>&5 + + test -n "$verbose" && echo " package xmu LIBS: $cf_pkgconfig_libs" 1>&6 + +echo "${as_me:-configure}:18772: testing package xmu LIBS: $cf_pkgconfig_libs ..." 1>&5 + +cf_fix_cppflags=no +cf_new_cflags= +cf_new_cppflags= +cf_new_extra_cppflags= + +for cf_add_cflags in $cf_pkgconfig_incs +do +case $cf_fix_cppflags in +(no) + case $cf_add_cflags in + (-undef|-nostdinc*|-I*|-D*|-U*|-E|-P|-C) + case $cf_add_cflags in + (-D*) + cf_tst_cflags=`echo ${cf_add_cflags} |sed -e 's/^-D[^=]*='\''\"[^"]*//'` + + test "x${cf_add_cflags}" != "x${cf_tst_cflags}" \ + && test -z "${cf_tst_cflags}" \ + && cf_fix_cppflags=yes + + if test $cf_fix_cppflags = yes ; then + + test -n "$cf_new_extra_cppflags" && cf_new_extra_cppflags="$cf_new_extra_cppflags " + cf_new_extra_cppflags="${cf_new_extra_cppflags}$cf_add_cflags" + + continue + elif test "${cf_tst_cflags}" = "\"'" ; then + + test -n "$cf_new_extra_cppflags" && cf_new_extra_cppflags="$cf_new_extra_cppflags " + cf_new_extra_cppflags="${cf_new_extra_cppflags}$cf_add_cflags" + + continue + fi + ;; + esac + case "$CPPFLAGS" in + (*$cf_add_cflags) + ;; + (*) + case $cf_add_cflags in + (-D*) + cf_tst_cppflags=`echo "x$cf_add_cflags" | sed -e 's/^...//' -e 's/=.*//'` + +CPPFLAGS=`echo "$CPPFLAGS" | \ + sed -e 's/-[UD]'"$cf_tst_cppflags"'\(=[^ ]*\)\?[ ]/ /g' \ + -e 's/-[UD]'"$cf_tst_cppflags"'\(=[^ ]*\)\?$//g'` + + ;; + esac + + test -n "$cf_new_cppflags" && cf_new_cppflags="$cf_new_cppflags " + cf_new_cppflags="${cf_new_cppflags}$cf_add_cflags" + + ;; + esac + ;; + (*) + + test -n "$cf_new_cflags" && cf_new_cflags="$cf_new_cflags " + cf_new_cflags="${cf_new_cflags}$cf_add_cflags" + + ;; + esac + ;; +(yes) + + test -n "$cf_new_extra_cppflags" && cf_new_extra_cppflags="$cf_new_extra_cppflags " + cf_new_extra_cppflags="${cf_new_extra_cppflags}$cf_add_cflags" + + cf_tst_cflags=`echo ${cf_add_cflags} |sed -e 's/^[^"]*"'\''//'` + + test "x${cf_add_cflags}" != "x${cf_tst_cflags}" \ + && test -z "${cf_tst_cflags}" \ + && cf_fix_cppflags=no + ;; +esac +done + +if test -n "$cf_new_cflags" ; then + + test -n "$CFLAGS" && CFLAGS="$CFLAGS " + CFLAGS="${CFLAGS}$cf_new_cflags" + +fi + +if test -n "$cf_new_cppflags" ; then + + test -n "$CPPFLAGS" && CPPFLAGS="$CPPFLAGS " + CPPFLAGS="${CPPFLAGS}$cf_new_cppflags" + +fi + +if test -n "$cf_new_extra_cppflags" ; then + + test -n "$EXTRA_CPPFLAGS" && EXTRA_CPPFLAGS="$EXTRA_CPPFLAGS " + EXTRA_CPPFLAGS="${EXTRA_CPPFLAGS}$cf_new_extra_cppflags" + +fi + +cf_add_libs="$cf_pkgconfig_libs" +# Filter out duplicates - this happens with badly-designed ".pc" files... +for cf_add_1lib in $LIBS +do + for cf_add_2lib in $cf_add_libs + do + if test "x$cf_add_1lib" = "x$cf_add_2lib" + then + cf_add_1lib= + break + fi + done + test -n "$cf_add_1lib" && cf_add_libs="$cf_add_libs $cf_add_1lib" +done +LIBS="$cf_add_libs" + + LIBS="$cf_save_xmu" + +test -n "$verbose" && echo " ...before $LIBS" 1>&6 + +echo "${as_me:-configure}:18892: testing ...before $LIBS ..." 1>&5 + +LIBS=`echo "$LIBS" | sed -e "s/[ ][ ]*/ /g" -e "s%$cf_first_lib %$cf_first_lib $cf_pkgconfig_libs %" -e 's% % %g'` +test -n "$verbose" && echo " ...after $LIBS" 1>&6 + +echo "${as_me:-configure}:18897: testing ...after $LIBS ..." 1>&5 + +else + cf_pkgconfig_incs= + cf_pkgconfig_libs= + +test -n "$verbose" && echo " ...before $LIBS" 1>&6 + +echo "${as_me:-configure}:18905: testing ...before $LIBS ..." 1>&5 + +LIBS=`echo "$LIBS" | sed -e "s/[ ][ ]*/ /g" -e "s%$cf_first_lib %$cf_first_lib -lXmu %" -e 's% % %g'` +test -n "$verbose" && echo " ...after $LIBS" 1>&6 + +echo "${as_me:-configure}:18910: testing ...after $LIBS ..." 1>&5 + +fi + + for cf_trim_lib in Xmu Xt X11 + do + case "$LIBS" in + (*-l$cf_trim_lib\ *-l$cf_trim_lib*) + LIBS=`echo "$LIBS " | sed -e 's/ / /g' -e 's%-l'"$cf_trim_lib"' %%' -e 's/ $//'` + test -n "$verbose" && echo " ..trimmed $LIBS" 1>&6 + +echo "${as_me:-configure}:18921: testing ..trimmed $LIBS ..." 1>&5 + + ;; + esac + done + + ;; + esac + fi + + break +else + cf_pkgconfig_incs= + cf_pkgconfig_libs= + : +fi + + done +fi + +if test -z "$cf_x_athena_lib" ; then + +if test "$PKG_CONFIG" != none && "$PKG_CONFIG" --exists Xext; then + test -n "$verbose" && echo " found package Xext" 1>&6 + +echo "${as_me:-configure}:18946: testing found package Xext ..." 1>&5 + + cf_pkgconfig_incs="`$PKG_CONFIG --cflags Xext 2>/dev/null`" + cf_pkgconfig_libs="`$PKG_CONFIG --libs Xext 2>/dev/null`" + test -n "$verbose" && echo " package Xext CFLAGS: $cf_pkgconfig_incs" 1>&6 + +echo "${as_me:-configure}:18952: testing package Xext CFLAGS: $cf_pkgconfig_incs ..." 1>&5 + + test -n "$verbose" && echo " package Xext LIBS: $cf_pkgconfig_libs" 1>&6 + +echo "${as_me:-configure}:18956: testing package Xext LIBS: $cf_pkgconfig_libs ..." 1>&5 + +cf_fix_cppflags=no +cf_new_cflags= +cf_new_cppflags= +cf_new_extra_cppflags= + +for cf_add_cflags in $cf_pkgconfig_incs +do +case $cf_fix_cppflags in +(no) + case $cf_add_cflags in + (-undef|-nostdinc*|-I*|-D*|-U*|-E|-P|-C) + case $cf_add_cflags in + (-D*) + cf_tst_cflags=`echo ${cf_add_cflags} |sed -e 's/^-D[^=]*='\''\"[^"]*//'` + + test "x${cf_add_cflags}" != "x${cf_tst_cflags}" \ + && test -z "${cf_tst_cflags}" \ + && cf_fix_cppflags=yes + + if test $cf_fix_cppflags = yes ; then + + test -n "$cf_new_extra_cppflags" && cf_new_extra_cppflags="$cf_new_extra_cppflags " + cf_new_extra_cppflags="${cf_new_extra_cppflags}$cf_add_cflags" + + continue + elif test "${cf_tst_cflags}" = "\"'" ; then + + test -n "$cf_new_extra_cppflags" && cf_new_extra_cppflags="$cf_new_extra_cppflags " + cf_new_extra_cppflags="${cf_new_extra_cppflags}$cf_add_cflags" + + continue + fi + ;; + esac + case "$CPPFLAGS" in + (*$cf_add_cflags) + ;; + (*) + case $cf_add_cflags in + (-D*) + cf_tst_cppflags=`echo "x$cf_add_cflags" | sed -e 's/^...//' -e 's/=.*//'` + +CPPFLAGS=`echo "$CPPFLAGS" | \ + sed -e 's/-[UD]'"$cf_tst_cppflags"'\(=[^ ]*\)\?[ ]/ /g' \ + -e 's/-[UD]'"$cf_tst_cppflags"'\(=[^ ]*\)\?$//g'` + + ;; + esac + + test -n "$cf_new_cppflags" && cf_new_cppflags="$cf_new_cppflags " + cf_new_cppflags="${cf_new_cppflags}$cf_add_cflags" + + ;; + esac + ;; + (*) + + test -n "$cf_new_cflags" && cf_new_cflags="$cf_new_cflags " + cf_new_cflags="${cf_new_cflags}$cf_add_cflags" + + ;; + esac + ;; +(yes) + + test -n "$cf_new_extra_cppflags" && cf_new_extra_cppflags="$cf_new_extra_cppflags " + cf_new_extra_cppflags="${cf_new_extra_cppflags}$cf_add_cflags" + + cf_tst_cflags=`echo ${cf_add_cflags} |sed -e 's/^[^"]*"'\''//'` + + test "x${cf_add_cflags}" != "x${cf_tst_cflags}" \ + && test -z "${cf_tst_cflags}" \ + && cf_fix_cppflags=no + ;; +esac +done + +if test -n "$cf_new_cflags" ; then + + test -n "$CFLAGS" && CFLAGS="$CFLAGS " + CFLAGS="${CFLAGS}$cf_new_cflags" + +fi + +if test -n "$cf_new_cppflags" ; then + + test -n "$CPPFLAGS" && CPPFLAGS="$CPPFLAGS " + CPPFLAGS="${CPPFLAGS}$cf_new_cppflags" + +fi + +if test -n "$cf_new_extra_cppflags" ; then + + test -n "$EXTRA_CPPFLAGS" && EXTRA_CPPFLAGS="$EXTRA_CPPFLAGS " + EXTRA_CPPFLAGS="${EXTRA_CPPFLAGS}$cf_new_extra_cppflags" + +fi + +cf_add_libs="$cf_pkgconfig_libs" +# Filter out duplicates - this happens with badly-designed ".pc" files... +for cf_add_1lib in $LIBS +do + for cf_add_2lib in $cf_add_libs + do + if test "x$cf_add_1lib" = "x$cf_add_2lib" + then + cf_add_1lib= + break + fi + done + test -n "$cf_add_1lib" && cf_add_libs="$cf_add_libs $cf_add_1lib" +done +LIBS="$cf_add_libs" + + : +else + cf_pkgconfig_incs= + cf_pkgconfig_libs= + + echo "$as_me:19077: checking for XextCreateExtension in -lXext" >&5 +echo $ECHO_N "checking for XextCreateExtension in -lXext... $ECHO_C" >&6 +if test "${ac_cv_lib_Xext_XextCreateExtension+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-lXext $LIBS" +cat >conftest.$ac_ext <<_ACEOF +#line 19085 "configure" +#include "confdefs.h" + +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char XextCreateExtension (); +int +main (void) +{ +XextCreateExtension (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:19104: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:19107: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:19110: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:19113: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_lib_Xext_XextCreateExtension=yes +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +ac_cv_lib_Xext_XextCreateExtension=no +fi +rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +echo "$as_me:19124: result: $ac_cv_lib_Xext_XextCreateExtension" >&5 +echo "${ECHO_T}$ac_cv_lib_Xext_XextCreateExtension" >&6 +if test $ac_cv_lib_Xext_XextCreateExtension = yes; then + +cf_add_libs="-lXext" +# Filter out duplicates - this happens with badly-designed ".pc" files... +for cf_add_1lib in $LIBS +do + for cf_add_2lib in $cf_add_libs + do + if test "x$cf_add_1lib" = "x$cf_add_2lib" + then + cf_add_1lib= + break + fi + done + test -n "$cf_add_1lib" && cf_add_libs="$cf_add_libs $cf_add_1lib" +done +LIBS="$cf_add_libs" + +fi + +fi + +# OSX is schizoid about who owns /usr/X11 (old) versus /opt/X11 (new), and (and +# in some cases has installed dummy files in the former, other cases replaced +# it with a link to the new location). This complicates the configure script. +# Check for that pitfall, and recover using pkg-config +# +# If none of these are set, the configuration is almost certainly broken. +if test -z "${X_CFLAGS}${X_PRE_LIBS}${X_LIBS}${X_EXTRA_LIBS}" +then + +if test "$PKG_CONFIG" != none && "$PKG_CONFIG" --exists x11; then + test -n "$verbose" && echo " found package x11" 1>&6 + +echo "${as_me:-configure}:19160: testing found package x11 ..." 1>&5 + + cf_pkgconfig_incs="`$PKG_CONFIG --cflags x11 2>/dev/null`" + cf_pkgconfig_libs="`$PKG_CONFIG --libs x11 2>/dev/null`" + test -n "$verbose" && echo " package x11 CFLAGS: $cf_pkgconfig_incs" 1>&6 + +echo "${as_me:-configure}:19166: testing package x11 CFLAGS: $cf_pkgconfig_incs ..." 1>&5 + + test -n "$verbose" && echo " package x11 LIBS: $cf_pkgconfig_libs" 1>&6 + +echo "${as_me:-configure}:19170: testing package x11 LIBS: $cf_pkgconfig_libs ..." 1>&5 + +cf_fix_cppflags=no +cf_new_cflags= +cf_new_cppflags= +cf_new_extra_cppflags= + +for cf_add_cflags in $cf_pkgconfig_incs +do +case $cf_fix_cppflags in +(no) + case $cf_add_cflags in + (-undef|-nostdinc*|-I*|-D*|-U*|-E|-P|-C) + case $cf_add_cflags in + (-D*) + cf_tst_cflags=`echo ${cf_add_cflags} |sed -e 's/^-D[^=]*='\''\"[^"]*//'` + + test "x${cf_add_cflags}" != "x${cf_tst_cflags}" \ + && test -z "${cf_tst_cflags}" \ + && cf_fix_cppflags=yes + + if test $cf_fix_cppflags = yes ; then + + test -n "$cf_new_extra_cppflags" && cf_new_extra_cppflags="$cf_new_extra_cppflags " + cf_new_extra_cppflags="${cf_new_extra_cppflags}$cf_add_cflags" + + continue + elif test "${cf_tst_cflags}" = "\"'" ; then + + test -n "$cf_new_extra_cppflags" && cf_new_extra_cppflags="$cf_new_extra_cppflags " + cf_new_extra_cppflags="${cf_new_extra_cppflags}$cf_add_cflags" + + continue + fi + ;; + esac + case "$CPPFLAGS" in + (*$cf_add_cflags) + ;; + (*) + case $cf_add_cflags in + (-D*) + cf_tst_cppflags=`echo "x$cf_add_cflags" | sed -e 's/^...//' -e 's/=.*//'` + +CPPFLAGS=`echo "$CPPFLAGS" | \ + sed -e 's/-[UD]'"$cf_tst_cppflags"'\(=[^ ]*\)\?[ ]/ /g' \ + -e 's/-[UD]'"$cf_tst_cppflags"'\(=[^ ]*\)\?$//g'` + + ;; + esac + + test -n "$cf_new_cppflags" && cf_new_cppflags="$cf_new_cppflags " + cf_new_cppflags="${cf_new_cppflags}$cf_add_cflags" + + ;; + esac + ;; + (*) + + test -n "$cf_new_cflags" && cf_new_cflags="$cf_new_cflags " + cf_new_cflags="${cf_new_cflags}$cf_add_cflags" + + ;; + esac + ;; +(yes) + + test -n "$cf_new_extra_cppflags" && cf_new_extra_cppflags="$cf_new_extra_cppflags " + cf_new_extra_cppflags="${cf_new_extra_cppflags}$cf_add_cflags" + + cf_tst_cflags=`echo ${cf_add_cflags} |sed -e 's/^[^"]*"'\''//'` + + test "x${cf_add_cflags}" != "x${cf_tst_cflags}" \ + && test -z "${cf_tst_cflags}" \ + && cf_fix_cppflags=no + ;; +esac +done + +if test -n "$cf_new_cflags" ; then + + test -n "$CFLAGS" && CFLAGS="$CFLAGS " + CFLAGS="${CFLAGS}$cf_new_cflags" + +fi + +if test -n "$cf_new_cppflags" ; then + + test -n "$CPPFLAGS" && CPPFLAGS="$CPPFLAGS " + CPPFLAGS="${CPPFLAGS}$cf_new_cppflags" + +fi + +if test -n "$cf_new_extra_cppflags" ; then + + test -n "$EXTRA_CPPFLAGS" && EXTRA_CPPFLAGS="$EXTRA_CPPFLAGS " + EXTRA_CPPFLAGS="${EXTRA_CPPFLAGS}$cf_new_extra_cppflags" + +fi + +cf_add_libs="$cf_pkgconfig_libs" +# Filter out duplicates - this happens with badly-designed ".pc" files... +for cf_add_1lib in $LIBS +do + for cf_add_2lib in $cf_add_libs + do + if test "x$cf_add_1lib" = "x$cf_add_2lib" + then + cf_add_1lib= + break + fi + done + test -n "$cf_add_1lib" && cf_add_libs="$cf_add_libs $cf_add_1lib" +done +LIBS="$cf_add_libs" + + : +else + cf_pkgconfig_incs= + cf_pkgconfig_libs= + { echo "$as_me:19290: WARNING: unable to find X11 library" >&5 +echo "$as_me: WARNING: unable to find X11 library" >&2;} +fi + +if test "$PKG_CONFIG" != none && "$PKG_CONFIG" --exists ice; then + test -n "$verbose" && echo " found package ice" 1>&6 + +echo "${as_me:-configure}:19297: testing found package ice ..." 1>&5 + + cf_pkgconfig_incs="`$PKG_CONFIG --cflags ice 2>/dev/null`" + cf_pkgconfig_libs="`$PKG_CONFIG --libs ice 2>/dev/null`" + test -n "$verbose" && echo " package ice CFLAGS: $cf_pkgconfig_incs" 1>&6 + +echo "${as_me:-configure}:19303: testing package ice CFLAGS: $cf_pkgconfig_incs ..." 1>&5 + + test -n "$verbose" && echo " package ice LIBS: $cf_pkgconfig_libs" 1>&6 + +echo "${as_me:-configure}:19307: testing package ice LIBS: $cf_pkgconfig_libs ..." 1>&5 + +cf_fix_cppflags=no +cf_new_cflags= +cf_new_cppflags= +cf_new_extra_cppflags= + +for cf_add_cflags in $cf_pkgconfig_incs +do +case $cf_fix_cppflags in +(no) + case $cf_add_cflags in + (-undef|-nostdinc*|-I*|-D*|-U*|-E|-P|-C) + case $cf_add_cflags in + (-D*) + cf_tst_cflags=`echo ${cf_add_cflags} |sed -e 's/^-D[^=]*='\''\"[^"]*//'` + + test "x${cf_add_cflags}" != "x${cf_tst_cflags}" \ + && test -z "${cf_tst_cflags}" \ + && cf_fix_cppflags=yes + + if test $cf_fix_cppflags = yes ; then + + test -n "$cf_new_extra_cppflags" && cf_new_extra_cppflags="$cf_new_extra_cppflags " + cf_new_extra_cppflags="${cf_new_extra_cppflags}$cf_add_cflags" + + continue + elif test "${cf_tst_cflags}" = "\"'" ; then + + test -n "$cf_new_extra_cppflags" && cf_new_extra_cppflags="$cf_new_extra_cppflags " + cf_new_extra_cppflags="${cf_new_extra_cppflags}$cf_add_cflags" + + continue + fi + ;; + esac + case "$CPPFLAGS" in + (*$cf_add_cflags) + ;; + (*) + case $cf_add_cflags in + (-D*) + cf_tst_cppflags=`echo "x$cf_add_cflags" | sed -e 's/^...//' -e 's/=.*//'` + +CPPFLAGS=`echo "$CPPFLAGS" | \ + sed -e 's/-[UD]'"$cf_tst_cppflags"'\(=[^ ]*\)\?[ ]/ /g' \ + -e 's/-[UD]'"$cf_tst_cppflags"'\(=[^ ]*\)\?$//g'` + + ;; + esac + + test -n "$cf_new_cppflags" && cf_new_cppflags="$cf_new_cppflags " + cf_new_cppflags="${cf_new_cppflags}$cf_add_cflags" + + ;; + esac + ;; + (*) + + test -n "$cf_new_cflags" && cf_new_cflags="$cf_new_cflags " + cf_new_cflags="${cf_new_cflags}$cf_add_cflags" + + ;; + esac + ;; +(yes) + + test -n "$cf_new_extra_cppflags" && cf_new_extra_cppflags="$cf_new_extra_cppflags " + cf_new_extra_cppflags="${cf_new_extra_cppflags}$cf_add_cflags" + + cf_tst_cflags=`echo ${cf_add_cflags} |sed -e 's/^[^"]*"'\''//'` + + test "x${cf_add_cflags}" != "x${cf_tst_cflags}" \ + && test -z "${cf_tst_cflags}" \ + && cf_fix_cppflags=no + ;; +esac +done + +if test -n "$cf_new_cflags" ; then + + test -n "$CFLAGS" && CFLAGS="$CFLAGS " + CFLAGS="${CFLAGS}$cf_new_cflags" + +fi + +if test -n "$cf_new_cppflags" ; then + + test -n "$CPPFLAGS" && CPPFLAGS="$CPPFLAGS " + CPPFLAGS="${CPPFLAGS}$cf_new_cppflags" + +fi + +if test -n "$cf_new_extra_cppflags" ; then + + test -n "$EXTRA_CPPFLAGS" && EXTRA_CPPFLAGS="$EXTRA_CPPFLAGS " + EXTRA_CPPFLAGS="${EXTRA_CPPFLAGS}$cf_new_extra_cppflags" + +fi + +cf_add_libs="$cf_pkgconfig_libs" +# Filter out duplicates - this happens with badly-designed ".pc" files... +for cf_add_1lib in $LIBS +do + for cf_add_2lib in $cf_add_libs + do + if test "x$cf_add_1lib" = "x$cf_add_2lib" + then + cf_add_1lib= + break + fi + done + test -n "$cf_add_1lib" && cf_add_libs="$cf_add_libs $cf_add_1lib" +done +LIBS="$cf_add_libs" + + : +else + cf_pkgconfig_incs= + cf_pkgconfig_libs= + { echo "$as_me:19427: WARNING: unable to find ICE library" >&5 +echo "$as_me: WARNING: unable to find ICE library" >&2;} +fi + +if test "$PKG_CONFIG" != none && "$PKG_CONFIG" --exists sm; then + test -n "$verbose" && echo " found package sm" 1>&6 + +echo "${as_me:-configure}:19434: testing found package sm ..." 1>&5 + + cf_pkgconfig_incs="`$PKG_CONFIG --cflags sm 2>/dev/null`" + cf_pkgconfig_libs="`$PKG_CONFIG --libs sm 2>/dev/null`" + test -n "$verbose" && echo " package sm CFLAGS: $cf_pkgconfig_incs" 1>&6 + +echo "${as_me:-configure}:19440: testing package sm CFLAGS: $cf_pkgconfig_incs ..." 1>&5 + + test -n "$verbose" && echo " package sm LIBS: $cf_pkgconfig_libs" 1>&6 + +echo "${as_me:-configure}:19444: testing package sm LIBS: $cf_pkgconfig_libs ..." 1>&5 + +cf_fix_cppflags=no +cf_new_cflags= +cf_new_cppflags= +cf_new_extra_cppflags= + +for cf_add_cflags in $cf_pkgconfig_incs +do +case $cf_fix_cppflags in +(no) + case $cf_add_cflags in + (-undef|-nostdinc*|-I*|-D*|-U*|-E|-P|-C) + case $cf_add_cflags in + (-D*) + cf_tst_cflags=`echo ${cf_add_cflags} |sed -e 's/^-D[^=]*='\''\"[^"]*//'` + + test "x${cf_add_cflags}" != "x${cf_tst_cflags}" \ + && test -z "${cf_tst_cflags}" \ + && cf_fix_cppflags=yes + + if test $cf_fix_cppflags = yes ; then + + test -n "$cf_new_extra_cppflags" && cf_new_extra_cppflags="$cf_new_extra_cppflags " + cf_new_extra_cppflags="${cf_new_extra_cppflags}$cf_add_cflags" + + continue + elif test "${cf_tst_cflags}" = "\"'" ; then + + test -n "$cf_new_extra_cppflags" && cf_new_extra_cppflags="$cf_new_extra_cppflags " + cf_new_extra_cppflags="${cf_new_extra_cppflags}$cf_add_cflags" + + continue + fi + ;; + esac + case "$CPPFLAGS" in + (*$cf_add_cflags) + ;; + (*) + case $cf_add_cflags in + (-D*) + cf_tst_cppflags=`echo "x$cf_add_cflags" | sed -e 's/^...//' -e 's/=.*//'` + +CPPFLAGS=`echo "$CPPFLAGS" | \ + sed -e 's/-[UD]'"$cf_tst_cppflags"'\(=[^ ]*\)\?[ ]/ /g' \ + -e 's/-[UD]'"$cf_tst_cppflags"'\(=[^ ]*\)\?$//g'` + + ;; + esac + + test -n "$cf_new_cppflags" && cf_new_cppflags="$cf_new_cppflags " + cf_new_cppflags="${cf_new_cppflags}$cf_add_cflags" + + ;; + esac + ;; + (*) + + test -n "$cf_new_cflags" && cf_new_cflags="$cf_new_cflags " + cf_new_cflags="${cf_new_cflags}$cf_add_cflags" + + ;; + esac + ;; +(yes) + + test -n "$cf_new_extra_cppflags" && cf_new_extra_cppflags="$cf_new_extra_cppflags " + cf_new_extra_cppflags="${cf_new_extra_cppflags}$cf_add_cflags" + + cf_tst_cflags=`echo ${cf_add_cflags} |sed -e 's/^[^"]*"'\''//'` + + test "x${cf_add_cflags}" != "x${cf_tst_cflags}" \ + && test -z "${cf_tst_cflags}" \ + && cf_fix_cppflags=no + ;; +esac +done + +if test -n "$cf_new_cflags" ; then + + test -n "$CFLAGS" && CFLAGS="$CFLAGS " + CFLAGS="${CFLAGS}$cf_new_cflags" + +fi + +if test -n "$cf_new_cppflags" ; then + + test -n "$CPPFLAGS" && CPPFLAGS="$CPPFLAGS " + CPPFLAGS="${CPPFLAGS}$cf_new_cppflags" + +fi + +if test -n "$cf_new_extra_cppflags" ; then + + test -n "$EXTRA_CPPFLAGS" && EXTRA_CPPFLAGS="$EXTRA_CPPFLAGS " + EXTRA_CPPFLAGS="${EXTRA_CPPFLAGS}$cf_new_extra_cppflags" + +fi + +cf_add_libs="$cf_pkgconfig_libs" +# Filter out duplicates - this happens with badly-designed ".pc" files... +for cf_add_1lib in $LIBS +do + for cf_add_2lib in $cf_add_libs + do + if test "x$cf_add_1lib" = "x$cf_add_2lib" + then + cf_add_1lib= + break + fi + done + test -n "$cf_add_1lib" && cf_add_libs="$cf_add_libs $cf_add_1lib" +done +LIBS="$cf_add_libs" + + : +else + cf_pkgconfig_incs= + cf_pkgconfig_libs= + { echo "$as_me:19564: WARNING: unable to find SM library" >&5 +echo "$as_me: WARNING: unable to find SM library" >&2;} +fi + +if test "$PKG_CONFIG" != none && "$PKG_CONFIG" --exists xt; then + test -n "$verbose" && echo " found package xt" 1>&6 + +echo "${as_me:-configure}:19571: testing found package xt ..." 1>&5 + + cf_pkgconfig_incs="`$PKG_CONFIG --cflags xt 2>/dev/null`" + cf_pkgconfig_libs="`$PKG_CONFIG --libs xt 2>/dev/null`" + test -n "$verbose" && echo " package xt CFLAGS: $cf_pkgconfig_incs" 1>&6 + +echo "${as_me:-configure}:19577: testing package xt CFLAGS: $cf_pkgconfig_incs ..." 1>&5 + + test -n "$verbose" && echo " package xt LIBS: $cf_pkgconfig_libs" 1>&6 + +echo "${as_me:-configure}:19581: testing package xt LIBS: $cf_pkgconfig_libs ..." 1>&5 + +cf_fix_cppflags=no +cf_new_cflags= +cf_new_cppflags= +cf_new_extra_cppflags= + +for cf_add_cflags in $cf_pkgconfig_incs +do +case $cf_fix_cppflags in +(no) + case $cf_add_cflags in + (-undef|-nostdinc*|-I*|-D*|-U*|-E|-P|-C) + case $cf_add_cflags in + (-D*) + cf_tst_cflags=`echo ${cf_add_cflags} |sed -e 's/^-D[^=]*='\''\"[^"]*//'` + + test "x${cf_add_cflags}" != "x${cf_tst_cflags}" \ + && test -z "${cf_tst_cflags}" \ + && cf_fix_cppflags=yes + + if test $cf_fix_cppflags = yes ; then + + test -n "$cf_new_extra_cppflags" && cf_new_extra_cppflags="$cf_new_extra_cppflags " + cf_new_extra_cppflags="${cf_new_extra_cppflags}$cf_add_cflags" + + continue + elif test "${cf_tst_cflags}" = "\"'" ; then + + test -n "$cf_new_extra_cppflags" && cf_new_extra_cppflags="$cf_new_extra_cppflags " + cf_new_extra_cppflags="${cf_new_extra_cppflags}$cf_add_cflags" + + continue + fi + ;; + esac + case "$CPPFLAGS" in + (*$cf_add_cflags) + ;; + (*) + case $cf_add_cflags in + (-D*) + cf_tst_cppflags=`echo "x$cf_add_cflags" | sed -e 's/^...//' -e 's/=.*//'` + +CPPFLAGS=`echo "$CPPFLAGS" | \ + sed -e 's/-[UD]'"$cf_tst_cppflags"'\(=[^ ]*\)\?[ ]/ /g' \ + -e 's/-[UD]'"$cf_tst_cppflags"'\(=[^ ]*\)\?$//g'` + + ;; + esac + + test -n "$cf_new_cppflags" && cf_new_cppflags="$cf_new_cppflags " + cf_new_cppflags="${cf_new_cppflags}$cf_add_cflags" + + ;; + esac + ;; + (*) + + test -n "$cf_new_cflags" && cf_new_cflags="$cf_new_cflags " + cf_new_cflags="${cf_new_cflags}$cf_add_cflags" + + ;; + esac + ;; +(yes) + + test -n "$cf_new_extra_cppflags" && cf_new_extra_cppflags="$cf_new_extra_cppflags " + cf_new_extra_cppflags="${cf_new_extra_cppflags}$cf_add_cflags" + + cf_tst_cflags=`echo ${cf_add_cflags} |sed -e 's/^[^"]*"'\''//'` + + test "x${cf_add_cflags}" != "x${cf_tst_cflags}" \ + && test -z "${cf_tst_cflags}" \ + && cf_fix_cppflags=no + ;; +esac +done + +if test -n "$cf_new_cflags" ; then + + test -n "$CFLAGS" && CFLAGS="$CFLAGS " + CFLAGS="${CFLAGS}$cf_new_cflags" + +fi + +if test -n "$cf_new_cppflags" ; then + + test -n "$CPPFLAGS" && CPPFLAGS="$CPPFLAGS " + CPPFLAGS="${CPPFLAGS}$cf_new_cppflags" + +fi + +if test -n "$cf_new_extra_cppflags" ; then + + test -n "$EXTRA_CPPFLAGS" && EXTRA_CPPFLAGS="$EXTRA_CPPFLAGS " + EXTRA_CPPFLAGS="${EXTRA_CPPFLAGS}$cf_new_extra_cppflags" + +fi + +cf_add_libs="$cf_pkgconfig_libs" +# Filter out duplicates - this happens with badly-designed ".pc" files... +for cf_add_1lib in $LIBS +do + for cf_add_2lib in $cf_add_libs + do + if test "x$cf_add_1lib" = "x$cf_add_2lib" + then + cf_add_1lib= + break + fi + done + test -n "$cf_add_1lib" && cf_add_libs="$cf_add_libs $cf_add_1lib" +done +LIBS="$cf_add_libs" + + : +else + cf_pkgconfig_incs= + cf_pkgconfig_libs= + { echo "$as_me:19701: WARNING: unable to find Xt library" >&5 +echo "$as_me: WARNING: unable to find Xt library" >&2;} +fi + +fi + +cf_have_X_LIBS=no + +if test "$PKG_CONFIG" != none && "$PKG_CONFIG" --exists xt; then + test -n "$verbose" && echo " found package xt" 1>&6 + +echo "${as_me:-configure}:19712: testing found package xt ..." 1>&5 + + cf_pkgconfig_incs="`$PKG_CONFIG --cflags xt 2>/dev/null`" + cf_pkgconfig_libs="`$PKG_CONFIG --libs xt 2>/dev/null`" + test -n "$verbose" && echo " package xt CFLAGS: $cf_pkgconfig_incs" 1>&6 + +echo "${as_me:-configure}:19718: testing package xt CFLAGS: $cf_pkgconfig_incs ..." 1>&5 + + test -n "$verbose" && echo " package xt LIBS: $cf_pkgconfig_libs" 1>&6 + +echo "${as_me:-configure}:19722: testing package xt LIBS: $cf_pkgconfig_libs ..." 1>&5 + +cf_fix_cppflags=no +cf_new_cflags= +cf_new_cppflags= +cf_new_extra_cppflags= + +for cf_add_cflags in $cf_pkgconfig_incs +do +case $cf_fix_cppflags in +(no) + case $cf_add_cflags in + (-undef|-nostdinc*|-I*|-D*|-U*|-E|-P|-C) + case $cf_add_cflags in + (-D*) + cf_tst_cflags=`echo ${cf_add_cflags} |sed -e 's/^-D[^=]*='\''\"[^"]*//'` + + test "x${cf_add_cflags}" != "x${cf_tst_cflags}" \ + && test -z "${cf_tst_cflags}" \ + && cf_fix_cppflags=yes + + if test $cf_fix_cppflags = yes ; then + + test -n "$cf_new_extra_cppflags" && cf_new_extra_cppflags="$cf_new_extra_cppflags " + cf_new_extra_cppflags="${cf_new_extra_cppflags}$cf_add_cflags" + + continue + elif test "${cf_tst_cflags}" = "\"'" ; then + + test -n "$cf_new_extra_cppflags" && cf_new_extra_cppflags="$cf_new_extra_cppflags " + cf_new_extra_cppflags="${cf_new_extra_cppflags}$cf_add_cflags" + + continue + fi + ;; + esac + case "$CPPFLAGS" in + (*$cf_add_cflags) + ;; + (*) + case $cf_add_cflags in + (-D*) + cf_tst_cppflags=`echo "x$cf_add_cflags" | sed -e 's/^...//' -e 's/=.*//'` + +CPPFLAGS=`echo "$CPPFLAGS" | \ + sed -e 's/-[UD]'"$cf_tst_cppflags"'\(=[^ ]*\)\?[ ]/ /g' \ + -e 's/-[UD]'"$cf_tst_cppflags"'\(=[^ ]*\)\?$//g'` + + ;; + esac + + test -n "$cf_new_cppflags" && cf_new_cppflags="$cf_new_cppflags " + cf_new_cppflags="${cf_new_cppflags}$cf_add_cflags" + + ;; + esac + ;; + (*) + + test -n "$cf_new_cflags" && cf_new_cflags="$cf_new_cflags " + cf_new_cflags="${cf_new_cflags}$cf_add_cflags" + + ;; + esac + ;; +(yes) + + test -n "$cf_new_extra_cppflags" && cf_new_extra_cppflags="$cf_new_extra_cppflags " + cf_new_extra_cppflags="${cf_new_extra_cppflags}$cf_add_cflags" + + cf_tst_cflags=`echo ${cf_add_cflags} |sed -e 's/^[^"]*"'\''//'` + + test "x${cf_add_cflags}" != "x${cf_tst_cflags}" \ + && test -z "${cf_tst_cflags}" \ + && cf_fix_cppflags=no + ;; +esac +done + +if test -n "$cf_new_cflags" ; then + + test -n "$CFLAGS" && CFLAGS="$CFLAGS " + CFLAGS="${CFLAGS}$cf_new_cflags" + +fi + +if test -n "$cf_new_cppflags" ; then + + test -n "$CPPFLAGS" && CPPFLAGS="$CPPFLAGS " + CPPFLAGS="${CPPFLAGS}$cf_new_cppflags" + +fi + +if test -n "$cf_new_extra_cppflags" ; then + + test -n "$EXTRA_CPPFLAGS" && EXTRA_CPPFLAGS="$EXTRA_CPPFLAGS " + EXTRA_CPPFLAGS="${EXTRA_CPPFLAGS}$cf_new_extra_cppflags" + +fi + +cf_add_libs="$cf_pkgconfig_libs" +# Filter out duplicates - this happens with badly-designed ".pc" files... +for cf_add_1lib in $LIBS +do + for cf_add_2lib in $cf_add_libs + do + if test "x$cf_add_1lib" = "x$cf_add_2lib" + then + cf_add_1lib= + break + fi + done + test -n "$cf_add_1lib" && cf_add_libs="$cf_add_libs $cf_add_1lib" +done +LIBS="$cf_add_libs" + + case "x$LIBS" in + (*-lX11*) + ;; + (*) +# we have an "xt" package, but it may omit Xt's dependency on X11 +echo "$as_me:19843: checking for usable X dependency" >&5 +echo $ECHO_N "checking for usable X dependency... $ECHO_C" >&6 +if test "${cf_cv_xt_x11_compat+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + +cat >conftest.$ac_ext <<_ACEOF +#line 19850 "configure" +#include "confdefs.h" + +#include + +int +main (void) +{ + + int rc1 = XDrawLine((Display*) 0, (Drawable) 0, (GC) 0, 0, 0, 0, 0); + int rc2 = XClearWindow((Display*) 0, (Window) 0); + int rc3 = XMoveWindow((Display*) 0, (Window) 0, 0, 0); + int rc4 = XMoveResizeWindow((Display*)0, (Window)0, 0, 0, 0, 0); + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:19869: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:19872: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:19875: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:19878: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + cf_cv_xt_x11_compat=yes +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +cf_cv_xt_x11_compat=no +fi +rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext +fi +echo "$as_me:19888: result: $cf_cv_xt_x11_compat" >&5 +echo "${ECHO_T}$cf_cv_xt_x11_compat" >&6 + if test "$cf_cv_xt_x11_compat" = no + then + test -n "$verbose" && echo " work around broken X11 dependency" 1>&6 + +echo "${as_me:-configure}:19894: testing work around broken X11 dependency ..." 1>&5 + + # 2010/11/19 - good enough until a working Xt on Xcb is delivered. + +if test "$PKG_CONFIG" != none && "$PKG_CONFIG" --exists x11; then + test -n "$verbose" && echo " found package x11" 1>&6 + +echo "${as_me:-configure}:19901: testing found package x11 ..." 1>&5 + + cf_pkgconfig_incs="`$PKG_CONFIG --cflags x11 2>/dev/null`" + cf_pkgconfig_libs="`$PKG_CONFIG --libs x11 2>/dev/null`" + test -n "$verbose" && echo " package x11 CFLAGS: $cf_pkgconfig_incs" 1>&6 + +echo "${as_me:-configure}:19907: testing package x11 CFLAGS: $cf_pkgconfig_incs ..." 1>&5 + + test -n "$verbose" && echo " package x11 LIBS: $cf_pkgconfig_libs" 1>&6 + +echo "${as_me:-configure}:19911: testing package x11 LIBS: $cf_pkgconfig_libs ..." 1>&5 + +cf_fix_cppflags=no +cf_new_cflags= +cf_new_cppflags= +cf_new_extra_cppflags= + +for cf_add_cflags in $cf_pkgconfig_incs +do +case $cf_fix_cppflags in +(no) + case $cf_add_cflags in + (-undef|-nostdinc*|-I*|-D*|-U*|-E|-P|-C) + case $cf_add_cflags in + (-D*) + cf_tst_cflags=`echo ${cf_add_cflags} |sed -e 's/^-D[^=]*='\''\"[^"]*//'` + + test "x${cf_add_cflags}" != "x${cf_tst_cflags}" \ + && test -z "${cf_tst_cflags}" \ + && cf_fix_cppflags=yes + + if test $cf_fix_cppflags = yes ; then + + test -n "$cf_new_extra_cppflags" && cf_new_extra_cppflags="$cf_new_extra_cppflags " + cf_new_extra_cppflags="${cf_new_extra_cppflags}$cf_add_cflags" + + continue + elif test "${cf_tst_cflags}" = "\"'" ; then + + test -n "$cf_new_extra_cppflags" && cf_new_extra_cppflags="$cf_new_extra_cppflags " + cf_new_extra_cppflags="${cf_new_extra_cppflags}$cf_add_cflags" + + continue + fi + ;; + esac + case "$CPPFLAGS" in + (*$cf_add_cflags) + ;; + (*) + case $cf_add_cflags in + (-D*) + cf_tst_cppflags=`echo "x$cf_add_cflags" | sed -e 's/^...//' -e 's/=.*//'` + +CPPFLAGS=`echo "$CPPFLAGS" | \ + sed -e 's/-[UD]'"$cf_tst_cppflags"'\(=[^ ]*\)\?[ ]/ /g' \ + -e 's/-[UD]'"$cf_tst_cppflags"'\(=[^ ]*\)\?$//g'` + + ;; + esac + + test -n "$cf_new_cppflags" && cf_new_cppflags="$cf_new_cppflags " + cf_new_cppflags="${cf_new_cppflags}$cf_add_cflags" + + ;; + esac + ;; + (*) + + test -n "$cf_new_cflags" && cf_new_cflags="$cf_new_cflags " + cf_new_cflags="${cf_new_cflags}$cf_add_cflags" + + ;; + esac + ;; +(yes) + + test -n "$cf_new_extra_cppflags" && cf_new_extra_cppflags="$cf_new_extra_cppflags " + cf_new_extra_cppflags="${cf_new_extra_cppflags}$cf_add_cflags" + + cf_tst_cflags=`echo ${cf_add_cflags} |sed -e 's/^[^"]*"'\''//'` + + test "x${cf_add_cflags}" != "x${cf_tst_cflags}" \ + && test -z "${cf_tst_cflags}" \ + && cf_fix_cppflags=no + ;; +esac +done + +if test -n "$cf_new_cflags" ; then + + test -n "$CFLAGS" && CFLAGS="$CFLAGS " + CFLAGS="${CFLAGS}$cf_new_cflags" + +fi + +if test -n "$cf_new_cppflags" ; then + + test -n "$CPPFLAGS" && CPPFLAGS="$CPPFLAGS " + CPPFLAGS="${CPPFLAGS}$cf_new_cppflags" + +fi + +if test -n "$cf_new_extra_cppflags" ; then + + test -n "$EXTRA_CPPFLAGS" && EXTRA_CPPFLAGS="$EXTRA_CPPFLAGS " + EXTRA_CPPFLAGS="${EXTRA_CPPFLAGS}$cf_new_extra_cppflags" + +fi + +cf_add_libs="$cf_pkgconfig_libs" +# Filter out duplicates - this happens with badly-designed ".pc" files... +for cf_add_1lib in $LIBS +do + for cf_add_2lib in $cf_add_libs + do + if test "x$cf_add_1lib" = "x$cf_add_2lib" + then + cf_add_1lib= + break + fi + done + test -n "$cf_add_1lib" && cf_add_libs="$cf_add_libs $cf_add_1lib" +done +LIBS="$cf_add_libs" + + : +else + cf_pkgconfig_incs= + cf_pkgconfig_libs= + +test -n "$verbose" && echo " ...before $LIBS" 1>&6 + +echo "${as_me:-configure}:20034: testing ...before $LIBS ..." 1>&5 + +LIBS=`echo "$LIBS" | sed -e "s/[ ][ ]*/ /g" -e "s%-lXt %-lXt -lX11 %" -e 's% % %g'` +test -n "$verbose" && echo " ...after $LIBS" 1>&6 + +echo "${as_me:-configure}:20039: testing ...after $LIBS ..." 1>&5 + +fi + + fi + ;; + esac + +echo "$as_me:20047: checking for usable X Toolkit package" >&5 +echo $ECHO_N "checking for usable X Toolkit package... $ECHO_C" >&6 +if test "${cf_cv_xt_ice_compat+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + +cat >conftest.$ac_ext <<_ACEOF +#line 20054 "configure" +#include "confdefs.h" + +#include + +int +main (void) +{ +int num = IceConnectionNumber(0) + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:20069: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:20072: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:20075: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:20078: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + cf_cv_xt_ice_compat=yes +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +cf_cv_xt_ice_compat=no +fi +rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext +fi +echo "$as_me:20088: result: $cf_cv_xt_ice_compat" >&5 +echo "${ECHO_T}$cf_cv_xt_ice_compat" >&6 + + if test "$cf_cv_xt_ice_compat" = no + then + # workaround for broken ".pc" files used for X Toolkit. + case "x$X_PRE_LIBS" in + (*-lICE*) + case "x$LIBS" in + (*-lICE*) + ;; + (*) + test -n "$verbose" && echo " work around broken ICE dependency" 1>&6 + +echo "${as_me:-configure}:20102: testing work around broken ICE dependency ..." 1>&5 + +if test "$PKG_CONFIG" != none && "$PKG_CONFIG" --exists ice; then + test -n "$verbose" && echo " found package ice" 1>&6 + +echo "${as_me:-configure}:20107: testing found package ice ..." 1>&5 + + cf_pkgconfig_incs="`$PKG_CONFIG --cflags ice 2>/dev/null`" + cf_pkgconfig_libs="`$PKG_CONFIG --libs ice 2>/dev/null`" + test -n "$verbose" && echo " package ice CFLAGS: $cf_pkgconfig_incs" 1>&6 + +echo "${as_me:-configure}:20113: testing package ice CFLAGS: $cf_pkgconfig_incs ..." 1>&5 + + test -n "$verbose" && echo " package ice LIBS: $cf_pkgconfig_libs" 1>&6 + +echo "${as_me:-configure}:20117: testing package ice LIBS: $cf_pkgconfig_libs ..." 1>&5 + +cf_fix_cppflags=no +cf_new_cflags= +cf_new_cppflags= +cf_new_extra_cppflags= + +for cf_add_cflags in $cf_pkgconfig_incs +do +case $cf_fix_cppflags in +(no) + case $cf_add_cflags in + (-undef|-nostdinc*|-I*|-D*|-U*|-E|-P|-C) + case $cf_add_cflags in + (-D*) + cf_tst_cflags=`echo ${cf_add_cflags} |sed -e 's/^-D[^=]*='\''\"[^"]*//'` + + test "x${cf_add_cflags}" != "x${cf_tst_cflags}" \ + && test -z "${cf_tst_cflags}" \ + && cf_fix_cppflags=yes + + if test $cf_fix_cppflags = yes ; then + + test -n "$cf_new_extra_cppflags" && cf_new_extra_cppflags="$cf_new_extra_cppflags " + cf_new_extra_cppflags="${cf_new_extra_cppflags}$cf_add_cflags" + + continue + elif test "${cf_tst_cflags}" = "\"'" ; then + + test -n "$cf_new_extra_cppflags" && cf_new_extra_cppflags="$cf_new_extra_cppflags " + cf_new_extra_cppflags="${cf_new_extra_cppflags}$cf_add_cflags" + + continue + fi + ;; + esac + case "$CPPFLAGS" in + (*$cf_add_cflags) + ;; + (*) + case $cf_add_cflags in + (-D*) + cf_tst_cppflags=`echo "x$cf_add_cflags" | sed -e 's/^...//' -e 's/=.*//'` + +CPPFLAGS=`echo "$CPPFLAGS" | \ + sed -e 's/-[UD]'"$cf_tst_cppflags"'\(=[^ ]*\)\?[ ]/ /g' \ + -e 's/-[UD]'"$cf_tst_cppflags"'\(=[^ ]*\)\?$//g'` + + ;; + esac + + test -n "$cf_new_cppflags" && cf_new_cppflags="$cf_new_cppflags " + cf_new_cppflags="${cf_new_cppflags}$cf_add_cflags" + + ;; + esac + ;; + (*) + + test -n "$cf_new_cflags" && cf_new_cflags="$cf_new_cflags " + cf_new_cflags="${cf_new_cflags}$cf_add_cflags" + + ;; + esac + ;; +(yes) + + test -n "$cf_new_extra_cppflags" && cf_new_extra_cppflags="$cf_new_extra_cppflags " + cf_new_extra_cppflags="${cf_new_extra_cppflags}$cf_add_cflags" + + cf_tst_cflags=`echo ${cf_add_cflags} |sed -e 's/^[^"]*"'\''//'` + + test "x${cf_add_cflags}" != "x${cf_tst_cflags}" \ + && test -z "${cf_tst_cflags}" \ + && cf_fix_cppflags=no + ;; +esac +done + +if test -n "$cf_new_cflags" ; then + + test -n "$CFLAGS" && CFLAGS="$CFLAGS " + CFLAGS="${CFLAGS}$cf_new_cflags" + +fi + +if test -n "$cf_new_cppflags" ; then + + test -n "$CPPFLAGS" && CPPFLAGS="$CPPFLAGS " + CPPFLAGS="${CPPFLAGS}$cf_new_cppflags" + +fi + +if test -n "$cf_new_extra_cppflags" ; then + + test -n "$EXTRA_CPPFLAGS" && EXTRA_CPPFLAGS="$EXTRA_CPPFLAGS " + EXTRA_CPPFLAGS="${EXTRA_CPPFLAGS}$cf_new_extra_cppflags" + +fi + +cf_add_libs="$cf_pkgconfig_libs" +# Filter out duplicates - this happens with badly-designed ".pc" files... +for cf_add_1lib in $LIBS +do + for cf_add_2lib in $cf_add_libs + do + if test "x$cf_add_1lib" = "x$cf_add_2lib" + then + cf_add_1lib= + break + fi + done + test -n "$cf_add_1lib" && cf_add_libs="$cf_add_libs $cf_add_1lib" +done +LIBS="$cf_add_libs" + +if test "$PKG_CONFIG" != none && "$PKG_CONFIG" --exists sm; then + test -n "$verbose" && echo " found package sm" 1>&6 + +echo "${as_me:-configure}:20236: testing found package sm ..." 1>&5 + + cf_pkgconfig_incs="`$PKG_CONFIG --cflags sm 2>/dev/null`" + cf_pkgconfig_libs="`$PKG_CONFIG --libs sm 2>/dev/null`" + test -n "$verbose" && echo " package sm CFLAGS: $cf_pkgconfig_incs" 1>&6 + +echo "${as_me:-configure}:20242: testing package sm CFLAGS: $cf_pkgconfig_incs ..." 1>&5 + + test -n "$verbose" && echo " package sm LIBS: $cf_pkgconfig_libs" 1>&6 + +echo "${as_me:-configure}:20246: testing package sm LIBS: $cf_pkgconfig_libs ..." 1>&5 + +cf_fix_cppflags=no +cf_new_cflags= +cf_new_cppflags= +cf_new_extra_cppflags= + +for cf_add_cflags in $cf_pkgconfig_incs +do +case $cf_fix_cppflags in +(no) + case $cf_add_cflags in + (-undef|-nostdinc*|-I*|-D*|-U*|-E|-P|-C) + case $cf_add_cflags in + (-D*) + cf_tst_cflags=`echo ${cf_add_cflags} |sed -e 's/^-D[^=]*='\''\"[^"]*//'` + + test "x${cf_add_cflags}" != "x${cf_tst_cflags}" \ + && test -z "${cf_tst_cflags}" \ + && cf_fix_cppflags=yes + + if test $cf_fix_cppflags = yes ; then + + test -n "$cf_new_extra_cppflags" && cf_new_extra_cppflags="$cf_new_extra_cppflags " + cf_new_extra_cppflags="${cf_new_extra_cppflags}$cf_add_cflags" + + continue + elif test "${cf_tst_cflags}" = "\"'" ; then + + test -n "$cf_new_extra_cppflags" && cf_new_extra_cppflags="$cf_new_extra_cppflags " + cf_new_extra_cppflags="${cf_new_extra_cppflags}$cf_add_cflags" + + continue + fi + ;; + esac + case "$CPPFLAGS" in + (*$cf_add_cflags) + ;; + (*) + case $cf_add_cflags in + (-D*) + cf_tst_cppflags=`echo "x$cf_add_cflags" | sed -e 's/^...//' -e 's/=.*//'` + +CPPFLAGS=`echo "$CPPFLAGS" | \ + sed -e 's/-[UD]'"$cf_tst_cppflags"'\(=[^ ]*\)\?[ ]/ /g' \ + -e 's/-[UD]'"$cf_tst_cppflags"'\(=[^ ]*\)\?$//g'` + + ;; + esac + + test -n "$cf_new_cppflags" && cf_new_cppflags="$cf_new_cppflags " + cf_new_cppflags="${cf_new_cppflags}$cf_add_cflags" + + ;; + esac + ;; + (*) + + test -n "$cf_new_cflags" && cf_new_cflags="$cf_new_cflags " + cf_new_cflags="${cf_new_cflags}$cf_add_cflags" + + ;; + esac + ;; +(yes) + + test -n "$cf_new_extra_cppflags" && cf_new_extra_cppflags="$cf_new_extra_cppflags " + cf_new_extra_cppflags="${cf_new_extra_cppflags}$cf_add_cflags" + + cf_tst_cflags=`echo ${cf_add_cflags} |sed -e 's/^[^"]*"'\''//'` + + test "x${cf_add_cflags}" != "x${cf_tst_cflags}" \ + && test -z "${cf_tst_cflags}" \ + && cf_fix_cppflags=no + ;; +esac +done + +if test -n "$cf_new_cflags" ; then + + test -n "$CFLAGS" && CFLAGS="$CFLAGS " + CFLAGS="${CFLAGS}$cf_new_cflags" + +fi + +if test -n "$cf_new_cppflags" ; then + + test -n "$CPPFLAGS" && CPPFLAGS="$CPPFLAGS " + CPPFLAGS="${CPPFLAGS}$cf_new_cppflags" + +fi + +if test -n "$cf_new_extra_cppflags" ; then + + test -n "$EXTRA_CPPFLAGS" && EXTRA_CPPFLAGS="$EXTRA_CPPFLAGS " + EXTRA_CPPFLAGS="${EXTRA_CPPFLAGS}$cf_new_extra_cppflags" + +fi + +cf_add_libs="$cf_pkgconfig_libs" +# Filter out duplicates - this happens with badly-designed ".pc" files... +for cf_add_1lib in $LIBS +do + for cf_add_2lib in $cf_add_libs + do + if test "x$cf_add_1lib" = "x$cf_add_2lib" + then + cf_add_1lib= + break + fi + done + test -n "$cf_add_1lib" && cf_add_libs="$cf_add_libs $cf_add_1lib" +done +LIBS="$cf_add_libs" + + : +else + cf_pkgconfig_incs= + cf_pkgconfig_libs= + : +fi + +else + cf_pkgconfig_incs= + cf_pkgconfig_libs= + +test -n "$verbose" && echo " ...before $LIBS" 1>&6 + +echo "${as_me:-configure}:20375: testing ...before $LIBS ..." 1>&5 + +LIBS=`echo "$LIBS" | sed -e "s/[ ][ ]*/ /g" -e "s%-lXt %-lXt $X_PRE_LIBS %" -e 's% % %g'` +test -n "$verbose" && echo " ...after $LIBS" 1>&6 + +echo "${as_me:-configure}:20380: testing ...after $LIBS ..." 1>&5 + +fi + + ;; + esac + ;; + esac + fi + + cf_have_X_LIBS=yes + +else + cf_pkgconfig_incs= + cf_pkgconfig_libs= + + LDFLAGS="$X_LIBS $LDFLAGS" + +test -n "$verbose" && echo " checking additions to CFLAGS" 1>&6 + +echo "${as_me:-configure}:20400: testing checking additions to CFLAGS ..." 1>&5 + +cf_check_cflags="$CFLAGS" +cf_check_cppflags="$CPPFLAGS" + +cf_fix_cppflags=no +cf_new_cflags= +cf_new_cppflags= +cf_new_extra_cppflags= + +for cf_add_cflags in $X_CFLAGS +do +case $cf_fix_cppflags in +(no) + case $cf_add_cflags in + (-undef|-nostdinc*|-I*|-D*|-U*|-E|-P|-C) + case $cf_add_cflags in + (-D*) + cf_tst_cflags=`echo ${cf_add_cflags} |sed -e 's/^-D[^=]*='\''\"[^"]*//'` + + test "x${cf_add_cflags}" != "x${cf_tst_cflags}" \ + && test -z "${cf_tst_cflags}" \ + && cf_fix_cppflags=yes + + if test $cf_fix_cppflags = yes ; then + + test -n "$cf_new_extra_cppflags" && cf_new_extra_cppflags="$cf_new_extra_cppflags " + cf_new_extra_cppflags="${cf_new_extra_cppflags}$cf_add_cflags" + + continue + elif test "${cf_tst_cflags}" = "\"'" ; then + + test -n "$cf_new_extra_cppflags" && cf_new_extra_cppflags="$cf_new_extra_cppflags " + cf_new_extra_cppflags="${cf_new_extra_cppflags}$cf_add_cflags" + + continue + fi + ;; + esac + case "$CPPFLAGS" in + (*$cf_add_cflags) + ;; + (*) + case $cf_add_cflags in + (-D*) + cf_tst_cppflags=`echo "x$cf_add_cflags" | sed -e 's/^...//' -e 's/=.*//'` + +CPPFLAGS=`echo "$CPPFLAGS" | \ + sed -e 's/-[UD]'"$cf_tst_cppflags"'\(=[^ ]*\)\?[ ]/ /g' \ + -e 's/-[UD]'"$cf_tst_cppflags"'\(=[^ ]*\)\?$//g'` + + ;; + esac + + test -n "$cf_new_cppflags" && cf_new_cppflags="$cf_new_cppflags " + cf_new_cppflags="${cf_new_cppflags}$cf_add_cflags" + + ;; + esac + ;; + (*) + + test -n "$cf_new_cflags" && cf_new_cflags="$cf_new_cflags " + cf_new_cflags="${cf_new_cflags}$cf_add_cflags" + + ;; + esac + ;; +(yes) + + test -n "$cf_new_extra_cppflags" && cf_new_extra_cppflags="$cf_new_extra_cppflags " + cf_new_extra_cppflags="${cf_new_extra_cppflags}$cf_add_cflags" + + cf_tst_cflags=`echo ${cf_add_cflags} |sed -e 's/^[^"]*"'\''//'` + + test "x${cf_add_cflags}" != "x${cf_tst_cflags}" \ + && test -z "${cf_tst_cflags}" \ + && cf_fix_cppflags=no + ;; +esac +done + +if test -n "$cf_new_cflags" ; then + test -n "$verbose" && echo " add to \$CFLAGS $cf_new_cflags" 1>&6 + +echo "${as_me:-configure}:20485: testing add to \$CFLAGS $cf_new_cflags ..." 1>&5 + + test -n "$CFLAGS" && CFLAGS="$CFLAGS " + CFLAGS="${CFLAGS}$cf_new_cflags" + +fi + +if test -n "$cf_new_cppflags" ; then + test -n "$verbose" && echo " add to \$CPPFLAGS $cf_new_cppflags" 1>&6 + +echo "${as_me:-configure}:20495: testing add to \$CPPFLAGS $cf_new_cppflags ..." 1>&5 + + test -n "$CPPFLAGS" && CPPFLAGS="$CPPFLAGS " + CPPFLAGS="${CPPFLAGS}$cf_new_cppflags" + +fi + +if test -n "$cf_new_extra_cppflags" ; then + test -n "$verbose" && echo " add to \$EXTRA_CPPFLAGS $cf_new_extra_cppflags" 1>&6 + +echo "${as_me:-configure}:20505: testing add to \$EXTRA_CPPFLAGS $cf_new_extra_cppflags ..." 1>&5 + + test -n "$EXTRA_CPPFLAGS" && EXTRA_CPPFLAGS="$EXTRA_CPPFLAGS " + EXTRA_CPPFLAGS="${EXTRA_CPPFLAGS}$cf_new_extra_cppflags" + +fi + +if test "x$cf_check_cflags" != "x$CFLAGS" ; then +cat >conftest.$ac_ext <<_ACEOF +#line 20514 "configure" +#include "confdefs.h" +#include +int +main (void) +{ +printf("Hello world"); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:20526: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:20529: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:20532: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:20535: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + : +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +test -n "$verbose" && echo " test-compile failed. Undoing change to \$CFLAGS" 1>&6 + +echo "${as_me:-configure}:20543: testing test-compile failed. Undoing change to \$CFLAGS ..." 1>&5 + + if test "x$cf_check_cppflags" != "x$CPPFLAGS" ; then + test -n "$verbose" && echo " but keeping change to \$CPPFLAGS" 1>&6 + +echo "${as_me:-configure}:20548: testing but keeping change to \$CPPFLAGS ..." 1>&5 + + fi + CFLAGS="$cf_check_flags" +fi +rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext +fi + + echo "$as_me:20556: checking for XOpenDisplay" >&5 +echo $ECHO_N "checking for XOpenDisplay... $ECHO_C" >&6 +if test "${ac_cv_func_XOpenDisplay+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +#line 20562 "configure" +#include "confdefs.h" +/* System header to define __stub macros and hopefully few prototypes, + which can conflict with char XOpenDisplay (); below. */ +#include +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char XOpenDisplay (); +char (*f) (); + +int +main (void) +{ +/* 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_XOpenDisplay) || defined (__stub___XOpenDisplay) +choke me +#else +f = XOpenDisplay; /* workaround for ICC 12.0.3 */ if (f == 0) return 1; +#endif + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:20593: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:20596: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:20599: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:20602: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_func_XOpenDisplay=yes +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +ac_cv_func_XOpenDisplay=no +fi +rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext +fi +echo "$as_me:20612: result: $ac_cv_func_XOpenDisplay" >&5 +echo "${ECHO_T}$ac_cv_func_XOpenDisplay" >&6 +if test $ac_cv_func_XOpenDisplay = yes; then + : +else + + echo "$as_me:20618: checking for XOpenDisplay in -lX11" >&5 +echo $ECHO_N "checking for XOpenDisplay in -lX11... $ECHO_C" >&6 +if test "${ac_cv_lib_X11_XOpenDisplay+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-lX11 $X_PRE_LIBS $LIBS $X_EXTRA_LIBS $LIBS" +cat >conftest.$ac_ext <<_ACEOF +#line 20626 "configure" +#include "confdefs.h" + +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char XOpenDisplay (); +int +main (void) +{ +XOpenDisplay (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:20645: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:20648: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:20651: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:20654: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_lib_X11_XOpenDisplay=yes +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +ac_cv_lib_X11_XOpenDisplay=no +fi +rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +echo "$as_me:20665: result: $ac_cv_lib_X11_XOpenDisplay" >&5 +echo "${ECHO_T}$ac_cv_lib_X11_XOpenDisplay" >&6 +if test $ac_cv_lib_X11_XOpenDisplay = yes; then + +cf_add_libs="-lX11" +# Filter out duplicates - this happens with badly-designed ".pc" files... +for cf_add_1lib in $LIBS +do + for cf_add_2lib in $cf_add_libs + do + if test "x$cf_add_1lib" = "x$cf_add_2lib" + then + cf_add_1lib= + break + fi + done + test -n "$cf_add_1lib" && cf_add_libs="$cf_add_libs $cf_add_1lib" +done +LIBS="$cf_add_libs" + +fi + +fi + + echo "$as_me:20689: checking for XtAppInitialize" >&5 +echo $ECHO_N "checking for XtAppInitialize... $ECHO_C" >&6 +if test "${ac_cv_func_XtAppInitialize+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +#line 20695 "configure" +#include "confdefs.h" +/* System header to define __stub macros and hopefully few prototypes, + which can conflict with char XtAppInitialize (); below. */ +#include +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char XtAppInitialize (); +char (*f) (); + +int +main (void) +{ +/* 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_XtAppInitialize) || defined (__stub___XtAppInitialize) +choke me +#else +f = XtAppInitialize; /* workaround for ICC 12.0.3 */ if (f == 0) return 1; +#endif + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:20726: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:20729: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:20732: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:20735: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_func_XtAppInitialize=yes +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +ac_cv_func_XtAppInitialize=no +fi +rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext +fi +echo "$as_me:20745: result: $ac_cv_func_XtAppInitialize" >&5 +echo "${ECHO_T}$ac_cv_func_XtAppInitialize" >&6 +if test $ac_cv_func_XtAppInitialize = yes; then + : +else + + echo "$as_me:20751: checking for XtAppInitialize in -lXt" >&5 +echo $ECHO_N "checking for XtAppInitialize in -lXt... $ECHO_C" >&6 +if test "${ac_cv_lib_Xt_XtAppInitialize+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-lXt $X_PRE_LIBS $LIBS $X_EXTRA_LIBS $LIBS" +cat >conftest.$ac_ext <<_ACEOF +#line 20759 "configure" +#include "confdefs.h" + +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char XtAppInitialize (); +int +main (void) +{ +XtAppInitialize (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:20778: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:20781: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:20784: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:20787: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_lib_Xt_XtAppInitialize=yes +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +ac_cv_lib_Xt_XtAppInitialize=no +fi +rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +echo "$as_me:20798: result: $ac_cv_lib_Xt_XtAppInitialize" >&5 +echo "${ECHO_T}$ac_cv_lib_Xt_XtAppInitialize" >&6 +if test $ac_cv_lib_Xt_XtAppInitialize = yes; then + +cat >>confdefs.h <<\EOF +#define HAVE_LIBXT 1 +EOF + + cf_have_X_LIBS=Xt + LIBS="-lXt $X_PRE_LIBS $LIBS $X_EXTRA_LIBS" +fi + +fi + +fi + +if test $cf_have_X_LIBS = no ; then + { echo "$as_me:20815: WARNING: Unable to successfully link X Toolkit library (-lXt) with +test program. You will have to check and add the proper libraries by hand +to makefile." >&5 +echo "$as_me: WARNING: Unable to successfully link X Toolkit library (-lXt) with +test program. You will have to check and add the proper libraries by hand +to makefile." >&2;} +fi + +cf_x_athena_root=$cf_x_athena +cf_x_athena_inc="" + +for cf_path in default \ + /usr/contrib/X11R6 \ + /usr/contrib/X11R5 \ + /usr/lib/X11R5 \ + /usr/local +do + if test -z "$cf_x_athena_inc" ; then + cf_save="$CPPFLAGS" + cf_test=X11/$cf_x_athena_root/SimpleMenu.h + if test $cf_path != default ; then + CPPFLAGS="$cf_save" + + test -n "$CPPFLAGS" && CPPFLAGS="$CPPFLAGS " + CPPFLAGS="${CPPFLAGS}-I$cf_path/include" + + echo "$as_me:20841: checking for $cf_test in $cf_path" >&5 +echo $ECHO_N "checking for $cf_test in $cf_path... $ECHO_C" >&6 + else + echo "$as_me:20844: checking for $cf_test" >&5 +echo $ECHO_N "checking for $cf_test... $ECHO_C" >&6 + fi + cat >conftest.$ac_ext <<_ACEOF +#line 20848 "configure" +#include "confdefs.h" + +#include +#include <$cf_test> +int +main (void) +{ + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:20862: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:20865: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:20868: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:20871: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + cf_result=yes +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +cf_result=no +fi +rm -f conftest.$ac_objext conftest.$ac_ext + echo "$as_me:20880: result: $cf_result" >&5 +echo "${ECHO_T}$cf_result" >&6 + if test "$cf_result" = yes ; then + cf_x_athena_inc=$cf_path + break + else + CPPFLAGS="$cf_save" + fi + fi +done + +if test -z "$cf_x_athena_inc" ; then + { echo "$as_me:20892: WARNING: Unable to successfully find Athena header files with test program" >&5 +echo "$as_me: WARNING: Unable to successfully find Athena header files with test program" >&2;} +elif test "$cf_x_athena_inc" != default ; then + + test -n "$CPPFLAGS" && CPPFLAGS="$CPPFLAGS " + CPPFLAGS="${CPPFLAGS}-I$cf_x_athena_inc" + +fi + +cf_x_athena_root=$cf_x_athena +cf_x_athena_lib="" + +for cf_path in default \ + /usr/contrib/X11R6 \ + /usr/contrib/X11R5 \ + /usr/lib/X11R5 \ + /usr/local +do + for cf_lib in \ + ${cf_x_athena_root} \ + ${cf_x_athena_root}7 \ + ${cf_x_athena_root}6 + do + for cf_libs in \ + "-l$cf_lib -lXmu" \ + "-l$cf_lib -lXpm -lXmu" \ + "-l${cf_lib}_s -lXmu_s" + do + if test -z "$cf_x_athena_lib" ; then + cf_save="$LIBS" + cf_test=XawSimpleMenuAddGlobalActions + if test $cf_path != default ; then + +cf_add_libs="-L$cf_path/lib $cf_libs" +# Filter out duplicates - this happens with badly-designed ".pc" files... +for cf_add_1lib in $LIBS +do + for cf_add_2lib in $cf_add_libs + do + if test "x$cf_add_1lib" = "x$cf_add_2lib" + then + cf_add_1lib= + break + fi + done + test -n "$cf_add_1lib" && cf_add_libs="$cf_add_libs $cf_add_1lib" +done +LIBS="$cf_add_libs" + + echo "$as_me:20941: checking for $cf_libs in $cf_path" >&5 +echo $ECHO_N "checking for $cf_libs in $cf_path... $ECHO_C" >&6 + else + +cf_add_libs="$cf_libs" +# Filter out duplicates - this happens with badly-designed ".pc" files... +for cf_add_1lib in $LIBS +do + for cf_add_2lib in $cf_add_libs + do + if test "x$cf_add_1lib" = "x$cf_add_2lib" + then + cf_add_1lib= + break + fi + done + test -n "$cf_add_1lib" && cf_add_libs="$cf_add_libs $cf_add_1lib" +done +LIBS="$cf_add_libs" + + echo "$as_me:20961: checking for $cf_test in $cf_libs" >&5 +echo $ECHO_N "checking for $cf_test in $cf_libs... $ECHO_C" >&6 + fi + cat >conftest.$ac_ext <<_ACEOF +#line 20965 "configure" +#include "confdefs.h" + +#include +#include + +int +main (void) +{ + +$cf_test((XtAppContext) 0) + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:20981: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:20984: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:20987: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:20990: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + cf_result=yes +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +cf_result=no +fi +rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext + echo "$as_me:20999: result: $cf_result" >&5 +echo "${ECHO_T}$cf_result" >&6 + if test "$cf_result" = yes ; then + cf_x_athena_lib="$cf_libs" + break + fi + LIBS="$cf_save" + fi + done # cf_libs + test -n "$cf_x_athena_lib" && break + done # cf_lib +done + +if test -z "$cf_x_athena_lib" ; then + { { echo "$as_me:21013: error: Unable to successfully link Athena library (-l$cf_x_athena_root) with test program" >&5 +echo "$as_me: error: Unable to successfully link Athena library (-l$cf_x_athena_root) with test program" >&2;} + { (exit 1); exit 1; }; } +fi + +cf_x_athena_LIBS=`echo "HAVE_LIB_$cf_x_athena" | sed y%abcdefghijklmnopqrstuvwxyz./-%ABCDEFGHIJKLMNOPQRSTUVWXYZ___%` + +cat >>confdefs.h <&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_XCURSES_CONFIG+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$XCURSES_CONFIG"; then + ac_cv_prog_XCURSES_CONFIG="$XCURSES_CONFIG" # Let the user override the test. +else + ac_save_IFS=$IFS; IFS=$ac_path_separator +ac_dummy="$PATH" +for ac_dir in $ac_dummy; do + IFS=$ac_save_IFS + test -z "$ac_dir" && ac_dir=. + $as_executable_p "$ac_dir/$ac_word" || continue +ac_cv_prog_XCURSES_CONFIG="$ac_tool_prefix$ac_prog" +echo "$as_me:21046: found $ac_dir/$ac_word" >&5 +break +done + +fi +fi +XCURSES_CONFIG=$ac_cv_prog_XCURSES_CONFIG +if test -n "$XCURSES_CONFIG"; then + echo "$as_me:21054: result: $XCURSES_CONFIG" >&5 +echo "${ECHO_T}$XCURSES_CONFIG" >&6 +else + echo "$as_me:21057: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + test -n "$XCURSES_CONFIG" && break + done +fi +if test -z "$XCURSES_CONFIG"; then + ac_ct_XCURSES_CONFIG=$XCURSES_CONFIG + for ac_prog in xcurses-config +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +echo "$as_me:21070: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_ac_ct_XCURSES_CONFIG+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$ac_ct_XCURSES_CONFIG"; then + ac_cv_prog_ac_ct_XCURSES_CONFIG="$ac_ct_XCURSES_CONFIG" # Let the user override the test. +else + ac_save_IFS=$IFS; IFS=$ac_path_separator +ac_dummy="$PATH" +for ac_dir in $ac_dummy; do + IFS=$ac_save_IFS + test -z "$ac_dir" && ac_dir=. + $as_executable_p "$ac_dir/$ac_word" || continue +ac_cv_prog_ac_ct_XCURSES_CONFIG="$ac_prog" +echo "$as_me:21085: found $ac_dir/$ac_word" >&5 +break +done + +fi +fi +ac_ct_XCURSES_CONFIG=$ac_cv_prog_ac_ct_XCURSES_CONFIG +if test -n "$ac_ct_XCURSES_CONFIG"; then + echo "$as_me:21093: result: $ac_ct_XCURSES_CONFIG" >&5 +echo "${ECHO_T}$ac_ct_XCURSES_CONFIG" >&6 +else + echo "$as_me:21096: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + test -n "$ac_ct_XCURSES_CONFIG" && break +done +test -n "$ac_ct_XCURSES_CONFIG" || ac_ct_XCURSES_CONFIG="none" + + XCURSES_CONFIG=$ac_ct_XCURSES_CONFIG +fi + +if test "$XCURSES_CONFIG" != none ; then + +cf_fix_cppflags=no +cf_new_cflags= +cf_new_cppflags= +cf_new_extra_cppflags= + +for cf_add_cflags in `$XCURSES_CONFIG --cflags` +do +case $cf_fix_cppflags in +(no) + case $cf_add_cflags in + (-undef|-nostdinc*|-I*|-D*|-U*|-E|-P|-C) + case $cf_add_cflags in + (-D*) + cf_tst_cflags=`echo ${cf_add_cflags} |sed -e 's/^-D[^=]*='\''\"[^"]*//'` + + test "x${cf_add_cflags}" != "x${cf_tst_cflags}" \ + && test -z "${cf_tst_cflags}" \ + && cf_fix_cppflags=yes + + if test $cf_fix_cppflags = yes ; then + + test -n "$cf_new_extra_cppflags" && cf_new_extra_cppflags="$cf_new_extra_cppflags " + cf_new_extra_cppflags="${cf_new_extra_cppflags}$cf_add_cflags" + + continue + elif test "${cf_tst_cflags}" = "\"'" ; then + + test -n "$cf_new_extra_cppflags" && cf_new_extra_cppflags="$cf_new_extra_cppflags " + cf_new_extra_cppflags="${cf_new_extra_cppflags}$cf_add_cflags" + + continue + fi + ;; + esac + case "$CPPFLAGS" in + (*$cf_add_cflags) + ;; + (*) + case $cf_add_cflags in + (-D*) + cf_tst_cppflags=`echo "x$cf_add_cflags" | sed -e 's/^...//' -e 's/=.*//'` + +CPPFLAGS=`echo "$CPPFLAGS" | \ + sed -e 's/-[UD]'"$cf_tst_cppflags"'\(=[^ ]*\)\?[ ]/ /g' \ + -e 's/-[UD]'"$cf_tst_cppflags"'\(=[^ ]*\)\?$//g'` + + ;; + esac + + test -n "$cf_new_cppflags" && cf_new_cppflags="$cf_new_cppflags " + cf_new_cppflags="${cf_new_cppflags}$cf_add_cflags" + + ;; + esac + ;; + (*) + + test -n "$cf_new_cflags" && cf_new_cflags="$cf_new_cflags " + cf_new_cflags="${cf_new_cflags}$cf_add_cflags" + + ;; + esac + ;; +(yes) + + test -n "$cf_new_extra_cppflags" && cf_new_extra_cppflags="$cf_new_extra_cppflags " + cf_new_extra_cppflags="${cf_new_extra_cppflags}$cf_add_cflags" + + cf_tst_cflags=`echo ${cf_add_cflags} |sed -e 's/^[^"]*"'\''//'` + + test "x${cf_add_cflags}" != "x${cf_tst_cflags}" \ + && test -z "${cf_tst_cflags}" \ + && cf_fix_cppflags=no + ;; +esac +done + +if test -n "$cf_new_cflags" ; then + + test -n "$CFLAGS" && CFLAGS="$CFLAGS " + CFLAGS="${CFLAGS}$cf_new_cflags" + +fi + +if test -n "$cf_new_cppflags" ; then + + test -n "$CPPFLAGS" && CPPFLAGS="$CPPFLAGS " + CPPFLAGS="${CPPFLAGS}$cf_new_cppflags" + +fi + +if test -n "$cf_new_extra_cppflags" ; then + + test -n "$EXTRA_CPPFLAGS" && EXTRA_CPPFLAGS="$EXTRA_CPPFLAGS " + EXTRA_CPPFLAGS="${EXTRA_CPPFLAGS}$cf_new_extra_cppflags" + +fi + +cf_add_libs="`$XCURSES_CONFIG --libs`" +# Filter out duplicates - this happens with badly-designed ".pc" files... +for cf_add_1lib in $LIBS +do + for cf_add_2lib in $cf_add_libs + do + if test "x$cf_add_1lib" = "x$cf_add_2lib" + then + cf_add_1lib= + break + fi + done + test -n "$cf_add_1lib" && cf_add_libs="$cf_add_libs $cf_add_1lib" +done +LIBS="$cf_add_libs" + +cf_cv_lib_XCurses=yes + +else + +LDFLAGS="$LDFLAGS $X_LIBS" + +test -n "$verbose" && echo " checking additions to CFLAGS" 1>&6 + +echo "${as_me:-configure}:21231: testing checking additions to CFLAGS ..." 1>&5 + +cf_check_cflags="$CFLAGS" +cf_check_cppflags="$CPPFLAGS" + +cf_fix_cppflags=no +cf_new_cflags= +cf_new_cppflags= +cf_new_extra_cppflags= + +for cf_add_cflags in $X_CFLAGS +do +case $cf_fix_cppflags in +(no) + case $cf_add_cflags in + (-undef|-nostdinc*|-I*|-D*|-U*|-E|-P|-C) + case $cf_add_cflags in + (-D*) + cf_tst_cflags=`echo ${cf_add_cflags} |sed -e 's/^-D[^=]*='\''\"[^"]*//'` + + test "x${cf_add_cflags}" != "x${cf_tst_cflags}" \ + && test -z "${cf_tst_cflags}" \ + && cf_fix_cppflags=yes + + if test $cf_fix_cppflags = yes ; then + + test -n "$cf_new_extra_cppflags" && cf_new_extra_cppflags="$cf_new_extra_cppflags " + cf_new_extra_cppflags="${cf_new_extra_cppflags}$cf_add_cflags" + + continue + elif test "${cf_tst_cflags}" = "\"'" ; then + + test -n "$cf_new_extra_cppflags" && cf_new_extra_cppflags="$cf_new_extra_cppflags " + cf_new_extra_cppflags="${cf_new_extra_cppflags}$cf_add_cflags" + + continue + fi + ;; + esac + case "$CPPFLAGS" in + (*$cf_add_cflags) + ;; + (*) + case $cf_add_cflags in + (-D*) + cf_tst_cppflags=`echo "x$cf_add_cflags" | sed -e 's/^...//' -e 's/=.*//'` + +CPPFLAGS=`echo "$CPPFLAGS" | \ + sed -e 's/-[UD]'"$cf_tst_cppflags"'\(=[^ ]*\)\?[ ]/ /g' \ + -e 's/-[UD]'"$cf_tst_cppflags"'\(=[^ ]*\)\?$//g'` + + ;; + esac + + test -n "$cf_new_cppflags" && cf_new_cppflags="$cf_new_cppflags " + cf_new_cppflags="${cf_new_cppflags}$cf_add_cflags" + + ;; + esac + ;; + (*) + + test -n "$cf_new_cflags" && cf_new_cflags="$cf_new_cflags " + cf_new_cflags="${cf_new_cflags}$cf_add_cflags" + + ;; + esac + ;; +(yes) + + test -n "$cf_new_extra_cppflags" && cf_new_extra_cppflags="$cf_new_extra_cppflags " + cf_new_extra_cppflags="${cf_new_extra_cppflags}$cf_add_cflags" + + cf_tst_cflags=`echo ${cf_add_cflags} |sed -e 's/^[^"]*"'\''//'` + + test "x${cf_add_cflags}" != "x${cf_tst_cflags}" \ + && test -z "${cf_tst_cflags}" \ + && cf_fix_cppflags=no + ;; +esac +done + +if test -n "$cf_new_cflags" ; then + test -n "$verbose" && echo " add to \$CFLAGS $cf_new_cflags" 1>&6 + +echo "${as_me:-configure}:21316: testing add to \$CFLAGS $cf_new_cflags ..." 1>&5 + + test -n "$CFLAGS" && CFLAGS="$CFLAGS " + CFLAGS="${CFLAGS}$cf_new_cflags" + +fi + +if test -n "$cf_new_cppflags" ; then + test -n "$verbose" && echo " add to \$CPPFLAGS $cf_new_cppflags" 1>&6 + +echo "${as_me:-configure}:21326: testing add to \$CPPFLAGS $cf_new_cppflags ..." 1>&5 + + test -n "$CPPFLAGS" && CPPFLAGS="$CPPFLAGS " + CPPFLAGS="${CPPFLAGS}$cf_new_cppflags" + +fi + +if test -n "$cf_new_extra_cppflags" ; then + test -n "$verbose" && echo " add to \$EXTRA_CPPFLAGS $cf_new_extra_cppflags" 1>&6 + +echo "${as_me:-configure}:21336: testing add to \$EXTRA_CPPFLAGS $cf_new_extra_cppflags ..." 1>&5 + + test -n "$EXTRA_CPPFLAGS" && EXTRA_CPPFLAGS="$EXTRA_CPPFLAGS " + EXTRA_CPPFLAGS="${EXTRA_CPPFLAGS}$cf_new_extra_cppflags" + +fi + +if test "x$cf_check_cflags" != "x$CFLAGS" ; then +cat >conftest.$ac_ext <<_ACEOF +#line 21345 "configure" +#include "confdefs.h" +#include +int +main (void) +{ +printf("Hello world"); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:21357: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:21360: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:21363: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:21366: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + : +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +test -n "$verbose" && echo " test-compile failed. Undoing change to \$CFLAGS" 1>&6 + +echo "${as_me:-configure}:21374: testing test-compile failed. Undoing change to \$CFLAGS ..." 1>&5 + + if test "x$cf_check_cppflags" != "x$CPPFLAGS" ; then + test -n "$verbose" && echo " but keeping change to \$CPPFLAGS" 1>&6 + +echo "${as_me:-configure}:21379: testing but keeping change to \$CPPFLAGS ..." 1>&5 + + fi + CFLAGS="$cf_check_flags" +fi +rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext +fi + +echo "$as_me:21387: checking for XOpenDisplay in -lX11" >&5 +echo $ECHO_N "checking for XOpenDisplay in -lX11... $ECHO_C" >&6 +if test "${ac_cv_lib_X11_XOpenDisplay+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-lX11 $X_PRE_LIBS $LIBS $X_EXTRA_LIBS $LIBS" +cat >conftest.$ac_ext <<_ACEOF +#line 21395 "configure" +#include "confdefs.h" + +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char XOpenDisplay (); +int +main (void) +{ +XOpenDisplay (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:21414: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:21417: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:21420: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:21423: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_lib_X11_XOpenDisplay=yes +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +ac_cv_lib_X11_XOpenDisplay=no +fi +rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +echo "$as_me:21434: result: $ac_cv_lib_X11_XOpenDisplay" >&5 +echo "${ECHO_T}$ac_cv_lib_X11_XOpenDisplay" >&6 +if test $ac_cv_lib_X11_XOpenDisplay = yes; then + +cf_add_libs="-lX11" +# Filter out duplicates - this happens with badly-designed ".pc" files... +for cf_add_1lib in $LIBS +do + for cf_add_2lib in $cf_add_libs + do + if test "x$cf_add_1lib" = "x$cf_add_2lib" + then + cf_add_1lib= + break + fi + done + test -n "$cf_add_1lib" && cf_add_libs="$cf_add_libs $cf_add_1lib" +done +LIBS="$cf_add_libs" + +fi + +echo "$as_me:21456: checking for XCurses library" >&5 +echo $ECHO_N "checking for XCurses library... $ECHO_C" >&6 +if test "${cf_cv_lib_XCurses+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + +cf_add_libs="-lXCurses" +# Filter out duplicates - this happens with badly-designed ".pc" files... +for cf_add_1lib in $LIBS +do + for cf_add_2lib in $cf_add_libs + do + if test "x$cf_add_1lib" = "x$cf_add_2lib" + then + cf_add_1lib= + break + fi + done + test -n "$cf_add_1lib" && cf_add_libs="$cf_add_libs $cf_add_1lib" +done +LIBS="$cf_add_libs" + +cat >conftest.$ac_ext <<_ACEOF +#line 21479 "configure" +#include "confdefs.h" + +#include +char *XCursesProgramName = "test"; + +int +main (void) +{ +XCursesExit(); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:21494: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:21497: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:21500: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:21503: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + cf_cv_lib_XCurses=yes +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +cf_cv_lib_XCurses=no +fi +rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext + +fi +echo "$as_me:21514: result: $cf_cv_lib_XCurses" >&5 +echo "${ECHO_T}$cf_cv_lib_XCurses" >&6 + +fi + +if test $cf_cv_lib_XCurses = yes ; then + +cat >>confdefs.h <<\EOF +#define UNIX 1 +EOF + +cat >>confdefs.h <<\EOF +#define XCURSES 1 +EOF + + echo "$as_me:21529: checking for xcurses.h" >&5 +echo $ECHO_N "checking for xcurses.h... $ECHO_C" >&6 +if test "${ac_cv_header_xcurses_h+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +#line 21535 "configure" +#include "confdefs.h" +#include +_ACEOF +if { (eval echo "$as_me:21539: \"$ac_cpp conftest.$ac_ext\"") >&5 + (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 + ac_status=$? + egrep -v '^ *\+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:21545: \$? = $ac_status" >&5 + (exit $ac_status); } >/dev/null; then + if test -s conftest.err; then + ac_cpp_err=$ac_c_preproc_warn_flag + else + ac_cpp_err= + fi +else + ac_cpp_err=yes +fi +if test -z "$ac_cpp_err"; then + ac_cv_header_xcurses_h=yes +else + echo "$as_me: failed program was:" >&5 + cat conftest.$ac_ext >&5 + ac_cv_header_xcurses_h=no +fi +rm -f conftest.err conftest.$ac_ext +fi +echo "$as_me:21564: result: $ac_cv_header_xcurses_h" >&5 +echo "${ECHO_T}$ac_cv_header_xcurses_h" >&6 +if test $ac_cv_header_xcurses_h = yes; then + +cat >>confdefs.h <<\EOF +#define HAVE_XCURSES 1 +EOF + +fi + +else + { { echo "$as_me:21575: error: Cannot link with XCurses" >&5 +echo "$as_me: error: Cannot link with XCurses" >&2;} + { (exit 1); exit 1; }; } +fi + + ;; +(*) + { { echo "$as_me:21582: error: unexpected screen-value: $cf_cv_screen" >&5 +echo "$as_me: error: unexpected screen-value: $cf_cv_screen" >&2;} + { (exit 1); exit 1; }; } + ;; +esac + +: ${cf_nculib_root:=$cf_cv_screen} +as_ac_Lib=`echo "ac_cv_lib_$cf_nculib_root''__nc_init_pthreads" | $as_tr_sh` +echo "$as_me:21590: checking for _nc_init_pthreads in -l$cf_nculib_root" >&5 +echo $ECHO_N "checking for _nc_init_pthreads in -l$cf_nculib_root... $ECHO_C" >&6 +if eval "test \"\${$as_ac_Lib+set}\" = set"; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-l$cf_nculib_root $LIBS" +cat >conftest.$ac_ext <<_ACEOF +#line 21598 "configure" +#include "confdefs.h" + +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char _nc_init_pthreads (); +int +main (void) +{ +_nc_init_pthreads (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:21617: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:21620: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:21623: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:21626: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + eval "$as_ac_Lib=yes" +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +eval "$as_ac_Lib=no" +fi +rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +echo "$as_me:21637: result: `eval echo '${'$as_ac_Lib'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_Lib'}'`" >&6 +if test `eval echo '${'$as_ac_Lib'}'` = yes; then + cf_cv_ncurses_pthreads=yes +else + cf_cv_ncurses_pthreads=no +fi + +if test "$cf_cv_ncurses_pthreads" = yes +then + +cf_add_libs="-lpthread" +# Filter out duplicates - this happens with badly-designed ".pc" files... +for cf_add_1lib in $LIBS +do + for cf_add_2lib in $cf_add_libs + do + if test "x$cf_add_1lib" = "x$cf_add_2lib" + then + cf_add_1lib= + break + fi + done + test -n "$cf_add_1lib" && cf_add_libs="$cf_add_libs $cf_add_1lib" +done +LIBS="$cf_add_libs" + +fi + +echo "$as_me:21666: checking if curses supports wide characters" >&5 +echo $ECHO_N "checking if curses supports wide characters... $ECHO_C" >&6 +if test "${cf_cv_widec_curses+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + +cat >conftest.$ac_ext <<_ACEOF +#line 21673 "configure" +#include "confdefs.h" + +#include +#include <${cf_cv_ncurses_header:-curses.h}> +int +main (void) +{ + + wchar_t temp[2]; + wchar_t wch = 'A'; + temp[0] = wch; + waddnwstr(stdscr, temp, 1); + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:21692: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:21695: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:21698: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:21701: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + cf_cv_widec_curses=yes +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +cf_cv_widec_curses=no +fi +rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext + +fi +echo "$as_me:21712: result: $cf_cv_widec_curses" >&5 +echo "${ECHO_T}$cf_cv_widec_curses" >&6 + +if test "$cf_cv_widec_curses" = yes ; then + +cat >>confdefs.h <<\EOF +#define WIDEC_CURSES 1 +EOF + + # This is needed on Tru64 5.0 to declare mbstate_t + echo "$as_me:21722: checking if we must include wchar.h to declare mbstate_t" >&5 +echo $ECHO_N "checking if we must include wchar.h to declare mbstate_t... $ECHO_C" >&6 +if test "${cf_cv_widec_mbstate+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + + cat >conftest.$ac_ext <<_ACEOF +#line 21729 "configure" +#include "confdefs.h" + +#include +#include <${cf_cv_ncurses_header:-curses.h}> +int +main (void) +{ +mbstate_t state + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:21743: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:21746: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:21749: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:21752: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + cf_cv_widec_mbstate=no +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +cat >conftest.$ac_ext <<_ACEOF +#line 21759 "configure" +#include "confdefs.h" + +#include +#include +#include <${cf_cv_ncurses_header:-curses.h}> +int +main (void) +{ +mbstate_t state + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:21774: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:21777: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:21780: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:21783: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + cf_cv_widec_mbstate=yes +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +cf_cv_widec_mbstate=unknown +fi +rm -f conftest.$ac_objext conftest.$ac_ext +fi +rm -f conftest.$ac_objext conftest.$ac_ext +fi +echo "$as_me:21795: result: $cf_cv_widec_mbstate" >&5 +echo "${ECHO_T}$cf_cv_widec_mbstate" >&6 + +if test "$cf_cv_widec_mbstate" = yes ; then + +cat >>confdefs.h <<\EOF +#define NEED_WCHAR_H 1 +EOF + +fi + +if test "$cf_cv_widec_mbstate" != unknown ; then + +cat >>confdefs.h <<\EOF +#define HAVE_MBSTATE_T 1 +EOF + +fi + +fi + +cf_all_widgets=yes + +echo "$as_me:21818: checking if you want extra dialogs" >&5 +echo $ECHO_N "checking if you want extra dialogs... $ECHO_C" >&6 + +# Check whether --enable-extras or --disable-extras was given. +if test "${enable_extras+set}" = set; then + enableval="$enable_extras" + +else + enableval=yes +fi; +echo "$as_me:21828: result: $enableval" >&5 +echo "${ECHO_T}$enableval" >&6 +if test "$enableval" != no ; then +cf_all_widgets=yes +else +cf_all_widgets=no +fi + +echo "$as_me:21836: checking if you want config-file support" >&5 +echo $ECHO_N "checking if you want config-file support... $ECHO_C" >&6 + +# Check whether --enable-rc-file or --disable-rc-file was given. +if test "${enable_rc_file+set}" = set; then + enableval="$enable_rc_file" + +else + enableval=$cf_all_widgets +fi; +echo "$as_me:21846: result: $enableval" >&5 +echo "${ECHO_T}$enableval" >&6 +if test "$enableval" != no ; then +EXTRAOBJS="$EXTRAOBJS rc\$o" + +cat >>confdefs.h <<\EOF +#define HAVE_RC_FILE 1 +EOF + +else + : +fi + +echo "$as_me:21859: checking if you want Xdialog-style dialogs" >&5 +echo $ECHO_N "checking if you want Xdialog-style dialogs... $ECHO_C" >&6 + +# Check whether --enable-Xdialog or --disable-Xdialog was given. +if test "${enable_Xdialog+set}" = set; then + enableval="$enable_Xdialog" + +else + enableval=$cf_all_widgets +fi; +echo "$as_me:21869: result: $enableval" >&5 +echo "${ECHO_T}$enableval" >&6 +if test "$enableval" != no ; then +EXTRAOBJS="$EXTRAOBJS calendar\$o fselect\$o timebox\$o" + +cat >>confdefs.h <<\EOF +#define HAVE_XDIALOG 1 +EOF + +else + : +fi + +echo "$as_me:21882: checking if you want extra Xdialog-style dialogs (1.2)" >&5 +echo $ECHO_N "checking if you want extra Xdialog-style dialogs (1.2)... $ECHO_C" >&6 + +# Check whether --enable-Xdialog2 or --disable-Xdialog2 was given. +if test "${enable_Xdialog2+set}" = set; then + enableval="$enable_Xdialog2" + +else + enableval=$cf_all_widgets +fi; +echo "$as_me:21892: result: $enableval" >&5 +echo "${ECHO_T}$enableval" >&6 +if test "$enableval" != no ; then +EXTRAOBJS="$EXTRAOBJS buildlist\$o rangebox\$o treeview\$o" + +cat >>confdefs.h <<\EOF +#define HAVE_XDIALOG2 1 +EOF + +else + : +fi + +echo "$as_me:21905: checking if you want compatibility with whiptail options" >&5 +echo $ECHO_N "checking if you want compatibility with whiptail options... $ECHO_C" >&6 + +# Check whether --enable-whiptail or --disable-whiptail was given. +if test "${enable_whiptail+set}" = set; then + enableval="$enable_whiptail" + +else + enableval=$cf_all_widgets +fi; +echo "$as_me:21915: result: $enableval" >&5 +echo "${ECHO_T}$enableval" >&6 +if test "$enableval" != no ; then + +cat >>confdefs.h <<\EOF +#define HAVE_WHIPTAIL 1 +EOF + +else + : +fi + +echo "$as_me:21927: checking if you want the form dialog" >&5 +echo $ECHO_N "checking if you want the form dialog... $ECHO_C" >&6 + +# Check whether --enable-form or --disable-form was given. +if test "${enable_form+set}" = set; then + enableval="$enable_form" + +else + enableval=$cf_all_widgets +fi; +echo "$as_me:21937: result: $enableval" >&5 +echo "${ECHO_T}$enableval" >&6 +if test "$enableval" != no ; then +EXTRAOBJS="$EXTRAOBJS formbox\$o" + +cat >>confdefs.h <<\EOF +#define HAVE_DLG_FORMBOX 1 +EOF + +else + : +fi + +echo "$as_me:21950: checking if you want the gauge dialog" >&5 +echo $ECHO_N "checking if you want the gauge dialog... $ECHO_C" >&6 + +# Check whether --enable-gauge or --disable-gauge was given. +if test "${enable_gauge+set}" = set; then + enableval="$enable_gauge" + +else + enableval=$cf_all_widgets +fi; +echo "$as_me:21960: result: $enableval" >&5 +echo "${ECHO_T}$enableval" >&6 +if test "$enableval" != no ; then +EXTRAOBJS="$EXTRAOBJS guage\$o pause\$o prgbox\$o progressbox\$o" + +cat >>confdefs.h <<\EOF +#define HAVE_DLG_GAUGE 1 +EOF + +else + : +fi + +echo "$as_me:21973: checking if you want the tailbox dialog" >&5 +echo $ECHO_N "checking if you want the tailbox dialog... $ECHO_C" >&6 + +# Check whether --enable-tailbox or --disable-tailbox was given. +if test "${enable_tailbox+set}" = set; then + enableval="$enable_tailbox" + +else + enableval=$cf_all_widgets +fi; +echo "$as_me:21983: result: $enableval" >&5 +echo "${ECHO_T}$enableval" >&6 +if test "$enableval" != no ; then +EXTRAOBJS="$EXTRAOBJS tailbox\$o" + +cat >>confdefs.h <<\EOF +#define HAVE_DLG_TAILBOX 1 +EOF + +else + : +fi + +echo "$as_me:21996: checking if you want the mixedform dialog" >&5 +echo $ECHO_N "checking if you want the mixedform dialog... $ECHO_C" >&6 + +# Check whether --enable-mixedform or --disable-mixedform was given. +if test "${enable_mixedform+set}" = set; then + enableval="$enable_mixedform" + +else + enableval=${enable_form:=$cf_all_widgets} +fi; +echo "$as_me:22006: result: $enableval" >&5 +echo "${ECHO_T}$enableval" >&6 +if test "$enableval" != no ; then +EXTRAOBJS="$EXTRAOBJS mixedform\$o" + +cat >>confdefs.h <<\EOF +#define HAVE_DLG_MIXEDFORM 1 +EOF + +else + : +fi + +echo "$as_me:22019: checking if you want the mixedgauge dialog" >&5 +echo $ECHO_N "checking if you want the mixedgauge dialog... $ECHO_C" >&6 + +# Check whether --enable-mixedgauge or --disable-mixedgauge was given. +if test "${enable_mixedgauge+set}" = set; then + enableval="$enable_mixedgauge" + +else + enableval=$cf_all_widgets +fi; +echo "$as_me:22029: result: $enableval" >&5 +echo "${ECHO_T}$enableval" >&6 +if test "$enableval" != no ; then +EXTRAOBJS="$EXTRAOBJS mixedgauge\$o" + +cat >>confdefs.h <<\EOF +#define HAVE_MIXEDGAUGE 1 +EOF + +else + : +fi + +echo "$as_me:22042: checking if you want the wide-curses features" >&5 +echo $ECHO_N "checking if you want the wide-curses features... $ECHO_C" >&6 + +# Check whether --enable-widec or --disable-widec was given. +if test "${enable_widec+set}" = set; then + enableval="$enable_widec" + +else + enableval=$cf_cv_widec_curses +fi; +echo "$as_me:22052: result: $enableval" >&5 +echo "${ECHO_T}$enableval" >&6 +if test "$enableval" != no ; then + +cat >>confdefs.h <<\EOF +#define USE_WIDE_CURSES 1 +EOF + +else + : +fi + +echo "$as_me:22064: checking for ANSI C header files" >&5 +echo $ECHO_N "checking for ANSI C header files... $ECHO_C" >&6 +if test "${ac_cv_header_stdc+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +#line 22070 "configure" +#include "confdefs.h" +#include +#include +#include +#include + +_ACEOF +if { (eval echo "$as_me:22078: \"$ac_cpp conftest.$ac_ext\"") >&5 + (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 + ac_status=$? + egrep -v '^ *\+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:22084: \$? = $ac_status" >&5 + (exit $ac_status); } >/dev/null; then + if test -s conftest.err; then + ac_cpp_err=$ac_c_preproc_warn_flag + else + ac_cpp_err= + fi +else + ac_cpp_err=yes +fi +if test -z "$ac_cpp_err"; then + ac_cv_header_stdc=yes +else + echo "$as_me: failed program was:" >&5 + cat conftest.$ac_ext >&5 + ac_cv_header_stdc=no +fi +rm -f conftest.err conftest.$ac_ext + +if test $ac_cv_header_stdc = yes; then + # SunOS 4.x string.h does not declare mem*, contrary to ANSI. + cat >conftest.$ac_ext <<_ACEOF +#line 22106 "configure" +#include "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 -rf conftest* + +fi + +if test $ac_cv_header_stdc = yes; then + # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI. + cat >conftest.$ac_ext <<_ACEOF +#line 22124 "configure" +#include "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 -rf conftest* + +fi + +if test $ac_cv_header_stdc = yes; then + # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi. + if test "$cross_compiling" = yes; then + : +else + cat >conftest.$ac_ext <<_ACEOF +#line 22145 "configure" +#include "confdefs.h" +#include +#if ((' ' & 0x0FF) == 0x020) +# define ISLOWER(c) ('a' <= (c) && (c) <= 'z') +# define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c)) +#else +# define ISLOWER(c) (('a' <= (c) && (c) <= 'i') \ + || ('j' <= (c) && (c) <= 'r') \ + || ('s' <= (c) && (c) <= 'z')) +# define TOUPPER(c) (ISLOWER(c) ? ((c) | 0x40) : (c)) +#endif + +#define XOR(e, f) (((e) && !(f)) || (!(e) && (f))) +int +main (void) +{ + int i; + for (i = 0; i < 256; i++) + if (XOR (islower (i), ISLOWER (i)) + || toupper (i) != TOUPPER (i)) + $ac_main_return(2); + $ac_main_return (0); +} +_ACEOF +rm -f conftest$ac_exeext +if { (eval echo "$as_me:22171: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:22174: \$? = $ac_status" >&5 + (exit $ac_status); } && { ac_try='./conftest$ac_exeext' + { (eval echo "$as_me:22176: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:22179: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + : +else + echo "$as_me: program exited with status $ac_status" >&5 +echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +ac_cv_header_stdc=no +fi +rm -f core core.* *.core conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext +fi +fi +fi +echo "$as_me:22192: result: $ac_cv_header_stdc" >&5 +echo "${ECHO_T}$ac_cv_header_stdc" >&6 +if test $ac_cv_header_stdc = yes; then + +cat >>confdefs.h <<\EOF +#define STDC_HEADERS 1 +EOF + +fi + +echo "$as_me:22202: checking whether time.h and sys/time.h may both be included" >&5 +echo $ECHO_N "checking whether time.h and sys/time.h may both be included... $ECHO_C" >&6 +if test "${ac_cv_header_time+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +#line 22208 "configure" +#include "confdefs.h" +#include +#include +#include + +int +main (void) +{ +if ((struct tm *) 0) +return 0; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:22224: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:22227: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:22230: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:22233: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_header_time=yes +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +ac_cv_header_time=no +fi +rm -f conftest.$ac_objext conftest.$ac_ext +fi +echo "$as_me:22243: result: $ac_cv_header_time" >&5 +echo "${ECHO_T}$ac_cv_header_time" >&6 +if test $ac_cv_header_time = yes; then + +cat >>confdefs.h <<\EOF +#define TIME_WITH_SYS_TIME 1 +EOF + +fi + +ac_header_dirent=no +for ac_hdr in dirent.h sys/ndir.h sys/dir.h ndir.h; do + as_ac_Header=`echo "ac_cv_header_dirent_$ac_hdr" | $as_tr_sh` +echo "$as_me:22256: checking for $ac_hdr that defines DIR" >&5 +echo $ECHO_N "checking for $ac_hdr that defines DIR... $ECHO_C" >&6 +if eval "test \"\${$as_ac_Header+set}\" = set"; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +#line 22262 "configure" +#include "confdefs.h" +#include +#include <$ac_hdr> + +int +main (void) +{ +if ((DIR *) 0) +return 0; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:22277: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:22280: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:22283: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:22286: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + eval "$as_ac_Header=yes" +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +eval "$as_ac_Header=no" +fi +rm -f conftest.$ac_objext conftest.$ac_ext +fi +echo "$as_me:22296: result: `eval echo '${'$as_ac_Header'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 +if test `eval echo '${'$as_ac_Header'}'` = yes; then + cat >>confdefs.h <&5 +echo $ECHO_N "checking for opendir in -ldir... $ECHO_C" >&6 +if test "${ac_cv_lib_dir_opendir+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-ldir $LIBS" +cat >conftest.$ac_ext <<_ACEOF +#line 22317 "configure" +#include "confdefs.h" + +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char opendir (); +int +main (void) +{ +opendir (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:22336: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:22339: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:22342: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:22345: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_lib_dir_opendir=yes +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +ac_cv_lib_dir_opendir=no +fi +rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +echo "$as_me:22356: result: $ac_cv_lib_dir_opendir" >&5 +echo "${ECHO_T}$ac_cv_lib_dir_opendir" >&6 +if test $ac_cv_lib_dir_opendir = yes; then + LIBS="$LIBS -ldir" +fi + +else + echo "$as_me:22363: checking for opendir in -lx" >&5 +echo $ECHO_N "checking for opendir in -lx... $ECHO_C" >&6 +if test "${ac_cv_lib_x_opendir+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-lx $LIBS" +cat >conftest.$ac_ext <<_ACEOF +#line 22371 "configure" +#include "confdefs.h" + +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char opendir (); +int +main (void) +{ +opendir (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:22390: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:22393: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:22396: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:22399: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_lib_x_opendir=yes +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +ac_cv_lib_x_opendir=no +fi +rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +echo "$as_me:22410: result: $ac_cv_lib_x_opendir" >&5 +echo "${ECHO_T}$ac_cv_lib_x_opendir" >&6 +if test $ac_cv_lib_x_opendir = yes; then + LIBS="$LIBS -lx" +fi + +fi + +for ac_header in search.h stdint.h unistd.h +do +as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` +echo "$as_me:22421: checking for $ac_header" >&5 +echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 +if eval "test \"\${$as_ac_Header+set}\" = set"; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +#line 22427 "configure" +#include "confdefs.h" +#include <$ac_header> +_ACEOF +if { (eval echo "$as_me:22431: \"$ac_cpp conftest.$ac_ext\"") >&5 + (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 + ac_status=$? + egrep -v '^ *\+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:22437: \$? = $ac_status" >&5 + (exit $ac_status); } >/dev/null; then + if test -s conftest.err; then + ac_cpp_err=$ac_c_preproc_warn_flag + else + ac_cpp_err= + fi +else + ac_cpp_err=yes +fi +if test -z "$ac_cpp_err"; then + eval "$as_ac_Header=yes" +else + echo "$as_me: failed program was:" >&5 + cat conftest.$ac_ext >&5 + eval "$as_ac_Header=no" +fi +rm -f conftest.err conftest.$ac_ext +fi +echo "$as_me:22456: result: `eval echo '${'$as_ac_Header'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 +if test `eval echo '${'$as_ac_Header'}'` = yes; then + cat >>confdefs.h <&5 +echo $ECHO_N "checking for term.h... $ECHO_C" >&6 +if test "${cf_cv_term_header+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + +# If we found , look for , but always look +# for if we do not find the variant. + +cf_header_list="term.h ncurses/term.h ncursesw/term.h" + +case ${cf_cv_ncurses_header:-curses.h} in +(*/*) + cf_header_item=`echo ${cf_cv_ncurses_header:-curses.h} | sed -e 's%\..*%%' -e 's%/.*%/%'`term.h + cf_header_list="$cf_header_item $cf_header_list" + ;; +esac + +for cf_header in $cf_header_list +do + cat >conftest.$ac_ext <<_ACEOF +#line 22487 "configure" +#include "confdefs.h" + +#include <${cf_cv_ncurses_header:-curses.h}> +#include <${cf_header}> +int +main (void) +{ +WINDOW *x + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:22501: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:22504: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:22507: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:22510: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + cf_cv_term_header=$cf_header + break +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +cf_cv_term_header=no +fi +rm -f conftest.$ac_objext conftest.$ac_ext +done + +case $cf_cv_term_header in +(no) + # If curses is ncurses, some packagers still mess it up by trying to make + # us use GNU termcap. This handles the most common case. + for cf_header in ncurses/term.h ncursesw/term.h + do + cat >conftest.$ac_ext <<_ACEOF +#line 22529 "configure" +#include "confdefs.h" + +#include <${cf_cv_ncurses_header:-curses.h}> +#ifdef NCURSES_VERSION +#include <${cf_header}> +#else +make an error +#endif +int +main (void) +{ +WINDOW *x + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:22547: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:22550: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:22553: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:22556: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + cf_cv_term_header=$cf_header + break +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +cf_cv_term_header=no +fi +rm -f conftest.$ac_objext conftest.$ac_ext + done + ;; +esac + +fi +echo "$as_me:22571: result: $cf_cv_term_header" >&5 +echo "${ECHO_T}$cf_cv_term_header" >&6 + +case $cf_cv_term_header in +(term.h) + +cat >>confdefs.h <<\EOF +#define HAVE_TERM_H 1 +EOF + + ;; +(ncurses/term.h) + +cat >>confdefs.h <<\EOF +#define HAVE_NCURSES_TERM_H 1 +EOF + + ;; +(ncursesw/term.h) + +cat >>confdefs.h <<\EOF +#define HAVE_NCURSESW_TERM_H 1 +EOF + + ;; +esac + +echo "$as_me:22598: checking return type of signal handlers" >&5 +echo $ECHO_N "checking return type of signal handlers... $ECHO_C" >&6 +if test "${ac_cv_type_signal+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +#line 22604 "configure" +#include "confdefs.h" +#include +#include +#ifdef signal +# undef signal +#endif +#ifdef __cplusplus +extern "C" void (*signal (int, void (*)(int)))(int); +#else +void (*signal ()) (); +#endif + +int +main (void) +{ +int i; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:22626: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:22629: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:22632: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:22635: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_type_signal=void +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +ac_cv_type_signal=int +fi +rm -f conftest.$ac_objext conftest.$ac_ext +fi +echo "$as_me:22645: result: $ac_cv_type_signal" >&5 +echo "${ECHO_T}$ac_cv_type_signal" >&6 + +cat >>confdefs.h <&5 +echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6 +if eval "test \"\${$as_ac_var+set}\" = set"; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +#line 22677 "configure" +#include "confdefs.h" +/* System header to define __stub macros and hopefully few prototypes, + which can conflict with char $ac_func (); below. */ +#include +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char $ac_func (); +char (*f) (); + +int +main (void) +{ +/* 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 +f = $ac_func; /* workaround for ICC 12.0.3 */ if (f == 0) return 1; +#endif + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:22708: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:22711: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:22714: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:22717: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + eval "$as_ac_var=yes" +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +eval "$as_ac_var=no" +fi +rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext +fi +echo "$as_me:22727: result: `eval echo '${'$as_ac_var'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6 +if test `eval echo '${'$as_ac_var'}'` = yes; then + cat >>confdefs.h <&5 +echo $ECHO_N "checking definition to turn on extended curses functions... $ECHO_C" >&6 +if test "${cf_cv_need_xopen_extension+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + +cf_cv_need_xopen_extension=unknown +cat >conftest.$ac_ext <<_ACEOF +#line 22745 "configure" +#include "confdefs.h" + +#include +#include <${cf_cv_ncurses_header:-curses.h}> +int +main (void) +{ + +#if defined(NCURSES_VERSION_PATCH) +#if (NCURSES_VERSION_PATCH < 20100501) && (NCURSES_VERSION_PATCH >= 20100403) + make an error +#endif +#endif +#ifdef NCURSES_VERSION + cchar_t check; + int check2 = curs_set((int)sizeof(check)); +#endif + long x = winnstr(stdscr, "", 0); + int x1, y1; + getbegyx(stdscr, y1, x1) + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:22771: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:22774: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:22777: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:22780: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + cf_cv_need_xopen_extension=none +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 + + for cf_try_xopen_extension in _XOPEN_SOURCE_EXTENDED NCURSES_WIDECHAR + do + cat >conftest.$ac_ext <<_ACEOF +#line 22790 "configure" +#include "confdefs.h" + +#define $cf_try_xopen_extension 1 +#include +#include <${cf_cv_ncurses_header:-curses.h}> +int +main (void) +{ + +#ifdef NCURSES_VERSION + cchar_t check; + int check2 = curs_set((int)sizeof(check)); +#endif + long x = winnstr(stdscr, "", 0); + int x1, y1; + getbegyx(stdscr, y1, x1) + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:22812: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:22815: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:22818: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:22821: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + cf_cv_need_xopen_extension=$cf_try_xopen_extension; break +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +fi +rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext + done + +fi +rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext + +fi +echo "$as_me:22835: result: $cf_cv_need_xopen_extension" >&5 +echo "${ECHO_T}$cf_cv_need_xopen_extension" >&6 + +case $cf_cv_need_xopen_extension in +(*_*) + + test -n "$CPPFLAGS" && CPPFLAGS="$CPPFLAGS " + CPPFLAGS="${CPPFLAGS}-D$cf_cv_need_xopen_extension" + + ;; +esac + +echo "$as_me:22847: checking for unctrl.h" >&5 +echo $ECHO_N "checking for unctrl.h... $ECHO_C" >&6 +if test "${cf_cv_unctrl_header+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + +# If we found , look for , but always look +# for if we do not find the variant. + +cf_header_list="unctrl.h ncurses/unctrl.h ncursesw/unctrl.h" + +case ${cf_cv_ncurses_header:-curses.h} in +(*/*) + cf_header_item=`echo ${cf_cv_ncurses_header:-curses.h} | sed -e 's%\..*%%' -e 's%/.*%/%'`unctrl.h + cf_header_list="$cf_header_item $cf_header_list" + ;; +esac + +for cf_header in $cf_header_list +do + cat >conftest.$ac_ext <<_ACEOF +#line 22868 "configure" +#include "confdefs.h" + +#include <${cf_cv_ncurses_header:-curses.h}> +#include <${cf_header}> +int +main (void) +{ +WINDOW *x + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:22882: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:22885: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:22888: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:22891: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + cf_cv_unctrl_header=$cf_header + break +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +cf_cv_unctrl_header=no +fi +rm -f conftest.$ac_objext conftest.$ac_ext +done + +fi +echo "$as_me:22904: result: $cf_cv_unctrl_header" >&5 +echo "${ECHO_T}$cf_cv_unctrl_header" >&6 + +case $cf_cv_unctrl_header in +(no) + { echo "$as_me:22909: WARNING: unctrl.h header not found" >&5 +echo "$as_me: WARNING: unctrl.h header not found" >&2;} + ;; +esac + +case $cf_cv_unctrl_header in +(unctrl.h) + +cat >>confdefs.h <<\EOF +#define HAVE_UNCTRL_H 1 +EOF + + ;; +(ncurses/unctrl.h) + +cat >>confdefs.h <<\EOF +#define HAVE_NCURSES_UNCTRL_H 1 +EOF + + ;; +(ncursesw/unctrl.h) + +cat >>confdefs.h <<\EOF +#define HAVE_NCURSESW_UNCTRL_H 1 +EOF + + ;; +esac + +for cf_func in \ +flushinp \ +getattrs \ +getbegx \ +getbegy \ +getbegyx \ +getcurx \ +getcury \ +getmaxx \ +getmaxy \ +getmaxyx \ +getparx \ +getpary \ +getparyx \ +use_default_colors \ +wchgat \ +wcursyncup \ +wget_wch \ +wsyncup \ + +do + +cf_tr_func=`echo "$cf_func" | sed y%abcdefghijklmnopqrstuvwxyz./-%ABCDEFGHIJKLMNOPQRSTUVWXYZ___%` + + echo "$as_me:22962: checking for ${cf_func}" >&5 +echo $ECHO_N "checking for ${cf_func}... $ECHO_C" >&6 + +echo "${as_me:-configure}:22965: testing ${cf_func} ..." 1>&5 + + if eval "test \"\${cf_cv_func_$cf_func+set}\" = set"; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + + eval cf_result='$ac_cv_func_'$cf_func + if test ".$cf_result" != ".no"; then + cat >conftest.$ac_ext <<_ACEOF +#line 22974 "configure" +#include "confdefs.h" + +#ifdef HAVE_XCURSES +#include +char * XCursesProgramName = "test"; +#else +#include <${cf_cv_ncurses_header:-curses.h}> +#if defined(NCURSES_VERSION) && defined(HAVE_NCURSESW_TERM_H) +#include +#elif defined(NCURSES_VERSION) && defined(HAVE_NCURSES_TERM_H) +#include +#elif defined(HAVE_TERM_H) +#include +#endif +#endif + +int +main (void) +{ + +#ifndef ${cf_func} +long foo = (long)(&${cf_func}); +fprintf(stderr, "testing linkage of $cf_func:%p\n", (void *)foo); +if (foo + 1234L > 5678L) + ${cf_cv_main_return:-return}(foo != 0); +#endif + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:23007: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:23010: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:23013: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:23016: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + cf_result=yes +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +cf_result=no +fi +rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext + fi + eval 'cf_cv_func_'$cf_func'=$cf_result' + +fi + + # use the computed/retrieved cache-value: + eval 'cf_result=$cf_cv_func_'$cf_func + echo "$as_me:23032: result: $cf_result" >&5 +echo "${ECHO_T}$cf_result" >&6 + if test $cf_result != no; then + cat >>confdefs.h <&5 +echo $ECHO_N "checking for start_color... $ECHO_C" >&6 +if test "${ac_cv_func_start_color+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +#line 23048 "configure" +#include "confdefs.h" +/* System header to define __stub macros and hopefully few prototypes, + which can conflict with char start_color (); below. */ +#include +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char start_color (); +char (*f) (); + +int +main (void) +{ +/* 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_start_color) || defined (__stub___start_color) +choke me +#else +f = start_color; /* workaround for ICC 12.0.3 */ if (f == 0) return 1; +#endif + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:23079: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:23082: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:23085: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:23088: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_func_start_color=yes +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +ac_cv_func_start_color=no +fi +rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext +fi +echo "$as_me:23098: result: $ac_cv_func_start_color" >&5 +echo "${ECHO_T}$ac_cv_func_start_color" >&6 +if test $ac_cv_func_start_color = yes; then + +cat >>confdefs.h <<\EOF +#define HAVE_COLOR 1 +EOF + +fi + +echo "$as_me:23108: checking for chtype typedef" >&5 +echo $ECHO_N "checking for chtype typedef... $ECHO_C" >&6 +if test "${cf_cv_chtype_decl+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + + cat >conftest.$ac_ext <<_ACEOF +#line 23115 "configure" +#include "confdefs.h" +#include <${cf_cv_ncurses_header:-curses.h}> +int +main (void) +{ +chtype foo + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:23127: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:23130: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:23133: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:23136: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + cf_cv_chtype_decl=yes +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +cf_cv_chtype_decl=no +fi +rm -f conftest.$ac_objext conftest.$ac_ext +fi +echo "$as_me:23146: result: $cf_cv_chtype_decl" >&5 +echo "${ECHO_T}$cf_cv_chtype_decl" >&6 +if test $cf_cv_chtype_decl = yes ; then + +cat >>confdefs.h <<\EOF +#define HAVE_TYPE_CHTYPE 1 +EOF + + echo "$as_me:23154: checking if chtype is scalar or struct" >&5 +echo $ECHO_N "checking if chtype is scalar or struct... $ECHO_C" >&6 +if test "${cf_cv_chtype_type+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + + cat >conftest.$ac_ext <<_ACEOF +#line 23161 "configure" +#include "confdefs.h" +#include <${cf_cv_ncurses_header:-curses.h}> +int +main (void) +{ +chtype foo; long x = foo + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:23173: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:23176: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:23179: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:23182: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + cf_cv_chtype_type=scalar +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +cf_cv_chtype_type=struct +fi +rm -f conftest.$ac_objext conftest.$ac_ext +fi +echo "$as_me:23192: result: $cf_cv_chtype_type" >&5 +echo "${ECHO_T}$cf_cv_chtype_type" >&6 + if test $cf_cv_chtype_type = scalar ; then + +cat >>confdefs.h <<\EOF +#define TYPE_CHTYPE_IS_SCALAR 1 +EOF + + fi +fi + +echo "$as_me:23203: checking for wide alternate character set array" >&5 +echo $ECHO_N "checking for wide alternate character set array... $ECHO_C" >&6 +if test "${cf_cv_curses_wacs_map+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + + cf_cv_curses_wacs_map=unknown + for name in wacs_map _wacs_map __wacs_map _nc_wacs _wacs_char + do + cat >conftest.$ac_ext <<_ACEOF +#line 23213 "configure" +#include "confdefs.h" + +#ifndef _XOPEN_SOURCE_EXTENDED +#define _XOPEN_SOURCE_EXTENDED +#endif +#include <${cf_cv_ncurses_header:-curses.h}> +int +main (void) +{ +void *foo = &($name['k']) + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:23229: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:23232: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:23235: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:23238: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + cf_cv_curses_wacs_map=$name + break +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +fi +rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext + done +fi +echo "$as_me:23249: result: $cf_cv_curses_wacs_map" >&5 +echo "${ECHO_T}$cf_cv_curses_wacs_map" >&6 + +test "$cf_cv_curses_wacs_map" != unknown && +cat >>confdefs.h <&5 +echo $ECHO_N "checking for wide alternate character constants... $ECHO_C" >&6 +if test "${cf_cv_curses_wacs_symbols+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + +cf_cv_curses_wacs_symbols=no +if test "$cf_cv_curses_wacs_map" != unknown +then + cat >conftest.$ac_ext <<_ACEOF +#line 23267 "configure" +#include "confdefs.h" + +#ifndef _XOPEN_SOURCE_EXTENDED +#define _XOPEN_SOURCE_EXTENDED +#endif +#include <${cf_cv_ncurses_header:-curses.h}> +int +main (void) +{ +cchar_t *foo = WACS_PLUS; + $cf_cv_curses_wacs_map['k'] = *WACS_PLUS + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:23284: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:23287: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:23290: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:23293: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + cf_cv_curses_wacs_symbols=yes +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +fi +rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext +else + cat >conftest.$ac_ext <<_ACEOF +#line 23303 "configure" +#include "confdefs.h" + +#ifndef _XOPEN_SOURCE_EXTENDED +#define _XOPEN_SOURCE_EXTENDED +#endif +#include <${cf_cv_ncurses_header:-curses.h}> +int +main (void) +{ +cchar_t *foo = WACS_PLUS + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:23319: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:23322: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:23325: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:23328: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + cf_cv_curses_wacs_symbols=yes +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +fi +rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext +fi + +fi +echo "$as_me:23339: result: $cf_cv_curses_wacs_symbols" >&5 +echo "${ECHO_T}$cf_cv_curses_wacs_symbols" >&6 + +test "$cf_cv_curses_wacs_symbols" != no && +cat >>confdefs.h <<\EOF +#define CURSES_WACS_SYMBOLS 1 +EOF + +for cf_func in wgetparent +do + +cf_tr_func=`echo "$cf_func" | sed y%abcdefghijklmnopqrstuvwxyz./-%ABCDEFGHIJKLMNOPQRSTUVWXYZ___%` + + echo "$as_me:23352: checking for ${cf_func}" >&5 +echo $ECHO_N "checking for ${cf_func}... $ECHO_C" >&6 + +echo "${as_me:-configure}:23355: testing ${cf_func} ..." 1>&5 + + if eval "test \"\${cf_cv_func_$cf_func+set}\" = set"; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + + eval cf_result='$ac_cv_func_'$cf_func + if test ".$cf_result" != ".no"; then + cat >conftest.$ac_ext <<_ACEOF +#line 23364 "configure" +#include "confdefs.h" + +#ifdef HAVE_XCURSES +#include +char * XCursesProgramName = "test"; +#else +#include <${cf_cv_ncurses_header:-curses.h}> +#if defined(NCURSES_VERSION) && defined(HAVE_NCURSESW_TERM_H) +#include +#elif defined(NCURSES_VERSION) && defined(HAVE_NCURSES_TERM_H) +#include +#elif defined(HAVE_TERM_H) +#include +#endif +#endif + +int +main (void) +{ + +#ifndef ${cf_func} +long foo = (long)(&${cf_func}); +fprintf(stderr, "testing linkage of $cf_func:%p\n", (void *)foo); +if (foo + 1234L > 5678L) + ${cf_cv_main_return:-return}(foo != 0); +#endif + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:23397: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:23400: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:23403: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:23406: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + cf_result=yes +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +cf_result=no +fi +rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext + fi + eval 'cf_cv_func_'$cf_func'=$cf_result' + +fi + + # use the computed/retrieved cache-value: + eval 'cf_result=$cf_cv_func_'$cf_func + echo "$as_me:23422: result: $cf_result" >&5 +echo "${ECHO_T}$cf_result" >&6 + if test $cf_result != no; then + cat >>confdefs.h <&5 +echo $ECHO_N "checking if WINDOW has _parent member... $ECHO_C" >&6 + cat >conftest.$ac_ext <<_ACEOF +#line 23437 "configure" +#include "confdefs.h" +#include <${cf_cv_ncurses_header:-curses.h}> +int +main (void) +{ +WINDOW *p = stdscr->_parent + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:23449: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:23452: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:23455: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:23458: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + cf_window__parent=yes +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +cf_window__parent=no +fi +rm -f conftest.$ac_objext conftest.$ac_ext + echo "$as_me:23467: result: $cf_window__parent" >&5 +echo "${ECHO_T}$cf_window__parent" >&6 + if test "$cf_window__parent" = yes + then + +cat >>confdefs.h <<\EOF +#define HAVE_WINDOW__PARENT 1 +EOF + + fi +fi + +for ac_header in sys/wait.h +do +as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` +echo "$as_me:23482: checking for $ac_header" >&5 +echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 +if eval "test \"\${$as_ac_Header+set}\" = set"; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +#line 23488 "configure" +#include "confdefs.h" +#include <$ac_header> +_ACEOF +if { (eval echo "$as_me:23492: \"$ac_cpp conftest.$ac_ext\"") >&5 + (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 + ac_status=$? + egrep -v '^ *\+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:23498: \$? = $ac_status" >&5 + (exit $ac_status); } >/dev/null; then + if test -s conftest.err; then + ac_cpp_err=$ac_c_preproc_warn_flag + else + ac_cpp_err= + fi +else + ac_cpp_err=yes +fi +if test -z "$ac_cpp_err"; then + eval "$as_ac_Header=yes" +else + echo "$as_me: failed program was:" >&5 + cat conftest.$ac_ext >&5 + eval "$as_ac_Header=no" +fi +rm -f conftest.err conftest.$ac_ext +fi +echo "$as_me:23517: result: `eval echo '${'$as_ac_Header'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 +if test `eval echo '${'$as_ac_Header'}'` = yes; then + cat >>confdefs.h <&5 +echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 +if eval "test \"\${$as_ac_Header+set}\" = set"; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +#line 23544 "configure" +#include "confdefs.h" +#include <$ac_header> +_ACEOF +if { (eval echo "$as_me:23548: \"$ac_cpp conftest.$ac_ext\"") >&5 + (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 + ac_status=$? + egrep -v '^ *\+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:23554: \$? = $ac_status" >&5 + (exit $ac_status); } >/dev/null; then + if test -s conftest.err; then + ac_cpp_err=$ac_c_preproc_warn_flag + else + ac_cpp_err= + fi +else + ac_cpp_err=yes +fi +if test -z "$ac_cpp_err"; then + eval "$as_ac_Header=yes" +else + echo "$as_me: failed program was:" >&5 + cat conftest.$ac_ext >&5 + eval "$as_ac_Header=no" +fi +rm -f conftest.err conftest.$ac_ext +fi +echo "$as_me:23573: result: `eval echo '${'$as_ac_Header'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 +if test `eval echo '${'$as_ac_Header'}'` = yes; then + cat >>confdefs.h <&5 +echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 +if eval "test \"\${$as_ac_Header+set}\" = set"; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +#line 23592 "configure" +#include "confdefs.h" +#include <$ac_header> +_ACEOF +if { (eval echo "$as_me:23596: \"$ac_cpp conftest.$ac_ext\"") >&5 + (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 + ac_status=$? + egrep -v '^ *\+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:23602: \$? = $ac_status" >&5 + (exit $ac_status); } >/dev/null; then + if test -s conftest.err; then + ac_cpp_err=$ac_c_preproc_warn_flag + else + ac_cpp_err= + fi +else + ac_cpp_err=yes +fi +if test -z "$ac_cpp_err"; then + eval "$as_ac_Header=yes" +else + echo "$as_me: failed program was:" >&5 + cat conftest.$ac_ext >&5 + eval "$as_ac_Header=no" +fi +rm -f conftest.err conftest.$ac_ext +fi +echo "$as_me:23621: result: `eval echo '${'$as_ac_Header'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 +if test `eval echo '${'$as_ac_Header'}'` = yes; then + cat >>confdefs.h <&5 +echo $ECHO_N "checking for union wait... $ECHO_C" >&6 +if test "${cf_cv_type_unionwait+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + + cat >conftest.$ac_ext <<_ACEOF +#line 23650 "configure" +#include "confdefs.h" +$cf_wait_headers +int +main (void) +{ +int x; + int y = WEXITSTATUS(x); + int z = WTERMSIG(x); + wait(&x); + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:23666: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:23669: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:23672: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:23675: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + cf_cv_type_unionwait=no + echo compiles ok w/o union wait 1>&5 + +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 + + cat >conftest.$ac_ext <<_ACEOF +#line 23685 "configure" +#include "confdefs.h" +$cf_wait_headers +int +main (void) +{ +union wait x; +#ifdef WEXITSTATUS + int y = WEXITSTATUS(x); +#endif +#ifdef WTERMSIG + int z = WTERMSIG(x); +#endif + wait(&x); + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:23705: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:23708: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:23711: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:23714: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + cf_cv_type_unionwait=yes + echo compiles ok with union wait and possibly macros too 1>&5 + +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +cf_cv_type_unionwait=no +fi +rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext +fi +rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext +fi + +echo "$as_me:23729: result: $cf_cv_type_unionwait" >&5 +echo "${ECHO_T}$cf_cv_type_unionwait" >&6 +test $cf_cv_type_unionwait = yes && +cat >>confdefs.h <<\EOF +#define HAVE_TYPE_UNIONWAIT 1 +EOF + +if test $cf_cv_type_unionwait = yes; then + + echo "$as_me:23738: checking if union wait can be used as wait-arg" >&5 +echo $ECHO_N "checking if union wait can be used as wait-arg... $ECHO_C" >&6 + if test "${cf_cv_arg_union_wait+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + + cat >conftest.$ac_ext <<_ACEOF +#line 23745 "configure" +#include "confdefs.h" +$cf_wait_headers +int +main (void) +{ +union wait x; wait(&x) + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:23757: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:23760: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:23763: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:23766: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + cf_cv_arg_union_wait=yes +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +cf_cv_arg_union_wait=no +fi +rm -f conftest.$ac_objext conftest.$ac_ext + +fi + + echo "$as_me:23778: result: $cf_cv_arg_union_wait" >&5 +echo "${ECHO_T}$cf_cv_arg_union_wait" >&6 + test $cf_cv_arg_union_wait = yes && +cat >>confdefs.h <<\EOF +#define WAIT_USES_UNION 1 +EOF + + echo "$as_me:23785: checking if union wait can be used as waitpid-arg" >&5 +echo $ECHO_N "checking if union wait can be used as waitpid-arg... $ECHO_C" >&6 + if test "${cf_cv_arg_union_waitpid+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + + cat >conftest.$ac_ext <<_ACEOF +#line 23792 "configure" +#include "confdefs.h" +$cf_wait_headers +int +main (void) +{ +union wait x; waitpid(0, &x, 0) + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:23804: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:23807: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:23810: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:23813: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + cf_cv_arg_union_waitpid=yes +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +cf_cv_arg_union_waitpid=no +fi +rm -f conftest.$ac_objext conftest.$ac_ext + +fi + + echo "$as_me:23825: result: $cf_cv_arg_union_waitpid" >&5 +echo "${ECHO_T}$cf_cv_arg_union_waitpid" >&6 + test $cf_cv_arg_union_waitpid = yes && +cat >>confdefs.h <<\EOF +#define WAITPID_USES_UNION 1 +EOF + +fi + +echo "$as_me:23834: checking if we must include wchar.h to declare mbstate_t" >&5 +echo $ECHO_N "checking if we must include wchar.h to declare mbstate_t... $ECHO_C" >&6 +if test "${cf_cv_mbstate_t+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + +cat >conftest.$ac_ext <<_ACEOF +#line 23841 "configure" +#include "confdefs.h" + +#include +#include +#ifdef HAVE_LIBUTF8_H +#include +#endif +int +main (void) +{ +mbstate_t state + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:23858: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:23861: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:23864: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:23867: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + cf_cv_mbstate_t=no +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +cat >conftest.$ac_ext <<_ACEOF +#line 23874 "configure" +#include "confdefs.h" + +#include +#include +#include +#ifdef HAVE_LIBUTF8_H +#include +#endif +int +main (void) +{ +mbstate_t value + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:23892: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:23895: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:23898: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:23901: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + cf_cv_mbstate_t=yes +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +cf_cv_mbstate_t=unknown +fi +rm -f conftest.$ac_objext conftest.$ac_ext +fi +rm -f conftest.$ac_objext conftest.$ac_ext +fi +echo "$as_me:23913: result: $cf_cv_mbstate_t" >&5 +echo "${ECHO_T}$cf_cv_mbstate_t" >&6 + +if test "$cf_cv_mbstate_t" = yes ; then + +cat >>confdefs.h <<\EOF +#define NEED_WCHAR_H 1 +EOF + +fi + +if test "$cf_cv_mbstate_t" != unknown ; then + +cat >>confdefs.h <<\EOF +#define HAVE_MBSTATE_T 1 +EOF + +fi + +for ac_header in \ +termio.h \ +termios.h \ +unistd.h \ +sys/ioctl.h \ +sys/termio.h \ + +do +as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` +echo "$as_me:23941: checking for $ac_header" >&5 +echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 +if eval "test \"\${$as_ac_Header+set}\" = set"; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +#line 23947 "configure" +#include "confdefs.h" +#include <$ac_header> +_ACEOF +if { (eval echo "$as_me:23951: \"$ac_cpp conftest.$ac_ext\"") >&5 + (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 + ac_status=$? + egrep -v '^ *\+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:23957: \$? = $ac_status" >&5 + (exit $ac_status); } >/dev/null; then + if test -s conftest.err; then + ac_cpp_err=$ac_c_preproc_warn_flag + else + ac_cpp_err= + fi +else + ac_cpp_err=yes +fi +if test -z "$ac_cpp_err"; then + eval "$as_ac_Header=yes" +else + echo "$as_me: failed program was:" >&5 + cat conftest.$ac_ext >&5 + eval "$as_ac_Header=no" +fi +rm -f conftest.err conftest.$ac_ext +fi +echo "$as_me:23976: result: `eval echo '${'$as_ac_Header'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 +if test `eval echo '${'$as_ac_Header'}'` = yes; then + cat >>confdefs.h <&5 +echo $ECHO_N "checking whether termios.h needs _POSIX_SOURCE... $ECHO_C" >&6 + cat >conftest.$ac_ext <<_ACEOF +#line 23996 "configure" +#include "confdefs.h" +#include +int +main (void) +{ +struct termios foo; int x = foo.c_iflag + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:24008: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:24011: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:24014: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:24017: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + termios_bad=no +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 + + cat >conftest.$ac_ext <<_ACEOF +#line 24025 "configure" +#include "confdefs.h" + +#define _POSIX_SOURCE +#include +int +main (void) +{ +struct termios foo; int x = foo.c_iflag + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:24039: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:24042: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:24045: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:24048: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + termios_bad=unknown +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +termios_bad=yes +cat >>confdefs.h <<\EOF +#define _POSIX_SOURCE 1 +EOF + +fi +rm -f conftest.$ac_objext conftest.$ac_ext + +fi +rm -f conftest.$ac_objext conftest.$ac_ext + echo "$as_me:24064: result: $termios_bad" >&5 +echo "${ECHO_T}$termios_bad" >&6 + fi +fi + +echo "$as_me:24069: checking declaration of size-change" >&5 +echo $ECHO_N "checking declaration of size-change... $ECHO_C" >&6 +if test "${cf_cv_sizechange+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + + cf_cv_sizechange=unknown + cf_save_CPPFLAGS="$CPPFLAGS" + +for cf_opts in "" "NEED_PTEM_H" +do + + CPPFLAGS="$cf_save_CPPFLAGS" + if test -n "$cf_opts" + then + + test -n "$CPPFLAGS" && CPPFLAGS="$CPPFLAGS " + CPPFLAGS="${CPPFLAGS}-D$cf_opts" + + fi + cat >conftest.$ac_ext <<_ACEOF +#line 24090 "configure" +#include "confdefs.h" +#include +#ifdef HAVE_TERMIOS_H +#include +#else +#ifdef HAVE_TERMIO_H +#include +#endif +#endif + +#ifdef NEED_PTEM_H +/* This is a workaround for SCO: they neglected to define struct winsize in + * termios.h -- it's only in termio.h and ptem.h + */ +#include +#include +#endif + +#ifdef HAVE_SYS_IOCTL_H +#include +#endif + +int +main (void) +{ + +#ifdef TIOCGSIZE + struct ttysize win; /* SunOS 3.0... */ + int y = win.ts_lines; + int x = win.ts_cols; +#else +#ifdef TIOCGWINSZ + struct winsize win; /* everything else */ + int y = win.ws_row; + int x = win.ws_col; +#else + no TIOCGSIZE or TIOCGWINSZ +#endif /* TIOCGWINSZ */ +#endif /* TIOCGSIZE */ + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:24136: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:24139: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:24142: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:24145: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + cf_cv_sizechange=yes +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +cf_cv_sizechange=no +fi +rm -f conftest.$ac_objext conftest.$ac_ext + + CPPFLAGS="$cf_save_CPPFLAGS" + if test "$cf_cv_sizechange" = yes ; then + echo "size-change succeeded ($cf_opts)" >&5 + test -n "$cf_opts" && cf_cv_sizechange="$cf_opts" + break + fi +done + +fi +echo "$as_me:24164: result: $cf_cv_sizechange" >&5 +echo "${ECHO_T}$cf_cv_sizechange" >&6 +if test "$cf_cv_sizechange" != no ; then + +cat >>confdefs.h <<\EOF +#define HAVE_SIZECHANGE 1 +EOF + + case $cf_cv_sizechange in + (NEED*) + cat >>confdefs.h <conftest.$ac_ext <<_ACEOF +#line 24188 "configure" +#include "confdefs.h" +#include +int +main (void) +{ +setlocale(LC_ALL, "") + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:24200: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:24203: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:24206: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:24209: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + +cat >>confdefs.h <<\EOF +#define HAVE_SETLOCALE 1 +EOF + +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +fi +rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext + +echo "$as_me:24222: checking if runtime has nl_langinfo support for first weekday" >&5 +echo $ECHO_N "checking if runtime has nl_langinfo support for first weekday... $ECHO_C" >&6 +if test "${cf_nl_langinfo_1stday+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + + cat >conftest.$ac_ext <<_ACEOF +#line 24229 "configure" +#include "confdefs.h" + +#include +#include + +int +main (void) +{ + + int first_weekday = nl_langinfo (_NL_TIME_FIRST_WEEKDAY)[0]; + long week_1stday_l = (long) nl_langinfo (_NL_TIME_WEEK_1STDAY); + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:24247: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:24250: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:24253: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:24256: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + cf_nl_langinfo_1stday=yes + +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +cf_nl_langinfo_1stday=no + +fi +rm -f conftest.$ac_objext conftest.$ac_ext + +fi +echo "$as_me:24269: result: $cf_nl_langinfo_1stday" >&5 +echo "${ECHO_T}$cf_nl_langinfo_1stday" >&6 +test "x$cf_nl_langinfo_1stday" = xyes && cat >>confdefs.h <<\EOF +#define HAVE_NL_LANGINFO_1STDAY 1 +EOF + +echo "$as_me:24275: checking if rpath-hack should be disabled" >&5 +echo $ECHO_N "checking if rpath-hack should be disabled... $ECHO_C" >&6 + +# Check whether --enable-rpath-hack or --disable-rpath-hack was given. +if test "${enable_rpath_hack+set}" = set; then + enableval="$enable_rpath_hack" + test "$enableval" != no && enableval=yes + if test "$enableval" != "yes" ; then + cf_disable_rpath_hack=yes + else + cf_disable_rpath_hack=no + fi +else + enableval=yes + cf_disable_rpath_hack=no + +fi; +echo "$as_me:24292: result: $cf_disable_rpath_hack" >&5 +echo "${ECHO_T}$cf_disable_rpath_hack" >&6 +if test "$cf_disable_rpath_hack" = no ; then + +echo "$as_me:24296: checking for updated LDFLAGS" >&5 +echo $ECHO_N "checking for updated LDFLAGS... $ECHO_C" >&6 +if test -n "$LD_RPATH_OPT" ; then + echo "$as_me:24299: result: maybe" >&5 +echo "${ECHO_T}maybe" >&6 + + for ac_prog in ldd +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +echo "$as_me:24306: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_cf_ldd_prog+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$cf_ldd_prog"; then + ac_cv_prog_cf_ldd_prog="$cf_ldd_prog" # Let the user override the test. +else + ac_save_IFS=$IFS; IFS=$ac_path_separator +ac_dummy="$PATH" +for ac_dir in $ac_dummy; do + IFS=$ac_save_IFS + test -z "$ac_dir" && ac_dir=. + $as_executable_p "$ac_dir/$ac_word" || continue +ac_cv_prog_cf_ldd_prog="$ac_prog" +echo "$as_me:24321: found $ac_dir/$ac_word" >&5 +break +done + +fi +fi +cf_ldd_prog=$ac_cv_prog_cf_ldd_prog +if test -n "$cf_ldd_prog"; then + echo "$as_me:24329: result: $cf_ldd_prog" >&5 +echo "${ECHO_T}$cf_ldd_prog" >&6 +else + echo "$as_me:24332: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + test -n "$cf_ldd_prog" && break +done +test -n "$cf_ldd_prog" || cf_ldd_prog="no" + + cf_rpath_list="/usr/lib /lib" + if test "$cf_ldd_prog" != no + then + cf_rpath_oops= + +cat >conftest.$ac_ext <<_ACEOF +#line 24346 "configure" +#include "confdefs.h" +#include +int +main (void) +{ +printf("Hello"); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:24358: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:24361: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:24364: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:24367: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + cf_rpath_oops=`$cf_ldd_prog conftest$ac_exeext | fgrep ' not found' | sed -e 's% =>.*$%%' |sort | uniq` + cf_rpath_list=`$cf_ldd_prog conftest$ac_exeext | fgrep / | sed -e 's%^.*[ ]/%/%' -e 's%/[^/][^/]*$%%' |sort | uniq` +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +fi +rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext + + # If we passed the link-test, but get a "not found" on a given library, + # this could be due to inept reconfiguration of gcc to make it only + # partly honor /usr/local/lib (or whatever). Sometimes this behavior + # is intentional, e.g., installing gcc in /usr/bin and suppressing the + # /usr/local libraries. + if test -n "$cf_rpath_oops" + then + for cf_rpath_src in $cf_rpath_oops + do + for cf_rpath_dir in \ + /usr/local \ + /usr/pkg \ + /opt/sfw + do + if test -f $cf_rpath_dir/lib/$cf_rpath_src + then + test -n "$verbose" && echo " ...adding -L$cf_rpath_dir/lib to LDFLAGS for $cf_rpath_src" 1>&6 + +echo "${as_me:-configure}:24395: testing ...adding -L$cf_rpath_dir/lib to LDFLAGS for $cf_rpath_src ..." 1>&5 + + LDFLAGS="$LDFLAGS -L$cf_rpath_dir/lib" + break + fi + done + done + fi + fi + + test -n "$verbose" && echo " ...checking EXTRA_LDFLAGS $EXTRA_LDFLAGS" 1>&6 + +echo "${as_me:-configure}:24407: testing ...checking EXTRA_LDFLAGS $EXTRA_LDFLAGS ..." 1>&5 + +test -n "$verbose" && echo " ...checking LDFLAGS $LDFLAGS" 1>&6 + +echo "${as_me:-configure}:24411: testing ...checking LDFLAGS $LDFLAGS ..." 1>&5 + +cf_rpath_dst= +for cf_rpath_src in $LDFLAGS +do + case $cf_rpath_src in + (-L*) + + # check if this refers to a directory which we will ignore + cf_rpath_skip=no + if test -n "$cf_rpath_list" + then + for cf_rpath_item in $cf_rpath_list + do + if test "x$cf_rpath_src" = "x-L$cf_rpath_item" + then + cf_rpath_skip=yes + break + fi + done + fi + + if test "$cf_rpath_skip" = no + then + # transform the option + if test "$LD_RPATH_OPT" = "-R " ; then + cf_rpath_tmp=`echo "$cf_rpath_src" |sed -e "s%-L%-R %"` + else + cf_rpath_tmp=`echo "$cf_rpath_src" |sed -e "s%-L%$LD_RPATH_OPT%"` + fi + + # if we have not already added this, add it now + cf_rpath_tst=`echo "$EXTRA_LDFLAGS" | sed -e "s%$cf_rpath_tmp %%"` + if test "x$cf_rpath_tst" = "x$EXTRA_LDFLAGS" + then + test -n "$verbose" && echo " ...Filter $cf_rpath_src ->$cf_rpath_tmp" 1>&6 + +echo "${as_me:-configure}:24448: testing ...Filter $cf_rpath_src ->$cf_rpath_tmp ..." 1>&5 + + EXTRA_LDFLAGS="$cf_rpath_tmp $EXTRA_LDFLAGS" + fi + fi + ;; + esac + cf_rpath_dst="$cf_rpath_dst $cf_rpath_src" +done +LDFLAGS=$cf_rpath_dst + +test -n "$verbose" && echo " ...checked LDFLAGS $LDFLAGS" 1>&6 + +echo "${as_me:-configure}:24461: testing ...checked LDFLAGS $LDFLAGS ..." 1>&5 + +test -n "$verbose" && echo " ...checking LIBS $LIBS" 1>&6 + +echo "${as_me:-configure}:24465: testing ...checking LIBS $LIBS ..." 1>&5 + +cf_rpath_dst= +for cf_rpath_src in $LIBS +do + case $cf_rpath_src in + (-L*) + + # check if this refers to a directory which we will ignore + cf_rpath_skip=no + if test -n "$cf_rpath_list" + then + for cf_rpath_item in $cf_rpath_list + do + if test "x$cf_rpath_src" = "x-L$cf_rpath_item" + then + cf_rpath_skip=yes + break + fi + done + fi + + if test "$cf_rpath_skip" = no + then + # transform the option + if test "$LD_RPATH_OPT" = "-R " ; then + cf_rpath_tmp=`echo "$cf_rpath_src" |sed -e "s%-L%-R %"` + else + cf_rpath_tmp=`echo "$cf_rpath_src" |sed -e "s%-L%$LD_RPATH_OPT%"` + fi + + # if we have not already added this, add it now + cf_rpath_tst=`echo "$EXTRA_LDFLAGS" | sed -e "s%$cf_rpath_tmp %%"` + if test "x$cf_rpath_tst" = "x$EXTRA_LDFLAGS" + then + test -n "$verbose" && echo " ...Filter $cf_rpath_src ->$cf_rpath_tmp" 1>&6 + +echo "${as_me:-configure}:24502: testing ...Filter $cf_rpath_src ->$cf_rpath_tmp ..." 1>&5 + + EXTRA_LDFLAGS="$cf_rpath_tmp $EXTRA_LDFLAGS" + fi + fi + ;; + esac + cf_rpath_dst="$cf_rpath_dst $cf_rpath_src" +done +LIBS=$cf_rpath_dst + +test -n "$verbose" && echo " ...checked LIBS $LIBS" 1>&6 + +echo "${as_me:-configure}:24515: testing ...checked LIBS $LIBS ..." 1>&5 + + test -n "$verbose" && echo " ...checked EXTRA_LDFLAGS $EXTRA_LDFLAGS" 1>&6 + +echo "${as_me:-configure}:24519: testing ...checked EXTRA_LDFLAGS $EXTRA_LDFLAGS ..." 1>&5 + +else + echo "$as_me:24522: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + +fi + +cf_libname=\${LIB_BASENAME} +cf_liblink=$cf_libname +cf_libroot=$cf_libname + +if test "x$cf_cv_do_symlinks" = xyes +then + case "x$cf_cv_shlib_version" in + (xrel) + cf_liblink="\${LIB_ABI_NAME}" + cf_libname="\${LIB_REL_NAME}" + ;; + (xabi) + cf_liblink="\${LIB_REL_NAME}" + cf_libname="\${LIB_ABI_NAME}" + ;; + esac +fi +LIB_TARGET=$cf_libname + +SET_SHLIB_VARS="# begin CF__DEFINE_SHLIB_VARS\\ +LIB_BASENAME = \${LIB_PREFIX}\${LIB_ROOTNAME}\${LIB_SUFFIX}\\ +LIB_REL_NAME = \${LIB_BASENAME}.\${REL_VERSION}\\ +LIB_ABI_NAME = \${LIB_BASENAME}.\${ABI_VERSION}\\ +LIB_TARGET = $LIB_TARGET\\ +RM_SHARED_OPTS = $RM_SHARED_OPTS\\ +# end CF__DEFINE_SHLIB_VARS" + +ac_config_files="$ac_config_files dialog-config makefile $EXTRA_OUTPUT $SUB_MAKEFILE" +ac_config_commands="$ac_config_commands default" +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 overriden when +# loading this file, other *unset* `ac_cv_foo' will be assigned the +# following values. + +_ACEOF + +# The following way of writing the cache mishandles newlines in values, +# but we know of no workaround that is simple, portable, and efficient. +# So, don't put newlines in cache variables' values. +# Ultrix sh set writes to stderr and can't be redirected directly, +# and sets the high bit in the cache file unless we assign to the vars. +{ + (set) 2>&1 | + case `(ac_space=' '; set | grep ac_space) 2>&1` in + *ac_space=\ *) + # `set' does not quote correctly, so add quotes (double-quote + # substitution turns \\\\ into \\, and sed turns \\ into \). + sed -n \ + "s/'/'\\\\''/g; + s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p" + ;; + *) + # `set' quotes correctly as required by POSIX, so do not add quotes. + sed -n \ + "s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1=\\2/p" + ;; + esac; +} | + sed ' + t clear + : clear + s/^\([^=]*\)=\(.*[{}].*\)$/test "${\1+set}" = set || &/ + t end + /^ac_cv_env/!s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/ + : end' >>confcache +if cmp -s $cache_file confcache; then :; else + if test -w $cache_file; then + test "x$cache_file" != "x/dev/null" && echo "updating cache $cache_file" + cat confcache >$cache_file + else + echo "not updating unwritable cache $cache_file" + fi +fi +rm -f confcache + +test "x$prefix" = xNONE && prefix=$ac_default_prefix +# Let make expand exec_prefix. +test "x$exec_prefix" = xNONE && exec_prefix='${prefix}' + +# VPATH may cause trouble with some makes, so we remove $(srcdir), +# ${srcdir} and @srcdir@ from VPATH if srcdir is ".", strip leading and +# trailing colons and then remove the whole line if VPATH becomes empty +# (actually we leave an empty line to preserve line numbers). +if test "x$srcdir" = x.; then + ac_vpsub='/^[ ]*VPATH[ ]*=/{ +s/:*\$(srcdir):*/:/; +s/:*\${srcdir}:*/:/; +s/:*@srcdir@:*/:/; +s/^\([^=]*=[ ]*\):*/\1/; +s/:*$//; +s/^[^=]*=[ ]*$//; +}' +fi + +DEFS=-DHAVE_CONFIG_H + +: ${CONFIG_STATUS=./config.status} +ac_clean_files_save=$ac_clean_files +ac_clean_files="$ac_clean_files $CONFIG_STATUS" +{ echo "$as_me:24636: creating $CONFIG_STATUS" >&5 +echo "$as_me: creating $CONFIG_STATUS" >&6;} +cat >$CONFIG_STATUS <<_ACEOF +#! $SHELL +# Generated automatically by configure. +# 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 +SHELL=\${CONFIG_SHELL-$SHELL} +ac_cs_invocation="\$0 \$@" + +_ACEOF + +cat >>$CONFIG_STATUS <<\_ACEOF +# Be Bourne compatible +if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then + emulate sh + NULLCMD=: +elif test -n "${BASH_VERSION+set}" && (set -o posix) >/dev/null 2>&1; then + set -o posix +fi + +# Name of the executable. +as_me=`echo "$0" |sed 's,.*[\\/],,'` + +if expr a : '\(a\)' >/dev/null 2>&1; then + as_expr=expr +else + as_expr=false +fi + +rm -f conf$$ conf$$.exe conf$$.file +echo >conf$$.file +if ln -s conf$$.file conf$$ 2>/dev/null; then + # We could just check for DJGPP; but this test a) works b) is more generic + # and c) will remain valid once DJGPP supports symlinks (DJGPP 2.04). + if test -f conf$$.exe; then + # Don't use ln at all; we don't have any links + as_ln_s='cp -p' + else + as_ln_s='ln -s' + fi +elif ln conf$$.file conf$$ 2>/dev/null; then + as_ln_s=ln +else + as_ln_s='cp -p' +fi +rm -f conf$$ conf$$.exe conf$$.file + +as_executable_p="test -f" + +# Support unset when possible. +if (FOO=FOO; unset FOO) >/dev/null 2>&1; then + as_unset=unset +else + as_unset=false +fi + +# NLS nuisances. +$as_unset LANG || test "${LANG+set}" != set || { LANG=C; export LANG; } +$as_unset LC_ALL || test "${LC_ALL+set}" != set || { LC_ALL=C; export LC_ALL; } +$as_unset LC_TIME || test "${LC_TIME+set}" != set || { LC_TIME=C; export LC_TIME; } +$as_unset LC_CTYPE || test "${LC_CTYPE+set}" != set || { LC_CTYPE=C; export LC_CTYPE; } +$as_unset LANGUAGE || test "${LANGUAGE+set}" != set || { LANGUAGE=C; export LANGUAGE; } +$as_unset LC_COLLATE || test "${LC_COLLATE+set}" != set || { LC_COLLATE=C; export LC_COLLATE; } +$as_unset LC_NUMERIC || test "${LC_NUMERIC+set}" != set || { LC_NUMERIC=C; export LC_NUMERIC; } +$as_unset LC_MESSAGES || test "${LC_MESSAGES+set}" != set || { LC_MESSAGES=C; export LC_MESSAGES; } + +# IFS +# We need space, tab and new line, in precisely that order. +as_nl=' +' +IFS=" $as_nl" + +# CDPATH. +$as_unset CDPATH || test "${CDPATH+set}" != set || { CDPATH=:; export CDPATH; } + +exec 6>&1 + +_ACEOF + +# Files that config.status was made for. +if test -n "$ac_config_files"; then + echo "config_files=\"$ac_config_files\"" >>$CONFIG_STATUS +fi + +if test -n "$ac_config_headers"; then + echo "config_headers=\"$ac_config_headers\"" >>$CONFIG_STATUS +fi + +if test -n "$ac_config_links"; then + echo "config_links=\"$ac_config_links\"" >>$CONFIG_STATUS +fi + +if test -n "$ac_config_commands"; then + echo "config_commands=\"$ac_config_commands\"" >>$CONFIG_STATUS +fi + +cat >>$CONFIG_STATUS <<\EOF + +ac_cs_usage="\ +\`$as_me' instantiates files from templates according to the +current configuration. + +Usage: $0 [OPTIONS] [FILE]... + + -h, --help print this help, then exit + -V, --version print version number, then exit + -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 ." +EOF + +cat >>$CONFIG_STATUS <>$CONFIG_STATUS <<\EOF +# If no file are specified by the user, then we need to provide default +# value. By we need to know if files were specified by the user. +ac_need_defaults=: +while test $# != 0 +do + case $1 in + --*=*) + ac_option=`expr "x$1" : 'x\([^=]*\)='` + ac_optarg=`expr "x$1" : 'x[^=]*=\(.*\)'` + shift + set dummy "$ac_option" "$ac_optarg" ${1+"$@"} + shift + ;; + -*);; + *) # This is not an option, so the user has probably given explicit + # arguments. + ac_need_defaults=false;; + esac + + case $1 in + # Handling of the options. +EOF +cat >>$CONFIG_STATUS <>$CONFIG_STATUS <<\EOF + --version | --vers* | -V ) + echo "$ac_cs_version"; exit 0 ;; + --he | --h) + # Conflict between --help and --header + { { echo "$as_me:24812: error: ambiguous option: $1 +Try \`$0 --help' for more information." >&5 +echo "$as_me: error: ambiguous option: $1 +Try \`$0 --help' for more information." >&2;} + { (exit 1); exit 1; }; };; + --help | --hel | -h ) + echo "$ac_cs_usage"; exit 0 ;; + --debug | --d* | -d ) + debug=: ;; + --file | --fil | --fi | --f ) + shift + CONFIG_FILES="$CONFIG_FILES $1" + ac_need_defaults=false;; + --header | --heade | --head | --hea ) + shift + CONFIG_HEADERS="$CONFIG_HEADERS $1" + ac_need_defaults=false;; + + # This is an error. + -*) { { echo "$as_me:24831: error: unrecognized option: $1 +Try \`$0 --help' for more information." >&5 +echo "$as_me: error: unrecognized option: $1 +Try \`$0 --help' for more information." >&2;} + { (exit 1); exit 1; }; } ;; + + *) ac_config_targets="$ac_config_targets $1" ;; + + esac + shift +done + +exec 5>>config.log +cat >&5 << _ACEOF + +## ----------------------- ## +## Running config.status. ## +## ----------------------- ## + +This file was extended by $as_me 2.52.20170501, executed with + CONFIG_FILES = $CONFIG_FILES + CONFIG_HEADERS = $CONFIG_HEADERS + CONFIG_LINKS = $CONFIG_LINKS + CONFIG_COMMANDS = $CONFIG_COMMANDS + > $ac_cs_invocation +on `(hostname || uname -n) 2>/dev/null | sed 1q` + +_ACEOF +EOF + +cat >>$CONFIG_STATUS <>$CONFIG_STATUS <<\EOF +for ac_config_target in $ac_config_targets +do + case "$ac_config_target" in + # Handling of arguments. + "dialog-config" ) CONFIG_FILES="$CONFIG_FILES dialog-config" ;; + "makefile" ) CONFIG_FILES="$CONFIG_FILES makefile" ;; + "$EXTRA_OUTPUT" ) CONFIG_FILES="$CONFIG_FILES $EXTRA_OUTPUT" ;; + "$SUB_MAKEFILE" ) CONFIG_FILES="$CONFIG_FILES $SUB_MAKEFILE" ;; + "default-1" ) CONFIG_COMMANDS="$CONFIG_COMMANDS default-1" ;; + "default" ) CONFIG_COMMANDS="$CONFIG_COMMANDS default" ;; + "dlg_config.h" ) CONFIG_HEADERS="$CONFIG_HEADERS dlg_config.h:config.hin" ;; + *) { { echo "$as_me:24890: error: invalid argument: $ac_config_target" >&5 +echo "$as_me: error: invalid argument: $ac_config_target" >&2;} + { (exit 1); exit 1; }; };; + esac +done + +# If the user did not use the arguments to specify the items to instantiate, +# then the envvar interface is used. Set only those that are not. +# We use the long form for the default assignment because of an extremely +# bizarre bug on SunOS 4.1.3. +if $ac_need_defaults; then + test "${CONFIG_FILES+set}" = set || CONFIG_FILES=$config_files + test "${CONFIG_HEADERS+set}" = set || CONFIG_HEADERS=$config_headers + test "${CONFIG_COMMANDS+set}" = set || CONFIG_COMMANDS=$config_commands +fi + +# Create a temporary directory, and hook for its removal unless debugging. +$debug || +{ + trap 'exit_status=$?; rm -rf $tmp && exit $exit_status' 0 + trap '{ (exit 1); exit 1; }' 1 2 13 15 +} + +# Create a (secure) tmp directory for tmp files. +: ${TMPDIR=/tmp} +{ + tmp=`(umask 077 && mktemp -d -q "$TMPDIR/csXXXXXX") 2>/dev/null` && + test -n "$tmp" && test -d "$tmp" +} || +{ + tmp=$TMPDIR/cs$$-$RANDOM + (umask 077 && mkdir $tmp) +} || +{ + echo "$me: cannot create a temporary directory in $TMPDIR" >&2 + { (exit 1); exit 1; } +} + +EOF + +cat >>$CONFIG_STATUS <\$tmp/subs.sed <<\\CEOF +s,@SHELL@,$SHELL,;t t +s,@exec_prefix@,$exec_prefix,;t t +s,@prefix@,$prefix,;t t +s,@program_transform_name@,$program_transform_name,;t t +s,@bindir@,$bindir,;t t +s,@sbindir@,$sbindir,;t t +s,@libexecdir@,$libexecdir,;t t +s,@datarootdir@,$datarootdir,;t t +s,@datadir@,$datadir,;t t +s,@sysconfdir@,$sysconfdir,;t t +s,@sharedstatedir@,$sharedstatedir,;t t +s,@localstatedir@,$localstatedir,;t t +s,@libdir@,$libdir,;t t +s,@includedir@,$includedir,;t t +s,@oldincludedir@,$oldincludedir,;t t +s,@infodir@,$infodir,;t t +s,@mandir@,$mandir,;t t +s,@PACKAGE_NAME@,$PACKAGE_NAME,;t t +s,@PACKAGE_TARNAME@,$PACKAGE_TARNAME,;t t +s,@PACKAGE_VERSION@,$PACKAGE_VERSION,;t t +s,@PACKAGE_STRING@,$PACKAGE_STRING,;t t +s,@PACKAGE_BUGREPORT@,$PACKAGE_BUGREPORT,;t t +s,@build_alias@,$build_alias,;t t +s,@host_alias@,$host_alias,;t t +s,@target_alias@,$target_alias,;t t +s,@ECHO_C@,$ECHO_C,;t t +s,@ECHO_N@,$ECHO_N,;t t +s,@ECHO_T@,$ECHO_T,;t t +s,@PATH_SEPARATOR@,$PATH_SEPARATOR,;t t +s,@DEFS@,$DEFS,;t t +s,@LIBS@,$LIBS,;t t +s,@DESTDIR@,$DESTDIR,;t t +s,@CC@,$CC,;t t +s,@CFLAGS@,$CFLAGS,;t t +s,@LDFLAGS@,$LDFLAGS,;t t +s,@CPPFLAGS@,$CPPFLAGS,;t t +s,@ac_ct_CC@,$ac_ct_CC,;t t +s,@EXEEXT@,$EXEEXT,;t t +s,@OBJEXT@,$OBJEXT,;t t +s,@EXTRA_CPPFLAGS@,$EXTRA_CPPFLAGS,;t t +s,@CPP@,$CPP,;t t +s,@SET_MAKE@,$SET_MAKE,;t t +s,@RANLIB@,$RANLIB,;t t +s,@ac_ct_RANLIB@,$ac_ct_RANLIB,;t t +s,@INSTALL_PROGRAM@,$INSTALL_PROGRAM,;t t +s,@INSTALL_SCRIPT@,$INSTALL_SCRIPT,;t t +s,@INSTALL_DATA@,$INSTALL_DATA,;t t +s,@LN_S@,$LN_S,;t t +s,@LINT@,$LINT,;t t +s,@LINT_OPTS@,$LINT_OPTS,;t t +s,@GROFF_PATH@,$GROFF_PATH,;t t +s,@NROFF_PATH@,$NROFF_PATH,;t t +s,@TBL_PATH@,$TBL_PATH,;t t +s,@GROFF_NOTE@,$GROFF_NOTE,;t t +s,@NROFF_NOTE@,$NROFF_NOTE,;t t +s,@AR@,$AR,;t t +s,@ac_ct_AR@,$ac_ct_AR,;t t +s,@ARFLAGS@,$ARFLAGS,;t t +s,@cf_cv_makeflags@,$cf_cv_makeflags,;t t +s,@CTAGS@,$CTAGS,;t t +s,@ETAGS@,$ETAGS,;t t +s,@MAKE_LOWER_TAGS@,$MAKE_LOWER_TAGS,;t t +s,@MAKE_UPPER_TAGS@,$MAKE_UPPER_TAGS,;t t +s,@ECHO_LT@,$ECHO_LT,;t t +s,@ECHO_LD@,$ECHO_LD,;t t +s,@RULE_CC@,$RULE_CC,;t t +s,@SHOW_CC@,$SHOW_CC,;t t +s,@ECHO_CC@,$ECHO_CC,;t t +s,@build@,$build,;t t +s,@build_cpu@,$build_cpu,;t t +s,@build_vendor@,$build_vendor,;t t +s,@build_os@,$build_os,;t t +s,@host@,$host,;t t +s,@host_cpu@,$host_cpu,;t t +s,@host_vendor@,$host_vendor,;t t +s,@host_os@,$host_os,;t t +s,@PROG_EXT@,$PROG_EXT,;t t +s,@LIB_PREFIX@,$LIB_PREFIX,;t t +s,@EXTRA_CFLAGS@,$EXTRA_CFLAGS,;t t +s,@PKG_CONFIG@,$PKG_CONFIG,;t t +s,@ac_pt_PKG_CONFIG@,$ac_pt_PKG_CONFIG,;t t +s,@VERSION@,$VERSION,;t t +s,@VERSION_MAJOR@,$VERSION_MAJOR,;t t +s,@VERSION_MINOR@,$VERSION_MINOR,;t t +s,@VERSION_PATCH@,$VERSION_PATCH,;t t +s,@PACKAGE@,$PACKAGE,;t t +s,@CFG_ROOTNAME@,$CFG_ROOTNAME,;t t +s,@HDR_ROOTNAME@,$HDR_ROOTNAME,;t t +s,@LIB_ROOTNAME@,$LIB_ROOTNAME,;t t +s,@SUB_INC@,$SUB_INC,;t t +s,@cf_man2html@,$cf_man2html,;t t +s,@MAN2HTML_NOTE@,$MAN2HTML_NOTE,;t t +s,@MAN2HTML_PATH@,$MAN2HTML_PATH,;t t +s,@MAN2HTML_TEMP@,$MAN2HTML_TEMP,;t t +s,@CONFIG_H@,$CONFIG_H,;t t +s,@ALLOCA@,$ALLOCA,;t t +s,@GLIBC21@,$GLIBC21,;t t +s,@LIBICONV@,$LIBICONV,;t t +s,@USE_NLS@,$USE_NLS,;t t +s,@MSGFMT@,$MSGFMT,;t t +s,@GMSGFMT@,$GMSGFMT,;t t +s,@XGETTEXT@,$XGETTEXT,;t t +s,@INTLBISON@,$INTLBISON,;t t +s,@BUILD_INCLUDED_LIBINTL@,$BUILD_INCLUDED_LIBINTL,;t t +s,@USE_INCLUDED_LIBINTL@,$USE_INCLUDED_LIBINTL,;t t +s,@CATALOGS@,$CATALOGS,;t t +s,@CATOBJEXT@,$CATOBJEXT,;t t +s,@GMOFILES@,$GMOFILES,;t t +s,@INTLLIBS@,$INTLLIBS,;t t +s,@INTLOBJS@,$INTLOBJS,;t t +s,@POFILES@,$POFILES,;t t +s,@POSUB@,$POSUB,;t t +s,@DATADIRNAME@,$DATADIRNAME,;t t +s,@INSTOBJEXT@,$INSTOBJEXT,;t t +s,@GENCAT@,$GENCAT,;t t +s,@INTL_LIBTOOL_SUFFIX_PREFIX@,$INTL_LIBTOOL_SUFFIX_PREFIX,;t t +s,@NLS_TEXTDOMAIN@,$NLS_TEXTDOMAIN,;t t +s,@MSG_DIR_MAKE@,$MSG_DIR_MAKE,;t t +s,@SUB_MAKEFILE@,$SUB_MAKEFILE,;t t +s,@INTLDIR_MAKE@,$INTLDIR_MAKE,;t t +s,@GT_YES@,$GT_YES,;t t +s,@GT_NO@,$GT_NO,;t t +s,@LINK_PREFIX@,$LINK_PREFIX,;t t +s,@ABI_VERSION@,$ABI_VERSION,;t t +s,@REL_VERSION@,$REL_VERSION,;t t +s,@shlibdir@,$shlibdir,;t t +s,@LIBTOOL_VERSION@,$LIBTOOL_VERSION,;t t +s,@LIBTOOL@,$LIBTOOL,;t t +s,@ac_ct_LIBTOOL@,$ac_ct_LIBTOOL,;t t +s,@LT_UNDEF@,$LT_UNDEF,;t t +s,@LIBTOOL_CXX@,$LIBTOOL_CXX,;t t +s,@LIBTOOL_OPTS@,$LIBTOOL_OPTS,;t t +s,@LIB_CREATE@,$LIB_CREATE,;t t +s,@LIB_OBJECT@,$LIB_OBJECT,;t t +s,@LIB_SUFFIX@,$LIB_SUFFIX,;t t +s,@LIB_PREP@,$LIB_PREP,;t t +s,@LIB_CLEAN@,$LIB_CLEAN,;t t +s,@LIB_COMPILE@,$LIB_COMPILE,;t t +s,@LIB_LINK@,$LIB_LINK,;t t +s,@LIB_INSTALL@,$LIB_INSTALL,;t t +s,@LIB_UNINSTALL@,$LIB_UNINSTALL,;t t +s,@EXPORT_SYMS@,$EXPORT_SYMS,;t t +s,@MAKE_DLLS@,$MAKE_DLLS,;t t +s,@CC_SHARED_OPTS@,$CC_SHARED_OPTS,;t t +s,@LD_RPATH_OPT@,$LD_RPATH_OPT,;t t +s,@LD_SHARED_OPTS@,$LD_SHARED_OPTS,;t t +s,@MK_SHARED_LIB@,$MK_SHARED_LIB,;t t +s,@RM_SHARED_OPTS@,$RM_SHARED_OPTS,;t t +s,@LINK_PROGS@,$LINK_PROGS,;t t +s,@LINK_TESTS@,$LINK_TESTS,;t t +s,@EXTRA_LDFLAGS@,$EXTRA_LDFLAGS,;t t +s,@LOCAL_LDFLAGS@,$LOCAL_LDFLAGS,;t t +s,@LOCAL_LDFLAGS2@,$LOCAL_LDFLAGS2,;t t +s,@INSTALL_LIB@,$INSTALL_LIB,;t t +s,@RPATH_LIST@,$RPATH_LIST,;t t +s,@RESULTING_SYMS@,$RESULTING_SYMS,;t t +s,@VERSIONED_SYMS@,$VERSIONED_SYMS,;t t +s,@WILDCARD_SYMS@,$WILDCARD_SYMS,;t t +s,@DFT_LWR_MODEL@,$DFT_LWR_MODEL,;t t +s,@DFT_LIB_SUFFIX@,$DFT_LIB_SUFFIX,;t t +s,@DFT_DEP_SUFFIX@,$DFT_DEP_SUFFIX,;t t +s,@LIB_MODEL@,$LIB_MODEL,;t t +s,@LIBTOOL_MAKE@,$LIBTOOL_MAKE,;t t +s,@MAKE_NORMAL@,$MAKE_NORMAL,;t t +s,@MAKE_SHARED@,$MAKE_SHARED,;t t +s,@MAKE_STATIC@,$MAKE_STATIC,;t t +s,@NCURSES_CONFIG@,$NCURSES_CONFIG,;t t +s,@ac_ct_NCURSES_CONFIG@,$ac_ct_NCURSES_CONFIG,;t t +s,@X_CFLAGS@,$X_CFLAGS,;t t +s,@X_PRE_LIBS@,$X_PRE_LIBS,;t t +s,@X_LIBS@,$X_LIBS,;t t +s,@X_EXTRA_LIBS@,$X_EXTRA_LIBS,;t t +s,@XCURSES_CONFIG@,$XCURSES_CONFIG,;t t +s,@ac_ct_XCURSES_CONFIG@,$ac_ct_XCURSES_CONFIG,;t t +s,@EXTRAOBJS@,$EXTRAOBJS,;t t +s,@PACKAGE_PREFIX@,$PACKAGE_PREFIX,;t t +s,@PACKAGE_CONFIG@,$PACKAGE_CONFIG,;t t +s,@cf_ldd_prog@,$cf_ldd_prog,;t t +s,@SET_SHLIB_VARS@,$SET_SHLIB_VARS,;t t +s,@LIB_TARGET@,$LIB_TARGET,;t t +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_lines=48 + ac_sed_frag=1 # Number of current file. + ac_beg=1 # First line for current file. + ac_end=$ac_max_sed_lines # Line after last line for current file. + ac_more_lines=: + ac_sed_cmds= + while $ac_more_lines; do + if test $ac_beg -gt 1; then + sed "1,${ac_beg}d; ${ac_end}q" $tmp/subs.sed >$tmp/subs.frag + else + sed "${ac_end}q" $tmp/subs.sed >$tmp/subs.frag + fi + if test ! -s $tmp/subs.frag; then + ac_more_lines=false + else + # The purpose of the label and of the branching condition is to + # speed up the sed processing (if there are no `@' at all, there + # is no need to browse any of the substitutions). + # These are the two extra sed commands mentioned above. + (echo ':t + /@[a-zA-Z_][a-zA-Z_0-9]*@/!b' && cat $tmp/subs.frag) >$tmp/subs-$ac_sed_frag.sed + # It is possible to make a multiline substitution using escaped newlines. + # Ensure that we do not split the substitution between script fragments. + ac_BEG=$ac_end + ac_END=`expr $ac_end + $ac_max_sed_lines` + sed "1,${ac_BEG}d; ${ac_END}p; q" $tmp/subs.sed >$tmp/subs.next + if test -s $tmp/subs.next; then + grep '^s,@[^@,][^@,]*@,.*\\$' $tmp/subs.next >$tmp/subs.edit + if test ! -s $tmp/subs.edit; then + grep "^s,@[^@,][^@,]*@,.*,;t t$" $tmp/subs.next >$tmp/subs.edit + if test ! -s $tmp/subs.edit; then + if test $ac_beg -gt 1; then + ac_end=`expr $ac_end - 1` + continue + fi + fi + fi + fi + + if test -z "$ac_sed_cmds"; then + ac_sed_cmds="sed -f $tmp/subs-$ac_sed_frag.sed" + else + ac_sed_cmds="$ac_sed_cmds | sed -f $tmp/subs-$ac_sed_frag.sed" + fi + ac_sed_frag=`expr $ac_sed_frag + 1` + ac_beg=$ac_end + ac_end=`expr $ac_end + $ac_max_sed_lines` + fi + done + if test -z "$ac_sed_cmds"; then + ac_sed_cmds=cat + fi +fi # test -n "$CONFIG_FILES" + +EOF +cat >>$CONFIG_STATUS <<\EOF +for ac_file in : $CONFIG_FILES; do test "x$ac_file" = x: && continue + # Support "outfile[:infile[:infile...]]", defaulting infile="outfile.in". + case $ac_file in + - | *:- | *:-:* ) # input from stdin + cat >$tmp/stdin + ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'` + ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;; + *:* ) ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'` + ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;; + * ) ac_file_in=$ac_file.in ;; + esac + + # Compute @srcdir@, @top_srcdir@, and @INSTALL@ for subdirectories. + ac_dir=`$as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$ac_file" : 'X\(//\)[^/]' \| \ + X"$ac_file" : 'X\(//\)$' \| \ + X"$ac_file" : 'X\(/\)' \| \ + . : '\(.\)' 2>/dev/null || +echo X"$ac_file" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } + /^X\(\/\/\)[^/].*/{ s//\1/; q; } + /^X\(\/\/\)$/{ s//\1/; q; } + /^X\(\/\).*/{ s//\1/; q; } + s/.*/./; q'` + if test "$ac_dir" != "$ac_file" && test "$ac_dir" != .; then + { case "$ac_dir" in + [\\/]* | ?:[\\/]* ) as_incr_dir=;; + *) as_incr_dir=.;; +esac +as_dummy="$ac_dir" +for as_mkdir_dir in `IFS='/\\'; set X $as_dummy; shift; echo "$@"`; do + case $as_mkdir_dir in + # Skip DOS drivespec + ?:) as_incr_dir=$as_mkdir_dir ;; + *) + as_incr_dir=$as_incr_dir/$as_mkdir_dir + test -d "$as_incr_dir" || mkdir "$as_incr_dir" + ;; + esac +done; } + + 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 $srcdir in + .) ac_srcdir=. + if test -z "$ac_dots"; then + ac_top_srcdir=. + else + ac_top_srcdir=`echo $ac_dots | sed 's,/$,,'` + fi ;; + [\\/]* | ?:[\\/]* ) + ac_srcdir=$srcdir$ac_dir_suffix; + ac_top_srcdir=$srcdir ;; + *) # Relative path. + ac_srcdir=$ac_dots$srcdir$ac_dir_suffix + ac_top_srcdir=$ac_dots$srcdir ;; + esac + + case $INSTALL in + [\\/$]* | ?:[\\/]* ) ac_INSTALL=$INSTALL ;; + *) ac_INSTALL=$ac_dots$INSTALL ;; + esac + + if test x"$ac_file" != x-; then + { echo "$as_me:25254: creating $ac_file" >&5 +echo "$as_me: creating $ac_file" >&6;} + rm -f "$ac_file" + fi + # Let's still pretend it is `configure' which instantiates (i.e., don't + # use $as_me), people would be surprised to read: + # /* config.h. Generated automatically by config.status. */ + configure_input="Generated automatically from `echo $ac_file_in | + sed 's,.*/,,'` by configure." + + # First look for the input files in the build tree, otherwise in the + # src tree. + ac_file_inputs=`IFS=: + for f in $ac_file_in; do + case $f in + -) echo $tmp/stdin ;; + [\\/$]*) + # Absolute (can't be DOS-style, as IFS=:) + test -f "$f" || { { echo "$as_me:25272: error: cannot find input file: $f" >&5 +echo "$as_me: error: cannot find input file: $f" >&2;} + { (exit 1); exit 1; }; } + echo $f;; + *) # Relative + if test -f "$f"; then + # Build tree + echo $f + elif test -f "$srcdir/$f"; then + # Source tree + echo $srcdir/$f + else + # /dev/null tree + { { echo "$as_me:25285: error: cannot find input file: $f" >&5 +echo "$as_me: error: cannot find input file: $f" >&2;} + { (exit 1); exit 1; }; } + fi;; + esac + done` || { (exit 1); exit 1; } +EOF +cat >>$CONFIG_STATUS <<\EOF + ac_warn_datarootdir=no + if test x"$ac_file" != x-; then + for ac_item in $ac_file_inputs + do + ac_seen=`grep '@\(datadir\|mandir\|infodir\)@' $ac_item` + if test -n "$ac_seen"; then + ac_used=`grep '@datarootdir@' $ac_item` + if test -z "$ac_used"; then + { echo "$as_me:25301: WARNING: datarootdir was used implicitly but not set: +$ac_seen" >&5 +echo "$as_me: WARNING: datarootdir was used implicitly but not set: +$ac_seen" >&2;} + ac_warn_datarootdir=yes + fi + fi + ac_seen=`grep '${datarootdir}' $ac_item` + if test -n "$ac_seen"; then + { echo "$as_me:25310: WARNING: datarootdir was used explicitly but not set: +$ac_seen" >&5 +echo "$as_me: WARNING: datarootdir was used explicitly but not set: +$ac_seen" >&2;} + ac_warn_datarootdir=yes + fi + done + fi + +if test "x$ac_warn_datarootdir" = xyes; then + ac_sed_cmds="$ac_sed_cmds | sed -e 's,@datarootdir@,\${prefix}/share,g' -e 's,\${datarootdir},\${prefix}/share,g'" +fi + +EOF +cat >>$CONFIG_STATUS <>$CONFIG_STATUS <<\EOF +:t +/@[a-zA-Z_][a-zA-Z_0-9]*@/!b +s,@configure_input@,$configure_input,;t t +s,@srcdir@,$ac_srcdir,;t t +s,@top_srcdir@,$ac_top_srcdir,;t t +s,@INSTALL@,$ac_INSTALL,;t t +" $ac_file_inputs | (eval "$ac_sed_cmds") >$tmp/out + rm -f $tmp/stdin + if test x"$ac_file" != x-; then + cp $tmp/out $ac_file + + for ac_name in prefix exec_prefix datarootdir + do + ac_seen=`fgrep -n '${'$ac_name'[:=].*}' $ac_file` + if test -n "$ac_seen"; then + ac_init=`egrep '[ ]*'$ac_name'[ ]*=' $ac_file` + if test -z "$ac_init"; then + ac_seen=`echo "$ac_seen" |sed -e 's,^,'$ac_file':,'` + { echo "$as_me:25347: WARNING: Variable $ac_name is used but was not set: +$ac_seen" >&5 +echo "$as_me: WARNING: Variable $ac_name is used but was not set: +$ac_seen" >&2;} + fi + fi + done + egrep -n '@[a-z_][a-z_0-9]+@' $ac_file >$tmp/out + egrep -n '@[A-Z_][A-Z_0-9]+@' $ac_file >>$tmp/out + if test -s $tmp/out; then + ac_seen=`sed -e 's,^,'$ac_file':,' < $tmp/out` + { echo "$as_me:25358: WARNING: Some variables may not be substituted: +$ac_seen" >&5 +echo "$as_me: WARNING: Some variables may not be substituted: +$ac_seen" >&2;} + fi + else + cat $tmp/out + fi + rm -f $tmp/out + +done +EOF +cat >>$CONFIG_STATUS <<\EOF + +# +# CONFIG_HEADER section. +# + +# These sed commands are passed to sed as "A NAME B NAME C VALUE D", where +# NAME is the cpp macro being defined and VALUE is the value it is being given. +# +# ac_d sets the value in "#define NAME VALUE" lines. +ac_dA='s,^\([ ]*\)#\([ ]*define[ ][ ]*\)' +ac_dB='[ ].*$,\1#\2' +ac_dC=' ' +ac_dD=',;t' +# ac_i turns "#undef NAME" with trailing blanks into "#define NAME VALUE". +ac_iA='s,^\([ ]*\)#\([ ]*\)undef\([ ][ ]*\)' +ac_iB='\([ ]\),\1#\2define\3' +ac_iC=' ' +ac_iD='\4,;t' +# ac_u turns "#undef NAME" without trailing blanks into "#define NAME VALUE". +ac_uA='s,^\([ ]*\)#\([ ]*\)undef\([ ][ ]*\)' +ac_uB='$,\1#\2define\3' +ac_uC=' ' +ac_uD=',;t' + +for ac_file in : $CONFIG_HEADERS; do test "x$ac_file" = x: && continue + # Support "outfile[:infile[:infile...]]", defaulting infile="outfile.in". + case $ac_file in + - | *:- | *:-:* ) # input from stdin + cat >$tmp/stdin + ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'` + ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;; + *:* ) ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'` + ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;; + * ) ac_file_in=$ac_file.in ;; + esac + + test x"$ac_file" != x- && { echo "$as_me:25407: creating $ac_file" >&5 +echo "$as_me: creating $ac_file" >&6;} + + # First look for the input files in the build tree, otherwise in the + # src tree. + ac_file_inputs=`IFS=: + for f in $ac_file_in; do + case $f in + -) echo $tmp/stdin ;; + [\\/$]*) + # Absolute (can't be DOS-style, as IFS=:) + test -f "$f" || { { echo "$as_me:25418: error: cannot find input file: $f" >&5 +echo "$as_me: error: cannot find input file: $f" >&2;} + { (exit 1); exit 1; }; } + echo $f;; + *) # Relative + if test -f "$f"; then + # Build tree + echo $f + elif test -f "$srcdir/$f"; then + # Source tree + echo $srcdir/$f + else + # /dev/null tree + { { echo "$as_me:25431: error: cannot find input file: $f" >&5 +echo "$as_me: error: cannot find input file: $f" >&2;} + { (exit 1); exit 1; }; } + fi;; + esac + done` || { (exit 1); exit 1; } + # Remove the trailing spaces. + sed 's/[ ]*$//' $ac_file_inputs >$tmp/in + +EOF + +# Transform confdefs.h into a list of #define's. We won't use it as a sed +# script, but as data to insert where we see @DEFS@. We expect AC_SAVE_DEFS to +# be either 'cat' or 'sort'. +sort -u confdefs.h | uniq >conftest.vals + +# 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 +echo ' rm -f conftest.frag' >> $CONFIG_STATUS +while grep . conftest.vals >/dev/null +do + # Write chunks of a limited-size here document to conftest.frag. + echo ' cat >> conftest.frag <> $CONFIG_STATUS + sed ${ac_max_here_lines}q conftest.vals | sed -e 's/#ifdef.*/#if 0/' >> $CONFIG_STATUS + echo 'CEOF' >> $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 + +# Run sed to substitute the contents of conftest.frag into $tmp/in at the +# marker @DEFS@. +echo ' cat >> conftest.edit < $tmp/out +rm -f $tmp/in +mv $tmp/out $tmp/in +rm -f conftest.edit conftest.frag +' >> $CONFIG_STATUS + +cat >>$CONFIG_STATUS <<\EOF + # 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 automatically by config.status. */ + if test x"$ac_file" = x-; then + echo "/* Generated automatically by configure. */" >$tmp/config.h + else + echo "/* $ac_file. Generated automatically by configure. */" >$tmp/config.h + fi + cat $tmp/in >>$tmp/config.h + rm -f $tmp/in + if test x"$ac_file" != x-; then + if cmp -s $ac_file $tmp/config.h 2>/dev/null; then + { echo "$as_me:25489: $ac_file is unchanged" >&5 +echo "$as_me: $ac_file is unchanged" >&6;} + else + ac_dir=`$as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$ac_file" : 'X\(//\)[^/]' \| \ + X"$ac_file" : 'X\(//\)$' \| \ + X"$ac_file" : 'X\(/\)' \| \ + . : '\(.\)' 2>/dev/null || +echo X"$ac_file" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } + /^X\(\/\/\)[^/].*/{ s//\1/; q; } + /^X\(\/\/\)$/{ s//\1/; q; } + /^X\(\/\).*/{ s//\1/; q; } + s/.*/./; q'` + if test "$ac_dir" != "$ac_file" && test "$ac_dir" != .; then + { case "$ac_dir" in + [\\/]* | ?:[\\/]* ) as_incr_dir=;; + *) as_incr_dir=.;; +esac +as_dummy="$ac_dir" +for as_mkdir_dir in `IFS='/\\'; set X $as_dummy; shift; echo "$@"`; do + case $as_mkdir_dir in + # Skip DOS drivespec + ?:) as_incr_dir=$as_mkdir_dir ;; + *) + as_incr_dir=$as_incr_dir/$as_mkdir_dir + test -d "$as_incr_dir" || mkdir "$as_incr_dir" + ;; + esac +done; } + + fi + rm -f $ac_file + mv $tmp/config.h $ac_file + fi + else + cat $tmp/config.h + rm -f $tmp/config.h + fi +done +EOF +cat >>$CONFIG_STATUS <<\EOF +# +# CONFIG_COMMANDS section. +# +for ac_file in : $CONFIG_COMMANDS; do test "x$ac_file" = x: && continue + ac_dest=`echo "$ac_file" | sed 's,:.*,,'` + ac_source=`echo "$ac_file" | sed 's,[^:]*:,,'` + + case $ac_dest in + default-1 ) for ac_file in $CONFIG_FILES; do + + # Support "outfile[:infile[:infile...]]" + case "$ac_file" in + (*:*) ac_file=`echo "$ac_file"|sed 's%:.*%%'` ;; + esac + + # PO directories have a Makefile.in generated from Makefile.inn. + case "$ac_file" in + (*/[Mm]akefile.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'` + ac_base=`basename $ac_file .in` + # 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/$ac_base" || echo "creating $ac_dir/$ac_base" + sed -e "/POTFILES =/r $ac_dir/POTFILES" "$ac_dir/$ac_base.in" > "$ac_dir/$ac_base" + fi + ;; + esac + done ;; + default ) + +cf_libname=\${LIB_BASENAME} +cf_liblink=$cf_libname +cf_libroot=$cf_libname + +if test "x$cf_cv_do_symlinks" = xyes +then + case "x$cf_cv_shlib_version" in + (xrel) + cf_liblink="\${LIB_ABI_NAME}" + cf_libname="\${LIB_REL_NAME}" + ;; + (xabi) + cf_liblink="\${LIB_REL_NAME}" + cf_libname="\${LIB_ABI_NAME}" + ;; + esac +fi +LIB_TARGET=$cf_libname + +case x$LIB_MODEL in +(xlibtool|xshared) + cf_libdeps="\${LIBS} \${LDFLAGS}" + ;; +(x*) + cf_libdeps= + ;; +esac + +cat >>makefile <>makefile <>makefile <>makefile <>makefile <>makefile <>makefile <>makefile <>makefile <>makefile <>makefile <>makefile <>$CONFIG_STATUS <<\EOF + +{ (exit 0); exit 0; } +EOF +chmod +x $CONFIG_STATUS +ac_clean_files=$ac_clean_files_save + +# configure is writing to config.log, and then calls config.status. +# config.status does its own redirection, appending to config.log. +# Unfortunately, on DOS this fails, as config.log is still kept open +# by configure, so config.status won't be able to write to it; its +# output is simply discarded. So we exec the FD to /dev/null, +# effectively closing config.log, so it can be properly (re)opened and +# appended to by config.status. When coming back to configure, we +# need to make the FD available again. +if test "$no_create" != yes; then + ac_cs_success=: + exec 5>/dev/null + $SHELL $CONFIG_STATUS || ac_cs_success=false + exec 5>>config.log + # Use ||, not &&, to avoid exiting from the if with $? = 1, which + # would make configure fail if this is the last instruction. + $ac_cs_success || { (exit 1); exit 1; } +fi + Property changes on: vendor/dialog/1.3-20180621/configure ___________________________________________________________________ Added: svn:executable ## -0,0 +1 ## +* \ No newline at end of property Index: vendor/dialog/1.3-20180621/configure.in =================================================================== --- vendor/dialog/1.3-20180621/configure.in (nonexistent) +++ vendor/dialog/1.3-20180621/configure.in (revision 339483) @@ -0,0 +1,273 @@ +dnl $Id: configure.in,v 1.92 2018/06/18 08:59:49 tom Exp $ +dnl Process this file with autoconf to produce a configure script. +dnl --------------------------------------------------------------------------- +dnl Copyright 1999-2016,2018 -- Thomas E. Dickey +dnl +dnl Permission is hereby granted, free of charge, to any person obtaining a +dnl copy of this software and associated documentation files (the +dnl "Software"), to deal in the Software without restriction, including +dnl without limitation the rights to use, copy, modify, merge, publish, +dnl distribute, distribute with modifications, sublicense, and/or sell +dnl copies of the Software, and to permit persons to whom the Software is +dnl furnished to do so, subject to the following conditions: +dnl +dnl The above copyright notice and this permission notice shall be included +dnl in all copies or portions of the Software. +dnl +dnl THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS +dnl OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +dnl MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +dnl IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, +dnl DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR +dnl OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR +dnl THE USE OR OTHER DEALINGS IN THE SOFTWARE. +dnl +dnl Except as contained in this notice, the name(s) of the above copyright +dnl holders shall not be used in advertising or otherwise to promote the +dnl sale, use or other dealings in this Software without prior written +dnl authorization. +dnl --------------------------------------------------------------------------- +AC_PREREQ(2.52.20170501) +AC_INIT(dialog.h) +AC_CONFIG_HEADER(dlg_config.h:config.hin) + +AC_ARG_PROGRAM + +DESTDIR= +AC_SUBST(DESTDIR) + +dnl +dnl Checks for programs. +dnl +CF_PROG_CC +AC_PROG_CPP +AC_PROG_MAKE_SET +AC_PROG_RANLIB +AC_PROG_INSTALL +CF_PROG_LN_S +CF_PROG_LINT + +CF_PROG_GROFF +test -z "$GROFF_NOTE" && NROFF_NOTE= + +dnl needed for CF_WITH_LIBTOOL +CF_AR_FLAGS + +CF_MAKEFLAGS +CF_MAKE_TAGS +CF_DISABLE_ECHO +CF_PROG_EXT +CF_PATHSEP +CF_LIB_PREFIX +CF_XOPEN_SOURCE +CF_LARGEFILE + +CF_WITH_INSTALL_PREFIX +CF_WITH_WARNINGS +CF_PKG_CONFIG + +dnl +dnl Allow dialog program and library to be renamed. +AC_MSG_CHECKING(for this package's name) +AC_ARG_WITH(package, + [ --with-package=XXX rename dialog to XXX, library to libXXX.a, etc], + [PACKAGE=$withval], + [PACKAGE=dialog]) +AC_MSG_RESULT($PACKAGE) +CF_VERSION_INFO(dialog,$PACKAGE) + +CFG_ROOTNAME=$PACKAGE +HDR_ROOTNAME=$PACKAGE +LIB_ROOTNAME=$PACKAGE + +AC_SUBST(CFG_ROOTNAME) +AC_SUBST(HDR_ROOTNAME) +AC_SUBST(LIB_ROOTNAME) + +dnl +dnl If package is renamed, it is useful to have the dlg_XXX headers in a +dnl subdirectory (using the package name) so that multiple versions of the +dnl headers can coexist. +AC_MSG_CHECKING(if we should install dlg_XXX headers to subdirectory) +AC_ARG_ENABLE(header-subdir, + [ --enable-header-subdir install dlg_XXX headers to subdirectory], + [SUB_INC=$enableval], + [SUB_INC=no]) +AC_MSG_RESULT($SUB_INC) +AC_SUBST(SUB_INC) + +CF_WITH_MAN2HTML + +dnl +dnl Checks for libraries. +dnl +EXTRAOBJS="" +CF_BUNDLED_INTL(makefile,enable) +CF_MATH_LIB(,sqrt(x)) + +CF_WITH_NO_LEAKS + +CF_ARG_MSG_ENABLE([if you want --trace option], + trace, + [ --disable-trace do not support --trace option], + [EXTRAOBJS="$EXTRAOBJS trace\$o" + AC_DEFINE(HAVE_DLG_TRACE,1,[Define to 1 to support --trace option])],,yes) + +CF_LD_RPATH_OPT +CF_WITH_SHARED_OR_LIBTOOL(DIALOG,${VERSION_MAJOR}.${VERSION_MINOR},`echo "$VERSION" |sed -e 's/:/./g'`) + +CF_WITH_CURSES_DIR + +CF_ENABLE_RPATH + +CF_WITH_NCURSES_ETC +CF_WIDEC_CURSES + +cf_all_widgets=yes +CF_ARG_MSG_ENABLE([if you want extra dialogs], + extras, + [ --disable-extras do not include extra dialogs], + [cf_all_widgets=yes],[cf_all_widgets=no],yes) + +CF_ARG_MSG_ENABLE([if you want config-file support], + rc-file, + [ --disable-rc-file do not include config-file support], + [EXTRAOBJS="$EXTRAOBJS rc\$o" + AC_DEFINE(HAVE_RC_FILE,1,[Define to 1 to include config-file support])],,$cf_all_widgets) + +CF_ARG_MSG_ENABLE([if you want Xdialog-style dialogs], + Xdialog, + [ --disable-Xdialog do not include Xdialog-style dialogs (1.1)], + [EXTRAOBJS="$EXTRAOBJS calendar\$o fselect\$o timebox\$o" + AC_DEFINE(HAVE_XDIALOG,1,[Define to 1 to include Xdialog-style dialogs])],,$cf_all_widgets) + +CF_ARG_MSG_ENABLE([if you want extra Xdialog-style dialogs (1.2)], + Xdialog2, + [ --disable-Xdialog2 do not include extra Xdialog-style dialogs (1.2)], + [EXTRAOBJS="$EXTRAOBJS buildlist\$o rangebox\$o treeview\$o" + AC_DEFINE(HAVE_XDIALOG2,1,[Define to 1 to include extra Xdialog-style dialogs])],,$cf_all_widgets) + +CF_ARG_MSG_ENABLE([if you want compatibility with whiptail options], + whiptail, + [ --disable-whiptail do not map extra whiptail options], + [AC_DEFINE(HAVE_WHIPTAIL,1,[Define to 1 to include extra whiptail options])],,$cf_all_widgets) + +CF_ARG_MSG_ENABLE([if you want the form dialog], + form, + [ --disable-form do not include the form dialog], + [EXTRAOBJS="$EXTRAOBJS formbox\$o" + AC_DEFINE(HAVE_DLG_FORMBOX,1,[Define to 1 to include the form dialog])],,$cf_all_widgets) + +CF_ARG_MSG_ENABLE([if you want the gauge dialog], + gauge, + [ --disable-gauge do not include the gauge dialogs], + [EXTRAOBJS="$EXTRAOBJS guage\$o pause\$o prgbox\$o progressbox\$o" + AC_DEFINE(HAVE_DLG_GAUGE,1,[Define to 1 to include the gauge dialogs])],,$cf_all_widgets) + +CF_ARG_MSG_ENABLE([if you want the tailbox dialog], + tailbox, + [ --disable-tailbox do not include the tailbox dialog], + [EXTRAOBJS="$EXTRAOBJS tailbox\$o" + AC_DEFINE(HAVE_DLG_TAILBOX,1,[Define to 1 to include the tailbox dialog])],,$cf_all_widgets) + +CF_ARG_MSG_ENABLE([if you want the mixedform dialog], + mixedform, + [ --disable-mixedform do not include the mixedform dialog], + [EXTRAOBJS="$EXTRAOBJS mixedform\$o" + AC_DEFINE(HAVE_DLG_MIXEDFORM,1,[Define to 1 to include the mixedform dialog])],,${enable_form:=$cf_all_widgets}) + +CF_ARG_MSG_ENABLE([if you want the mixedgauge dialog], + mixedgauge, + [ --disable-mixedgauge do not include the mixedgauge dialog], + [EXTRAOBJS="$EXTRAOBJS mixedgauge\$o" + AC_DEFINE(HAVE_MIXEDGAUGE,1,[Define to 1 to include the mixedgauge dialog])],,$cf_all_widgets) + +CF_ARG_MSG_ENABLE([if you want the wide-curses features], + widec, + [ --enable-widec enable wide-curses features], + [AC_DEFINE(USE_WIDE_CURSES,1,[Define to 1 to enable wide-curses features])],,$cf_cv_widec_curses) + +AC_SUBST(EXTRAOBJS) + +dnl +dnl Checks for header files. +dnl +AC_HEADER_STDC +AC_HEADER_TIME +AC_HEADER_DIRENT +AC_CHECK_HEADERS(search.h stdint.h unistd.h) +CF_CURSES_TERM_H + +dnl +dnl Checks for library functions. +dnl +AC_TYPE_SIGNAL +AC_CHECK_FUNCS(\ +_nc_free_and_exit \ +btowc \ +mblen \ +mbrlen \ +mbrtowc \ +mbtowc \ +strcasecmp \ +strftime \ +tsearch \ +waitpid \ +wcsrtombs \ +wcstombs \ +wctob \ +wctomb \ +mktime \ +) + +CF_CURSES_FUNCS(\ +flushinp \ +getattrs \ +getbegx \ +getbegy \ +getbegyx \ +getcurx \ +getcury \ +getmaxx \ +getmaxy \ +getmaxyx \ +getparx \ +getpary \ +getparyx \ +use_default_colors \ +wchgat \ +wcursyncup \ +wget_wch \ +wsyncup \ +) + +AC_CHECK_FUNC(start_color,[AC_DEFINE(HAVE_COLOR,1,[Define to 1 if (n)curses has start_color function])]) +CF_CURSES_CHTYPE +CF_CURSES_WACS_SYMBOLS +CF_CURSES_WGETPARENT +CF_FUNC_WAIT +CF_MBSTATE_T +CF_SIZECHANGE + +CF_HEADERS_SH(DLG,dlg_config.h) + +AC_TRY_LINK([#include ],[setlocale(LC_ALL, "")],[AC_DEFINE(HAVE_SETLOCALE,1,[Define to 1 if locale feature can be enabled])]) +CF_NL_LANGINFO_1STDAY + +CF_DISABLE_RPATH_HACK + +CF__DEFINE_SHLIB_VARS + +AC_OUTPUT( + dialog-config + makefile + $EXTRA_OUTPUT + $SUB_MAKEFILE,[ +CF__ADD_SHLIB_RULES( + makefile, + $LIB_MODEL, + [\${LIB_OBJECT}], + [\${LIBS} \${LDFLAGS}]) +],[ +CF__INIT_SHLIB_RULES +],[sort -u]) Index: vendor/dialog/1.3-20180621/demo.pl =================================================================== --- vendor/dialog/1.3-20180621/demo.pl (nonexistent) +++ vendor/dialog/1.3-20180621/demo.pl (revision 339483) @@ -0,0 +1,337 @@ +#!/usr/bin/env perl +# $Id: demo.pl,v 1.23 2018/06/12 21:39:44 tom Exp $ +################################################################################ +# Copyright 2018 Thomas E. Dickey +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License, version 2.1 +# as published by the Free Software Foundation. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to +# Free Software Foundation, Inc. +# 51 Franklin St., Fifth Floor +# Boston, MA 02110, USA. +################################################################################ +# This demonstration is provided solely to exercise the sample Perl wrapper for +# dialog which is included in its source-code. See libui-dialog-perl for a +# more comprehensive binding. +# +# TODO: modify dialog.pl to use $DIALOG environment variable, drive from GetOpts here +# TODO: eliminate constant $scr_lines in dialog.pl + +use warnings; +use strict; +use diagnostics; + +use FindBin qw($Bin $Script); +use lib "$Bin"; + +require "dialog.pl"; +dialog->import('@dialog_result'); +our @dialog_result; + +sub tput($$) { + my $name = shift; + my $default = shift; + my $value = `tput "$name"`; + chomp $value; + $value = $default unless ( $value =~ /^[0-9]+$/ ); + return $value; +} + +sub napms($) { + my $msecs = shift; + select( undef, undef, undef, $msecs * 0.001 ); +} + +sub show_results($$) { + my $title = shift; + my $width = shift; + &rhs_msgbox( + $title, + sprintf( + "Resulting text:\\n %s", join( '\\n ', @dialog_result ) + ), + $width + ); +} + +sub doit() { + my $status = 1; + my $RHS_CLEAR = "clear"; + my $RHS_TEXTBOX = "textbox"; + my $RHS_MSGBOX = "msgbox"; + my $RHS_INFOBOX = "infobox"; + my $RHS_YESNO = "yesno"; + my $RHS_GAUGE = "gauge"; + my $RHS_INPUTBOX = "inputbox"; + my $RHS_MENU = "menu"; + my $RHS_MENUL = "menul"; + my $RHS_MENUA = "menua"; + my $RHS_CHECKLIST = "checklist"; + my $RHS_CHECKLISTL = "checklistl"; + my $RHS_CHECKLISTA = "checklista"; + my $RHS_RADIOLIST = "radiolist"; + + my @demo_2col = qw( + This that + is has + a this + 2-column quoted + menu "tag". + ); + my @demo_3col; + my @demo_tags; + my %demo_hash; + + for ( my $s = 0, my $t = 0 ; $s <= $#demo_2col ; $s += 2, $t += 3 ) { + my $d = $s / 2; + my $c1 = $demo_2col[$s]; + my $c2 = $demo_2col[ $s + 1 ]; + $demo_3col[$t] = $c1; + $demo_3col[ $t + 1 ] = $c2; + $demo_3col[ $t + 2 ] = ( $c1 =~ /2/ ) ? 1 : 0; + $demo_tags[$d] = $c1; + $demo_tags[$d] =~ s/2/1/; + $demo_tags[ $d + ( $#demo_2col + 1 ) / 2 ] = $c2; + $demo_hash{ sprintf( "%d %s", $d, $c1 ) } = $c2; + } + + while ( $status > 0 ) { + my $lines = &tput( "lines", 24 ); + my $cols = &tput( "cols", 80 ); + my $maxcols = $cols - 4; + my $mincols = ( $cols > 8 ) ? 8 : $cols; + my $midcols = int( ( $cols * 3 ) / 4 ); + + @dialog_result = (); + $status = &rhs_menu( + "My title", "My message", + 0, 14, + $RHS_CLEAR, "clear and exit", + $RHS_TEXTBOX, "text-box of this script", + $RHS_MSGBOX, "informational-message, OK button", + $RHS_INFOBOX, "informational-message, no button", + $RHS_YESNO, "message with Yes/No buttons", + $RHS_GAUGE, "message with progress-gauge", + $RHS_INPUTBOX, "input-box", + $RHS_MENU, "menu, with tags and description", + $RHS_MENUL, "menu, using only tags", + $RHS_MENUA, "alphabetically sorted menu", + $RHS_CHECKLIST, "check-list with tags and description", + $RHS_CHECKLISTL, "check-list using only tags", + $RHS_CHECKLISTA, "alphabetically sorted check-list", + $RHS_RADIOLIST, "list of radio-buttons" + ); + if ( $status > 0 and $#dialog_result == 0 ) { + + my $testcase = $dialog_result[0]; + if ( $testcase eq $RHS_CLEAR ) { + &rhs_clear; + last; + } + elsif ( $testcase eq $RHS_TEXTBOX ) { + &rhs_textbox( "This script", "$Script", 0, 0 ); + } + elsif ( $testcase eq $RHS_MSGBOX ) { + my $msg = + "This is a demonstration script.\\n" + . "This should be the second line,\\n" + . "and this should be the third line,"; + &rhs_msgbox( "A message", $msg, + int( ( length($msg) + 3 ) / 3 ) + 3 ); + } + elsif ( $testcase eq $RHS_INFOBOX ) { + my $msg = + "This is a fairly long line of text, used to" + . " show how dialog can be used to wrap lines to fit in" + . " screens with different width. The text will start wide," + . " then get narrower, showing a new infobox for each width" + . " before going back up to the full width of the terminal."; + my $wide = $maxcols; + while ( $wide > $mincols ) { + &rhs_infobox( "Info-box", $msg, $wide-- ); + &napms(50); + } + while ( $wide < $maxcols ) { + &rhs_infobox( "Info-box", $msg, ++$wide ); + &napms(50); + } + &rhs_msgbox( "Info-end", $msg, $wide ); + } + elsif ( $testcase eq $RHS_YESNO ) { + if ( + &rhs_yesno( + "Yes/no", + "Should \"dialog --yesno\" return \"1\" on \"yes\"" + . " to simplify (some) shell scripts?", + $cols / 2 + ) + ) + { + &rhs_msgbox( + "Explanation", + "No, a successful program exits with " + . "\"0\" (EXIT_SUCCESS)", + $cols / 2 + ); + } + else { + &rhs_msgbox( + "Explanation", + "Shell scripts assume that \"exit\ 0\" is successful;" + . " Perl is different.", + $cols / 2 + ); + } + } + elsif ( $testcase eq $RHS_GAUGE ) { + my $pct = 0; + my $sec = 10; + &rhs_gauge( + "My gauge", + "Show progress (or lack of it)", + $midcols * 3, $pct + ); + while ( $pct < 100 ) { + $pct++; + &napms($sec); + $sec *= 1.04; + &rhs_update_gauge($pct); + } + $pct = 99; + &rhs_update_gauge_and_message( "This will go faster", $pct ); + while ( $pct > 0 ) { + $pct--; + &napms($sec); + $sec /= 1.05; + &rhs_update_gauge($pct); + } + &napms(1000); + &rhs_stop_gauge; + } + elsif ( $testcase eq $RHS_INPUTBOX ) { + if ( + &rhs_inputbox( + "My inputbox", "This demonstrates the inputbox", + $maxcols, "" + ) + ) + { + &show_results( "My inputbox", $midcols ); + } + } + elsif ( $testcase eq $RHS_MENU ) { + if ( + &rhs_menu( + ( + "A menu", + "This menu uses \"tag\" values and descriptions:", + $midcols, ( $#demo_2col + 1 ) / 2 + ), + @demo_2col + ) + ) + { + &show_results( "My menu", $midcols ); + } + } + elsif ( $testcase eq $RHS_MENUL ) { + if ( + &rhs_menul( + ( + "A menu", "This menu uses only the \"tag\" values:", + $midcols, $#demo_tags + 1 + ), + @demo_tags + ) + ) + { + &show_results( "My long-menu", $midcols ); + } + } + elsif ( $testcase eq $RHS_MENUA ) { + if ( + &rhs_menua( + "A menu", "This menu uses the sorted keys from a hash:", + $midcols, %demo_hash + ) + ) + { + &show_results( "My alpha-menu", $midcols ); + } + } + elsif ( $testcase eq $RHS_CHECKLIST ) { + if ( + &rhs_checklist( + ( + "A checklist", + "This checklist uses \"tag\" values" + . " and descriptions:", + $midcols, + ( $#demo_3col + 1 ) / 3 + ), + @demo_3col + ) + ) + { + &show_results( "My checklist", $midcols ); + } + } + elsif ( $testcase eq $RHS_CHECKLISTL ) { + if ( + &rhs_checklistl( + ( + "A checklist", + "This checklist uses only the \"tag\" values:", + $midcols, $#demo_tags + 1 + ), + @demo_tags + ) + ) + { + &show_results( "My long-checklist", $midcols ); + } + } + elsif ( $testcase eq $RHS_CHECKLISTA ) { + if ( + &rhs_checklista( + "A checklist", + "This checklist uses the sorted keys from a hash:", + $midcols, %demo_hash + ) + ) + { + &show_results( "My alpha-checklist", $midcols ); + } + } + elsif ( $testcase eq $RHS_RADIOLIST ) { + if ( + &rhs_radiolist( + ( + "A radiolist", + "This radiolist uses \"tag\" values" + . " and descriptions:", + $midcols, + ( $#demo_3col + 1 ) / 3 + ), + @demo_3col + ) + ) + { + &show_results( "My radiolist", $midcols ); + } + } + } + } +} + +&doit; + +1; Property changes on: vendor/dialog/1.3-20180621/demo.pl ___________________________________________________________________ Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:executable ## -0,0 +1 ## +* \ No newline at end of property Added: svn:keywords ## -0,0 +1 ## +FreeBSD=%H \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/plain \ No newline at end of property Index: vendor/dialog/1.3-20180621/dialog.1 =================================================================== --- vendor/dialog/1.3-20180621/dialog.1 (nonexistent) +++ vendor/dialog/1.3-20180621/dialog.1 (revision 339483) @@ -0,0 +1,1916 @@ +'\" t +.\" $Id: dialog.1,v 1.205 2018/06/19 00:26:13 tom Exp $ +.\" Copyright 2005-2017,2018 Thomas E. Dickey +.\" +.\" This program is free software; you can redistribute it and/or modify +.\" it under the terms of the GNU Lesser General Public License, version 2.1 +.\" as published by the Free Software Foundation. +.\" +.\" This program is distributed in the hope that it will be useful, but +.\" WITHOUT ANY WARRANTY; without even the implied warranty of +.\" MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +.\" Lesser General Public License for more details. +.\" +.\" You should have received a copy of the GNU Lesser General Public +.\" License along with this program; if not, write to +.\" Free Software Foundation, Inc. +.\" 51 Franklin St., Fifth Floor +.\" Boston, MA 02110, USA. +.\" +.\" definitions for renaming +.ds p dialog +.ds l dialog +.ds L Dialog +.ds D DIALOG +.\" +.de ES +.ne 8 +.IP +.. +.de Ex +.RS +7 +.PP +.nf +.ft CW +.. +.de Ee +.fi +.ft R +.RE +.. +.\" Bulleted paragraph +.de bP +.ie n .IP \(bu 4 +.el .IP \(bu 2 +.. +.ie \n(.g .ds `` \(lq +.el .ds `` `` +.ie \n(.g .ds '' \(rq +.el .ds '' '' +. +.TH \*D 1 "" "$Date: 2018/06/19 00:26:13 $" +.SH NAME +dialog \- display dialog boxes from shell scripts +.SH SYNOPSIS +\fB\*p --clear\fP +.br +.BI "\*p --create-rc " file +.br +\fB\*p --print-maxsize\fP +.br +\fB\*p\fP +\fIcommon-options\fP +\fIbox-options\fP +.SH DESCRIPTION +\fB\*L\fP +is a program that will let you present a variety of questions or +display messages using dialog boxes from a shell script. +These types of dialog boxes are implemented +(though not all are necessarily compiled into \fB\*p\fR): +.RS +.LP +.nh +.na +.BR buildlist ", " +.BR calendar ", " +.BR checklist ", " +.BR dselect ", " +.BR editbox ", " +.BR form ", " +.BR fselect ", " +.BR gauge ", " +.BR infobox ", " +.BR inputbox ", " +.BR inputmenu ", " +.BR menu ", " +.BR mixedform ", " +.BR mixedgauge ", " +.BR msgbox " (message), " +.BR passwordbox ", " +.BR passwordform ", " +.BR pause ", " +.BR prgbox ", " +.BR programbox ", " +.BR progressbox ", " +.BR radiolist ", " +.BR rangebox ", " +.BR tailbox ", " +.BR tailboxbg ", " +.BR textbox ", " +.BR timebox ", " +.BR treeview ", and " +.BR yesno " (yes/no)." +.ad +.hy +.RE +.PP +You can put more than one dialog box into a script: +.bP +Use the "\fB--and-widget\fP" token to force \fB\*p\fP to proceed to the next +dialog unless you have pressed ESC to cancel, or +.bP +Simply add the tokens for the next dialog box, making a chain. +\*L stops chaining when the return code from a dialog is nonzero, +e.g., Cancel or No (see DIAGNOSTICS). +.PP +Some widgets, e.g., checklist, will write text to \fB\*p\fP's output. +Normally that is the standard error, but there are options for +changing this: "\fB--output-fd\fP", "\fB--stderr\fP" and "\fB--stdout\fP". +No text is written if the Cancel button (or ESC) is pressed; +\fB\*p\fP exits immediately in that case. +. +.\" ************************************************************************ +.SH OPTIONS +All options begin with "\fB--\fP" +(two ASCII hyphens, +for the benefit of those using systems with deranged locale support). +.PP +A "\fB--\fP" by itself is used as an escape, +i.e., the next token on the command-line is not treated as an option. +.RS +.B \*p --title -- --Not an option +.RE +.PP +The "\fB--args\fP" option tells \fB\*p\fP to list the command-line +parameters to the standard error. +This is useful when debugging complex scripts using +the "\fB--\fP" and "\fB--file\fP", +since the command-line may be rewritten as these are expanded. +.PP +The "\fB--file\fP" option tells \fB\*p\fP to read parameters from +the file named as its value. +.RS +.B \*p --file \fIparameterfile +.RE +.PP +Blanks not within double-quotes are discarded +(use backslashes to quote single characters). +The result is inserted into the command-line, +replacing "\fB--file\fP" and its option value. +Interpretation of the command-line resumes from that point. +If \fIparameterfile\fP begins with "&", \fB\*p\fP +interprets the following text as a file descriptor number +rather than a filename. +.PP +Most widgets accept \fIheight\fP and \fIwidth\fP parameters, +which can be used to automatically size the widget to accommodate +multi-line message \fIprompt\fP values: +.bP +If the parameter is negative, +\fB\*l\fP uses the screen's size. +.bP +If the parameter is zero, +\fB\*l\fP uses minimum size for the widget to display the \fIprompt\fP +and data. +.bP +Otherwise, \fB\*l\fP uses the given size for the widget. +. +.SS \fBCommon Options\fP +Most of the common options are reset before processing each widget. +. +.IP "\fB--ascii-lines +Rather than draw graphics lines around boxes, +draw ASCII "+" and "-" in the same place. +See also "\fB--no-lines\fR". +. +.IP "\fB--aspect \fIratio" +This gives you some control over the box dimensions when using auto +sizing (specifying 0 for height and width). +It represents width / height. +The default is 9, which means 9 characters wide to every 1 line high. +. +.IP "\fB--backtitle \fIbacktitle" +Specifies a +\fIbacktitle\fP +string to be displayed on the backdrop, at the top of the screen. +. +.IP "\fB--begin \fIy x" +Specify the position of the upper left corner of a dialog box on the screen. +. +.IP "\fB--cancel-label \fIstring" +Override the label used for \*(``Cancel\*('' buttons. +. +.IP "\fB--clear" +Clears the widget screen, keeping only the screen_color background. +Use this when you combine widgets with "\fB--and-widget\fR" to erase the +contents of a previous widget on the screen, so it won't be seen +under the contents of a following widget. +Understand this as the complement of "\fB--keep-window\fR". +To compare the effects, use these: +. +.ES +All three widgets visible, staircase effect, ordered 1,2,3: +.Ex +\*p \e + --begin 2 2 --yesno "" 0 0 \e + --and-widget --begin 4 4 --yesno "" 0 0 \e + --and-widget --begin 6 6 --yesno "" 0 0 +.Ee +. +.ES +Only the last widget is left visible: +.Ex +\*p \e + --clear --begin 2 2 --yesno "" 0 0 \e + --and-widget --clear --begin 4 4 --yesno "" 0 0 \e + --and-widget --begin 6 6 --yesno "" 0 0 +.Ee +. +.ES +All three widgets visible, staircase effect, ordered 3,2,1: +.Ex +\*p \e + --keep-window --begin 2 2 --yesno "" 0 0 \e + --and-widget --keep-window --begin 4 4 --yesno "" 0 0 \e + --and-widget --begin 6 6 --yesno "" 0 0 +.Ee +. +.ES +First and third widget visible, staircase effect, ordered 3,1: +.Ex +\*p \e + --keep-window --begin 2 2 --yesno "" 0 0 \e + --and-widget --clear --begin 4 4 --yesno "" 0 0 \e + --and-widget --begin 6 6 --yesno "" 0 0 +.Ee +.IP +Note, if you want to restore original console colors and send your +cursor home after the dialog program has exited, use the \fBclear\fR\ (1) +command. +. +.IP "\fB--colors" +Interpret embedded "\eZ" sequences in the dialog text +by the following character, +which tells \fB\*p\fP to set colors or video attributes: +.RS +.bP +0 through 7 are the ANSI color numbers used in curses: +black, +red, +green, +yellow, +blue, +magenta, +cyan and +white respectively. +.bP +Bold is set by 'b', reset by 'B'. +.bP +Reverse is set by 'r', reset by 'R'. +.bP +Underline is set by 'u', reset by 'U'. +.bP +The settings are cumulative, e.g., "\eZb\eZ1" makes the following text +bold (perhaps bright) red. +.bP +Restore normal settings with "\eZn". +.RE +. +.IP "\fB--column-separator \fIstring" +Tell \fB\*p\fP to split data for radio/checkboxes and menus on the +occurrences of the given string, and to align the split data into columns. +. +.IP "\fB--cr-wrap" +Interpret embedded newlines in the dialog text as a newline on the screen. +Otherwise, \fB\*p\fR will only wrap lines +where needed to fit inside the text box. +.IP +Even though you can control line breaks with this, +\fB\*L\fR will still wrap any lines that are too long for the width of the box. +Without cr-wrap, the layout of your text may be formatted to look nice +in the source code of your script without affecting the way it will +look in the dialog. +.IP +The \fIcr-wrap\fP feature is implemented subject to these conditions: +.RS +.bP +the string contains \*(``\en\*('' and the \fB--no-nl-expand\fP option is +not used, or +.bP +the \fB--trim\fP option is used. +.RE +.IP +For more information, see \fBWhitespace Options\fP. +. +.IP "\fB--create-rc \fIfile" +When +\fB\*p\fP +supports run-time configuration, +this can be used to dump a sample configuration file to the file specified +by +.IR file "." +. +.IP "\fB--date-format \fIformat" +If the host provides \fBstrftime\fP, +this option allows you to specify the format of the date printed for +the \fB--calendar\fP widget. +The time of day (hour, minute, second) are the current local time. +. +.IP "\fB--defaultno" +Make the default value of the +\fByes/no\fP +box a +.BR No . +Likewise, treat the default button of widgets that provide +\*(``OK\*('' and \*(``Cancel\*('' +as a \fICancel\fP. +If "\fB--nocancel\fP" or "\fB--visit-items\fP" are given +those options overrides this, +making the default button always \*(``Yes\*('' +(internally the same as \*(``OK\*(''). +. +.IP "\fB--default-button \fIstring" +Set the default (preselected) button in a widget. +By preselecting a button, +a script makes it possible for the user to simply press \fIEnter\fP +to proceed through a dialog with minimum interaction. +.IP +The option's value is the name of the button: +.IR ok , +.IR yes , +.IR cancel , +.IR no , +.IR help "\ or" +.IR extra . +.IP +Normally the first button in each widget is the default. +The first button shown is determined by the widget +together with the "\fB--nook\fP" and "\fB--nocancel\fP options. +If this option is not given, there is no default button assigned. +. +.IP "\fB--default-item \fIstring" +Set the default item in a checklist, form or menu box. +Normally the first item in the box is the default. +. +.IP "\fB--exit-label \fIstring" +Override the label used for \*(``EXIT\*('' buttons. +. +.IP "\fB--extra-button" +Show an extra button, between \*(``OK\*('' and \*(``Cancel\*('' buttons. +. +.IP "\fB--extra-label \fIstring" +Override the label used for \*(``Extra\*('' buttons. +Note: for inputmenu widgets, this defaults to \*(``Rename\*(''. +. +.IP "\fB--help" +Prints the help message to the standard output and exits. +The help message is also printed if no options are given, +or if an unrecognized option is given. +. +.IP "\fB--help-button" +Show a help-button after \*(``OK\*('' and \*(``Cancel\*('' buttons, +e.g., in checklist, radiolist and menu boxes, +and other widgets which have an \*(``OK\*('' button, +whether or not the \*(``Cancel\*('' button is used. +.IP +On exit, the return status will indicate that the Help button was pressed. +\fB\*L\fP will also write a message to its output +after the token \*(``HELP\*('': +.RS +.bP +If "\fB--item-help\fR" is also given, the item-help text will be written. +.bP +Otherwise, the item's tag (the first field) will be written. +.RE +.IP +.IP +You can use the \fB--help-tags\fP option and/or set the DIALOG_ITEM_HELP +environment variable to modify these messages and exit-status. +. +.IP "\fB--help-label \fIstring" +Override the label used for \*(``Help\*('' buttons. +. +.IP "\fB--help-status" +If the help-button is selected, +writes the checklist, radiolist or form information +after the item-help \*(``HELP\*('' information. +This can be used to reconstruct the state of a checklist after processing +the help request. +. +.IP "\fB--help-tags" +Modify the messages written on exit for \fB--help-button\fP +by making them always just the item's tag. +This does not affect the exit status code. +. +.IP "\fB--hfile \fIfilename" +Display the given file using a textbox when the user presses F1. +. +.IP "\fB--hline \fIstring" +Display the given string centered at the bottom of the widget. +. +.IP "\fB--ignore" +Ignore options that \fB\*p\fP does not recognize. +Some well-known ones such as "\fB--icon\fP" are ignored anyway, +but this is a better choice for compatibility with other implementations. +. +.IP "\fB--input-fd \fIfd" +Read keyboard input from the given file descriptor. +Most \fB\*p\fR scripts read from the standard input, +but the gauge widget reads a pipe (which is always standard input). +Some configurations do not work properly when +\fB\*p\fP tries to reopen the terminal. +Use this option (with appropriate juggling of file-descriptors) +if your script must work in that type of environment. +. +.IP "\fB--insecure" +Makes the password widget friendlier but less secure, +by echoing asterisks for each character. +. +.IP "\fB--iso-week" +Set the starting point for the week-number +shown in the "\fB--calendar\fP" option +according to ISO-8601, which starts numbering +with the first week which includes a Thursday in January. +. +.IP "\fB--item-help" +Interpret the tags data for checklist, radiolist and menu boxes +adding a column which is displayed in the bottom line of the +screen, for the currently selected item. +. +.IP "\fB--keep-tite" +When built with \fBncurses\fP, +\fB\*p\fP normally checks to see if it is running in an \fBxterm\fP, +and in that case tries to suppress the initialization strings that +would make it switch to the alternate screen. +Switching between the normal and alternate screens +is visually distracting in a script which runs \fB\*p\fP +several times. +Use this option to allow \fB\*p\fP to use those initialization strings. +. +.IP "\fB--keep-window" +Normally when \fB\*p\fR performs several \fBtailboxbg\fR widgets +connected by "\fB--and-widget\fR", +it clears the old widget from the screen by painting over it. +Use this option to suppress that repainting. +.IP +At exit, \fB\*p\fR repaints all of the widgets which have been +marked with "\fB--keep-window\fR", even if they are not \fBtailboxbg\fR widgets. +That causes them to be repainted in reverse order. +See the discussion of the "\fB--clear\fR" option for examples. +. +.IP "\fB--last-key" +At exit, report the last key which the user entered. +This is the curses key code rather than a symbol or literal character. +It can be used by scripts to distinguish between two keys which are +bound to the same action. +. +.IP "\fB--max-input \fIsize" +Limit input strings to the given size. +If not specified, the limit is 2048. +. +.IP "\fB--no-cancel" +.IP "\fB--nocancel" +Suppress the \*(``Cancel\*('' button in checklist, inputbox and menu box modes. +A script can still test if the user pressed the ESC key to cancel to quit. +. +.IP "\fB--no-collapse" +Normally \fB\*p\fR converts tabs to spaces and reduces multiple +spaces to a single space for text which is displayed in a message boxes, etc. +Use this option to disable that feature. +Note that \fB\*p\fR will still wrap text, +subject to the "\fB--cr-wrap\fR" and "\fB--trim\fR" options. +.IP +The \fIno-collapse\fP feature is implemented subject to these conditions: +.RS +.bP +the string contains \*(``\en\*('' and the \fB--no-nl-expand\fP option is +not used, or +.bP +the \fB--trim\fP option is not used. +.RE +.IP +For more information, see \fBWhitespace Options\fP. +. +.IP "\fB--no-items" +Some widgets (checklist, inputmenu, radiolist, menu) display a list +with two columns (a \*(``tag\*('' and \*(``item\*('', +i.e., \*(``description\*(''). +This option tells \fB\*p\fP to read shorter rows, +omitting the \*(``item\*('' part of the list. +This is occasionally useful, e.g., if the tags provide enough information. +.IP +See also \fB--no-tags\fP. +If both options are given, this one is ignored. +. +.IP "\fB--no-kill" +Tells +\fB\*p\fP +to put the +\fBtailboxbg\fP +box in the background, +printing its process id to \fB\*p\fP's output. +SIGHUP is disabled for the background process. +. +.IP "\fB--no-label \fIstring" +Override the label used for \*(``No\*('' buttons. +. +.IP "\fB--no-lines +Rather than draw lines around boxes, draw spaces in the same place. +See also "\fB--ascii-lines\fR". +. +.IP "\fB--no-mouse +Do not enable the mouse. +. +.IP "\fB--no-nl-expand +Do not convert "\en" substrings of the message/prompt text into +literal newlines. +.IP +The \fIno-nl-expand\fP feature is used only if +the string contains \*(``\en\*('' so that there is something to convert. +.IP +For more information, see \fBWhitespace Options\fP. +. +.IP "\fB--no-ok" +.IP "\fB--nook" +Suppress the \*(``OK\*('' button in checklist, inputbox and menu box modes. +A script can still test if the user pressed +the \*(``Enter\*('' key to accept the data. +. +.IP "\fB--no-shadow" +Suppress shadows that would be drawn to the right and bottom of each dialog box. +. +.IP "\fB--no-tags" +Some widgets (checklist, inputmenu, radiolist, menu) display a list +with two columns (a \*(``tag\*('' and \*(``description\*(''). +The tag is useful for scripting, but may not help the user. +The \fB--no-tags\fP option (from Xdialog) may be used to suppress the +column of tags from the display. +Unlike the \fB--no-items\fP option, +this does not affect the data which is read from the script. +.IP +Xdialog does not display the tag column for the analogous buildlist +and treeview widgets; \fB\*p\fP does the same. +.IP +Normally \fB\*p\fP allows you to quickly move to entries on the displayed list, +by matching a single character to the first character of the tag. +When the \fB--no-tags\fP option is given, \fB\*p\fP matches against +the first character of the description. +In either case, the matchable character is highlighted. +. +.IP "\fB--ok-label \fIstring" +Override the label used for \*(``OK\*('' buttons. +. +.IP "\fB--output-fd \fIfd" +Direct output to the given file descriptor. +Most \fB\*p\fR scripts write to the standard error, +but error messages may also be written there, depending on your script. +. +.IP "\fB--separator \fIstring" +.IP "\fB--output-separator \fIstring" +Specify a string that will separate the output on \fB\*p\fP's output from +checklists, rather than a newline (for \fB--separate-output\fP) or a space. +This applies to other widgets such as forms and editboxes which normally +use a newline. +. +.IP "\fB--print-maxsize" +Print the maximum size of dialog boxes, i.e., the screen size, +to \fB\*p\fP's output. +This may be used alone, without other options. +. +.IP "\fB--print-size" +Prints the size of each dialog box to \fB\*p\fP's output +when the box is initialized. +. +.IP "\fB--print-text-only \fIstring [ height [ width ] ]" +Prints the string as it would be wrapped in a message box +to \fB\*p\fP's output. +.IP +Because the optional \fIheight\fP and \fIwidth\fP default to zero, +if they are omitted, \fB\*p\fP autosizes according to the screen dimensions. +. +.IP "\fB--print-text-size \fIstring [ height [ width ] ]" +Prints the size of the string as it would be wrapped in a message box, +to \fB\*p\fP's output, +as +.Ex +height width +.Ee +.IP +Because the optional \fIheight\fP and \fIwidth\fP parameters default to zero, +if they are omitted, \fB\*p\fP autosizes according to the screen dimensions. +. +.IP "\fB--print-version" +Prints \fB\*p\fR's version to \fB\*p\fP's output. +This may be used alone, without other options. +It does not cause \fBdialog\fP to exit by itself. +. +.IP "\fB--quoted" +Normally \fB\*p\fP quotes the strings returned by checklist's +as well as the item-help text. +Use this option to quote all string results. +.IP "\fB--reorder" +By default, the buildlist widget uses the same order for the output (right) +list as for the input (left). +Use this option to tell \fB\*p\fP to use the order +in which a user adds selections to the output list. +. +.IP "\fB--scrollbar" +For widgets holding a scrollable set of data, +draw a scrollbar on its right-margin. +This does not respond to the mouse. +. +.IP "\fB--separate-output" +For certain widgets (buildlist, checklist, treeview), +output result one line at a time, with no quoting. +This facilitates parsing by another program. +. +.IP "\fB--separate-widget \fIstring" +Specify a string that will separate the output on \fB\*p\fP's output from +each widget. +This is used to simplify parsing the result of a dialog with several widgets. +If this option is not given, +the default separator string is a tab character. +. +.IP "\fB--shadow" +Draw a shadow to the right and bottom of each dialog box. +. +.IP "\fB--single-quoted" +Use single-quoting as needed (and no quotes if unneeded) for the +output of checklist's as well as the item-help text. +If this option is not set, \fB\*p\fP uses double quotes around each item. +In either case, +\fB\*p\fP adds backslashes to make the output useful in shell scripts. +. +.IP "\fB--size-err" +Check the resulting size of a dialog box before trying to use it, +printing the resulting size if it is larger than the screen. +(This option is obsolete, since all new-window calls are checked). +. +.IP "\fB--sleep \fIsecs" +Sleep (delay) for the given number of seconds after processing a dialog box. +. +.IP "\fB--stderr" +Direct output to the standard error. +This is the default, since curses normally writes screen updates to +the standard output. +. +.IP "\fB--stdout" +Direct output to the standard output. +This option is provided for compatibility with Xdialog, +however using it in portable scripts is not recommended, +since curses normally writes its screen updates to the standard output. +If you use this option, \fB\*p\fR attempts to reopen the terminal +so it can write to the display. +Depending on the platform and your environment, that may fail. +. +.IP "\fB--tab-correct" +Convert each tab character to one or more spaces +(for the \fBtextbox\fP widget; otherwise to a single space). +Otherwise, tabs are rendered according to the curses library's interpretation. +The \fB--no-collapse\fP option disables tab expansion. +. +.IP "\fB--tab-len \fIn" +Specify the number of spaces that a tab character occupies if the +"\fB--tab-correct\fP" option is given. +The default is 8. +This option is only effective for the \fBtextbox\fP widget. +. +.IP "\fB--time-format \fIformat" +If the host provides \fBstrftime\fP, +this option allows you to specify the format of the time printed for +the \fB--timebox\fP widget. +The day, month, year values in this case are for the current local time. +. +.IP "\fB--timeout \fIsecs" +Timeout (exit with error code) +if no user response within the given number of seconds. +A timeout of zero seconds is ignored. +.IP +This option is ignored by the "\fB--pause\fP" widget. +It is also overridden if the background "\fB--tailboxbg\fP" option is used +to set up multiple concurrent widgets. +. +.IP "\fB--title \fItitle" +Specifies a +\fItitle\fP +string to be displayed at the top of the dialog box. +. +.IP "\fB--trace \fIfilename" +logs the command-line parameters, +keystrokes and other information to the given file. +If \fBdialog\fP reads a configure file, it is logged as well. +Piped input to the \fIgauge\fP widget is logged. +Use control/T to log a picture of the current dialog window. +.IP +The \fB\*p\fR program handles some command-line parameters specially, +and removes them from the parameter list as they are processed. +For example, if the first option is \fB--trace\fP, +then that is processed (and removed) before \fB\*p\fR initializes the display. +. +.IP "\fB--week-start \fIday" +sets the starting day for the week, used in the "\fB--calendar\fP" option. +The \fIday\fP parameter can be +.RS +.bP +a number (0 to 6, Sunday through Saturday using POSIX) or +.bP +the special value \*(``locale\*('' (this works with systems using glibc, +providing an extension to the \fBlocale\fP command, +the \fBfirst_weekday\fP value). +.bP +a string matching one of the abbreviations for the day of the week +shown in the \fBcalendar\fP widget, e.g., \*(``Mo\*('' for \*(``Monday\*(''. +.RE +. +.IP "\fB--trim" +eliminate leading blanks, +trim literal newlines and repeated blanks from message text. +.IP +The \fItrim\fP feature is implemented subject to these conditions: +.RS +.bP +the string does not contain \*(``\en\*('' or +.bP +the \fB--no-nl-expand\fP option is used. +.RE +.IP +For more information, see \fBWhitespace Options\fP. +. +.IP +See also the "\fB--cr-wrap\fR" and "\fB--no-collapse\fR" options. +. +.IP "\fB--version" +Prints \fB\*p\fR's version to the standard output, and exits. +See also "\fB--print-version\fP". +. +.IP "\fB--visit-items" +Modify the tab-traversal of checklist, radiolist, menubox and inputmenu +to include the list of items as one of the states. +This is useful as a visual aid, +i.e., the cursor position helps some users. +.IP +When this option is given, the cursor is initially placed on the list. +Abbreviations (the first letter of the tag) apply to the list items. +If you tab to the button row, abbreviations apply to the buttons. +. +.IP "\fB--yes-label \fIstring" +Override the label used for \*(``Yes\*('' buttons. +. +.\" ************************************************************************ +.SS Box Options +All dialog boxes have at least three parameters: +.TP 7 +\fItext\fP +the caption or contents of the box. +.TP 7 +\fIheight\fP +the height of the dialog box. +.TP 7 +\fIwidth\fP +the width of the dialog box. +.PP +Other parameters depend on the box type. +. +. +.IP "\fB--buildlist \fItext height width list-height \fR[ \fItag item status \fR] \fI..." +A \fBbuildlist\fP dialog displays two lists, side-by-side. +The list on the left shows unselected items. +The list on the right shows selected items. +As items are selected or unselected, they move between the lists. +.IP +Use a carriage return or the \*(``OK\*('' button to accept the current value +in the selected-window and exit. +The results are written using the order displayed in the selected-window. +.IP +The initial on/off state of each entry is specified by +.IR status "." +.IP +The dialog behaves like a \fBmenu\fP, using the \fB--visit-items\fP +to control whether the cursor is allowed to visit the lists directly. +.RS +.bP +If \fB--visit-items\fP is not given, +tab-traversal uses two states (OK/Cancel). +.bP +If \fB--visit-items\fP is given, +tab-traversal uses four states (Left/Right/OK/Cancel). +.RE +.IP +Whether or not \fB--visit-items\fP is given, +it is possible to move the highlight between the two lists using +the default "^" (left-column) and "$" (right-column) keys. +.IP +On exit, a list of the \fItag\fP +strings of those entries that are turned on +will be printed on \fB\*p\fP's output. +.IP +If the "\fB--separate-output\fP" option is not given, +the strings will be quoted as needed +to make it simple for scripts to separate them. +By default, this uses double-quotes. +See the "\fB--single-quoted\fP" option, which modifies the quoting behavior. +. +. +.IP "\fB--calendar \fItext height width day month year" +A \fBcalendar\fP box displays +month, day and year in separately adjustable windows. +If the values for day, month or year are missing or negative, +the current date's corresponding values are used. +You can increment or decrement any of those using the +left-, up-, right-, and down-arrows. +Use vi-style h, j, k and l for moving around the array of days in a month. +Use tab or backtab to move between windows. +If the year is given as zero, the current date is used as an initial value. +.IP +On exit, the date is printed in the form day/month/year. +The format can be overridden using the \fB--date-format\fP option. +. +. +.IP "\fB--checklist \fItext height width list-height \fR[ \fItag item status \fR] \fI..." +A \fBchecklist\fP box is similar to a \fBmenu\fP box; +there are multiple entries presented in the form of a menu. +Another difference is +that you can indicate which entry is currently selected, by setting its +.IR status " to " on "." +Instead of choosing +one entry among the entries, each entry can be turned on or off by the user. +The initial on/off state of each entry is specified by +.IR status "." +.IP +On exit, a list of the \fItag\fP +strings of those entries that are turned on +will be printed on \fB\*p\fP's output. +.IP +If the "\fB--separate-output\fP" option is not given, +the strings will be quoted as needed +to make it simple for scripts to separate them. +By default, this uses double-quotes. +See the "\fB--single-quoted\fP" option, which modifies the quoting behavior. +. +. +.IP "\fB--dselect \fIfilepath height width\fR" +The directory-selection dialog displays a text-entry window +in which you can type a directory, +and above that a windows with directory names. +.IP +Here +\fBfilepath\fP +can be a filepath in which case the directory window +will display the contents of the path and the text-entry window will contain +the preselected directory. +.IP +Use tab or arrow keys to move between the windows. +Within the directory window, use the up/down arrow keys +to scroll the current selection. +Use the space-bar to copy the current selection into the text-entry +window. +.IP +Typing any printable characters switches focus to the text-entry window, +entering that character as well as scrolling the directory +window to the closest match. +.IP +Use a carriage return or the \*(``OK\*('' button to accept the current value +in the text-entry window and exit. +.IP +On exit, the contents of the text-entry window are written +to \fB\*p\fP's output. +. +.IP "\fB--editbox \fIfilepath height width\fR" +The edit-box dialog displays a copy of the file. +You may edit it using +the \fIbackspace\fP, \fIdelete\fP and cursor keys +to correct typing errors. +It also recognizes pageup/pagedown. +Unlike the \fB--inputbox\fP, +you must tab to the \*(``OK\*('' or \*(``Cancel\*('' buttons +to close the dialog. +Pressing the \*(``Enter\*('' key within the box will split +the corresponding line. +.IP +On exit, the contents of the edit window are written to \fB\*p\fP's output. +. +.nf +.IP "\fB--form \fItext height width formheight \fR[ \fIlabel y x item y x flen ilen \fR] \fI..." +.fi +The \fBform\fP dialog displays a form consisting of labels and fields, +which are positioned on a scrollable window by coordinates given in the script. +The field length \fIflen\fR and input-length \fIilen\fR tell how long +the field can be. +The former defines the length shown for a selected field, +while the latter defines the permissible length of the data entered in the +field. +.RS +.bP +If \fIflen\fR is zero, the corresponding field cannot be altered. +and the contents of the field determine the displayed-length. +.bP +If \fIflen\fR is negative, the corresponding field cannot be altered, +and the negated value of \fIflen\fR is used as the displayed-length. +.bP +If \fIilen\fR is zero, it is set to \fIflen\fR. +.RE +.IP +Use up/down arrows (or control/N, control/P) to move between fields. +Use tab to move between windows. +.IP +On exit, the contents of the form-fields are written to \fB\*p\fP's output, +each field separated by a newline. +The text used to fill non-editable fields +(\fIflen\fR is zero or negative) +is not written out. +. +. +.IP "\fB--fselect \fIfilepath height width\fR" +The \fBfselect\fP (file-selection) dialog displays a text-entry window +in which you can type a filename (or directory), +and above that two windows with directory names and filenames. +.IP +Here +\fBfilepath\fP +can be a filepath in which case the file and directory windows +will display the contents of the path and the text-entry window will contain +the preselected filename. +.IP +Use tab or arrow keys to move between the windows. +Within the directory or filename windows, use the up/down arrow keys +to scroll the current selection. +Use the space-bar to copy the current selection into the text-entry +window. +.IP +Typing any printable characters switches focus to the text-entry window, +entering that character as well as scrolling the directory and filename +windows to the closest match. +.IP +Typing the space character forces \fB\*p\fP to complete the current +name (up to the point where there may be a match against more than one +entry). +.IP +Use a carriage return or the \*(``OK\*('' button to accept the current value +in the text-entry window and exit. +.IP +On exit, the contents of the text-entry window are written +to \fB\*p\fP's output. +. +. +.IP "\fB--gauge \fItext height width [percent]\fR" +A +\fBgauge\fP +box displays a meter along the bottom of the box. +The meter indicates the percentage. +New percentages are read from +standard input, one integer per line. +The meter is updated +to reflect each new percentage. +If the standard input reads the string \*(``XXX\*('', +then the first line following is taken as an integer percentage, +then subsequent lines up to another \*(``XXX\*('' are used for a new prompt. +The gauge exits when EOF is reached on the standard input. +.IP +The \fIpercent\fR value denotes the initial percentage shown in the meter. +If not specified, it is zero. +.IP +On exit, no text is written to \fB\*p\fP's output. +The widget accepts no input, so the exit status is always OK. +. +. +.IP "\fB--infobox \fItext height width" +An \fBinfo\fP box is basically a \fBmessage\fP box. +However, in this case, \fB\*p\fP +will exit immediately after displaying the message to the user. +The screen is not cleared when \fB\*p\fP +exits, so that the message will remain on the screen until the calling +shell script clears it later. +This is useful when you want to inform +the user that some operations are carrying on that may require some +time to finish. +.IP +On exit, no text is written to \fB\*p\fP's output. +An OK exit status is returned. +. +. +.IP "\fB--inputbox \fItext height width [init]" +An +\fBinput\fP +box is useful when you want to ask questions that +require the user to input a string as the answer. +If init is supplied +it is used to initialize the input string. +When entering the string, +the \fIbackspace\fP, \fIdelete\fP and cursor keys +can be used to correct typing errors. +If the input string is longer than +can fit in the dialog box, the input field will be scrolled. +.IP +On exit, the input string will be printed on \fB\*p\fP's output. +. +. +.IP "\fB--inputmenu \fItext height width menu-height \fR[ \fItag item \fR] \fI..." +An \fBinputmenu\fP box is very similar to an ordinary \fBmenu\fP box. +There are only a few differences between them: +.RS +.TP 4 +1. +The entries are not automatically centered but left adjusted. +.TP +2. +An extra button (called \fIRename\/\fP) is implied to rename +the current item when it is pressed. +.TP +3. +It is possible to rename the current entry by pressing the +\fIRename\fP +button. +Then \fB\*p\fP will write the following on \fB\*p\fP's output. +.IP +RENAMED +.RE +. +. +.IP "\fB--menu \fItext height width menu-height \fR[ \fItag item \fR] \fI..." +As its name suggests, a +\fBmenu\fP +box is a dialog box that can be used to present a list of choices in +the form of a menu for the user to choose. +Choices are displayed in the order given. +Each menu entry consists of a \fItag\fP string and an \fIitem\fP string. +The \fItag\fP +gives the entry a name to distinguish it from the other entries in the +menu. +The \fIitem\fP is a short description of the option that the entry represents. +The user can move between the menu entries by pressing the +cursor keys, the first letter of the \fItag\fP +as a hot-key, or the number keys \fI1\fP through \fI9\fP. +There are \fImenu-height\fP +entries displayed in the menu at one time, but the menu will be +scrolled if there are more entries than that. +.IP +On exit the \fItag\fP +of the chosen menu entry will be printed on \fB\*p\fP's output. +If the "\fB--help-button\fR" option is given, the corresponding help +text will be printed if the user selects the help button. +. +.nf +.IP "\fB--mixedform \fItext height width formheight \fR[ \fIlabel y x item y x flen ilen itype \fR] \fI..." +.fi +The \fBmixedform\fP dialog displays a form consisting of labels and fields, +much like the \fB--form\fP dialog. +It differs by adding a field-type parameter to each field's description. +Each bit in the type denotes an attribute of the field: +.RS +.TP 5 +1 +hidden, e.g., a password field. +.TP 5 +2 +readonly, e.g., a label. +.RE +. +.IP "\fB--mixedgauge \fItext height width percent \fR[ \fItag1 item1 \fR] \fI..." +A \fBmixedgauge\fP box displays a meter along the bottom of the box. +The meter indicates the percentage. +.IP +It also displays a list of the \fItag\/\fP- and \fIitem\/\fP-values at the +top of the box. +See \*l(3) for the tag values. +.IP +The \fItext\fP is shown as a caption between the list and meter. +The \fIpercent\fR value denotes the initial percentage shown in the meter. +.IP +No provision is made for reading data from the standard input as \fB--gauge\fP +does. +.IP +On exit, no text is written to \fB\*p\fP's output. +The widget accepts no input, so the exit status is always OK. +. +.IP "\fB--msgbox \fItext height width" +A \fBmessage\fP box is very similar to a \fByes/no\fP box. +The only difference between a \fBmessage\fP box and a \fByes/no\fP +box is that a \fBmessage\fP box has only a single \fBOK\fP button. +You can use this dialog box to display any message you like. +After reading the message, the user can press the \fIENTER\fP key so that +\fB\*p\fP will exit and the calling shell script can continue its operation. +.IP +If the message is too large for the space, +\fB\*p\fP may allow you to scroll it, +provided that the underlying curses implementation is capable enough. +In this case, a percentage is shown in the base of the widget. +.IP +On exit, no text is written to \fB\*p\fP's output. +Only an \*(``OK\*('' button is provided for input, +but an ESC exit status may be returned. +. +.IP "\fB--pause \fItext height width seconds\fR" +A +\fBpause\fP +box displays a meter along the bottom of the box. +The meter indicates how many seconds remain until the end of the pause. +The pause exits when timeout is reached +or the user presses the OK button +(status OK) +or the user presses the CANCEL button +or Esc key. +.IP "\fB--passwordbox \fItext height width [init]" +A \fBpassword\fP box is similar to an input box, +except that the text the user enters is not displayed. +This is useful when prompting for passwords or other +sensitive information. +Be aware that if anything is passed in \*(``init\*('', it +will be visible in the system's process table to casual snoopers. +Also, it +is very confusing to the user to provide them with a default password they +cannot see. +For these reasons, using \*(``init\*('' is highly discouraged. +See "\fB--insecure\fP" if you do not care about your password. +.IP +On exit, the input string will be printed on \fB\*p\fP's output. +. +. +.nf +.IP "\fB--passwordform \fItext height width formheight \fR[ \fIlabel y x item y x flen ilen \fR] \fI..." +.fi +This is identical to \fB--form\fP except that all text fields are +treated as \fBpassword\fP widgets rather than \fBinputbox\fP widgets. +. +. +.IP "\fB--prgbox \fItext command height width" +.IP "\fB--prgbox \fIcommand height width" +A \fBprgbox\fP is very similar to a \fBprogrambox\fP. +.IP +This dialog box is used to display the output of a command that is +specified as an argument to \fBprgbox\fP. +.IP +After the command completes, the user can press the \fIENTER\fP key so that +\fBdialog\fP will exit and the calling shell script can continue its operation. +.IP +If three parameters are given, it displays the text under the title, +delineated from the scrolling file's contents. +If only two parameters are given, this text is omitted. +. +. +.IP "\fB--programbox \fItext height width" +.IP "\fB--programbox \fIheight width" +A \fBprogrambox\fP is very similar to a \fBprogressbox\fP. +The only difference between a \fBprogram\fP box and a \fBprogress\fP +box is that a \fBprogram\fP box displays an \fBOK\fP button +(but only after the command completes). +.IP +This dialog box is used to display the piped output of a command. +After the command completes, the user can press the \fIENTER\fP key so that +\fBdialog\fP will exit and the calling shell script can continue its operation. +.IP +If three parameters are given, it displays the text under the title, +delineated from the scrolling file's contents. +If only two parameters are given, this text is omitted. +. +. +.IP "\fB--progressbox \fItext height width" +.IP "\fB--progressbox \fIheight width" +A \fBprogressbox\fP is similar to an \fBtailbox\fP, +except that +.RS +.TP 3 +a) rather than displaying the contents of a file, +it displays the piped output of a command and +.TP 3 +b) it will exit when it reaches the end of the file +(there is no \*(``OK\*('' button). +.RE +.IP +If three parameters are given, it displays the text under the title, +delineated from the scrolling file's contents. +If only two parameters are given, this text is omitted. +. +. +.IP "\fB--radiolist \fItext height width list-height \fR [ \fItag item status \fR] \fI..." +A \fBradiolist\fP box is similar to a \fBmenu\fP box. +The only difference is +that you can indicate which entry is currently selected, by setting its +.IR status " to " on "." +.IP +On exit, the tag of the selected item is written to \fB\*p\fP's output. +. +. +.IP "\fB--tailbox \fIfile height width" +Display text from a file in a dialog box, as in a "tail -f" command. +Scroll left/right using vi-style 'h' and 'l', or arrow-keys. +A '0' resets the scrolling. +.IP +On exit, no text is written to \fB\*p\fP's output. +Only an \*(``OK\*('' button is provided for input, +but an ESC exit status may be returned. +. +. +.nf +.IP "\fB--rangebox \fItext height width min-value max-value default-value" +.fi +Allow the user to select from a range of values, e.g., using a slider. +The dialog shows the current value as a bar (like the gauge dialog). +Tabs or arrow keys move the cursor between the buttons and the value. +When the cursor is on the value, +you can edit it by: +.RS +.TP 5 +left/right cursor movement to select a digit to modify +.TP 5 ++/- +characters to increment/decrement the digit by one +.TP 5 +0 through 9 +to set the digit to the given value +.RE +.IP +Some keys are also recognized in all cursor positions: +.RS +.TP 5 +home/end +set the value to its maximum or minimum +.TP 5 +pageup/pagedown +increment the value so that the slider moves by one column +.RE +. +. +.IP "\fB--tailboxbg \fIfile height width" +Display text from a file in a dialog box as a background task, +as in a "tail -f &" command. +Scroll left/right using vi-style 'h' and 'l', or arrow-keys. +A '0' resets the scrolling. +.IP +\*L treats the background task specially if there are other +widgets (\fB--and-widget\fP) on the screen concurrently. +Until those widgets are closed (e.g., an \*(``OK\*(''), +\fB\*p\fP will perform all of the tailboxbg widgets in the same process, +polling for updates. +You may use a tab to traverse between the widgets on the screen, +and close them individually, e.g., by pressing \fIENTER\fP. +Once the non-tailboxbg widgets are closed, \fB\*p\fP forks a copy of itself +into the background, and prints its process id if the "\fB--no-kill\fP" option +is given. +.IP +On exit, no text is written to \fB\*p\fP's output. +Only an \*(``EXIT\*('' button is provided for input, +but an ESC exit status may be returned. +.IP +NOTE: +Older versions of \fB\*p\fP forked immediately and attempted to +update the screen individually. +Besides being bad for performance, +it was unworkable. +Some older scripts may not work properly with the polled scheme. +. +. +.IP "\fB--textbox \fIfile height width" +A +\fBtext\fP +box lets you display the contents of a text file in a dialog box. +It is like a simple text file viewer. +The user can move through the file by using the +cursor, page-up, page-down +and \fIHOME/END\fR keys available on most keyboards. +If the lines are too long to be displayed in the box, +the \fILEFT/RIGHT\fP +keys can be used to scroll the text region horizontally. +You may also use vi-style keys h, j, k, and l in place of the cursor keys, +and B or N in place of the page-up and page-down keys. +Scroll up/down using vi-style 'k' and 'j', or arrow-keys. +Scroll left/right using vi-style 'h' and 'l', or arrow-keys. +A '0' resets the left/right scrolling. +For more convenience, +vi-style forward and backward searching functions are also provided. +.IP +On exit, no text is written to \fB\*p\fP's output. +Only an \*(``EXIT\*('' button is provided for input, +but an ESC exit status may be returned. +. +. +.IP "\fB--timebox \fItext height [width hour minute second]" +A dialog is displayed which allows you to select hour, minute and second. +If the values for hour, minute or second are missing or negative, +the current date's corresponding values are used. +You can increment or decrement any of those using the +left-, up-, right- and down-arrows. +Use tab or backtab to move between windows. +.IP +On exit, the result is printed in the form hour:minute:second. +The format can be overridden using the \fB--time-format\fP option. +. +. +.IP "\fB--treeview \fItext height width list-height \fR[ \fItag item status depth \fR] \fI..." +Display data organized as a tree. +Each group of data contains a tag, +the text to display for the item, +its status (\*(``on\*('' or \*(``off\*('') +and the depth of the item in the tree. +.IP +Only one item can be selected (like the \fBradiolist\fP). +The tag is not displayed. +.IP +On exit, the tag of the selected item is written to \fB\*p\fP's output. +. +. +.IP "\fB--yesno \fItext height width" +A \fByes/no\fP dialog box of +size \fIheight\fP rows by \fIwidth\fP columns will be displayed. +The string specified by +\fItext\fP +is displayed inside the dialog box. +If this string is too long to fit +in one line, it will be automatically divided into multiple lines at +appropriate places. +The +\fItext\fP +string can also contain the sub-string +.RI """" \en """" +or newline characters +.RI ` \en ' +to control line breaking explicitly. +This dialog box is useful for +asking questions that require the user to answer either yes or no. +The dialog box has a +\fBYes\fP +button and a +\fBNo\fP +button, in which the user can switch between by pressing the +.IR TAB " key." +.IP +On exit, no text is written to \fB\*p\fP's output. +In addition to the \*(``Yes\*('' and \*(``No\*('' exit codes (see DIAGNOSTICS) +an ESC exit status may be returned. +.IP +The codes used for \*(``Yes\*('' and \*(``No\*('' +match those used for \*(``OK\*('' and \*(``Cancel\*('', +internally no distinction is made. +. +.\" ************************************************************************ +.SS "Obsolete Options" +.\" from cdialog 0.9a (Pako) +.IP "\fB--beep" +This was used to tell the original cdialog that it should make a beep +when the separate processes of the tailboxbg widget would repaint the screen. +. +.\" from cdialog 0.9a (Pako) +.IP "\fB--beep-after" +Beep after a user has completed a widget by pressing one of the buttons. +. +.\" ************************************************************************ +.SS "Whitespace Options" +.PP +These options can be used to transform whitespace (space, tab, newline) +as dialog reads the script: +.RS +.BR --cr-wrap , +.BR --no-collapse , +.BR --no-nl-expand ", and" +.B --trim +.RE +.PP +The options are not independent: +.bP +\fB\*L\fP checks if the script contains at least one \*(``\en\*('' +and (unless \fB--no-nl-expand\fP is set) will ignore the +\fB--no-collapse\fP and \fB--trim\fP options. +.bP +After checking for \*(``\en\*('' and the \fB--no-nl-expand\fP option, +\fB\*l\fP handles the \fB--trim\fP option. +.IP +If the \fB--trim\fP option takes effect, +then \fB\*l\fP ignores \fB--no-collapse\fP. +It changes sequences of tabs, spaces +(and newlines unless \fB-cr-wrap\fP is set) to a single space. +.bP +If neither the \*(``\en\*('' or \fB--trim\fP cases apply, +\fB\*l\fP checks \fB--no-collapse\fP to decide whether to reduce +sequences of tabs and spaces to a single space. +.IP +In this case, \fB\*l\fP ignores \fB-cr-wrap\fP and does not modify newlines. +.PP +Taking those dependencies into account, +here is a table summarizing the behavior +for the various combinations of options. +The table assumes that the script contains at least one \*(``\en\*('' +when the \fB--no-nl-expand\fP option is not set. +.na +.TS +center tab(/) ; +lB lB lB lB lB +lB lB lB lB lB +_ _ _ _ _ +lw5 lw5 lw5 lw5 lw30. +cr-/no-/no-/trim/Result +wrap/collapse/nl-expand +no/no/no/no/T{ +Convert tab to space. +Convert newline to space. +Convert \*(``\en\*('' to newline. +T} +no/no/no/yes/T{ +Convert tab to space. +Convert newline to space. +Convert \*(``\en\*('' to newline. +T} +no/no/yes/no/T{ +Convert tab to space. +Do not convert newline to space. +Convert multiple-space to single. +Show \*(``\en\*('' literally. +T} +no/no/yes/yes/T{ +Convert tab to space. +Convert multiple-space to single. +Convert newline to space. +Show \*(``\en\*('' literally. +T} +no/yes/no/no/T{ +Convert newline to space. +Convert \*(``\en\*('' to newline. +T} +no/yes/no/yes/T{ +Convert newline to space. +Convert \*(``\en\*('' to newline. +T} +no/yes/yes/no/T{ +Do not convert newline to space. +Do not reduce multiple blanks. +Show \*(``\en\*('' literally. +T} +no/yes/yes/yes/T{ +Convert multiple-space to single. +Convert newline to space. +Show \*(``\en\*('' literally. +T} +yes/no/no/no/T{ +Convert tab to space. +Wrap on newline. +Convert \*(``\en\*('' to newline. +T} +yes/no/no/yes/T{ +Convert tab to space. +Wrap on newline. +Convert \*(``\en\*('' to newline. +T} +yes/no/yes/no/T{ +Convert tab to space. +Do not convert newline to space. +Convert multiple-space to single. +Show \*(``\en\*('' literally. +T} +yes/no/yes/yes/T{ +Convert tab to space. +Convert multiple-space to single. +Wrap on newline. +Show \*(``\en\*('' literally. +T} +yes/yes/no/no/T{ +Wrap on newline. +Convert \*(``\en\*('' to newline. +T} +yes/yes/no/yes/T{ +Wrap on newline. +Convert \*(``\en\*('' to newline. +T} +yes/yes/yes/no/T{ +Do not convert newline to space. +Do not reduce multiple blanks. +Show \*(``\en\*('' literally. +T} +yes/yes/yes/yes/T{ +Convert multiple-space to single. +Wrap on newline. +Show \*(``\en\*('' literally. +T} +.TE +.ad +. +.\" ************************************************************************ +.SH "RUN-TIME CONFIGURATION" +.TP 4 +1. +Create a sample configuration file by typing: +.LP +.Ex +\*p --create-rc \fIfile\fP +.Ee +.TP 4 +2. +At start, +\fB\*p\fP +determines the settings to use as follows: +.RS +.TP 4 +a) +if environment variable +\fBDIALOGRC\fP +is set, its value determines the name of the configuration file. +.TP 4 +b) +if the file in (a) is not found, use the file +\fI$HOME/.dialogrc\fP +as the configuration file. +.TP 4 +c) +if the file in (b) is not found, try using the GLOBALRC file determined at +compile-time, i.e., \fI/etc/dialogrc\fP. +.TP 4 +d) +if the file in (c) is not found, use compiled in defaults. +.RE +.TP 4 +3. +Edit the sample configuration file and copy it to some place that +\fB\*p\fP +can find, as stated in step 2 above. +. +.\" ************************************************************************ +.SH "KEY BINDINGS" +You can override or add to key bindings in \fB\*p\fP +by adding to the configuration file. +\fB\*L\fP's \fBbindkey\fP command maps single keys to its internal coding. +.Ex +bindkey \fIwidget\fP \fIcurses_key\fP \fIdialog_key\fP +.Ee +.PP +The \fIwidget\fP name can be "*" (all widgets), or +specific widgets such as \fBtextbox\fP. +Specific widget bindings override the "*" bindings. +User-defined bindings override the built-in bindings. +.PP +The \fIcurses_key\fP can be any of the names derived from +\fBcurses.h\fP, e.g., \*(``HELP\*('' from \*(``KEY_HELP\*(''. +\fB\*L\fP also recognizes ANSI control characters such as "^A", "^?", +as well as C1-controls such as "~A" and "~?". +Finally, it allows any single character to be escaped with a backslash. +.PP +\fB\*L\fP's internal keycode names correspond to the +\fBDLG_KEYS_ENUM\fP type in +\fBdlg_keys.h\fP, e.g., \*(``HELP\*('' from \*(``DLGK_HELP\*(''. +.SS Widget Names +.PP +Some widgets (such as the formbox) have an area where fields can be edited. +Those are managed in a subwindow of the widget, and +may have separate keybindings from the main widget +because the subwindows are registered using a different name. +.TS +center tab(/) ; +lI lI lI +_ _ _ +l l l . +Widget/Window name/Subwindow Name +calendar/calendar +checklist/checklist +editbox/editbox/editbox2 +form/formbox/formfield +fselect/fselect/fselect2 +inputbox/inputbox/inputbox2 +menu/menubox/menu +msgbox/msgbox +pause/pause +progressbox/progressbox +radiolist/radiolist +tailbox/tailbox +textbox/textbox/searchbox +timebox/timebox +yesno/yesno +_ +.TE +.PP +Some widgets are actually other widgets, +using internal settings to modify the behavior. +Those use the same widget name as the actual widget: +.TS +center tab(/) ; +lI lI +_ _ +l l . +Widget/Actual Widget +dselect/fselect +infobox/msgbox +inputmenu/menu +mixedform/form +passwordbox/inputbox +passwordform/form +prgbox/progressbox +programbox/progressbox +tailboxbg/tailbox +_ +.TE +.SS Built-in Bindings +This manual page does not list the key bindings for each widget, +because that detailed information can be obtained by running \fB\*p\fP. +If you have set the \fB--trace\fP option, +\fB\*p\fP writes the key-binding information for each widget +as it is registered. +.SS Example +Normally \fB\*p\fP uses different keys for navigating between the buttons +and editing part of a dialog versus navigating within the editing part. +That is, tab (and back-tab) traverse buttons +(or between buttons and the editing part), +while arrow keys traverse fields within the editing part. +Tabs are also recognized as a special case for traversing between +widgets, e.g., when using multiple tailboxbg widgets. +.PP +Some users may wish to use the same key for traversing within the +editing part as for traversing between buttons. +The form widget is written to support this sort of redefinition of +the keys, by adding a special group in \fBdlgk_keys.h\fP +for \*(``form\*('' (left/right/next/prev). +Here is an example binding demonstrating how to do this: +.Ex +bindkey formfield TAB form_NEXT +bindkey formbox TAB form_NEXT +bindkey formfield BTAB form_prev +bindkey formbox BTAB form_prev +.Ee +.PP +That type of redefinition would not be useful in other widgets, +e.g., calendar, due to the potentially large number of fields to traverse. +. +.\" ************************************************************************ +.SH ENVIRONMENT +.TP 15 +\fBDIALOGOPTS\fP +Define this variable to apply any of the common options to each widget. +Most of the common options are reset before processing each widget. +If you set the options in this environment variable, +they are applied to \fB\*p\fP's state after the reset. +As in the "\fB--file\fP" option, +double-quotes and backslashes are interpreted. +.IP +The "\fB--file\fP" option is not considered a common option +(so you cannot embed it within this environment variable). +.TP 15 +\fBDIALOGRC\fP +Define this variable if you want to specify the name of the configuration file +to use. +.TP 15 +\fBDIALOG_CANCEL\fP +.TP 15 +\fBDIALOG_ERROR\fP +.TP 15 +\fBDIALOG_ESC\fP +.TP 15 +\fBDIALOG_EXTRA\fP +.TP 15 +\fBDIALOG_HELP\fP +.TP 15 +\fBDIALOG_ITEM_HELP\fP +.TP 15 +\fBDIALOG_OK\fP +Define any of these variables to change the exit code on +Cancel (1), +error (\-1), +ESC (255), +Extra (3), +Help (2), +Help with \fB--item-help\fP (2), +or OK (0). +Normally shell scripts cannot distinguish between \-1 and 255. +.TP 15 +\fBDIALOG_TTY\fP +Set this variable to \*(``1\*('' to provide compatibility with older versions +of \fB\*p\fP which assumed that if the script redirects the standard output, +that the "\fB--stdout\fP" option was given. +.SH FILES +.TP 20 +\fI$HOME/.dialogrc\fP +default configuration file +.SH EXAMPLES +The \fB\*p\fP sources contain several samples +of how to use the different box options and how they look. +Just take a look into the directory \fBsamples/\fP of the source. +.SH DIAGNOSTICS +Exit status is subject to being overridden by environment variables. +The default values and corresponding environment variables +that can override them are: +.TP 5 +0 +if the \fBYES\fP or \fBOK\fP button is pressed (DIALOG_OK). +.TP 5 +1 +if the +.BR No " or " Cancel +button is pressed (DIALOG_CANCEL). +.TP 5 +2 +if the +.B Help +button is pressed (DIALOG_HELP), +.br +except as noted below about DIALOG_ITEM_HELP. +.TP 5 +3 +if the +.B Extra +button is pressed (DIALOG_EXTRA). +.TP 5 +4 +if the +.B Help +button is pressed, +.br +and the \fB--item-help\fP option is set +.br +and the DIALOG_ITEM_HELP environment variable is set to 4. +.IP +While any of the exit-codes can be overridden using environment variables, +this special case was introduced in 2004 to simplify compatibility. +\fB\*L\fP uses DIALOG_ITEM_HELP(4) internally, +but unless the environment variable is also set, +it changes that to DIALOG_HELP(2) on exit. +.TP 5 +\-1 +if errors occur inside \fB\*p\fP (DIALOG_ERROR) +or \fB\*p\fP exits because the \fIESC\fP key (DIALOG_ESC) was pressed. +. +.\" ************************************************************************ +.SH PORTABILITY +\fB\*L\fP works with X/Open curses. +However, some implementations have deficiencies: +.RS 3 +.bP +HPUX curses (and perhaps others) do not open the terminal properly for +the \fInewterm\fP function. +This interferes with \fB\*p\fP's \fB--input-fd\fP option, +by preventing cursor-keys and similar escape sequences from being recognized. +.bP +NetBSD 5.1 curses has incomplete support for wide-characters. +\fB\*p\fP will build, but not all examples display properly. +.RE +.\" ************************************************************************ +.SH COMPATIBILITY +You may want to write scripts which run with +other \fBdialog\fP \*(``clones\*(''. +.SS Original Dialog +First, there is the \*(``original\*('' \fBdialog\fP program to consider +(versions 0.3 to 0.9). +It had some misspelled (or inconsistent) options. +The \fB\*p\fP program maps those deprecated options to the preferred ones. +They include: +.RS +.TS +tab(/) ; +lI lI +_ _ +l l. +Option/Treatment +\fB--beep-after\fP/ignored +\fB--guage\fP/mapped to \fB--gauge\fP +_ +.TE +.RE +.SS Xdialog +This is an X application, rather than a terminal program. +With some care, it is possible to write useful scripts that work +with both \fBXdialog\fP and \fBdialog\fP. +.PP +The \fB\*p\fP program ignores these options which are recognized +by \fBXdialog\fP: +.RS +.TS +tab(/) ; +lI lI +_ _ +l l. +Option/Treatment +\fB--allow-close\fP/ignored +\fB--auto-placement\fP/ignored +\fB--fixed-font\fP/ignored +\fB--icon\fP/ignored +\fB--keep-colors\fP/ignored +\fB--no-close\fP/ignored +\fB--no-cr-wrap\fP/ignored +\fB--screen-center\fP/ignored +\fB--separator\fP/mapped to \fB--separate-output\fP +\fB--smooth\fP/ignored +\fB--under-mouse\fP/ignored +\fB--wmclass\fP/ignored +_ +.TE +.RE +.PP +\fBXdialog\fP's manpage has a section discussing its compatibility +with \fB\*p\fP. +There are some differences not shown in the manpage. +For example, the html documentation states +.RS +.PP +Note: former Xdialog releases used the "\en" (line feed) as a +results separator for the checklist widget; +this has been changed to "/" in Xdialog v1.5.0 +to make it compatible with (c)dialog. +In your old scripts using the Xdialog checklist, you +will then have to add the \fB--separate-output\fP option before the +\fB--checklist\fP one. +.RE +.PP +\fB\*L\fP has not used a different separator; +the difference was likely due to confusion regarding some script. +.SS Whiptail +Then there is \fBwhiptail\fP. +For practical purposes, it is maintained by Debian +(very little work is done by its upstream developers). +Its documentation (README.whiptail) claims +.Ex +whiptail(1) is a lightweight replacement for \*p(1), +to provide dialog boxes for shell scripts. +It is built on the +newt windowing library rather than the ncurses library, allowing +it to be smaller in embedded environments such as installers, +rescue disks, etc. + +whiptail is designed to be drop-in compatible with \*p, but +has less features: some dialog boxes are not implemented, such +as tailbox, timebox, calendarbox, etc. +.Ee +.PP +Comparing actual sizes (Debian testing, 2007/1/10): +The total of sizes for \fBwhiptail\fP, +the newt, popt and slang libraries is 757\ KB. +The comparable number for \fB\*p\fP (counting ncurses) is 520\ KB. +Disregard the first paragraph. +.PP +The second paragraph is misleading, since \fBwhiptail\fP +also does not work for common options of \fB\*p\fP, +such as the gauge box. +\fBwhiptail\fP is less compatible with \fB\*p\fP than the +original mid-1990s dialog 0.4 program. +.PP +\fBwhiptail\fP's manpage borrows features from \fB\*p\fP, e.g., +but oddly cites only \fB\*p\fP versions up to 0.4 (1994) as a source. +That is, its manpage refers to features which +were borrowed from more recent versions of \fB\*p\fP, e.g., +.bP +\fB--gauge\fP (from 0.5) +.bP +\fB--passwordbox\fP (from Debian changes in 1999), +.bP +\fB--default-item\fP (from \fB\*p\fP 2000/02/22), +.bP +\fB--output-fd\fP (from \fB\*p\fP 2002/08/14). +.PP +Somewhat humorously, one may note that the \fBpopt\fP feature +(undocumented in its manpage) +of using a "--" as an escape was documented in \fB\*p\fP's manpage about +a year before it was mentioned in \fBwhiptail\fP's manpage. +\fBwhiptail\fP's manpage incorrectly attributes that to \fBgetopt\fP +(and is inaccurate anyway). +.PP +Debian uses \fBwhiptail\fP for the official \fB\*p\fP variation. +.PP +The \fB\*p\fP program ignores or maps these options which are recognized +by \fBwhiptail\fP: +.RS +.TS +tab(/) ; +lI lI +_ _ +l l. +Option/Treatment +\fB--cancel-button\fP/mapped to \fB--cancel-label\fP +\fB--fb\fP/ignored +\fB--fullbutton\fP/ignored +\fB--no-button\fP/mapped to \fB--no-label\fP +\fB--nocancel\fP/mapped to \fB--no-cancel\fP +\fB--noitem\fP/mapped to \fB--no-items\fP +\fB--notags\fP/mapped to \fB--no-tags\fP +\fB--ok-button\fP/mapped to \fB--ok-label\fP +\fB--scrolltext\fP/mapped to \fB--scrollbar\fP +\fB--topleft\fP/mapped to \fB--begin 0 0\fP +\fB--yes-button\fP/mapped to \fB--yes-label\fP +_ +.TE +.RE +.LP +There are visual differences which are not addressed by command-line options: +.bP +\fB\*p\fP centers lists within the window. +\fBwhiptail\fP typically puts lists against the left margin. +.bP +\fBwhiptail\fP uses angle brackets ("<" and ">") for marking buttons. +\fB\*p\fP uses square brackets. +.bP +\fBwhiptail\fP marks the limits of subtitles with vertical bars. +\fB\*p\fP does not mark the limits. +.bP +\fBwhiptail\fP attempts to mark the top/bottom cells of a scrollbar +with up/down arrows. +When it cannot do this, +it fills those cells with the background color +of the scrollbar and confusing the user. +\fB\*p\fP uses the entire scrollbar space, +thereby getting better resolution. +.\" ************************************************************************ +.SH BUGS +Perhaps. +.SH AUTHOR +.LP +Thomas E.\& Dickey (updates for 0.9b and beyond) +.SH CONTRIBUTORS +Kiran Cherupally \(en the mixed form and mixed gauge widgets. +.LP +Tobias C.\& Rittweiler +.LP +Valery Reznic \(en the form and progressbox widgets. +.LP +Yura Kalinichenko adapted the gauge widget as \*(``pause\*(''. +.PP +This is a rewrite (except as needed to provide compatibility) +of the earlier version of \fB\*p 0.9a\fP, +which lists as authors: +.bP +Savio Lam \(en version 0.3, \*(``dialog\*('' +.bP +Stuart Herbert \(en patch for version 0.4 +.bP +Marc Ewing \(en the gauge widget. +.bP +Pasquale De Marco \*(``Pako\*('' \(en version 0.9a, \*(``cdialog\*('' Index: vendor/dialog/1.3-20180621/dialog.3 =================================================================== --- vendor/dialog/1.3-20180621/dialog.3 (nonexistent) +++ vendor/dialog/1.3-20180621/dialog.3 (revision 339483) @@ -0,0 +1,3638 @@ +'\" t +.\" $Id: dialog.3,v 1.121 2018/06/20 01:21:53 tom Exp $ +.\" Copyright 2005-2017,2018 Thomas E. Dickey +.\" +.\" This program is free software; you can redistribute it and/or modify +.\" it under the terms of the GNU Lesser General Public License, version 2.1 +.\" as published by the Free Software Foundation. +.\" +.\" This program is distributed in the hope that it will be useful, but +.\" WITHOUT ANY WARRANTY; without even the implied warranty of +.\" MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +.\" Lesser General Public License for more details. +.\" +.\" You should have received a copy of the GNU Lesser General Public +.\" License along with this program; if not, write to +.\" Free Software Foundation, Inc. +.\" 51 Franklin St., Fifth Floor +.\" Boston, MA 02110, USA. +.\" +.\" definitions for renaming +.ds p dialog +.ds l dialog +.ds L Dialog +.ds D DIALOG +. +.de ES +.ne 8 +.IP +.. +.de Ex +.RS +7 +.PP +.nf +.ft CW +.. +.de Ee +.fi +.ft R +.RE +.. +.\" Bulleted paragraph +.de bP +.ie n .IP \(bu 4 +.el .IP \(bu 2 +.. +.ie \n(.g .ds `` \(lq +.el .ds `` `` +.ie \n(.g .ds '' \(rq +.el .ds '' '' +.TH \*D 3 "" "$Date: 2018/06/20 01:21:53 $" +.SH NAME +dialog \- widgets and utilities for the \*p program +.SH SYNOPSIS +.B cc [ flag ... ] file ... -l\*l [ library ... ] +.br +\ \ \ or +.br +.B cc $(\*p-config --cflags) file ... $(\*p-config --libs) ] +.sp +.B #include <\*l.h> +.PP +\fB\*L\fP +is a program that will let you present a variety of questions or +display messages using dialog boxes from a shell script. +It is built from the \fB\*l\fP library, +which consists of several widgets +as well as utility functions that are used by the widgets +or the main program. +. +.SH DESCRIPTION +This manpage documents the features from \fI<\*l.h>\fP which +are likely to be important to developers using the widgets directly. +Some hints are also given for developing new widgets. +.PP +Here is a \fB\*l\fP version of \fIHello World\/\fP: +.RS +.nf +int main(void) +{ + int status; + init_dialog(stdin, stdout); + status = dialog_yesno( + "Hello, in dialog-format", + "Hello World!", + 0, 0); + end_dialog(); + return status; +} +.fi +.RE +. +.\" ************************************************************************ +.SH DEFINITIONS +Exit codes (passed back to the main program for its use) +are defined with a "\fIDLG_EXIT_\fP prefix. +The efined constants can be mapped using environment variables +as described in \fB\*p\fP(1), +e.g., \fIDLG_EXIT_OK\fP corresponds to \fI$DIALOG_OK\fP. +.PP +Useful character constants which correspond to user input +are named with the "\fICHR_\fP" prefix, e.g., +\fICHR_BACKSPACE\fP. +.PP +Colors and video attributes are categorized and associated with +settings in the configuration file +(see the discussion of \fI$DIALOGRC\fP in \fB\*p\/\fP(1)). +The \fIDIALOG_ATR(n)\fP macro is used for defining the references +to the combined color and attribute table \fBdlg_color_table[]\fP. +.PP +The \fB\*p\fP application passes its command-line parameters +to the widget functions. +Some of those parameters are single values, +but some of the widgets accept data as an array of values. +Those include checklist/radiobox, menubox and formbox. +When the \fB--item-help\fP option is given, an extra column +of data is expected. +The USE_ITEM_HELP(), CHECKBOX_TAGS, MENUBOX_TAGS and FORMBOX_TAGS +macros are used to hide this difference from the calling application. +.PP +Most of the other definitions found in \fI<\*l.h>\fP +are used for convenience in building the library or main program. +These include definitions based on the generated \fI\fP header. +. +.\" ************************************************************************ +.SH DATA STRUCTURES +All of the global data for the \fB\*l\fP library is stored in +a few structures: +\fIDIALOG_STATE\fP, \fIDIALOG_VARS\fP and \fIDIALOG_COLORS\fP. +The corresponding +\fBdialog_state\fP, \fBdialog_vars\fP and \fBdlg_color_table\fP +global variables should be initialized to zeros, +and then populated with the data to use. +A few of these must be nonzero for the corresponding widgets to function. +As as the case with function names, +variables beginning with "\fIdialog_\fP" +are designed for use by the calling application +while variables beginning with "\fIdlg_\fP" +are intended for lower levels, e.g., by the \fB\*l\fP library. +.\" --------------------------------------------------------------------------- +.SH DIALOG_STATE +The \fIstate\fP variables are \fB\*l\fP's working variables. +It initializes those, uses them to manage the widgets. +.\" --------------------------------------------------------------------------- +.SS .all_subwindows +This is a linked list of all subwindows created by the library. +The \fBdlg_del_window\fP function uses this +to free storage for subwindows when deleting a window. +.\" --------------------------------------------------------------------------- +.SS .all_windows +This is a linked list of all windows created by the library. +The \fBdlg_del_window\fP function uses this to locate windows which +may be redrawn after deleting a window. +.\" --------------------------------------------------------------------------- +.SS .aspect_ratio +This corresponds to the command-line option "\fB--aspect-ratio\fP". +The value gives the application +some control over the box dimensions when using auto +sizing (specifying 0 for height and width). +It represents width / height. +The default is 9, which means 9 characters wide to every 1 line high. +.\" --------------------------------------------------------------------------- +.SS .finish_string +When set to true, this allows calls to \fBdlg_finish_string\fP to discard the +corresponding data which is created to speed up layout computations for the +given string parameter. +The \fBgauge\fP widget uses this feature. +.\" --------------------------------------------------------------------------- +.SS .getc_callbacks +This is set up in \fIui_getc.c\fP to record windows which must be polled +for input, e.g., to handle the background tailbox widget. +One window is designated as the foreground or control window. +.\" --------------------------------------------------------------------------- +.SS .getc_redirect +If the control window for \fIDIALOG_STATE.getc_callbacks\fP is +closed, the list is transferred to this variable. +Closing all windows causes the application to exit. +.\" --------------------------------------------------------------------------- +.SS .no_mouse +This corresponds to the command-line option "\fB--no-mouse\fP". +If true, \fB\*p\fP will not initialize (and enable) the mouse in +\fIinit_dialog\fP. +.\" --------------------------------------------------------------------------- +.SS .output +This is set in the \fB\*p\fP application to the stream on +which the application and library functions may write text results. +Normally that is the standard error, +since the curses library prefers to write its data to the standard output. +Some scripts, trading portability for convenience, +prefer to write results to the standard output, +e.g., by using the "\fB--stdout\fP" option. +.\" --------------------------------------------------------------------------- +.SS .output_count +This is incremented by \fBdlg_does_output\fP, +which is called by each widget that writes text to the output. +The \fB\*p\fP application uses that to decide if it should +also write a separator, i.e., +\fIDIALOG_STATE.separate_str\fP, +between calls to each widget. +.\" --------------------------------------------------------------------------- +.SS .pipe_input +This is set in \fIinit_dialog\fP to a stream which can be used by the +\fBgauge\fP widget, which must be the application's standard input. +The \fB\*p\fP application calls \fIinit_dialog\fP normally with +\fIinput\fP set to the standard input, but optionally based on the +"\fB--input-fd\fP" option. +Since the application cannot read from +a pipe (standard input) and at the same time read +the curses input from the standard input, +it must allow for reopening the latter from either +a specific file descriptor, +or directly from the terminal. +The adjusted pipe stream value is stored in this variable. +.\" --------------------------------------------------------------------------- +.SS .screen_initialized +This is set in \fIinit_dialog\fP and +reset in \fIend_dialog\fP. +It is used to check if curses has been initialized, +and if the \fIendwin\fP function must be called on exit. +.\" --------------------------------------------------------------------------- +.SS .screen_output +This is set in \fIinit_dialog\fP to the output stream used +by the curses library. +Normally that is the standard output, +unless that happens to not be a terminal (and if \fIinit_dialog\fP can +successfully open the terminal directly). +.\" --------------------------------------------------------------------------- +.SS .separate_str +This corresponds to the command-line option "\fB--separate-widget\fP". +The given string +specifies a string that will separate the output on \fB\*p\fP's output from +each widget. +This is used to simplify parsing the result of a dialog with several widgets. +If this option is not given, +the default separator string is a tab character. +.\" --------------------------------------------------------------------------- +.SS .tab_len +This corresponds to the command-line option "\fB--tab-len\fP \fInumber\/\fP". +Specify the number of spaces that a tab character occupies if the +"\fB--tab-correct\fP" +option is given. +The default is 8. +.\" --------------------------------------------------------------------------- +.SS .text_height +This text-formatting functions set this to the number of lines used for +formatting a string. +.LP +It is used by \fB\*l\fP for the command-line options +"\fB--print-text-size\fP" and +"\fB--print-text-only\fP". +.\" --------------------------------------------------------------------------- +.SS .text_only +\fB\*L\fP uses this in the command-line option "\fB--print-text-only\fP". +.LP +The text-formatting functions +(\fBdlg_print_text\fP, +\fBdlg_print_line\fP, and +\fBdlg_print_autowrap\fP) +check this to decide whether to print the formatted text to +\fB\*p\fP's output or to the curses-display. +.LP +Also, +\fBdlg_auto_size\fP checks the flag, allowing it to be used before +\fBinit_dialog\fP is called. +.\" --------------------------------------------------------------------------- +.SS .text_width +This text-formatting functions set this to the number of columns used for +formatting a string. +.LP +It is used by \fB\*l\fP for the command-line options +"\fB--print-text-size\fP" and +"\fB--print-text-only\fP". +.\" --------------------------------------------------------------------------- +.SS .trace_output +This corresponds to the command-line option "\fB--trace\fP \fIfile\fP". +It is the file pointer to which trace messages are written. +.\" --------------------------------------------------------------------------- +.SS .use_colors +This is set in \fIinit_dialog\fP if the curses implementation supports color. +.\" --------------------------------------------------------------------------- +.SS .use_scrollbar +This corresponds to the command-line option "\fB--scrollbar\fP". +If true, +draw a scrollbar to make windows holding scrolled data more readable. +.\" --------------------------------------------------------------------------- +.SS .use_shadow +This corresponds to the command-line option "\fB--no-shadow\fP". +This is set in \fIinit_dialog\fP if the curses implementation supports color. +If true, +suppress shadows that would be drawn to the right and bottom of each dialog box. +.\" --------------------------------------------------------------------------- +.SS .visit_items +This corresponds to the command-line option "\fB--visit-items\fP". +Modify the tab-traversal of the list-oriented widgets +(buildlist, checklist, radiobox, menubox, inputmenu, and treeview) +to include the list of items as one of the states. +This is useful as a visual aid, +i.e., the cursor position helps some users. +.\" --------------------------------------------------------------------------- +.PP +The \fB\*p\fP application resets the \fBdialog_vars\fP data before +accepting options to invoke each widget. +Most of the \fIDIALOG_VARS\fP members are set directly from \fB\*p\fP's +command-line options: +.\" --------------------------------------------------------------------------- +.SH +DIALOG_VARS +.PP +In contrast to \fBDIALOG_STATE\fP, the members of \fBDIALOG_VARS\fP +are set by command-line options in \fB\*p\fP. +.\" --------------------------------------------------------------------------- +.SS .ascii_lines +This corresponds to the command-line option "\fB--ascii-lines\fP. +It causes line-drawing to be done with ASCII characters, e.g., "+" and "-". +See \fIDIALOG_VARS.no_lines\fP. +.\" --------------------------------------------------------------------------- +.SS .backtitle +This corresponds to the command-line option +"\fB--backtitle\fP \fIbacktitle\/\fP". +It specifies a +\fIbacktitle\fP +string to be displayed on the backdrop, at the top of the screen. +.\" --------------------------------------------------------------------------- +.SS .beep_after_signal +This corresponds to the command-line option "\fB--beep-after\fP". +If true, beep after a user has completed a widget +by pressing one of the buttons. +.\" --------------------------------------------------------------------------- +.SS .beep_signal +This corresponds to the command-line option "\fB--beep\fP". +It is obsolete. +.\" --------------------------------------------------------------------------- +.SS .begin_set +This is true if the command-line option "\fB--begin\fP \fIy x\/\fP" was used. +It specifies the position of the upper left corner +of a dialog box on the screen. +.\" --------------------------------------------------------------------------- +.SS .begin_x +This corresponds to the \fIx\fP value from +the command-line option "\fB--begin\fP \fIy x\/\fP" (second value). +.\" --------------------------------------------------------------------------- +.SS .begin_y +This corresponds to the \fIy\fP value from +the command-line option "\fB--begin\fP \fIy x\/\fP" (first value). +.\" --------------------------------------------------------------------------- +.SS .cancel_label +This corresponds to the command-line option +"\fB--cancel-label\fP \fIstring\/\fP". +The given \fIstring\fP overrides the label used for \*(``Cancel\*('' buttons. +.\" --------------------------------------------------------------------------- +.SS .cant_kill +This corresponds to the command-line option "\fB--no-kill\fP". +If true, this tells +\fB\*p\fP +to put the +\fBtailboxbg\fP +box in the background, +printing its process id to \fB\*p\fP's output. +SIGHUP is disabled for the background process. +.\" --------------------------------------------------------------------------- +.SS .colors +This corresponds to the command-line option "\fB--colors\fP". +If true, interpret embedded "\eZ" sequences in the dialog text +by the following character, +which tells \fB\*p\fP to set colors or video attributes: +0 through 7 are the ANSI codes used in curses: +black, +red, +green, +yellow, +blue, +magenta, +cyan and +white respectively. +Bold is set by 'b', reset by 'B'. +Reverse is set by 'r', reset by 'R'. +Underline is set by 'u', reset by 'U'. +The settings are cumulative, e.g., "\eZb\eZ1" makes the following text +bright red. +Restore normal settings with "\eZn". +.\" --------------------------------------------------------------------------- +.SS .column_separator +This corresponds to the command-line option "\fB--column-separator\fP". +\fB\*L\fP splits data for radio/checkboxes and menus on the +occurrences of the given string, and aligns the split data into columns. +.\" --------------------------------------------------------------------------- +.SS .cr_wrap +This corresponds to the command-line option "\fB--cr-wrap\fP". +If true, +interpret embedded newlines in the dialog text as a newline on the screen. +Otherwise, \fB\*p\fR will only wrap lines where needed +to fit inside the text box. +Even though you can control line breaks with this, +\fB\*p\fR will still wrap any lines that are too long for the width of the box. +Without cr-wrap, the layout of your text may be formatted to look nice +in the source code of your script without affecting the way it will +look in the dialog. +.\" --------------------------------------------------------------------------- +.SS .date_format +This corresponds to the command-line option +"\fB--date-format\fP \fIstring\/\fP". +If the host provides \fBstrftime\fP, and the value is nonnull, +the calendar widget uses this to format its output. +.\" --------------------------------------------------------------------------- +.SS .default_button +This is set by the command-line option "\fB--default-button\fP. +It is used by \fBdlg_default_button\fP. +.\" --------------------------------------------------------------------------- +.SS .default_item +This corresponds to the command-line option +"\fB--default-item\fP \fIstring\/\fP". +The given string is used as +the default item in a checklist, form or menu box. +Normally the first item in the box is the default. +.\" --------------------------------------------------------------------------- +.SS .defaultno +This corresponds to the command-line option "\fB--defaultno\fP". +If true, +make the default value of the +\fByes/no\fP +box a +.BR No . +Likewise, treat the default button of widgets that provide +\*(``OK\*('' and \*(``Cancel\*('' +as a \fICancel\fP. +If \fB--nocancel\fP was given that option overrides this, +making the default button always \*(``Yes\*('' +(internally the same as \*(``OK\*(''). +.\" --------------------------------------------------------------------------- +.SS .dlg_clear_screen +This corresponds to the command-line option "\fB--clear\fP". +This option is implemented in the main program, not the library. +If true, +the screen will be cleared on exit. +This may be used alone, without other options. +.\" --------------------------------------------------------------------------- +.SS .exit_label +This corresponds to the command-line option "\fB--exit-label string\fP". +The given string overrides the label used for \*(``EXIT\*('' buttons. +.\" --------------------------------------------------------------------------- +.SS .extra_button +This corresponds to the command-line option "\fB--extra-button\fP". +If true, some widgets show an extra button, +between \*(``OK\*('' and \*(``Cancel\*('' buttons. +.\" --------------------------------------------------------------------------- +.SS .extra_label +This corresponds to the command-line option +"\fB--extra-label\fP \fIstring\/\fP". +The given string overrides the label used for \*(``Extra\*('' buttons. +Note: for inputmenu widgets, this defaults to \*(``Rename\*(''. +.\" --------------------------------------------------------------------------- +.SS .formitem_type +This is set by the command-line option "\fB--passwordform\fP" +to tell the form widget that its text fields should be treated like +password widgets. +.\" --------------------------------------------------------------------------- +.SS .help_button +This corresponds to the command-line option "\fB--help-button\fP". +If true, some widgets show a help-button after +\*(``OK\*('' and \*(``Cancel\*('' buttons, +i.e., in checklist, radiolist and menu boxes. +If \fB--item-help\fR is also given, on exit +the return status will be the same as for the \*(``OK\*('' button, +and the item-help text will be written to \fB\*p\fP's output +after the token \*(``HELP\*(''. +Otherwise, the return status will indicate that the Help button was pressed, +and no message printed. +.\" --------------------------------------------------------------------------- +.SS .help_file +This corresponds to the command-line option "\fB--hfile\fP \fIstring\/\fP". +The given filename is passed to \fBdialog_helpfile\fP when the user +presses F1. +.\" --------------------------------------------------------------------------- +.SS .help_label +This corresponds to the command-line option "\fB--help-label\fP \fIstring\/\fP". +The given string overrides the label used for \*(``Help\*('' buttons. +.\" --------------------------------------------------------------------------- +.SS .help_line +This corresponds to the command-line option "\fB--hline\fP \fIstring\/\fP". +The given string is displayed in the bottom of dialog windows, +like a subtitle. +.\" --------------------------------------------------------------------------- +.SS .help_status +This corresponds to the command-line option "\fB--help-status\fP". +If true, and the the help-button is selected, +writes the checklist or radiolist information +after the item-help \*(``HELP\*('' information. +This can be used to reconstruct the state of a checklist after processing +the help request. +.\" --------------------------------------------------------------------------- +.SS .help_tags +This corresponds to the command-line option "\fB--help-tags\fP". +If true, +\fBdlg_add_help_formitem\fP and +\fBdlg_add_help_listitem\fP use the item's tag value consistently +rather than using the tag's help-text value +when \fIDIALOG_VARS.item_help\fP is set. +.\" --------------------------------------------------------------------------- +.SS .input_length +This is nonzero if \fIDIALOG_VARS.input_result\fP is allocated, +versus being a pointer to the user's local variables. +.\" --------------------------------------------------------------------------- +.SS .input_menu +This flag is set to denote whether the menubox widget +implements a menu versus a inputmenu widget. +.\" --------------------------------------------------------------------------- +.SS .input_result +This may be either a user-supplied buffer, +or a buffer dynamically allocated by the library, +depending on \fIDIALOG_VARS.input_length\fP: +.bP +If \fIDIALOG_VARS.input_length\fP is zero, +this is a pointer to user buffer (on the stack, or static). +The buffer size is assumed to be \fBMAX_LEN\fP, +which is defined in \fI<\*l.h>\fP. +.bP +When \fIDIALOG_VARS.input_length\fP is nonzero, +this is a dynamically-allocated buffer used by the widgets to return +printable results to the calling application. +.LP +Certain widgets copy a result to this buffer. +If the pointer is NULL, or if the length is insufficient for +the result, then the \fB\*l\fP library allocates a buffer which is large enough, +and sets \fIDIALOG_VARS.input_length\fP. +Callers should check for this case if they have supplied their own buffer. +.\" --------------------------------------------------------------------------- +.SS .insecure +This corresponds to the command-line option "\fB--insecure\fP". +If true, make the password widget friendlier but less secure, +by echoing asterisks for each character. +.\" --------------------------------------------------------------------------- +.SS .in_helpfile +This variable is used to prevent \fBdialog_helpfile\fP from showing +anything, e.g., if F1 were pressed within a help-file display. +.\" --------------------------------------------------------------------------- +.SS .iso_week +This corresponds to the command-line option "\fB--iso-week\fP". +It is used in the calendar widget to tell how +to compute the starting week for the year: +.bP +by default, the calendar treats January 1 as the first week of the year. +.bP +If this variable is true, the calendar uses ISO 8601's convention. +ISO 8601 numbers weeks starting with the first week in January with +a Thursday in the current year. +January 1 may be in the \fIprevious\fP year. +.\" --------------------------------------------------------------------------- +.SS .item_help +This corresponds to the command-line option "\fB--item-help\fP". +If true, +interpret the tags data for checklist, radiolist and menu boxes +adding a column whose text is displayed in the bottom line of the +screen, for the currently selected item. +.\" --------------------------------------------------------------------------- +.SS .keep_tite +This is set by the command-line option "\fB--keep-tite\fP" +to tell \fB\*p\fP to not attempt to cancel the terminal initialization +(termcap \fIti\/\fP/\,\fIte\/\fP) sequences +which correspond to xterm's alternate-screen switching. +Normally \fB\*p\fP does this to avoid flickering when run several times +in a script. +.\" --------------------------------------------------------------------------- +.SS .keep_window +This corresponds to the command-line option "\fB--keep-window\fP". +If true, do not remove/repaint the window on exit. +This is useful for keeping the window contents visible when several +widgets are run in the same process. +Note that curses will clear the screen when starting a new process. +.\" --------------------------------------------------------------------------- +.SS .last_key +This corresponds to the command-line option "\fB--last-key\fP". +.\" --------------------------------------------------------------------------- +.SS .max_input +This corresponds to the command-line option "\fB--max-input\fP \fIsize\/\fP". +Limit input strings to the given size. +If not specified, the limit is 2048. +.\" --------------------------------------------------------------------------- +.SS .no_items +This corresponds to the command-line option "\fB--no-items\fP". +Some widgets (checklist, inputmenu, radiolist, menu) display a list +with two columns (a \*(``tag\*('' and \*(``item\*('', +i.e., \*(``description\*(''). +This tells \fB\*p\fP to read shorter rows from data, +omitting the \*(``list\*(''. +.\" --------------------------------------------------------------------------- +.SS .no_label +This corresponds to the command-line option "\fB--no-label\fP \fIstring\/\fP". +The given string overrides the label used for \*(``No\*('' buttons. +.\" --------------------------------------------------------------------------- +.SS .no_lines +This corresponds to the command-line option "\fB--no-lines\fP. +It suppresses line-drawing. +See \fIDIALOG_VARS.ascii_lines\fP. +.\" --------------------------------------------------------------------------- +.SS .no_nl_expand +This corresponds to the command-line option "\fB--no-nl-expand\fP". +If false, \fBdlg_trim_string\fP converts literal "\en" substrings +in a message into newlines. +.\" --------------------------------------------------------------------------- +.SS .no_tags +This corresponds to the command-line option "\fB--no-tags\fP". +Some widgets (checklist, inputmenu, radiolist, menu) display a list +with two columns (a \*(``tag\*('' and \*(``item\*('', +also known as \*(``description\*(''). +The tag is useful for scripting, but may not help the user. +The \fB--no-tags\fP option (from Xdialog) may be used to suppress the +column of tags from the display. +.LP +Normally \fB\*p\fP allows you to quickly move to entries on the displayed list, +by matching a single character to the first character of the tag. +When the \fB--no-tags\fP option is given, \fB\*p\fP matches against +the first character of the description. +In either case, the matchable character is highlighted. +.LP +Here is a table showing how the no_tags and no_items values interact: +.TS +tab(/); +l l l l l +l l l n n. +Widget/Fields Shown/Fields Read/.no_items/.no_tags +_ +buildlist/item/tag,item/0/0* +buildlist/item/tag,item/0/1 +buildlist/tag/tag/1/0* +buildlist/tag/tag/1/1 +checklist/tag,item/tag,item/0/0 +checklist/item/tag,item/0/1 +checklist/tag/tag/1/0 +checklist/tag/tag/1/1 +inputmenu/tag,item/tag,item/0/0 +inputmenu/item/tag,item/0/1 +inputmenu/tag/tag/1/0 +inputmenu/tag/tag/1/1 +menu/tag,item/tag,item/0/0 +menu/item/tag,item/0/1 +menu/tag/tag/1/0 +menu/tag/tag/1/1 +radiolist/tag,item/tag,item/0/0 +radiolist/item/tag,item/0/1 +radiolist/tag/tag/1/0 +radiolist/tag/tag/1/1 +treeview/item/tag,item/0/0* +treeview/item/tag,item/0/1 +treeview/tag/tag/1/0* +treeview/tag/tag/1/1 +_ +.TE +.TP 2 +* +Xdialog does not display the tag column for the analogous buildlist +and treeview widgets. +\fB\*L\fP does the same on the command-line. +However the library interface defaults to displaying the tag column. +Your application can enable or disable the tag column as needed for each widget. +.\" --------------------------------------------------------------------------- +.SS .nocancel +This corresponds to the command-line option "\fB--no-cancel\fP". +If true, +suppress the \*(``Cancel\*('' button in checklist, inputbox and menu box modes. +A script can still test if the user pressed the ESC key to cancel to quit. +.\" --------------------------------------------------------------------------- +.SS .nocollapse +This corresponds to the command-line option "\fB--no-collapse\fP". +Normally \fB\*p\fR converts tabs to spaces and reduces multiple +spaces to a single space for text which is displayed in a message boxes, etc. +It true, that feature is disabled. +Note that \fB\*p\fR will still wrap text, subject to the \fB--cr-wrap\fR +option. +.\" --------------------------------------------------------------------------- +.SS .nook +This corresponds to the command-line option "\fB--nook\fP. +\fB\*L\fP will suppress the \*(``ok\*('' (or \*(``yes\*('') button +from the widget. +.\" --------------------------------------------------------------------------- +.SS .ok_label +This corresponds to the command-line option "\fB--ok-label\fP \fIstring\/\fP". +The given string overrides the label used for \*(``OK\*('' buttons. +.\" --------------------------------------------------------------------------- +.SS .print_siz +This corresponds to the command-line option "\fB--print-size\fP". +If true, +each widget prints its size to \fB\*p\fP's output when it is invoked. +.\" --------------------------------------------------------------------------- +.SS .quoted +This corresponds to the command-line option "\fB--quoted\fP. +Normally \fB\*p\fP quotes the strings returned by checklist's +as well as the item-help text. +If true, \fB\*p\fP will quote all string results. +.\" --------------------------------------------------------------------------- +.SS .reorder +This corresponds to the command-line option "\fB--reorder\fP. +By default, the buildlist widget uses the same order for the output (right) +list as for the input (left). +If true, \fB\*p\fP will use the order in which a user adds selections +to the output list. +.\" --------------------------------------------------------------------------- +.SS .separate_output +This corresponds to the command-line option "\fB--separate-output\fP". +If true, +checklist widgets output result one line at a time, with no quoting. +This facilitates parsing by another program. +.\" --------------------------------------------------------------------------- +.SS .single_quoted +This corresponds to the command-line option "\fB--single-quoted\fP". +If true, +use single-quoting as needed (and no quotes if unneeded) for the +output of checklist's as well as the item-help text. +If this option is not set, \fB\*p\fP uses double quotes around each item. +The latter requires occasional use of backslashes to make the output useful in +shell scripts. +.\" --------------------------------------------------------------------------- +.SS .size_err +This corresponds to the command-line option "\fB--size-err\fP". +If true, +check the resulting size of a dialog box before trying to use it, +printing the resulting size if it is larger than the screen. +(This option is obsolete, since all new-window calls are checked). +.\" --------------------------------------------------------------------------- +.SS .sleep_secs +This corresponds to the command-line option "\fB--sleep\fP \fIsecs\/\fP". +This option is implemented in the main program, not the library. +If nonzero, this is the number of seconds after to delay +after processing a dialog box. +.\" --------------------------------------------------------------------------- +.SS .tab_correct +This corresponds to the command-line option "\fB--tab-correct\fP". +If true, convert each tab character of the text to one or more spaces. +Otherwise, tabs are rendered according to the curses library's interpretation. +.\" --------------------------------------------------------------------------- +.SS .time_format +This corresponds to the command-line option +"\fB--time-format\fP \fIstring\/\fP". +If the host provides \fBstrftime\fP, and the value is nonnull, +the timebox widget uses this to format its output. +.\" --------------------------------------------------------------------------- +.SS .timeout_secs +This corresponds to the command-line option "\fB--timeout\fP \fIsecs\/\fP". +If nonzero, timeout input requests (exit with error code) +if no user response within the given number of seconds. +.\" --------------------------------------------------------------------------- +.SS .title +This corresponds to the command-line option "\fB--title\fP \fItitle\/\fP". +Specifies a +\fItitle\fP +string to be displayed at the top of the dialog box. +.\" --------------------------------------------------------------------------- +.SS .trim_whitespace +This corresponds to the command-line option "\fB--trim\fP". +If true, eliminate leading blanks, +trim literal newlines and repeated blanks from message text. +.\" --------------------------------------------------------------------------- +.SS .week_start +This corresponds to the command-line option "\fB--week-start\fP". +It is used in the calendar widget to set the starting day for the week. +The string value can be +.bP +a number (0 to 6, Sunday through Saturday using POSIX) or +.bP +the special value \*(``locale\*('' (this works with systems using glibc, +providing an extension to the \fBlocale\fP command, +the \fBfirst_weekday\fP value). +.bP +a string matching one of the abbreviations for the day of the week +shown in the \fBcalendar\fP widget, e.g., \*(``Mo\*('' for \*(``Monday\*(''. +.\" --------------------------------------------------------------------------- +.SS .yes_label +This corresponds to the command-line option "\fB--yes-label\fP \fIstring\/\fP". +The given string overrides the label used for \*(``Yes\*('' buttons. +. +.\" ************************************************************************ +.\" ************************************************************************ +.SH WIDGETS +Functions that implement major functionality for the command-line \fB\*p\fP +program, e.g., widgets, have names beginning "\fIdialog_\fP". +.PP +All dialog boxes have at least three parameters: +.RS 3 +.TP 5 +\fItitle\fP +the caption for the box, shown on its top border. +.TP 5 +\fIheight\fP +the height of the dialog box. +.TP 5 +\fIwidth\fP +the width of the dialog box. +.RE +.PP +Other parameters depend on the box type. +. +.\" ************************************************************************ +.SS dialog_buildlist +implements the "\fB--buildlist\fP" option. +.TP 5 +.B const char * \fItitle +is the title on the top of the widget. +.TP 5 +.B const char * \fIcprompt +is the prompt text shown within the widget. +.TP 5 +.B int \fIheight +is the desired height of the box. +If zero, the height is adjusted to use the available screen size. +.TP 5 +.B int \fIwidth +is the desired width of the box. +If zero, the height is adjusted to use the available screen size. +.TP 5 +.B int \fIlist_height +is the minimum height to reserve for displaying the list. +If zero, it is computed based on the given \fIheight\fP and \fIwidth\fP. +.TP 5 +.B int \fIitem_no +is the number of rows in \fIitems\fP. +.TP 5 +.B char ** \fIitems +is an array of strings which is viewed either as a list of rows +.RS +\fItag item status\fR +.RE +.IP +or +.RS +\fItag item status help\fR +.RE +.IP +depending on whether \fBdialog_vars.item_help\fP is set. +.TP 5 +.B int \fIorder_mode +is reserved for future enhancements +. +.\" ************************************************************************ +.SS dialog_calendar +implements the "\fB--calendar\fP" option. +.TP 5 +.B const char * \fItitle +is the title on the top of the widget. +.TP 5 +.B const char * \fIsubtitle +is the prompt text shown within the widget. +.TP 5 +.B int \fIheight +is the height excluding the fixed-height calendar grid. +.TP 5 +.B int \fIwidth +is the overall width of the box, +which is adjusted up to the calendar grid's minimum width if needed. +.TP 5 +.B int \fIday +is the initial day of the week shown, +counting zero as Sunday. +If the value is negative, the current day of the week is used. +.TP 5 +.B int \fImonth +is the initial month of the year shown, +counting one as January. +If the value is negative, the current month of the year is used. +.TP 5 +.B int \fIyear +is the initial year shown. +If the value is negative, the current year is used. +.\" ************************************************************************ +.SS dialog_checklist +implements the "\fB--checklist\fP" and "\fB--radiolist\fP" options +depending on the \fIflag\fP parameter. +.TP 5 +.B const char * \fItitle +is the title on the top of the widget. +.TP 5 +.B const char * \fIcprompt +is the prompt text shown within the widget. +.TP 5 +.B int \fIheight +is the desired height of the box. +If zero, the height is adjusted to use the available screen size. +.TP 5 +.B int \fIwidth +is the desired width of the box. +If zero, the height is adjusted to use the available screen size. +.TP 5 +.B int \fIlist_height +is the minimum height to reserve for displaying the list. +If zero, it is computed based on the given \fIheight\fP and \fIwidth\fP. +.TP 5 +.B int \fIitem_no +is the number of rows in \fIitems\fP. +.TP 5 +.B int \fIitems +is an array of strings which is viewed either as a list of rows +.RS +\fItag item status\fR +.RE +.IP +or +.RS +\fItag item status help\fR +.RE +.IP +depending on whether \fBdialog_vars.item_help\fP is set. +.IP flag +is either \fIFLAG_CHECK\fP, for checklists, +or \fIFLAG_RADIO\fP for radiolists. +.\" ************************************************************************ +.SS dialog_dselect +implements the "\fB--dselect\fP" option. +.TP 5 +.B const char * \fItitle +is the title on the top of the widget. +.TP 5 +.B const char * \fIpath +is the preselected value to show in the input-box, +which is used also to set the directory- and file-windows. +.TP 5 +.B int \fIheight +is the height excluding the minimum needed to show the dialog box framework. +If zero, the height is based on the screen size. +.TP 5 +.B int \fIwidth +is the desired width of the box. +If zero, the height is based on the screen size. +.\" ************************************************************************ +.SS dialog_editbox +implements the "\fB--editbox\fP" option. +.TP 5 +.B const char * \fItitle +is the title on the top of the widget. +.TP 5 +.B const char * \fIfile +is the name of the file from which to read. +.TP 5 +.B int \fIheight +is the desired height of the box. +If zero, the height is adjusted to use the available screen size. +.TP 5 +.B int \fIwidth +is the desired width of the box. +If zero, the height is adjusted to use the available screen size. +.\" ************************************************************************ +.SS dialog_form +implements the "\fB--form\fP" option. +.TP 5 +.B const char * \fItitle +is the title on the top of the widget. +.TP 5 +.B const char * \fIcprompt +is the prompt text shown within the widget. +.TP 5 +.B int \fIheight +is the desired height of the box. +If zero, the height is adjusted to use the available screen size. +.TP 5 +.B int \fIwidth +is the desired width of the box. +If zero, the height is adjusted to use the available screen size. +.TP 5 +.B int \fIform_height +is the minimum height to reserve for displaying the list. +If zero, it is computed based on the given \fIheight\fP and \fIwidth\fP. +.TP 5 +.B int \fIitem_no +is the number of rows in \fIitems\fP. +.TP 5 +.B int \fIitems +is an array of strings which is viewed either as a list of rows +.RS +\fIName NameY NameX Text TextY TextX FLen ILen\fR +.RE +.IP +or +.RS +\fIName NameY NameX Text TextY TextX FLen ILen Help\fR +.RE +.IP +depending on whether \fBdialog_vars.item_help\fP is set. +.\" ************************************************************************ +.SS dialog_fselect +implements the "\fB--fselect\fP" option. +.TP 5 +.B const char * \fItitle +is the title on the top of the widget. +.TP 5 +.B const char * \fIpath +is the preselected value to show in the input-box, +which is used also to set the directory- and file-windows. +.TP 5 +.B int \fIheight +is the height excluding the minimum needed to show the dialog box framework. +If zero, the height is based on the screen size. +.TP 5 +.B int \fIwidth +is the desired width of the box. +If zero, the height is based on the screen size. +.\" ************************************************************************ +.SS dialog_gauge +implements the "\fB--gauge\fP" option. +Alternatively, a simpler or customized gauge widget can be +set up using +\fBdlg_allocate_gauge\fP, +\fBdlg_reallocate_gauge\fP, +\fBdlg_update_gauge\fP and +\fBdlg_free_gauge\fP. +.TP 5 +.B const char * \fItitle +is the title on the top of the widget. +.TP 5 +.B const char * \fIcprompt +is the prompt text shown within the widget. +.TP 5 +.B int \fIheight +is the desired height of the box. +If zero, the height is based on the screen size. +.TP 5 +.B int \fIwidth +is the desired width of the box. +If zero, the height is based on the screen size. +.TP 5 +.B int \fIpercent +is the percentage to show in the progress bar. +.\" ************************************************************************ +.SS dialog_inputbox +implements the "\fB--inputbox\fP" or +"\fB--password\fP" option, depending on the value of \fIpassword\fP. +.TP 5 +.B const char * \fItitle +is the title on the top of the widget. +.TP 5 +.B const char * \fIcprompt +is the prompt text shown within the widget. +.TP 5 +.B int \fIheight +is the desired height of the box. +If zero, the height is based on the screen size. +.TP 5 +.B int \fIwidth +is the desired width of the box. +If zero, the height is based on the screen size. +.TP 5 +.B const char * \fIinit +is the initial value of the input box, whose length is taken into account +when auto-sizing the width of the dialog box. +.TP 5 +.B int \fIpassword +if true, causes typed input to be echoed as asterisks. +.\" ************************************************************************ +.SS dialog_helpfile +implements the "\fB--hfile\fP" option. +.TP 5 +.B const char * \fItitle +is the title on the top of the widget. +.TP 5 +.B const char * \fIfile +is the name of a file containing the text to display. +This function is internally bound to F1 (function key \*(``1\*(''), +passing \fBdialog_vars.help_file\fP as a parameter. +The \fBdialog\fP program sets that variable when the \fB--hfile\fP option +is given. +.TP 5 +.B int \fIheight +is the desired height of the box. +If zero, the height is based on the screen size. +.TP 5 +.B int \fIwidth +is the desired width of the box. +If zero, the height is based on the screen size. +.\" ************************************************************************ +.SS dialog_menu +implements the "\fB--menu\fP" or "\fB--inputmenu\fP" option +depending on whether \fBdialog_vars.input_menu\fP is set. +.TP 5 +.B const char * \fItitle +is the title on the top of the widget. +.TP 5 +.B const char * \fIcprompt +is the prompt text shown within the widget. +.TP 5 +.B int \fIheight +is the desired height of the box. +If zero, the height is based on the screen size. +.TP 5 +.B int \fIwidth +is the desired width of the box. +If zero, the height is based on the screen size. +.TP 5 +.B int \fImenu_height +is the minimum height to reserve for displaying the list. +If zero, it is computed based on the given \fIheight\fP and \fIwidth\fP. +.TP 5 +.B int \fIitem_no +is the number of rows in \fIitems\fP. +.TP 5 +.B int \fIitems +is an array of strings which is viewed either as a list of rows +.RS +\fItag item\fR +.RE +.IP +or +.RS +\fItag item help\fR +.RE +.IP +depending on whether \fBdialog_vars.item_help\fP is set. +.\" ************************************************************************ +.SS dialog_mixedform +implements the "\fB--mixedform\fP" option. +.TP 5 +.B const char * \fItitle +is the title on the top of the widget. +.TP 5 +.B const char * \fIcprompt +is the prompt text shown within the widget. +.TP 5 +.B int \fIheight +is the desired height of the box. +If zero, the height is adjusted to use the available screen size. +.TP 5 +.B int \fIwidth +is the desired width of the box. +If zero, the height is adjusted to use the available screen size. +.TP 5 +.B int \fIform_height +is the minimum height to reserve for displaying the list. +If zero, it is computed based on the given \fIheight\fP and \fIwidth\fP. +.TP 5 +.B int \fIitem_no +is the number of rows in \fIitems\fP. +.TP 5 +.B int \fIitems +is an array of strings which is viewed either as a list of rows +.RS +\fIName NameY NameX Text TextY TextX FLen ILen Ityp\fR +.RE +.IP +or +.RS +\fIName NameY NameX Text TextY TextX FLen ILen Ityp Help\fR +.RE +.IP +depending on whether \fBdialog_vars.item_help\fP is set. +.\" ************************************************************************ +.SS dialog_mixedgauge +implements the "\fB--mixedgauge\fP" option +.TP 5 +.B const char * \fItitle +is the title on the top of the widget. +.TP 5 +.B const char * \fIcprompt +is the caption text shown within the widget. +.TP 5 +.B int \fIheight +is the desired height of the box. +If zero, the height is based on the screen size. +.TP 5 +.B int \fIwidth +is the desired width of the box. +If zero, the height is based on the screen size. +.TP 5 +.B int \fIpercent +is the percentage to show in the progress bar. +.TP 5 +.B int \fIitem_no +is the number of rows in \fIitems\fP. +.TP 5 +.B int \fIitems +is an array of strings which is viewed as a list +of \fItag\fP and \fIitem\fP values. +The \fItag\fP values are listed, +one per row, in the list at the top of the widget. +.IP +The \fIitem\fP values are decoded: +digits 0 through 9 are the following strings +.RS +.IP 0 +Succeeded +.IP 1 +Failed +.IP 2 +Passed +.IP 3 +Completed +.IP 4 +Checked +.IP 5 +Done +.IP 6 +Skipped +.IP 7 +In Progress +.IP 8 +(blank) +.IP 9 +N/A +.RE +.IP +A string with a leading "-" character is centered, marked with "%". +For example, "-75" is displayed as "75%". +Other strings are displayed as is. +.\" ************************************************************************ +.SS dialog_msgbox +implements the "\fB--msgbox\fP" or "\fB--infobox\fP" option +depending on whether \fIpauseopt\fP is set. +.TP 5 +.B const char * \fItitle +is the title on the top of the widget. +.TP 5 +.B const char * \fIcprompt +is the prompt text shown within the widget. +.TP 5 +.B int \fIheight +is the desired height of the box. +If zero, the height is based on the screen size. +.TP 5 +.B int \fIwidth +is the desired width of the box. +If zero, the height is based on the screen size. +.TP 5 +.B int \fIpauseopt +if true, an \*(``OK\*('' button will be shown, +and the dialog will wait for it to complete. +With an \*(``OK\*('' button, it is denoted a \*(``msgbox\*('', +without an \*(``OK\*('' button, it is denoted an \*(``infobox\*(''. +.\" ************************************************************************ +.SS dialog_pause +implements the "\fB--pause\fP" option. +.TP 5 +.B const char * \fItitle +is the title on the top of the widget. +.TP 5 +.B int \fIheight +is the desired height of the box. +If zero, the height is based on the screen size. +.TP 5 +.B int \fIwidth +is the desired width of the box. +If zero, the height is based on the screen size. +.TP 5 +.B int \fIseconds +is the timeout to use for the progress bar. +.\" ************************************************************************ +.SS dialog_prgbox +implements the "\fB--prgbox\fP" option. +.TP 5 +.B const char * \fItitle +is the title on the top of the widget. +.TP 5 +.B const char * \fIcprompt +is the prompt text shown within the widget. +If empty or null, no prompt is shown. +.TP 5 +.B const char * \fIcommand +is the name of the command to execute. +.TP 5 +.B int \fIheight +is the desired height of the box. +If zero, the height is based on the screen size. +.TP 5 +.B int \fIwidth +is the desired width of the box. +If zero, the height is based on the screen size. +.TP 5 +.B int \fIpauseopt +if true, an \*(``OK\*('' button will be shown, +and the dialog will wait for it to complete. +.\" ************************************************************************ +.SS dialog_progressbox +implements the "\fB--progressbox\fP" option. +.TP 5 +.B const char * \fItitle +is the title on the top of the widget. +.TP 5 +.B const char * \fIcprompt +is the prompt text shown within the widget. +If empty or null, no prompt is shown. +.TP 5 +.B int \fIheight +is the desired height of the box. +If zero, the height is based on the screen size. +.TP 5 +.B int \fIwidth +is the desired width of the box. +If zero, the height is based on the screen size. +.\" ************************************************************************ +.SS dialog_rangebox +implements the "\fB--rangebox\fP" option. +.TP 5 +.B const char * \fItitle +is the title on the top of the widget. +.TP 5 +.B const char * \fIcprompt +is the prompt text shown within the widget. +If empty or null, no prompt is shown. +.TP 5 +.B int \fIheight +is the desired height of the widget. +If zero, the height is based on the screen size. +.TP 5 +.B int \fIwidth +is the desired width of the widget. +If zero, the height is based on the screen size. +.TP 5 +.B int \fImin_value +is the minimum value to allow. +.TP 5 +.B int \fImax_value +is the maximum value to allow. +.TP 5 +.B int \fIdefault_value +is the default value, if no change is made. +.\" ************************************************************************ +.SS dialog_tailbox +implements the "\fB--tailbox\fP" or "\fB--tailboxbg\fP" option +depending on whether \fIbg_task\fP is set. +.TP 5 +.B const char * \fItitle +is the title on the top of the widget. +.TP 5 +.B const char * \fIfile +is the name of the file to display in the dialog. +.TP 5 +.B int \fIheight +is the desired height of the box. +If zero, the height is based on the screen size. +.TP 5 +.B int \fIwidth +is the desired width of the box. +If zero, the height is based on the screen size. +.TP 5 +.B int \fIbg_task +if true, +the window is added to the callback list in \fBdialog_state\fP, +and the application will poll for the window to be updated. +Otherwise an \*(``OK\*('' button is added to the window, +and it will be closed when the button is activated. +.\" ************************************************************************ +.SS dialog_textbox +implements the "\fB--textbox\fP" option. +.TP 5 +.B const char * \fItitle +is the title on the top of the widget. +.TP 5 +.B const char * \fIfile +is the name of the file to display in the dialog. +.TP 5 +.B int \fIheight +is the desired height of the box. +If zero, the height is based on the screen size. +.TP 5 +.B int \fIwidth +is the desired width of the box. +If zero, the height is based on the screen size. +.\" ************************************************************************ +.SS dialog_timebox +implements the "\fB--timebox\fP" option. +.TP 5 +.B const char * \fItitle +is the title on the top of the widget. +.TP 5 +.B const char * \fIsubtitle +is the prompt text shown within the widget. +.TP 5 +.B int \fIheight +is the desired height of the box. +If zero, the height is based on the screen size. +.TP 5 +.B int \fIwidth +is the desired width of the box. +If zero, the height is based on the screen size. +.TP 5 +.B int \fIhour +is the initial hour shown. +If the value is negative, the current hour is used. +Returns DLG_EXIT_ERROR if the value specified is greater than or equal to 24. +.TP 5 +.B int \fIminute +is the initial minute shown. +If the value is negative, the current minute is used. +Returns DLG_EXIT_ERROR if the value specified is greater than or equal to 60. +.TP 5 +.B int \fIsecond +is the initial second shown. +If the value is negative, the current second is used. +Returns DLG_EXIT_ERROR if the value specified is greater than or equal to 60. +.\" ************************************************************************ +.SS dialog_treeview +implements the "\fB--treeview\fP" option. +.TP 5 +.B const char * \fItitle +is the title on the top of the widget. +.TP 5 +.B const char * \fIcprompt +is the prompt text shown within the widget. +.TP 5 +.B int \fIheight +is the desired height of the box. +If zero, the height is based on the screen size. +.TP 5 +.B int \fIwidth +is the desired width of the box. +If zero, the height is based on the screen size. +.TP 5 +.B int \fIlist_height +is the minimum height to reserve for displaying the list. +If zero, it is computed based on the given \fIheight\fP and \fIwidth\fP. +.TP 5 +.B int \fIitem_no +is the number of rows in \fIitems\fP. +.TP 5 +.B char ** \fIitems +is the list of items, contain tag, name, and optionally help strings +(if \fBdialog_vars.item_help\fP is set). +The initial selection state for each item is also in this list. +.TP 5 +.B int \fIflag +.IP flag +is either \fIFLAG_CHECK\fP, for checklists (multiple selections), +or \fIFLAG_RADIO\fP for radiolists (a single selection). +.\" ************************************************************************ +.SS dialog_yesno +implements the "\fB--yesno\fP" option. +.TP 5 +.B const char * \fItitle +is the title on the top of the widget. +.TP 5 +.B const char * \fIcprompt +is the prompt text shown within the widget. +.TP 5 +.B int \fIheight +is the desired height of the box. +If zero, the height is based on the screen size. +.TP 5 +.B int \fIwidth +is the desired width of the box. +If zero, the height is based on the screen size. +. +.\" ************************************************************************ +.SH UTILITY FUNCTIONS +Most functions that implement lower-level +functionality for the command-line \fB\*p\fP +program or widgets, have names beginning "\fIdlg_\fP". +Bowing to longstanding usage, the functions that initialize the +display and end it are named \fIinit_dialog\fP and \fIend_dialog\fP. +.PP +The only non-widget function whose name begins with "\fIdialog_\fP" +is \fBdialog_version\fP, which returns the version number of the +library as a string. +. +.PP +Here is a brief summary of the utility functions and their parameters: +.\" --------------------------------------------------------------------------- +.SS dlg_add_callback +Add a callback, used to allow polling input from multiple tailbox +widgets. +.TP 5 +.B DIALOG_CALLBACK *\fIp\fP +contains the callback information. +.\" --------------------------------------------------------------------------- +.SS dlg_add_callback_ref +Like \fBdlg_add_callback\fP, but passes a reference to the \fBDIALOG_CALLBACK\fP +as well as a pointer to a cleanup function which will be called when the +associated input ends. +.TP 5 +.B DIALOG_CALLBACK **\fIp\fP +points to the callback information. +This is a reference to the pointer so that the caller's pointer can be +zeroed when input ends. +.TP 5 +.B DIALOG_FREEBACK \fIfunc\fP +function to call when input ends, e.g., to free caller's additional data. +.\" --------------------------------------------------------------------------- +.SS dlg_add_help_formitem +This is a utility function used enforce consistent behavior for +the \fIDIALOG_VARS.help_tags\fP and \fIDIALOG_VARS.item_help\fP variables. +.TP 5 +.B int *\fIresult\fP +this is updated to DLG_EXIT_ITEM_HELP if \fIDIALOG_VARS.item_help\fP is set. +.TP 5 +.B char **\fItag\fP +the tag- or help-text is stored here. +.TP 5 +.B DIALOG_FORMITEM *\fIitem\fP +contains the list item to use for tag- or help-text. +.\" --------------------------------------------------------------------------- +.SS dlg_add_help_listitem +This is a utility function used enforce consistent behavior for +the \fIDIALOG_VARS.help_tags\fP and \fIDIALOG_VARS.item_help\fP variables. +.TP 5 +.B int *\fIresult\fP +this is updated to DLG_EXIT_ITEM_HELP if \fIDIALOG_VARS.item_help\fP is set. +.TP 5 +.B char **\fItag\fP +the tag- or help-text is stored here. +.TP 5 +.B DIALOG_LISTITEM *\fIitem\fP +contains the list item to use for tag- or help-text. +.\" --------------------------------------------------------------------------- +.SS dlg_add_last_key +Report the last key entered by the user. +This implements the \fB--last-key\fP command-line option, +using \fBdialog_vars.last_key\fP. +.TP 5 +.B int \fImode +controls the way the last key report is separated from other results: +.RS +.TP 5 +-2 +(no separator) +.TP 5 +-1 +(separator after the key name) +.TP 5 +0 +(separator is optionally before the key name) +.TP 5 +1 +(same as -1) +.RE +.\" --------------------------------------------------------------------------- +.SS dlg_add_quoted +Add a quoted string to the result buffer (see \fBdlg_add_result\fP). +If no quotes are necessary, none are used. +If \fBdialog_vars.single_quoted\fR is set, single-quotes are used. +Otherwise, double-quotes are used. +.TP 5 +.B char * \fIstring +is the string to add. +.\" --------------------------------------------------------------------------- +.SS dlg_add_result +Add a string to the result buffer \fBdialog_vars.input_result\fP. +.TP 5 +.B char * \fIstring +is the string to add. +.\" --------------------------------------------------------------------------- +.SS dlg_add_separator +Add an output-separator to the result buffer \fBdialog_vars.input_result\fP. +If \fBdialog_vars.output_separator\fP is set, use that. +Otherwise, if \fBdialog_vars.separate_output\fP is set, use newline. +If neither is set, use a space. +.\" --------------------------------------------------------------------------- +.SS dlg_add_string +Add a quoted or unquoted string to the result buffer +(see \fBdlg_add_quoted\fP) and \fBdlg_add_result\fP), +according to whether \fBdialog_vars.quoted\fP is true. +.TP 5 +.B char * \fIstring +is the string to add. +.\" --------------------------------------------------------------------------- +.SS dlg_align_columns +Copy and reformat an array of pointers to strings, aligning according to +the column separator \fBdialog_vars.column_separator\fP. +If no column separator is set, the array will be unmodified; +otherwise it is copied and reformatted. +.IP +Caveat: This function is only implemented for 8-bit characters. +.TP 5 +.B char **\fItarget +This is the array to reformat. +It points to the first string to modify. +.TP 5 +.B int \fIper_row +This is the size of the struct for each row of the array. +.TP 5 +.B int \fInum_rows +This is the number of rows in the array. +.\" --------------------------------------------------------------------------- +.SS dlg_allocate_gauge +Allocates a gauge widget. +Use \fBdlg_update_gauge\fP to display the result. +.TP 5 +.B const char * \fItitle +is the title string to display at the top of the widget. +.TP 5 +.B const char * \fIcprompt +is the prompt text shown within the widget. +.TP 5 +.B int \fIheight +is the desired height of the box. +If zero, the height is adjusted to use the available screen size. +.TP 5 +.B int \fIwidth +is the desired width of the box. +If zero, the height is adjusted to use the available screen size. +.TP 5 +.B int \fIpercent +is the percentage to show in the progress bar. +.\" --------------------------------------------------------------------------- +.SS dlg_asciibox +returns its parameter transformed to the +corresponding "+" or "-", etc., +for the line-drawing characters used in \fB\*p\fP. +If the parameter is not a line-drawing or other special character +such as ACS_DARROW, it returns 0. +.TP 5 +.B chtype \fIch +is the parameter, usually one of the \fBACS_\fP\fIxxx\fP constants. +.\" --------------------------------------------------------------------------- +.SS dlg_attr_clear +Set window to the given attribute. +.TP 5 +.B WINDOW * \fIwin +is the window to update. +.TP 5 +.B int \fIheight +is the number of rows to update. +.TP 5 +.B int \fIwidth +is the number of columns to update. +.TP 5 +.B chtype \fIattr +is the attribute, e.g., \fBA_BOLD\fP. +.\" --------------------------------------------------------------------------- +.SS dlg_auto_size +Compute window size based on the size of the formatted \fIprompt\fP and +minimum dimensions for a given widget. +.PP +\fB\*L\fP sets +\fBdialog_state.text_height\fP and +\fBdialog_state.text_width\fP for +the formatted \fIprompt\fP +as a side-effect. +.PP +Normally \fB\*l\fP writes the formatted \fIprompt\fP to the curses +window, +but it will write the formatted \fIprompt\fP to the output stream +if \fBdialog_state.text_only\fP is set. +.TP 5 +.B const char * \fItitle +is the title string to display at the top of the widget. +.TP 5 +.B const char * \fIprompt +is the message text which will be displayed in the widget, +used here to determine how large the widget should be. +.IP +If the value is \fINULL\fP, +\fB\*l\fP allows the widget to use the whole screen, +i.e., if the values referenced by \fIheight\fP and/or \fIwidth\fP are zero. +.TP 5 +.B int * \fIheight +is the nominal height. +\fB\*L\fP checks the referenced value and may update it: +.RS +.bP +if the value is negative, +\fB\*l\fP updates it to the available height of the screen, +after reserving rows for the window border and shadow, +as well as taking into account +\fBdialog_vars.begin_y\fP and +\fBdialog_vars.begin_set\fP. +.bP +if the value is zero, +\fB\*l\fP updates it to the required height of the window, +taking into account a (possibly) multi-line \fIprompt\fP. +.bP +if the value is greater than zero, +\fB\*l\fP uses it internally, but restores the value on return. +.RE +.TP 5 +.B int * \fIwidth +is the nominal width. +\fB\*L\fP checks the referenced value and may update it: +.RS +.bP +if the value is negative, +\fB\*l\fP updates it to the available width of the screen, +after reserving rows for the window border and shadow, +as well as taking into account +\fBdialog_vars.begin_x\fP and +\fBdialog_vars.begin_set\fP. +.bP +if the value is zero, +\fB\*l\fP updates it to the required width of the window, +taking into account a (possibly) multi-line \fIprompt\fP. +.bP +if the value is greater than zero, +\fB\*l\fP uses it internally, but restores the value on return. +.RE +.TP 5 +.B int \fIboxlines +is the number of lines to reserve in the vertical direction. +.TP 5 +.B int \fImincols +is the minimum number of columns to use. +.\" --------------------------------------------------------------------------- +.SS dlg_auto_sizefile +Like \fBdlg_auto_size\fP, but use a file contents to decide how large +the widget should be. +.TP 5 +.B const char * \fItitle +is the title string to display at the top of the widget. +.TP 5 +.B const char * \fIfile +is the name of the file. +.TP 5 +.B int * \fIheight +is the nominal height. +.IP +If it is -1, use the screen's height +(after subtracting \fBdialog_vars.begin_y\fP +if \fBdialog_vars.begin_set\fP is true). +.IP +If it is greater than zero, +limit the referenced value to the screen-height +after verifying that the file exists. +.TP 5 +.B int * \fIwidth +is the nominal width. +.IP +If it is -1, use the screen's width (after subtracting \fBdialog_vars.begin_x\fP +if \fBdialog_vars.begin_set\fP is true). +.IP +If it is greater than zero, +limit the referenced value to the screen-width +after verifying that the file exists. +.TP 5 +.B int \fIboxlines +is the number of lines to reserve on the screen for drawing boxes. +.TP 5 +.B int \fImincols +is the number of columns to reserve on the screen for drawing boxes. +.\" --------------------------------------------------------------------------- +.SS dlg_beeping +If \fBdialog_vars.beep_signal\fP is nonzero, +this calls \fBbeep\fP once and sets +\fBdialog_vars.beep_signal\fP to zero. +.\" --------------------------------------------------------------------------- +.SS dlg_boxchar +returns its \fBchtype\fP parameter transformed as follows: +.bP +if neither \fBdialog_vars.ascii_lines\fP nor \fBdialog_vars.no_lines\fP is set. +.bP +if \fBdialog_vars.ascii_lines\fP is set, +returns the corresponding "+" or "-", etc., +for the line-drawing characters used in \fB\*p\fP. +.bP +otherwise, if \fBdialog_vars.no_lines\fP is set, +returns a space for the line-drawing characters. +.bP +if the parameter is not a line-drawing or other special character +such as ACS_DARROW, +it returns the parameter unchanged. +.\" --------------------------------------------------------------------------- +.SS dlg_box_x_ordinate +returns a suitable x-ordinate (column) for a new widget. +If \fBdialog_vars.begin_set\fP is 1, +use \fBdialog_vars.begin_x\fP; +otherwise center the widget on the screen (using the \fIwidth\fP parameter). +.TP 5 +.B int \fIwidth +is the width of the widget. +.\" --------------------------------------------------------------------------- +.SS dlg_box_y_ordinate +returns a suitable y-ordinate (row) for a new widget. +If \fBdialog_vars.begin_set\fP is 1, +use \fBdialog_vars.begin_y\fP; +otherwise center the widget on the screen (using the \fIheight\fP parameter). +.TP 5 +.B int \fIheight +is the height of the widget. +.\" --------------------------------------------------------------------------- +.SS dlg_buildlist +This is an alternate interface to the \fBbuildlist\fP widget +which allows the application to read the list item states back +directly without putting them in the output buffer. +.TP 5 +.B const char * \fItitle +is the title string to display at the top of the widget. +.TP 5 +.B const char * \fIcprompt +is the prompt text shown within the widget. +.TP 5 +.B int \fIheight +is the desired height of the box. +If zero, the height is adjusted to use the available screen size. +.TP 5 +.B int \fIwidth +is the desired width of the box. +If zero, the height is adjusted to use the available screen size. +.TP 5 +.B int \fIlist_height +is the minimum height to reserve for displaying the list. +If zero, it is computed based on the given \fIheight\fP and \fIwidth\fP. +.TP 5 +.B int \fIitem_no +is the number of rows in \fIitems\fP. +.TP 5 +.B DIALOG_LISTITEM * \fIitems +is the list of items, contain tag, name, and optionally help strings +(if \fBdialog_vars.item_help\fP is set). +The initial selection state for each item is also in this list. +.TP 5 +.B const char * \fIstates +This is a list of characters to display for the given states. +Normally a buildlist provides true (1) and false (0) values, +which the widget displays as "*" and space, respectively. +An application may set this parameter to an arbitrary null-terminated string. +The widget determines the number of states from the length of this string, +and will cycle through the corresponding display characters as the user +presses the space-bar. +.TP 5 +.B int \fIorder_mode +is reserved for future enhancements +.TP 5 +.B int * \fIcurrent_item +The widget sets the referenced location to the index of the current display +item (cursor) when it returns. +.\" --------------------------------------------------------------------------- +.SS dlg_button_count +Count the buttons in the list. +.TP 5 +.B const char ** \fIlabels +is a list of (pointers to) button labels terminated by a null pointer. +.\" --------------------------------------------------------------------------- +.SS dlg_button_layout +Make sure there is enough space for the buttons by +computing the width required for their labels, +adding margins and limiting based on the screen size. +.TP 5 +.B const char ** \fIlabels +is a list of (pointers to) button labels terminated by a null pointer. +.TP 5 +.B int * \fIlimit +the function sets the referenced \fIlimit\fP to the width required for +the buttons (limited by the screen size) +if that is wider than the passed-in limit. +.\" --------------------------------------------------------------------------- +.SS dlg_button_sizes +Compute the size of the button array in columns. +.TP 5 +.B const char ** \fIlabels +is a list of (pointers to) button labels terminated by a null pointer. +.TP 5 +.B int \fIvertical +is true if the buttons are arranged in a column rather than a row. +.TP 5 +.B int * \fIlongest +Return the total number of columns in the referenced location. +.TP 5 +.B int * \fIlength +Return the longest button's columns in the referenced location. +.\" --------------------------------------------------------------------------- +.SS dlg_button_to_char +Find the first uppercase character in the label, which we may use for an +abbreviation. +If the label is empty, return -1. +If no uppercase character is found, return 0. +Otherwise return the uppercase character. +.LP +Normally +.B dlg_draw_buttons +and +.B dlg_char_to_button +use the first uppercase character. +However, they keep track of all of the labels and +if the first has already been used in another label, +they will continue looking for another uppercase character. +This function does not have enough information to make that check. +.TP 5 +.B const char * \fIlabel +is the label to test. +.\" --------------------------------------------------------------------------- +.SS dlg_button_x_step +Compute the step-size needed between elements of the button array. +.TP 5 +.B const char ** \fIlabels +is a list of (pointers to) button labels terminated by a null pointer. +.TP 5 +.B int \fIlimit +is the maximum number of columns to allow for the buttons. +.TP 5 +.B int * \fIgap +store the nominal gap between buttons in the referenced location. +This is constrained to be at least one. +.TP 5 +.B int * \fImargin +store the left+right total margins (for the list of buttons) in the referenced +location. +.TP 5 +.B int * \fIstep +store the step-size in the referenced location. +.\" --------------------------------------------------------------------------- +.SS dlg_calc_list_width +Calculate the minimum width for the list, +assuming none of the items are truncated. +.TP 5 +.B int \fIitem_no +is the number of \fIitems\fP. +.TP 5 +.B DIALOG_LISTITEM * \fIitems +contains a \fIname\fP and \fItext\fP field, +e.g., for checklists or radiobox lists. +The function returns the sum of the widest columns +needed for of each of these fields. +.IP +If \fBdialog_vars.no_items\fP is set, +the \fItext\fP fields in the list are ignored. +.\" --------------------------------------------------------------------------- +.SS dlg_calc_listh +Calculate new height and list_height values. +.TP 5 +.B int * \fIheight +on input, is the height without adding the list-height. +On return, this contains the total list-height and is the +actual widget's height. +.TP 5 +.B int * \fIlist_height +on input, is the requested list-height. +On return, this contains the number of rows available for displaying +the list after taking into account the screen size and +the \fBdialog_vars.begin_set\fP and \fBdialog_vars.begin_y\fP variables. +.TP 5 +.B int \fIitem_no +is the number of \fIitems\fP in the list. +.\" --------------------------------------------------------------------------- +.SS dlg_calc_listw +This function is obsolete, provided for library-compatibility. +It is replaced by \fBdlg_calc_list_width\fP. +.TP 5 +.B int \fIitem_no +is the number of \fIitems\fP. +.TP 5 +.B char ** \fIitems +is a list of character pointers. +.TP 5 +.B int \fIgroup +is the number of items in each group, e.g., the second array index. +.\" --------------------------------------------------------------------------- +.SS dlg_char_to_button +Given a list of button labels, +and a character which may be the abbreviation for one, find it, if it exists. +An abbreviation will be the first character +which happens to be capitalized in the label. +If the character is found, return its index within the list of \fIlabels\fP. +Otherwise, return \fBDLG_EXIT_UNKNOWN\fP. +.TP 5 +.B int \fIch +is the character to find. +.TP 5 +.B const char ** \fIlabels +is a list of (pointers to) button labels terminated by a null pointer. +.\" --------------------------------------------------------------------------- +.SS dlg_checklist +This entrypoint provides the \fB--checklist\fP or \fB--radiolist\fP +functionality without the limitations of \fB\*p\fP's command-line syntax +(compare to \fBdialog_checklist\fP). +.TP 5 +.B const char * \fItitle +is the title string to display at the top of the widget. +.TP 5 +.B const char * \fIcprompt +is the prompt text shown within the widget. +.TP 5 +.B int \fIheight +is the desired height of the box. +If zero, the height is adjusted to use the available screen size. +.TP 5 +.B int \fIwidth +is the desired width of the box. +If zero, the height is adjusted to use the available screen size. +.TP 5 +.B int \fIlist_height +is the minimum height to reserve for displaying the list. +If zero, it is computed based on the given \fIheight\fP and \fIwidth\fP. +.TP 5 +.B int \fIitem_no +is the number of \fIitems\fP. +.TP 5 +.B DIALOG_LISTITEM * \fIitems +This is a list of the items to display in the checklist. +.TP 5 +.B const char * \fIstates +This is a list of characters to display for the given states. +Normally a checklist provides true (1) and false (0) values, +which the widget displays as "*" and space, respectively. +An application may set this parameter to an arbitrary null-terminated string. +The widget determines the number of states from the length of this string, +and will cycle through the corresponding display characters as the user +presses the space-bar. +.TP 5 +.B int \fIflag +This is should be one of \fBFLAG_CHECK\fP or \fPFLAG_RADIO\fP, +depending on whether the widget should act as a checklist or radiobox. +.TP 5 +.B int * \fIcurrent_item +The widget sets the referenced location to the index of the current display +item (cursor) when it returns. +.\" --------------------------------------------------------------------------- +.SS dlg_check_scrolled +given a function key (or other key that was mapped to a function key), +check if it is one of the up/down scrolling functions: +.sp +.RS +DLGK_PAGE_FIRST, +.br +DLGK_PAGE_LAST, +.br +DLGK_GRID_UP, +.br +DLGK_GRID_DOWN, +.br +DLGK_PAGE_PREV or +.br +DLGK_PAGE_NEXT. +.RE +.fi +.LP +Some widgets use these key bindings for scrolling the prompt-text up and +down, to allow for display in very small windows. +.LP +The function returns 0 (zero) if it finds one of these keys, +and -1 if not. +.TP 5 +.B int \fIkey +is the function-key to check +.TP 5 +.B int \fIlast +is the number of lines +which would be used to display the scrolled prompt in +an arbitrarily tall window. +It is used here to check limits for the \fIoffset\fP value. +.TP 5 +.B int \fIpage +this is the available height for writing scrolled text, +which is smaller than the window if it contains buttons. +.TP 5 +.B bool * \fIshow +on return, holds TRUE if \fBdlg_print_scrolled\fP should be used to redisplay +the prompt text. +.TP 5 +.B int * \fIoffset +on entry, holds the starting line number (counting from zero) +last used for \fBdlg_print_scrolled\fP. +On return, holds the updated starting line number. +.\" --------------------------------------------------------------------------- +.SS dlg_clear +Set window to the default \fB\*p\fP screen attribute. +This is set in the rc-file with \fBscreen_color\fP. +.\" --------------------------------------------------------------------------- +.SS dlg_clr_result +Free storage used for the result buffer (\fBdialog_vars.input_result\fP). +The corresponding pointer is set to NULL. +.\" --------------------------------------------------------------------------- +.SS dlg_color_count +Return the number of colors that can be configured in \fB\*p\fP. +.\" --------------------------------------------------------------------------- +.SS dlg_color_setup +Initialize the color pairs used in \fB\*p\fP. +.\" --------------------------------------------------------------------------- +.SS dlg_count_argv +Count the entries in an argument vector. +.TP 5 +.B argv +Points to the argument vector. +.\" --------------------------------------------------------------------------- +.SS dlg_count_columns +Returns the number of columns used for a string. +This is not necessarily the number of bytes in a string. +.TP 5 +.B const char * \fIstring +is the string to measure. +.\" --------------------------------------------------------------------------- +.SS dlg_count_real_columns +Returns the number of columns used for a string, +accounting for "\eZ" sequences which can be used for +coloring the text if \fBdialog_vars.colors\fP is set. +This is not necessarily the number of bytes in a string. +.TP 5 +.B const char * \fIstring +is the string to measure. +.\" --------------------------------------------------------------------------- +.SS dlg_count_wchars +Returns the number of wide-characters in the string. +.TP 5 +.B const char * \fIstring +is the string to measure. +.\" --------------------------------------------------------------------------- +.SS dlg_create_rc +Create a configuration file, +i.e., write internal tables to a file which can be read back by \fB\*p\fP +as an rc-file. +.TP 5 +.B const char * \fIfilename +is the name of the file to write to. +.\" --------------------------------------------------------------------------- +.SS dlg_ctl_size +If \fBdialog_vars.size_err\fP is true, +check if the given window size is too large to fit on the screen. +If so, exit with an error reporting the size of the window. +.TP 5 +.B int \fIheight +is the window's height +.TP 5 +.B int \fIwidth +is the window's width +.\" --------------------------------------------------------------------------- +.SS dlg_default_button +If \fBdialog_vars.default_button\fP is positive, +return the button-index for that button code, +using \fBdlg_ok_buttoncode\fP to test indices starting with zero. +Otherwise (or if no match was found for the button code), return zero. +.\" --------------------------------------------------------------------------- +.SS dlg_default_formitem +If \fBdialog_vars.default_item\fP is not null, +find that name by matching the \fIname\fP field in the list of form \fIitems\fP. +If found, return the index of that item in the list. +Otherwise, return zero. +.TP 5 +.B DIALOG_FORMITEM * \fIitems +is the list of items to search. +It is terminated by an entry with a null \fIname\fP field. +.\" --------------------------------------------------------------------------- +.SS dlg_default_item +This function is obsolete, provided for library-compatibility. +It is replaced by \fBdlg_default_formitem\fP and \fBdlg_default_listitem\fP. +.TP 5 +.B char ** \fIitems +is the list of items to search. +.TP 5 +.B int \fIllen +is the number of items in each group, e.g., the second array index. +.\" --------------------------------------------------------------------------- +.SS dlg_defaultno_button +If \fBdialog_vars.defaultno\fP is true, and \fBdialog_vars.nocancel\fP is not, +find the button-index for the \*(``Cancel\*('' button. +Otherwise, return the index for \*(``OK\*('' (always zero). +.\" --------------------------------------------------------------------------- +.SS dlg_del_window +Remove a window, repainting everything else. +.TP 5 +.B WINDOW * \fIwin +is the window to remove. +.\" --------------------------------------------------------------------------- +.SS dlg_does_output +This is called each time a widget is invoked which may do output. +It increments \fBdialog_state.output_count\fP, +so the output function in \fB\*p\fP can test this and add a separator. +.\" --------------------------------------------------------------------------- +.SS dlg_draw_arrows +Draw up/down arrows on a window, e.g., for scrollable lists. +It calls \fBdlg_draw_arrows2\fP using the +\fImenubox_color\fP and \fImenubox_border_color\fP attributes. +.TP 5 +.B WINDOW * \fIdialog +is the window on which to draw an arrow. +.TP 5 +.B int \fItop_arrow +is true if an up-arrow should be drawn at the top of the window. +.TP 5 +.B int \fIbottom_arrow +is true if an down-arrow should be drawn at the bottom of the window. +.TP 5 +.B int \fIx +is the zero-based column within the window on which to draw arrows. +.TP 5 +.B int \fItop +is the zero-based row within the window on which to draw up-arrows +as well as a horizontal line to show the window's top. +.TP 5 +.B int \fIbottom +is the zero-based row within the window on which to draw down-arrows +as well as a horizontal line to show the window's bottom. +.\" --------------------------------------------------------------------------- +.SS dlg_draw_arrows2 +Draw up/down arrows on a window, e.g., for scrollable lists. +.TP 5 +.B WINDOW * \fIdialog +is the window on which to draw an arrow. +.TP 5 +.B int \fItop_arrow +is true if an up-arrow should be drawn at the top of the window. +.TP 5 +.B int \fIbottom_arrow +is true if an down-arrow should be drawn at the bottom of the window. +.TP 5 +.B int \fIx +is the zero-based column within the window on which to draw arrows. +.TP 5 +.B int \fItop +is the zero-based row within the window on which to draw up-arrows +as well as a horizontal line to show the window's top. +.TP 5 +.B int \fIbottom +is the zero-based row within the window on which to draw down-arrows +as well as a horizontal line to show the window's bottom. +.TP 5 +.B chtype \fIattr +is the window's background attribute. +.TP 5 +.B chtype \fIborderattr +is the window's border attribute. +.\" --------------------------------------------------------------------------- +.SS dlg_draw_bottom_box +Draw a partial box at the bottom of a window, +e.g., to surround a row of buttons. +It is designed to merge with an existing box around +the whole window (see \fBdlg_draw_box\fP), +so it uses tee-elements rather than corner-elements +on the top corners of this box. +.TP 5 +.B WINDOW * \fIwin +is the window to update. +.\" --------------------------------------------------------------------------- +.SS dlg_draw_bottom_box2 +Draw a partial box at the bottom of a window, +e.g., to surround a row of buttons. +It is designed to merge with an existing box around +the whole window (see \fBdlg_draw_box2\fP), +so it uses tee-elements rather than corner-elements +on the top corners of this box. +.TP 5 +.B WINDOW * \fIwin +is the window to update. +.TP 5 +.B chtype \fIon_left +is used to color the upper/left edges of the box, i.e., the tee-element and +horizontal line +.TP 5 +.B chtype \fIon_right +is used to color the right edge of the box, i.e., the tee-element +.TP 5 +.B chtype \fIon_inside +is used to fill-color the inside of the box +.\" --------------------------------------------------------------------------- +.SS dlg_draw_box +Draw a rectangular box with line drawing characters. +.TP 5 +.B WINDOW * \fIwin +is the window to update. +.TP 5 +.B int \fIy +is the top row of the box. +.TP 5 +.B int \fIx +is the left column of the box. +.TP 5 +.B int \fIheight +is the height of the box. +.TP 5 +.B int \fIwidth +is the width of the box. +.TP 5 +.B chtype \fIboxchar +is used to color the right/lower edges. +It also is fill-color used for the box contents. +.TP 5 +.B chtype \fIborderchar +is used to color the upper/left edges. +.\" --------------------------------------------------------------------------- +.SS dlg_draw_box2 +Draw a rectangular box with line drawing characters. +.TP 5 +.B WINDOW * \fIwin +is the window to update. +.TP 5 +.B int \fIy +is the top row of the box. +.TP 5 +.B int \fIx +is the left column of the box. +.TP 5 +.B int \fIheight +is the height of the box. +.TP 5 +.B int \fIwidth +is the width of the box. +.TP 5 +.B chtype \fIboxchar +is used to fill-color for the box contents. +.TP 5 +.B chtype \fIborderchar +is used to color the upper/left edges. +.TP 5 +.B chtype \fIborderchar2 +is used to color the right/lower edges. +.\" --------------------------------------------------------------------------- +.SS dlg_draw_buttons +Print a list of buttons at the given position. +.TP 5 +.B WINDOW * \fIwin +is the window to update. +.TP 5 +.B int \fIy +is the starting row. +.TP 5 +.B int \fIx +is the starting column. +.TP 5 +.B const char ** \fIlabels +is a list of (pointers to) button labels terminated by a null pointer. +.TP 5 +.B int \fIselected +is the index within the list of the selected button. +.TP 5 +.B int \fIvertical +is true if the buttons are arranged in a column rather than a row. +.TP 5 +.B int \fIlimit +is the number of columns (or rows if \fIvertical\/\fP) allowed for the display. +.\" --------------------------------------------------------------------------- +.SS dlg_draw_helpline +draw the text in \fBdialog_vars.help_line\fP at the bottom of the given window. +.TP 5 +.B WINDOW * \fIdialog +is the window to modify. +.TP 5 +.B bool \fIdecorations +if true, allow room for the scrolling arrows. +.\" --------------------------------------------------------------------------- +.SS dlg_draw_scrollbar +If \fBdialog_state.use_scrollbar\fP is set, +draw a scrollbar on the right margin of windows holding scrollable data. +Also (whether or not the scrollbar is drawn), +annotate the bottom margin of the window with the percentage of data +by the bottom of that window, +and call \fBdlg_draw_arrows2\fP to put markers on the window showing +when more data is available. +.TP 5 +.B WINDOW * \fIwin +is the window in which the data is scrolled. +Because \fIleft\fP, \fIright\fP, \fItop\fP, \fIbottom\fP +are passed as parameters, this window can contain additional data. +.TP 5 +.B long \fIfirst_data +is the zero-based index to the first row of data in the current window. +.TP 5 +.B long \fIthis_data +is the zero-based index to the current row of data. +.TP 5 +.B long \fInext_data +is the zero-based index to the next data after the current row. +.TP 5 +.B long \fItotal_data +is the total number of rows of data. +.TP 5 +.B int \fIleft +is the zero-based left margin/column of the window. +The up/down arrows are draw inset by 5 columns from this point. +.TP 5 +.B int \fIright +is the zero-based right margin/column of the window. +The scrollbar is drawn flush against this column. +.TP 5 +.B int \fItop +is the zero-based row within the window on which to draw up-arrows +as well as a horizontal line to show the window's top. +.TP 5 +.B int \fIbottom +is the zero-based row within the window on which to draw down-arrows +as well as a horizontal line to show the window's bottom. +.TP 5 +.B chtype \fIattr +is the window's background attribute. +.TP 5 +.B chtype \fIborderattr +is the window's border attribute. +.\" --------------------------------------------------------------------------- +.SS dlg_draw_shadow +Draw shadows along the right and bottom edge of a window to give it +a 3-dimensional look. +(The height, etc., may not be the same as the window's actual values). +.TP 5 +.B WINDOW * \fIwin +is the window to update. +.TP 5 +.B int \fIheight +is the height of the window. +.TP 5 +.B int \fIwidth +is the width of the window. +.TP 5 +.B int \fIy +is the top row of the window. +.TP 5 +.B int \fIx +is the left column of the window. +.\" --------------------------------------------------------------------------- +.SS dlg_draw_title +Draw a title centered at the top of the window. +.TP 5 +.B WINDOW * \fIwin +is the window to update. +.TP 5 +.B const char * \fItitle +is the title string to display at the top of the widget. +.\" --------------------------------------------------------------------------- +.SS dlg_dummy_menutext +This is a utility function which supports the \fB--inputmenu\fP option of +the \fB\*p\fP program. +If \fBdialog_vars.input_menu\fP is set, \fBdialog_menu\fP passes this +pointer to \fBdlg_menu\fP as the \fIrename_menutext\fP parameter. +Otherwise, it passes \fBdlg_dummy_menutext\fP. +.LP +The function should only return \fBDLG_EXIT_ERROR\fP. +.TP 5 +.B DIALOG_LISTITEM * \fIitems +is the list of menu items +.TP 5 +.B int \fIcurrent +is the index of the currently-selected item +.TP 5 +.B char * \fInewtext +is the updated text for the menu item +.\" --------------------------------------------------------------------------- +.SS dlg_dump_keys +Write all user-defined key-bindings to the given stream, +e.g., as part of \fBdlg_create_rc\fP. +.TP 5 +.B FILE * \fIfp +is the stream on which to write the bindings. +.\" --------------------------------------------------------------------------- +.SS dlg_dump_window_keys +Write all user-defined key-bindings to the given stream, +e.g., as part of \fBdlg_create_rc\fP. +.TP 5 +.B FILE * \fIfp +is the stream on which to write the bindings. +.TP 5 +.B WINDOW * \fIwin +is the window for which bindings should be dumped. +If it is null, then only built-in bindings are dumped. +.\" --------------------------------------------------------------------------- +.SS dlg_eat_argv +Remove one or more items from an argument vector. +.TP 5 +.B int * \fIargcp +in/out parameter giving the length of the argument vector. +.B char *** \fIargvp +in/out parameter pointing to the argument vector. +.B int \fIstart +starting index. +.B int \fIcount +number of arguments to remove. +.\" --------------------------------------------------------------------------- +.SS dlg_edit_offset +Given the character-offset in the string, +returns the display-offset where +\fB\*p\fP should position the cursor. +In this context, \*(``characters\*('' may be multicolumn, +since the string can be a multibyte character string. +.TP 5 +.B char * \fIstring +is the string to analyze +.TP 5 +.B int \fIoffset +is the character-offset +.TP 5 +.B int \fIx_last +is a limit on the column positions that can be used, +e.g., the window's size. +.\" --------------------------------------------------------------------------- +.SS dlg_edit_string +Updates the string and character-offset, given various editing characters +or literal characters which are inserted at the character-offset. +Returns true if an editing change was made (and the display should +be updated), and false if the key was something like KEY_ENTER, +which is a non-editing action outside this function. +.TP 5 +.B char * \fIstring +is the (multibyte) string to update +.TP 5 +.B int * \fIoffset +is the character-offset +.TP 5 +.B int \fIkey +is the editing key +.TP 5 +.B int \fIfkey +is true if the editing key is a function-key +.TP 5 +.B bool \fIforce +is used in a special loop case by calling code to force the return +value of this function when a function-key code 0 is passed in. +.\" --------------------------------------------------------------------------- +.SS dlg_exit +Given an internal exit code, +check if the corresponding environment variable is set. +If so, remap the exit code to match the environment variable. +Finally call \fBexit\fP with the resulting exit code. +.TP 5 +.B int \fIcode +is the internal exit code, e.g., \fBDLG_EXIT_OK\fP, +which may be remapped. +.LP +The \fB\*p\fP program uses this function +to allow shell scripts to remap the exit codes so they can distinguish ESC +from ERROR. +.\" --------------------------------------------------------------------------- +.SS dlg_exit_buttoncode +Map the given button index for \fBdlg_exit_label\fP into \fB\*p\fP's exit-code. +.TP 5 +.B int \fIbutton +is the button index +.\" --------------------------------------------------------------------------- +.SS dlg_exit_label +Return a list of button labels. +If \fBdialog_vars.extra_button\fP is true, +return the result of \fBdlg_ok_labels\fP. +Otherwise, return a list with the \*(``Exit\*('' label +and (if \fBdialog_vars.help_button\fP is set) +the \*(``Help\*('' button as well. +.\" --------------------------------------------------------------------------- +.SS dlg_exiterr +Quit program killing all \fBtailboxbg\fP widgets. +.TP 5 +.B const char * \fIfmt +is the format of the \fBprintf\fP-like message to write. +.TP 5 +.B ... +.br +are the variables to apply to the \fIfmt\fP format. +.\" --------------------------------------------------------------------------- +.SS dlg_find_index +Given the character-offset to find in the list, return the corresponding +array index. +.TP 5 +.B const int *\fIlist +contains a list of character-offsets, +i.e., indices into a string that denote the beginning of multibyte characters. +.TP 5 +.B int \fIlimit +is the last index into \fBlist\fP to search. +.TP 5 +.B int \fIto_find +is the character-offset to find. +.\" --------------------------------------------------------------------------- +.SS dlg_finish_string +If \fIDIALOG_STATE.finish_string\fP is true, +this function discards data used to speed up layout computations. +.TP 5 +.B const char * \fIstring +is the address of the string whose data should be discarded. +The address rather than contents is used as the unique identifier because +some of the caching is used for editable input-fields. +.\" --------------------------------------------------------------------------- +.SS dlg_flush_getc +Cancel the local data saved by \fBdlg_last_getc\fP. +.\" --------------------------------------------------------------------------- +.SS dlg_editbox +This entrypoint provides the \fB--editbox\fP +functionality without the limitations of \fB\*p\fP's command-line syntax +(compare to \fBdialog_editbox\fP). +.TP 5 +.B const char * \fItitle +is the title string to display at the top of the widget. +.TP 5 +.B char *** \fIlist +is a pointer to an array of \fBchar\ *\fP pointers. +The array is allocated by the caller, +and so are the strings to which it points. +The \fBdlg_editbox\fP function may reallocate the +array and the strings. +.TP 5 +.B int * \fIrows +points to the nominal length of \fIlist\fP. +The referenced value is updated if\fIlist\fP is reallocated. +.TP 5 +.B int \fIheight +is the desired height of the box. +If zero, the height is adjusted to use the available screen size. +.TP 5 +.B int \fIwidth +is the desired width of the box. +If zero, the height is adjusted to use the available screen size. +.\" --------------------------------------------------------------------------- +.SS dlg_form +This entrypoint provides the \fB--form\fP +functionality without the limitations of \fB\*p\fP's command-line syntax +(compare to \fBdialog_form\fP). +.TP 5 +.B const char * \fItitle +is the title string to display at the top of the widget. +.TP 5 +.B const char * \fIcprompt +is the prompt text shown within the widget. +.TP 5 +.B int \fIheight +is the desired height of the box. +If zero, the height is adjusted to use the available screen size. +.TP 5 +.B int \fIwidth +is the desired width of the box. +If zero, the height is adjusted to use the available screen size. +.TP 5 +.B int \fIform_height +is the minimum height to reserve for displaying the list. +If zero, it is computed based on the given \fIheight\fP and \fIwidth\fP. +.TP 5 +.B int \fIitem_no +is the number of \fIitems\fP. +.TP 5 +.B DIALOG_FORMITEM * \fIitems +This is a list of the items to display in the form. +.TP 5 +.B int * \fIcurrent_item +The widget sets the referenced location to the index of the current display +item (cursor) when it returns. +.\" --------------------------------------------------------------------------- +.SS dlg_free_columns +Free data allocated by \fBdlg_align_columns\fP. +.TP 5 +.B char **\fItarget +This is the array which was reformatted. +It points to the first string to free. +.TP 5 +.B int \fIper_row +This is the size of the struct for each row of the array. +.TP 5 +.B int \fInum_rows +This is the number of rows in the array. +.\" --------------------------------------------------------------------------- +.SS dlg_free_formitems +Free memory owned by a list of DIALOG_FORMITEM's. +.TP 5 +.B DIALOG_FORMITEM * \fIitems +is the list to free. +.\" --------------------------------------------------------------------------- +.SS dlg_free_gauge +Remove the gauge widget from the screen and free its associated memory. +.TP 5 +.B void *\fIobjptr +points to the gauge widget. +.\" --------------------------------------------------------------------------- +.SS dlg_getc +Read a character from the given window. +Handle repainting here (to simplify +things in the calling application). +Also, if input-callback(s) are set up, +poll the corresponding files and handle the updates, +e.g., for displaying a tailbox. +Returns the key-code. +.TP 5 +.B WINDOW * \fIwin +is the window within which to read. +.TP 5 +.B int * \fIfkey +as a side-effect, set this to true if the key-code is really a function-key. +.\" --------------------------------------------------------------------------- +.SS dlg_get_attrs +extract the video attributes from the given window. +.TP 5 +.B WINDOW * \fIwin +is the window from which to get attributes. +.\" --------------------------------------------------------------------------- +.SS dlg_getc_callbacks +passes the given key-code \fIch\fP to the current window that +has established a callback. +If the callback returns zero, remove it and try the next window. +If no more callbacks remain, return. +If any callbacks were found, return true, otherwise false. +.TP 5 +.B int \fIch +is the key-code +.TP 5 +.B int \fIfkey +is true if the key is a function-key +.TP 5 +.B int * \fIresult +is used to pass an exit-code to the caller, +which should pass that via \fBdlg_exit\fP. +.\" --------------------------------------------------------------------------- +.SS dlg_index_columns +Build a list of the display-columns for the given multibyte string's characters. +.TP 5 +.B const char * \fIstring +is the string to analyze +.\" --------------------------------------------------------------------------- +.SS dlg_index_wchars +Build an index of the wide-characters in the string, +so the caller can easily tell +which byte-offset begins a given wide-character. +.TP 5 +.B const char * \fIstring +is the string to analyze +.\" --------------------------------------------------------------------------- +.SS dlg_item_help +Draw the string for the \fBdialog_vars.item_help\fP feature. +.TP 5 +.B const char * \fItxt +is the help-message +.\" --------------------------------------------------------------------------- +.SS dlg_killall_bg +If \fB\*p\fP has callbacks active, +purge the list of all that are not marked +to keep in the background. +If any remain, run those in a background process. +.TP 5 +.B int * \fIretval +stores the exit-code to pass back to the caller. +.\" --------------------------------------------------------------------------- +.SS dlg_last_getc +returns the most recent character that was read via \fBdlg_getc\fP. +.\" --------------------------------------------------------------------------- +.SS dlg_limit_columns +Given a column limit, +count the number of wide characters that can fit into that limit. +The offset is used to skip over a leading character +that was already written. +.TP 5 +.B const char * \fIstring +is the string to analyze +.TP 5 +.B int \fIlimit +is the column limit +.TP 5 +.B int \fIoffset +is the starting offset from which analysis should continue +.\" --------------------------------------------------------------------------- +.SS dlg_lookup_key +Check for a key-binding. +If there is no binding associated with the widget, it simply returns +the given curses-key. +Otherwise, it returns the result of the binding +.TP 5 +.B WINDOW * \fIwin +is the window on which the binding is checked +.TP 5 +.B int \fIcurses_key +is the curses key-code +.TP 5 +.B int * \fIdialog_key +is the corresponding \fB\*p\fP internal code +(see \fBDLG_KEYS_ENUM\fP in dlg_key.h). +.\" --------------------------------------------------------------------------- +.SS dlg_max_input +Limit the parameter according to \fBdialog_vars.max_input\fP +.TP 5 +.B int \fImax_len +is the value to limit +.\" --------------------------------------------------------------------------- +.SS dlg_match_char +Match a given character against the beginning of the string, +ignoring case of the given character. +The matching string must begin with an uppercase character. +.TP 5 +.B int \fIch +is the character to check +.TP 5 +.B const char * \fIstring +is the string to search +.\" --------------------------------------------------------------------------- +.SS dlg_menu +This entrypoint provides the \fB--menu\fP +functionality without the limitations of \fB\*p\fP's command-line syntax +(compare to \fBdialog_menu\fP). +.TP 5 +.B const char * \fItitle +is the title string to display at the top of the widget. +.TP 5 +.B const char * \fIcprompt +is the prompt text shown within the widget. +.TP 5 +.B int \fIheight +is the desired height of the box. +If zero, the height is adjusted to use the available screen size. +.TP 5 +.B int \fIwidth +is the desired width of the box. +If zero, the height is adjusted to use the available screen size. +.TP 5 +.B int \fImenu_height +is the minimum height to reserve for displaying the list. +If zero, it is computed based on the given \fIheight\fP and \fIwidth\fP. +.TP 5 +.B int \fIitem_no +is the number of \fIitems\fP. +.TP 5 +.B DIALOG_LISTITEM * \fIitems +This is a list of the items to display in the form. +.TP 5 +.B int * \fIcurrent_item +The widget sets the referenced location to the index of the current display +item (cursor) when it returns. +.TP 5 +.B DIALOG_INPUTMENU \fIrename_menutext +If this is not \fBdlg_dummy_menutext\fP, +the widget acts like an \fIinputmenu\fP widget, +providing an extra \*(``Rename\*('' button, +which activates an edit feature on the selected menu item. +.\" --------------------------------------------------------------------------- +.SS dlg_move_window +Moves/resizes the given window to the given position and size. +.TP 5 +.B WINDOW *\fIwin +is the window to move/resize. +.TP 5 +.B WINDOW *\fIheight +is the height of the resized window. +.TP 5 +.B WINDOW *\fIwidth +is the width of the resized window. +.TP 5 +.B WINDOW *\fIy +y-ordinate to use for the repositioned window. +.TP 5 +.B WINDOW *\fIx +x-ordinate to use for the repositioned window. +.\" --------------------------------------------------------------------------- +.SS dlg_mouse_bigregion +Retrieve the big-region under the pointer. +.TP 5 +.B int \fIy +is the row on which the mouse click occurred +.TP 5 +.B int \fIx +is the column on which the mouse click occurred +.\" --------------------------------------------------------------------------- +.SS dlg_mouse_free_regions +Free the memory associated with mouse regions. +.\" --------------------------------------------------------------------------- +.SS dlg_mouse_mkbigregion +Creates a region on which the mouse-clicks will return a specified code. +.TP 5 +.B int \fIy +is the top-row of the region. +.TP 5 +.B int \fIx +is the left-column of the region. +.TP 5 +.B int \fIheight +is the height of the region. +.TP 5 +.B int \fIwidth +is the width of the region. +.TP 5 +.B int \fIcode +is a code used to make the region unique within a widget +.TP 5 +.B int \fIstep_x +is used in modes 2 (columns) and 3 (cells) to determine the width +of a column/cell. +.TP 5 +.B int \fIstep_y +is currently unused +.TP 5 +.B int \fImode +is used to determine how the mouse position is translated into +a code (like a function-key): +.RS 5 +.TP 3 +1 +index by lines +.TP +2 +index by columns +.TP +3 +index by cells +.RE +.\" --------------------------------------------------------------------------- +.SS dlg_mouse_mkregion +.TP 5 +.B int \fIy +is the top-row of the region. +.TP 5 +.B int \fIx +is the left-column of the region. +.TP 5 +.B int \fIheight +is the height of the region. +.TP 5 +.B int \fIwidth +is the width of the region. +.TP 5 +.B int \fIcode +is a code used to make the region unique within a widget +.\" --------------------------------------------------------------------------- +.SS dlg_mouse_region +Retrieve the frame under the mouse pointer +.TP 5 +.B int \fIy +is the row of the mouse-click +.TP 5 +.B int \fIx +is the column of the mouse-click +.\" --------------------------------------------------------------------------- +.SS dlg_mouse_setbase +Sets a base for subsequent calls to \fBdlg_mouse_mkregion\fP, +so they can make regions relative to the start of a given window. +.TP 5 +.B int \fIx +is the left-column for the base +.TP 5 +.B int \fIy +is the top-row for the base +.\" --------------------------------------------------------------------------- +.SS dlg_mouse_setcode +Sets a value used internally by \fBdlg_mouse_mkregion\fP +which is added to the \fIcode\fP parameter. +By providing different values, +e.g., multiples of \fBKEY_MAX\fP, +it is possible to support multiple \*(``big\*('' regions in a widget. +The \fIbuildlist\fP widget uses this feature to recognize mouse-clicks +in the left/right panes. +.TP 5 +.B int \fIcode +is the value to add to \fBdlg_mouse_mkregion\fP's \fIcode\fP parameter. +.\" --------------------------------------------------------------------------- +.SS dlg_mouse_wgetch +is a wrapper for \fBdlg_getc\fP which additionally maps mouse-clicks +(if the curses library supports those) into extended function-keys +which encode the position according to the \fImode\fP in +\fBdlg_mouse_mkbigregion\fP. +Returns the corresponding key-code. +.TP 5 +.B WINDOW * \fIwin +is the window on which to perform the input +.TP 5 +.B int * \fIfkey +the referenced location is set to true if the key-code is an actual +or extended (mouse) function-key. +.\" --------------------------------------------------------------------------- +.SS dlg_mouse_wgetch_nowait +This is a non-blocking variant of \fBdlg_mouse_wgetch\fP. +.TP 5 +.B WINDOW * \fIwin +is the window on which to perform the input +.TP 5 +.B int * \fIfkey +the referenced location is set to true if the key-code is an actual +or extended (mouse) function-key. +.\" --------------------------------------------------------------------------- +.SS dlg_need_separator +Check if an output-separator is needed. +If \fBdialog_vars.output_separator\fP is set, return true. +Otherwise, if \fBdialog_vars.input_result\fP is nonempty, return true. +If neither, return false. +.\" --------------------------------------------------------------------------- +.SS dlg_new_modal_window +Create a modal window, optionally with a shadow. +The shadow is created if \fBdialog_state.use_shadow\fP is true. +.TP 5 +.B WINDOW * \fIparent +is the parent window (usually the top-level window of a widget) +.TP 5 +.B int \fIheight +is the window's height +.TP 5 +.B int \fIwidth +is the window's width +.TP 5 +.B int \fIy +is the window's top-row +.TP 5 +.B int \fIx +is the window's left-column +.\" --------------------------------------------------------------------------- +.SS dlg_new_window +Create a window, optionally with a shadow. +The shadow is created if \fBdialog_state.use_shadow\fP is true. +.TP 5 +.B int \fIheight +is the window's height +.TP 5 +.B int \fIwidth +is the window's width +.TP 5 +.B int \fIy +is the window's top-row +.TP 5 +.B int \fIx +is the window's left-column +.\" --------------------------------------------------------------------------- +.SS dlg_next_button +Return the next index in the list of labels. +.TP 5 +.B const char ** \fIlabels +is a list of (pointers to) button labels terminated by a null pointer. +.TP 5 +.B int \fIbutton +is the current button-index. +.\" --------------------------------------------------------------------------- +.SS dlg_next_ok_buttonindex +Assuming that the caller is using \fBdlg_ok_labels\fP to list buttons, +find the next index in the list of buttons. +.TP 5 +.B int \fIcurrent +is the current index in the list of buttons +.TP 5 +.B int \fIextra +if negative, provides a way to enumerate extra active areas on the widget. +.\" --------------------------------------------------------------------------- +.SS dlg_ok_buttoncode +Map the given button index for \fBdlg_ok_labels\fP +into \fB\*p\fP's exit-code. +.TP 5 +.B int \fIbutton +is the button-index (which is not necessarily the same as the index +in the list of labels). +.\" --------------------------------------------------------------------------- +.SS dlg_ok_label +Returns a list with the \*(``Ok\*('' label, +and if \fBdialog_vars.help_button\fP is true, the \*(``Help\*('' label as well. +.\" --------------------------------------------------------------------------- +.SS dlg_ok_labels +Return a list of button labels for the OK/Cancel group of widgets. +.\" --------------------------------------------------------------------------- +.SS dlg_ordinate +Decode the string as an integer, decrement if greater than zero to make +a curses-ordinate from a dialog-ordinate. +.\" --------------------------------------------------------------------------- +.SS dlg_parse_bindkey +Parse the parameters of the \*(``bindkeys\*('' configuration-file entry. +This expects widget name which may be "*", followed by curses key definition and +then \fB\*p\fP key definition. +.TP 5 +.B char * \fIparams +is the parameter string to parse. +.\" --------------------------------------------------------------------------- +.SS dlg_parse_rc +Parse the configuration file and set up variables. +.\" --------------------------------------------------------------------------- +.SS dlg_popen +Open a pipe which ties the standard error and output together. +The \fBpopen\fP function captures only the standard output of a command. +.TP 5 +.B const char *\fIcommand +The shell command to run. +.TP 5 +.B const char *\fItype +Like \fBpopen\fP, "r" is used to read, and "w" is used to write. +.\" --------------------------------------------------------------------------- +.SS dlg_prev_button +Return the previous index in the list of labels. +.TP 5 +.B const char ** \fIlabels +is a list of (pointers to) button labels terminated by a null pointer. +.TP 5 +.B int \fIbutton +is the current button index +.\" --------------------------------------------------------------------------- +.SS dlg_print_listitem +This is a helper function used for the various \*(``list\*('' widgets, +e.g., checklist, menu, buildlist, treeview. +Each list-widget has \*(``tag\*('' and \*(``description\*('' values +for each item which can be displayed. +If \fBdialog_vars.no_tags\fP is true, +the \*(``tag\*('' value is not shown. +The first character of the first value shown (tag or description) +is highlighted to indicate that the widget will match it for quick navigation. +.TP 5 +.B WINDOW *\fIwin +the window in which to display the text +.TP 5 +.B const char *\fItext +the value to display +.TP 5 +.B int \fIclimit +the number of columns available for printing the text +.TP 5 +.B bool \fIfirst +true if this is the first call (for \*(``tag\*('' and \*(``description\*(''), +and the first character of the value should be highlighted. +.TP 5 +.B int \fIselected +nonzero if the text should be displayed using the \*(``selected\*('' colors +.\" --------------------------------------------------------------------------- +.SS dlg_print_scrolled +This is a wrapper for \fBdlg_print_autowrap\fP which allows the user +to scroll too-long prompt text up/down. +.LP +See \fBdlg_check_scrolled\fP for a function which updates the \fIoffset\fP +variable used as a parameter here. +It complements this function; you need both. +If \fIpauseopt\fP is set, this function returns an updated \fIlast\fP +parameter, needed for \fBdlg_check_scrolled\fP calls. +.TP 5 +.B WINDOW * \fIwin +is the window to update. +.TP 5 +.B const char * \fIprompt +is the string to print +.TP 5 +.B int \fIoffset +is the starting line-number to write wrapped text. +.TP 5 +.B int \fIheight +is the available height for writing the wrapped text +.TP 5 +.B int \fIwidth +is the width that the wrapping should occur in +.TP 5 +.B int \fIpauseopt +is true if the extra functionality for scrolling should be enabled. +If false, this calls \fBdlg_print_autowrap\fP without doing any scrolling. +.\" --------------------------------------------------------------------------- +.SS dlg_print_line +Print one line of the prompt in the window within the limits of the +specified right margin. +The line will end on a word boundary and a pointer +to the start of the next line is returned, or a NULL pointer if the end of +*prompt is reached. +.TP 5 +.B WINDOW *\fIwin +is the window to update. +.TP 5 +.B chtype *\fIattr +holds the starting attributes, and is updated to reflect the final attributes +applied to the string. +.TP 5 +.B const char *\fIprompt +is the string to print +.TP 5 +.B int \fIlm +is the left margin. +.TP 5 +.B int \fIrm +is the right margin +.TP 5 +.B int *\fIx +returns the ending x-ordinate. +.\" --------------------------------------------------------------------------- +.SS dlg_prev_ok_buttonindex +Find the previous button index in the list from \fBdlg_ok_labels\fP. +.TP 5 +.B int \fIcurrent +is the current index +.TP 5 +.B int \fIextra +if negative provides a way to enumerate extra active areas on the widget. +.\" --------------------------------------------------------------------------- +.SS dlg_print_autowrap +Print a string of text in a window, automatically wrap around to the next +line if the string is too long to fit on one line. +Note that the string may contain embedded newlines. +The text is written starting at the top of the window. +.TP 5 +.B WINDOW * \fIwin +is the window to update. +.TP 5 +.B const char * \fIprompt +is the string to print +.TP 5 +.B int \fIheight +is the nominal height the wrapped string is limited to +.TP 5 +.B int \fIwidth +is the width that the wrapping should occur in +.\" --------------------------------------------------------------------------- +.SS dlg_print_size +If \fBdialog_vars.print_siz\fP is true, +print the given height/width (from a widget) +to \fBdialog_state.output\fP, e.g., +\fBSize: height, width\fP. +.TP 5 +.B int \fIheight +is the window's height +.TP 5 +.B int \fIwidth +is the window's width +.\" --------------------------------------------------------------------------- +.SS dlg_print_text +Print up to \fIcols\fP columns from \fBtext\fP, +optionally rendering \fB\*p\fP's escape sequences for attributes and color. +.TP 5 +.B WINDOW * \fIwin +is the window to update. +.TP 5 +.B const char * \fItxt +is the string to print +.TP 5 +.B int \fIcol +is the column limit +.TP 5 +.B chtype * \fIattr +holds the starting attributes, and is updated to reflect the final attributes +applied to the string. +.\" --------------------------------------------------------------------------- +.SS dlg_progressbox +implements the "\fB--prgbox\fP" and "\fB--progressbox\fP" options. +.TP 5 +.B const char * \fItitle +is the title on the top of the widget. +.TP 5 +.B const char * \fIcprompt +is the prompt text shown within the widget. +If empty or null, no prompt is shown. +.TP 5 +.B int \fIheight +is the desired height of the box. +If zero, the height is based on the screen size. +.TP 5 +.B int \fIwidth +is the desired width of the box. +If zero, the height is based on the screen size. +.TP 5 +.B int \fIpauseopt +if true, an \*(``OK\*('' button will be shown, +and the dialog will wait for it to complete. +With an \*(``OK\*('' button, it is denoted a \*(``programbox\*('', +without an \*(``OK\*('' button, it is denoted a \*(``progressbox\*(''. +.TP 5 +.B FILE * \fIfp +is the file pointer, which may be a pipe or a regular file. +.\" --------------------------------------------------------------------------- +.SS dlg_put_backtitle +Display the background title if \fBdialog_vars.backtitle\fP is non-null. +The background title is shown at the top of the screen. +.\" --------------------------------------------------------------------------- +.SS dlg_reallocate_gauge +Allocates or reallocates a gauge widget (see \fBdlg_allocate_gauge\fP). +Use \fBdlg_update_gauge\fP to display the result. +.TP 5 +.B void ** \fIobjptr +If the pointer referenced by this parameter is null, the function creates +a new gauge widget using \fBdlg_allocate_gauge\fP. +Otherwise, it updates the title and cprompt values, reusing the window +from the previous call on this function. +As a side-effect, the function stores the updated object-pointer via +the \fIobjptr\fP parameter. +.TP 5 +.B const char * \fItitle +is the title string to display at the top of the widget. +.TP 5 +.B const char * \fIcprompt +is the prompt text shown within the widget. +.TP 5 +.B int \fIheight +is the desired height of the box. +If zero, the height is adjusted to use the available screen size. +.TP 5 +.B int \fIwidth +is the desired width of the box. +If zero, the height is adjusted to use the available screen size. +.TP 5 +.B int \fIpercent +is the percentage to show in the progress bar. +.\" --------------------------------------------------------------------------- +.SS dlg_register_buttons +The widget developer should call this function after \fBdlg_register_window\fP, +for the list of button labels associated with the widget. +One may bind a key to a button, e.g., \*(``OK\*('' for \fBDLGK_OK\fP, +.TP 5 +.B WINDOW * \fIwin +is the window with which to associate the buttons +.TP 5 +.B const char * \fIname +is the widget's binding name (usually the name of the widget). +.TP 5 +.B const char ** \fIbuttons +is the list of buttons +.\" --------------------------------------------------------------------------- +.SS dlg_register_window +For a given named widget's window, associate a binding table. +.TP 5 +.B WINDOW * \fIwin +is the window with which to associate the buttons +.TP 5 +.B const char * \fIname +is the widget's binding name (usually the name of the widget). +.TP 5 +.B DLG_KEYS_BINDING * \fIbinding +is the binding table +.\" --------------------------------------------------------------------------- +.SS dlg_remove_callback +Remove a callback. +.TP 5 +.B DIALOG_CALLBACK * \fIp +contains the callback information. +.\" --------------------------------------------------------------------------- +.SS dlg_renamed_menutext +This is a utility function which supports the \fB--inputmenu\fP option of +the \fB\*p\fP program. +If \fBdialog_vars.input_menu\fP is set, \fBdialog_menu\fP passes this +pointer to \fBdlg_menu\fP as the \fIrename_menutext\fP parameter. +Otherwise, it passes \fBdlg_dummy_menutext\fP. +.LP +The function should add \*(``RENAMED\*('' to \fBdialog_vars.input_result\fP , +followed by the menu item's name and the \fInewtext\fP value +(with a space separating the three items), +and return \fBDLG_EXIT_EXTRA\fP. +.TP 5 +.B DIALOG_LISTITEM * \fIitems +is the list of menu items +.TP 5 +.B int \fIcurrent +is the index of the currently-selected item +.TP 5 +.B char * \fInewtext +is the updated text for the menu item +.\" --------------------------------------------------------------------------- +.SS dlg_restore_vars +Restore \fB\*p\fP's variables from the given variable +(see \fBdialog_save_vars\fP). +.TP 5 +.B DIALOG_VARS * \fIsave +is the variable from which to restore. +.LP +The +\fIDIALOG_VARS.input_length\fP and +\fIDIALOG_VARS.input_result\fP members are treated specially, +since these are used by a widget to pass data to the caller. +They are not modified by this function. +.\" --------------------------------------------------------------------------- +.SS dlg_result_key +Test a \fB\*p\fP internal keycode to see if it corresponds to one of the push +buttons on the widget such as \*(``OK\*(''. +This is only useful if there are user-defined key bindings, since there are +no built-in bindings that map directly to \fBDLGK_OK\fP, etc. +Return true if a mapping was done. +.TP 5 +.B int \fIdialog_key +is the \fB\*p\fP key to test +.TP 5 +.B int \fIfkey +is true if this is a function key +.TP 5 +.B int * \fIresultp +store the result of the mapping in the referenced location. +.\" --------------------------------------------------------------------------- +.SS dlg_save_vars +Save \fB\*p\fP's variables into the given variable (see \fBdlg_restore_vars\fP). +.TP 5 +.B DIALOG_VARS * \fIsave +is the variable into which to save. +.\" --------------------------------------------------------------------------- +.SS dlg_set_focus +Set focus on the given window, +making it display above other windows on the screen. +.TP 5 +.B WINDOW * \fIparent +is the parent window (usually the top-level window of a widget) +.TP 5 +.B WINDOW * \fIwin +is the window on which to place focus (usually a subwindow of a widget) +.\" --------------------------------------------------------------------------- +.SS dlg_set_result +Setup a fixed-buffer for the result in \fBdialog_vars.input_result\fP +.TP 5 +.B const char * \fIstring +is the new contents for the result +.\" --------------------------------------------------------------------------- +.SS dlg_show_string +Displays the string, shifted as necessary, to fit within the box and show +the current character-offset. +.TP 5 +.B WINDOW * \fIwin +is the window within which to display +.TP 5 +.B const char * \fIstring +is the string to display +.TP 5 +.B int \fIoffset +is the starting (character, not bytes) offset +.TP 5 +.B chtype \fIattr +is the window attribute to use for the string +.TP 5 +.B int \fIy_base +beginning row on screen +.TP 5 +.B int \fIx_base +beginning column on screen +.TP 5 +.B int \fIx_last +number of columns on screen +.TP 5 +.B bool \fIhidden +if true, do not echo input +.TP 5 +.B bool \fIforce +if true, force repaint +.\" --------------------------------------------------------------------------- +.SS dlg_strclone +duplicate the string, like \fBstrdup\fP. +.TP 5 +.B const char * \fIcprompt +is the string to duplicate +.\" --------------------------------------------------------------------------- +.SS dlg_strcmp +compare two strings, ignoring case. +.TP 5 +.B const char * \fIa +is one string +.TP 5 +.B const char * \fIb +is the other string +.\" --------------------------------------------------------------------------- +.SS dlg_string_to_argv +Convert a string to an argument vector +returning an index (which must be freed by the caller). +The string is modified: +.bP +Blanks between arguments are replaced by nulls. +.bP +Normally arguments are separated by blanks; +however you can double-quote an argument to enclose blanks. +The surrounding double-quotes are removed from the string. +.bP +A backslash preceding a double-quote within double-quotes is removed. +.bP +A backslash preceding a newline outside double-quotes is removed. +.bP +Except for special cases, backslashes are preserved in the strings, +since other \fB\*l\fP functions interpret backslashes, e.g., for colors. +.TP 5 +.B char *\fIblob +is the string to convert. +.\" --------------------------------------------------------------------------- +.SS dlg_sub_window +create a subwindow, e.g., for an input area of a widget +.TP 5 +.B WINDOW * \fIwin +is the parent window +.TP 5 +.B int \fIheight +is the subwindow's height +.TP 5 +.B int \fIwidth +is the subwindow's width +.TP 5 +.B int \fIy +is the subwindow's top-row +.TP 5 +.B int \fIx +is the subwindow's left-column +.\" --------------------------------------------------------------------------- +.SS dlg_tab_correct_str +If the \fBdialog_vars.tab_correct\fP is true, convert tabs to single spaces. +Return the converted result. +The caller is responsible for freeing the string. +.TP 5 +.B char * \fIprompt +is the string to convert +.\" --------------------------------------------------------------------------- +.SS dlg_trace +If the parameter is non-null, opens a trace file with that +name and stores the file pointer in \fBdialog_state.trace\fP. +.\" --------------------------------------------------------------------------- +.SS dlg_trace_2n +logs a numeric value as a comment. +.TP 5 +.B char * \fIname +is the name to log in the comment. +.TP 5 +.B int \fIvalue +is the value to log in the comment. +.\" --------------------------------------------------------------------------- +.SS dlg_trace_2n +logs a string value as a comment. +If the value contains embedded newlines, +the comment is continued with \*(``#+\*('' markers. +.TP 5 +.B char * \fIname +is the name to log in the comment. +.TP 5 +.B int \fIvalue +is the value to log in the comment. +.\" --------------------------------------------------------------------------- +.SS dlg_trace_chr +If \fBdialog_state.trace\fP is set, +translate the parameters into a printable representation, +log it on a \*(``chr\*('' line. +.TP 5 +.B int \fIch +is the nominal keycode value. +.TP 5 +.B int \fIfkey +is nonzero if the value is really a function key. +Some of these may be values declared in the DLG_KEYS_ENUM. +.\" --------------------------------------------------------------------------- +.SS dlg_trace_msg +Write a formatted message to the trace file. +.TP 5 +.B const char * \fIfmt +is the format of the \fBprintf\fP-like message to write. +.TP 5 +.B ... +.br +are the variables to apply to the \fIfmt\fP format. +.LP +Use the DLG_TRACE macro for portability, in case the trace +feature is not compiled into the library. +It uses an extra level of parentheses to work with a variable number of +parameters, e.g., +.Ex +DLG_TRACE(("this is dialog version %s\en", dialog_version())); +.Ee +.\" --------------------------------------------------------------------------- +.SS dlg_ttysize +Returns the screensize without using curses. +That allows the function to be used before initializing the screen. +.\" --------------------------------------------------------------------------- +.SS dlg_trace_win +If \fBdialog_state.trace\fP is set, +log a printable picture of the given window. +.\" --------------------------------------------------------------------------- +.SS dlg_treeview +This is an alternate interface to 'treeview' which allows the application +to read the list item states back directly without putting them in the +output buffer. +.TP 5 +.B const char * \fItitle +is the title on the top of the widget. +.TP 5 +.B const char * \fIcprompt +is the prompt text shown within the widget. +.TP 5 +.B int \fIheight +is the desired height of the box. +If zero, the height is based on the screen size. +.TP 5 +.B int \fIwidth +is the desired width of the box. +If zero, the height is based on the screen size. +.TP 5 +.B int \fIlist_height +is the minimum height to reserve for displaying the list. +If zero, it is computed based on the given \fIheight\fP and \fIwidth\fP. +.TP 5 +.B int \fIitem_no +is the number of rows in \fIitems\fP. +.TP 5 +.B DIALOG_LISTITEM * \fIitems +is the list of items, contain tag, name, and optionally help strings +(if \fBdialog_vars.item_help\fP is set). +The initial selection state for each item is also in this list. +.TP 5 +.B const char * \fIstates +This is a list of characters to display for the given states. +Normally a buildlist provides true (1) and false (0) values, +which the widget displays as "*" and space, respectively. +An application may set this parameter to an arbitrary null-terminated string. +The widget determines the number of states from the length of this string, +and will cycle through the corresponding display characters as the user +presses the space-bar. +.TP 5 +.B int * \fIdepths +This is a list of depths of each item in the tree. +It is a separate parameter from \fIitems\fP to allow reuse of +the existing functions. +.TP 5 +.B int \fIflag +is either \fIFLAG_CHECK\fP, for checklists (multiple selections), +or \fIFLAG_RADIO\fP for radiolists (a single selection). +.TP 5 +.B int * \fIcurrent_item +The widget sets the referenced location to the index of the current display +item (cursor) when it returns. +.\" --------------------------------------------------------------------------- +.SS dlg_trim_string +The \fBdialog\fP program uses this in each widget to adjust the +message string, +which may contain the newline character (referred to as '\en') +and/or the special substring "\en" +(which can be translated into a newline character). +.LP +There are several optional features: +.bP +Unless \fBdialog_vars.nocollapse\fP is set, +each tab is converted to a space before other processing. +.bP +If \fBdialog_vars.no_nl_expand\fP is not set, +and the string has "\en" substrings: +.RS +.bP +The function changes embedded "\en" substrings to '\en' characters. +.IP +The function preserves extra spaces after these substitutions. +For instance, spaces following a newline (substring or character) +are preserved to use as an indentation. +.bP +If \fBdialog_vars.cr_wrap\fP is set, +the function preserves '\en' newline characters. +Otherwise, each '\en' newline character is converted to a space. +.RE +.bP +Otherwise, if \fBdialog_vars.trim_whitespace\fP is set: +.RS +.bP +This function strips all extra spaces to simplify justification. +.bP +If \fBdialog_vars.cr_wrap\fP is set, +the function preserves '\en' newline characters. +Otherwise, each '\en' newline character is converted to a space. +.RE +.bP +Finally +(if \fBdialog_vars.no_nl_expand\fP is set, +or the string does not contain "\en" substrings, +and \fBdialog_vars.trim_whitespace\fP is not set): +.RS +.bP +Unless \fBdialog_vars.nocollapse\fP is set, +sequences of spaces are reduced to a single space. +.RE +.TP 5 +.B char * \fIsrc +is the string to trim +.\" --------------------------------------------------------------------------- +.SS dlg_unregister_window +Remove the bindings for a given window. +.TP 5 +.B WINDOW * \fIwin +is the window from which to remove bindings +.\" --------------------------------------------------------------------------- +.SS dlg_update_gauge +Update a gauge widget to show a different percentage value. +.TP 5 +.B void *\fIobjptr +points to the gauge object to update. +.TP 5 +.B int \fIpercent +is the new percentage value to display. +.\" --------------------------------------------------------------------------- +.SS dlg_will_resize +This filters out bursts of \fBKEY_RESIZE\fP values. +Call this after \fBdlg_getc\fP returns \fBKEY_RESIZE\fP, +to improve performance. +.\" --------------------------------------------------------------------------- +.SS dlg_yes_buttoncode +Map the given button index for \fBdlg_yes_labels\fP into \fB\*p\fP's exit-code. +.TP 5 +.B int \fIbutton +is the button index +.\" --------------------------------------------------------------------------- +.SS dlg_yes_labels +Return a list of buttons for Yes/No labels. +.\" --------------------------------------------------------------------------- +.SS end_dialog +End use of \fB\*p\fP functions. +.\" --------------------------------------------------------------------------- +.SS init_dialog +Do some initialization for \fB\*p\fP. +.TP 5 +.B FILE *\fIinput +is the real tty input of \fB\*p\fP. +Usually it is the standard input, but if +\fB--input-fd\fP option is used, it may be anything. +.TP 5 +.B FILE *\fIoutput +is where \fB\*p\fP will send its result. +Usually it is the standard error, but +if \fB--stdout\fP or \fB--output-fd\fP is used, it may be anything. +. +.\" ************************************************************************ +.SH SEE ALSO +\fB\*p\fP (1). +. +.\" ************************************************************************ +.SH AUTHOR +Thomas E.\& Dickey Index: vendor/dialog/1.3-20180621/dialog.c =================================================================== --- vendor/dialog/1.3-20180621/dialog.c (nonexistent) +++ vendor/dialog/1.3-20180621/dialog.c (revision 339483) @@ -0,0 +1,2180 @@ +/* + * $Id: dialog.c,v 1.268 2018/06/21 09:16:05 tom Exp $ + * + * cdialog - Display simple dialog boxes from shell scripts + * + * Copyright 2000-2017,2018 Thomas E. Dickey + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License, version 2.1 + * as published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this program; if not, write to + * Free Software Foundation, Inc. + * 51 Franklin St., Fifth Floor + * Boston, MA 02110, USA. + * + * An earlier version of this program lists as authors + * Savio Lam (lam836@cs.cuhk.hk) + */ + +#include +#include +#include +#include + +#ifdef HAVE_SETLOCALE +#include +#endif + +#define PASSARGS t, av, offset_add +#define CALLARGS const char *t, char *av[], int *offset_add +typedef int (callerFn) (CALLARGS); + +typedef enum { + o_unknown = 0 + ,o_allow_close + ,o_and_widget + ,o_ascii_lines + ,o_aspect + ,o_auto_placement + ,o_backtitle + ,o_beep + ,o_beep_after + ,o_begin + ,o_cancel_label + ,o_checklist + ,o_clear + ,o_colors + ,o_column_separator + ,o_cr_wrap + ,o_create_rc + ,o_date_format + ,o_default_button + ,o_default_item + ,o_defaultno + ,o_exit_label + ,o_extra_button + ,o_extra_label + ,o_fixed_font + ,o_form + ,o_gauge + ,o_help + ,o_help_button + ,o_help_file + ,o_help_label + ,o_help_line + ,o_help_status + ,o_help_tags + ,o_icon + ,o_ignore + ,o_infobox + ,o_input_fd + ,o_inputbox + ,o_inputmenu + ,o_insecure + ,o_item_help + ,o_keep_colors + ,o_keep_tite + ,o_keep_window + ,o_last_key + ,o_max_input + ,o_menu + ,o_mixedform + ,o_mixedgauge + ,o_msgbox + ,o_no_close + ,o_no_collapse + ,o_no_cr_wrap + ,o_no_kill + ,o_no_label + ,o_no_lines + ,o_no_mouse + ,o_no_nl_expand + ,o_no_shadow + ,o_nocancel + ,o_nook + ,o_ok_label + ,o_output_fd + ,o_output_separator + ,o_passwordbox + ,o_passwordform + ,o_pause + ,o_prgbox + ,o_print_maxsize + ,o_print_size + ,o_print_text_only + ,o_print_text_size + ,o_print_version + ,o_programbox + ,o_progressbox + ,o_quoted + ,o_radiolist + ,o_screen_center + ,o_scrollbar + ,o_separate_output + ,o_separate_widget + ,o_separator + ,o_shadow + ,o_single_quoted + ,o_size_err + ,o_sleep + ,o_smooth + ,o_stderr + ,o_stdout + ,o_tab_correct + ,o_tab_len + ,o_tailbox + ,o_tailboxbg + ,o_textbox + ,o_time_format + ,o_timeout + ,o_title + ,o_trim + ,o_under_mouse + ,o_version + ,o_visit_items + ,o_wmclass + ,o_yes_label + ,o_yesno +#ifdef HAVE_WHIPTAIL + ,o_fullbutton + ,o_topleft +#endif +#ifdef HAVE_XDIALOG + ,o_calendar + ,o_dselect + ,o_editbox + ,o_fselect + ,o_timebox + ,o_week_start +#endif +#ifdef HAVE_XDIALOG2 + ,o_buildlist + ,o_rangebox + ,o_reorder + ,o_treeview +#endif +#if defined(HAVE_XDIALOG2) || defined(HAVE_WHIPTAIL) + ,o_no_items + ,o_no_tags +#endif +#ifdef HAVE_DLG_TRACE + ,o_trace +#endif + ,o_iso_week +} eOptions; + +/* + * The bits in 'pass' are used to decide which options are applicable at + * different stages in the program: + * 1 flags before widgets + * 2 widgets + * 4 non-widget options + */ +typedef struct { + const char *name; + eOptions code; + int pass; /* 1,2,4 or combination */ + const char *help; /* NULL to suppress, non-empty to display params */ +} Options; + +typedef struct { + eOptions code; + int argmin, argmax; + callerFn *jumper; +} Mode; + +static int known_opts = 0; +static const char **dialog_opts; +static char **dialog_argv; + +static char **special_argv = 0; +static int special_argc = 0; + +static bool ignore_unknown = FALSE; + +static const char *program = "dialog"; + +#ifdef NO_LEAKS +typedef struct _all_blobs { + struct _all_blobs *next; + void *blob; +} AllBlobs; + +static AllBlobs *all_blobs; +#endif + +/* + * The options[] table is organized this way to make it simple to maintain + * a sorted list of options for the help-message. + */ +/* *INDENT-OFF* */ +static const Options options[] = { + { "allow-close", o_allow_close, 1, NULL }, + { "and-widget", o_and_widget, 4, NULL }, + { "ascii-lines", o_ascii_lines, 1, "" }, + { "aspect", o_aspect, 1, "" }, + { "auto-placement", o_auto_placement, 1, NULL }, + { "backtitle", o_backtitle, 1, "" }, + { "beep", o_beep, 1, "" }, + { "beep-after", o_beep_after, 1, "" }, + { "begin", o_begin, 1, " " }, + { "cancel-label", o_cancel_label, 1, "" }, + { "checklist", o_checklist, 2, " ..." }, + { "clear", o_clear, 1, "" }, + { "colors", o_colors, 1, "" }, + { "column-separator",o_column_separator, 1, "" }, + { "cr-wrap", o_cr_wrap, 1, "" }, + { "create-rc", o_create_rc, 1, NULL }, + { "date-format", o_date_format, 1, "" }, + { "default-button", o_default_button, 1, "" }, + { "default-item", o_default_item, 1, "" }, + { "defaultno", o_defaultno, 1, "" }, + { "exit-label", o_exit_label, 1, "" }, + { "extra-button", o_extra_button, 1, "" }, + { "extra-label", o_extra_label, 1, "" }, + { "fixed-font", o_fixed_font, 1, NULL }, + { "form", o_form, 2, "
..." }, + { "gauge", o_gauge, 2, " []" }, + { "guage", o_gauge, 2, NULL }, + { "help", o_help, 4, "" }, + { "help-button", o_help_button, 1, "" }, + { "help-label", o_help_label, 1, "" }, + { "help-status", o_help_status, 1, "" }, + { "help-tags", o_help_tags, 1, "" }, + { "hfile", o_help_file, 1, "" }, + { "hline", o_help_line, 1, "" }, + { "icon", o_icon, 1, NULL }, + { "ignore", o_ignore, 1, "" }, + { "infobox", o_infobox, 2, " " }, + { "input-fd", o_input_fd, 1, "" }, + { "inputbox", o_inputbox, 2, " []" }, + { "inputmenu", o_inputmenu, 2, " ..." }, + { "insecure", o_insecure, 1, "" }, + { "item-help", o_item_help, 1, "" }, + { "keep-colors", o_keep_colors, 1, NULL }, + { "keep-tite", o_keep_tite, 1, "" }, + { "keep-window", o_keep_window, 1, "" }, + { "last-key", o_last_key, 1, "" }, + { "max-input", o_max_input, 1, "" }, + { "menu", o_menu, 2, " ..." }, + { "mixedform", o_mixedform, 2, " ..." }, + { "mixedgauge", o_mixedgauge, 2, " ..." }, + { "msgbox", o_msgbox, 2, " " }, + { "no-cancel", o_nocancel, 1, "" }, + { "no-close", o_no_close, 1, NULL }, + { "no-collapse", o_no_collapse, 1, "" }, + { "no-cr-wrap", o_no_cr_wrap, 1, "" }, + { "no-kill", o_no_kill, 1, "" }, + { "no-label", o_no_label, 1, "" }, + { "no-lines", o_no_lines, 1, "" }, + { "no-mouse", o_no_mouse, 1, "" }, + { "no-nl-expand", o_no_nl_expand, 1, "" }, + { "no-ok", o_nook, 1, "" }, + { "no-shadow", o_no_shadow, 1, "" }, + { "nocancel", o_nocancel, 1, NULL }, /* see --no-cancel */ + { "nook", o_nook, 1, "" }, /* See no-ok */ + { "ok-label", o_ok_label, 1, "" }, + { "output-fd", o_output_fd, 1, "" }, + { "output-separator",o_output_separator, 1, "" }, + { "passwordbox", o_passwordbox, 2, " []" }, + { "passwordform", o_passwordform, 2, " ..." }, + { "pause", o_pause, 2, " " }, + { "prgbox", o_prgbox, 2, " " }, + { "print-maxsize", o_print_maxsize, 1, "" }, + { "print-size", o_print_size, 1, "" }, + { "print-text-only",o_print_text_only, 5, " " }, + { "print-text-size",o_print_text_size, 5, " " }, + { "print-version", o_print_version, 5, "" }, + { "programbox", o_programbox, 2, " " }, + { "progressbox", o_progressbox, 2, " " }, + { "quoted", o_quoted, 1, "" }, + { "radiolist", o_radiolist, 2, " ..." }, + { "screen-center", o_screen_center, 1, NULL }, + { "scrollbar", o_scrollbar, 1, "" }, + { "separate-output",o_separate_output, 1, "" }, + { "separate-widget",o_separate_widget, 1, "" }, + { "separator", o_separator, 1, NULL }, + { "shadow", o_shadow, 1, "" }, + { "single-quoted", o_single_quoted, 1, "" }, + { "size-err", o_size_err, 1, "" }, + { "sleep", o_sleep, 1, "" }, + { "smooth", o_smooth, 1, NULL }, + { "stderr", o_stderr, 1, "" }, + { "stdout", o_stdout, 1, "" }, + { "tab-correct", o_tab_correct, 1, "" }, + { "tab-len", o_tab_len, 1, "" }, + { "tailbox", o_tailbox, 2, " " }, + { "tailboxbg", o_tailboxbg, 2, " " }, + { "textbox", o_textbox, 2, " " }, + { "time-format", o_time_format, 1, "" }, + { "timeout", o_timeout, 1, "" }, + { "title", o_title, 1, "" }, + { "trim", o_trim, 1, "" }, + { "under-mouse", o_under_mouse, 1, NULL }, + { "version", o_version, 5, "" }, + { "visit-items", o_visit_items, 1, "" }, + { "wmclass", o_wmclass, 1, NULL }, + { "yes-label", o_yes_label, 1, "<str>" }, + { "yesno", o_yesno, 2, "<text> <height> <width>" }, +#ifdef HAVE_WHIPTAIL + { "cancel-button", o_cancel_label, 1, NULL }, + { "fb", o_fullbutton, 1, NULL }, + { "fullbutton", o_fullbutton, 1, NULL }, + { "no-button", o_no_label, 1, NULL }, + { "ok-button", o_ok_label, 1, NULL }, + { "scrolltext", o_scrollbar, 1, NULL }, + { "topleft", o_topleft, 1, NULL }, + { "yes-button", o_yes_label, 1, NULL }, +#endif +#ifdef HAVE_XDIALOG + { "calendar", o_calendar, 2, "<text> <height> <width> <day> <month> <year>" }, + { "dselect", o_dselect, 2, "<directory> <height> <width>" }, + { "editbox", o_editbox, 2, "<file> <height> <width>" }, + { "fselect", o_fselect, 2, "<filepath> <height> <width>" }, + { "timebox", o_timebox, 2, "<text> <height> <width> <hour> <minute> <second>" }, + { "week-start", o_week_start, 1, "<str>" }, + { "iso-week", o_iso_week, 1, NULL }, +#endif +#ifdef HAVE_XDIALOG2 + { "buildlist", o_buildlist, 2, "<text> <height> <width> <list-height> <tag1> <item1> <status1>..." }, + { "no-items", o_no_items, 1, "" }, + { "no-tags", o_no_tags, 1, "" }, + { "rangebox", o_rangebox, 2, "<text> <height> <width> <min-value> <max-value> <default-value>" }, + { "reorder", o_reorder, 1, "" }, + { "treeview", o_treeview, 2, "<text> <height> <width> <list-height> <tag1> <item1> <status1> <depth1>..." }, +#endif +#if defined(HAVE_XDIALOG2) || defined(HAVE_WHIPTAIL) + { "noitem", o_no_items, 1, NULL }, + { "notags", o_no_tags, 1, NULL }, +#endif +#ifdef HAVE_DLG_TRACE + { "trace", o_trace, 1, "<file>" }, +#endif +}; +/* *INDENT-ON* */ + +#ifdef NO_LEAKS +static void +ignore_leak(void *value) +{ + AllBlobs *next = dlg_calloc(AllBlobs, (size_t) 1); + if (next != 0) { + next->blob = value; + next->next = all_blobs; + all_blobs = next; + } +} + +static void +handle_leaks(void) +{ + while (all_blobs != 0) { + char *blob = all_blobs->blob; + AllBlobs *next = all_blobs->next; + free(blob); + free(all_blobs); + all_blobs = next; + } + free(dialog_opts); + if (special_argv != 0) { + free(special_argv[0]); + free(special_argv); + special_argv = 0; + special_argc = 0; + } +} +#else +#define handle_leaks() /* nothing */ +#define ignore_leak(n) /* nothing */ +#endif + +#define OptionChars "\ +0123456789\ +-\ +abcdefghijklmnopqrstuvwxyz\ +" + +/* + * Check if the given string from main's argv is an option. + */ +static bool +isOption(const char *arg) +{ + bool result = FALSE; + + if (arg != 0) { + if (dialog_opts != 0) { + int n; + for (n = 0; dialog_opts[n] != 0; ++n) { + if (dialog_opts[n] == arg) { + result = TRUE; + break; + } + } + } else if (!strncmp(arg, "--", (size_t) 2) && isalpha(UCH(arg[2]))) { + if (strlen(arg) == (strspn) (arg, OptionChars)) { + result = TRUE; + } else { + handle_leaks(); + dlg_exiterr("Invalid option \"%s\"", arg); + } + } + } + return result; +} + +/* + * Make an array showing which argv[] entries are options. Use "--" as a + * special token to escape the next argument, allowing it to begin with "--". + * When we find a "--" argument, also remove it from argv[] and adjust argc. + * That appears to be an undocumented feature of the popt library. + * + * Also, if we see a "--file", expand it into the parameter list by reading the + * text from the given file and stripping quotes, treating whitespace outside + * quotes as a parameter delimiter. + * + * Finally, if we see a "--args", dump the current list of arguments to the + * standard error. This is used for debugging complex --file combinations. + */ +static void +unescape_argv(int *argcp, char ***argvp) +{ + int j, k; + int limit_includes = 20 + *argcp; + int count_includes = 0; + bool doalloc = FALSE; + char *filename; + const char **my_argv = 0; + int my_argc; + + DLG_TRACE(("# unescape_argv\n")); + for (k = 0; k < 2; ++k) { + + my_argc = 0; + if (special_argv != 0) { + for (j = 0; special_argv[j] != 0; ++j) { + if (!strcmp(special_argv[j], "--")) { + break; + } else if (isOption(special_argv[j])) { + if (k != 0) + my_argv[my_argc] = special_argv[j]; + my_argc++; + } + } + } + + if (k == 0) { + my_argc += (*argcp + 1); + my_argv = dlg_calloc(const char *, (size_t) my_argc); + assert_ptr(my_argv, "unescape_argv"); + } + } + + for (j = 1; j < *argcp; j++) { + bool escaped = FALSE; + if (!strcmp((*argvp)[j], "--")) { + escaped = TRUE; + dlg_eat_argv(argcp, argvp, j, 1); + } else if (!strcmp((*argvp)[j], "--args")) { + fprintf(stderr, "Showing arguments at arg%d\n", j); + for (k = 0; k < *argcp; ++k) { + fprintf(stderr, " arg%d:%s\n", k, (*argvp)[k]); + } + dlg_eat_argv(argcp, argvp, j, 1); + --j; + } else if (!strcmp((*argvp)[j], "--file")) { + if (++count_includes > limit_includes) { + handle_leaks(); + dlg_exiterr("Too many --file options"); + } + + if ((filename = (*argvp)[j + 1]) != 0) { + FILE *fp; + char **list; + char *blob; + int added; + size_t bytes_read; + size_t length; + int n; + + if (*filename == '&') { + fp = fdopen(atoi(filename + sizeof(char)), "r"); + } else { + fp = fopen(filename, "r"); + } + + if (fp) { + DLG_TRACE(("# opened --file %s ..\n", filename)); + blob = NULL; + length = 0; + do { + blob = dlg_realloc(char, length + BUFSIZ + 1, blob); + assert_ptr(blob, "unescape_argv"); + bytes_read = fread(blob + length, + sizeof(char), + (size_t) BUFSIZ, + fp); + length += bytes_read; + if (ferror(fp)) { + handle_leaks(); + dlg_exiterr("error on filehandle in unescape_argv"); + } + } while (bytes_read == BUFSIZ); + fclose(fp); + + blob[length] = '\0'; + ignore_leak(blob); + + list = dlg_string_to_argv(blob); + added = dlg_count_argv(list); + if (added > 2) { + /* *argcp arguments before the expansion of --file + - 2 for the removal of '--file <filepath>' + + added for the arguments contained in <filepath> + + 1 for the terminating NULL pointer */ + size_t need = (size_t) (*argcp + added - 1); + if (doalloc) { + *argvp = dlg_realloc(char *, need, *argvp); + assert_ptr(*argvp, "unescape_argv"); + } else { + char **newp = dlg_malloc(char *, need); + ignore_leak(newp); + assert_ptr(newp, "unescape_argv"); + for (n = 0; n < *argcp; ++n) { + newp[n] = (*argvp)[n]; + } + /* The new array is not NULL-terminated yet. */ + *argvp = newp; + doalloc = TRUE; + } + my_argv = dlg_realloc(const char *, need, my_argv); + assert_ptr(my_argv, "unescape_argv"); + + /* Shift the arguments after '--file <filepath>' + right by (added - 2) positions */ + for (n = *argcp - 1; n >= j + 2; --n) { + (*argvp)[n + added - 2] = (*argvp)[n]; + } + } else if (added < 2) { + /* 0 or 1 argument read from the included file + -> shift the arguments after '--file <filepath>' + left by (2 - added) positions */ + for (n = j + added; n + 2 - added < *argcp; ++n) { + (*argvp)[n] = (*argvp)[n + 2 - added]; + } + } + /* Copy the inserted arguments to *argvp */ + for (n = 0; n < added; ++n) { + (*argvp)[n + j] = list[n]; + } + *argcp += added - 2; + (*argvp)[*argcp] = 0; /* Write the NULL terminator */ + free(list); /* No-op if 'list' is NULL */ + /* Force rescan starting from the first inserted argument */ + --j; + DLG_TRACE(("# finished --file\n")); + continue; + } else { + handle_leaks(); + dlg_exiterr("Cannot open --file %s", filename); + } + } else { + handle_leaks(); + dlg_exiterr("No value given for --file"); + } + } + if (!escaped + && (*argvp)[j] != 0 + && !strncmp((*argvp)[j], "--", (size_t) 2) + && isalpha(UCH((*argvp)[j][2]))) { + my_argv[my_argc++] = (*argvp)[j]; + DLG_TRACE(("#\toption argv[%d]=%s\n", j, (*argvp)[j])); + } + } + + my_argv[my_argc] = 0; + + known_opts = my_argc; + dialog_opts = my_argv; + + DLG_TRACE(("#\t%d options vs %d arguments\n", known_opts, *argcp)); + dialog_argv = (*argvp); +} + +static eOptions +lookupOption(const char *name, int pass) +{ + unsigned n; + eOptions result = o_unknown; + + if (isOption(name)) { + name += 2; + for (n = 0; n < sizeof(options) / sizeof(options[0]); n++) { + if ((pass & options[n].pass) != 0 + && !strcmp(name, options[n].name)) { + result = options[n].code; + break; + } + } + } + return result; +} + +static void +Usage(const char *msg) +{ + handle_leaks(); + dlg_exiterr("Error: %s.\nUse --help to list options.\n\n", msg); +} + +/* + * Count arguments, stopping at the end of the argument list, or on any of our + * "--" tokens. + */ +static int +arg_rest(char *argv[]) +{ + int i = 1; /* argv[0] points to a "--" token */ + + while (argv[i] != 0 + && (!isOption(argv[i]) || lookupOption(argv[i], 7) == o_unknown)) + i++; + return i; +} + +/* + * In MultiWidget this function is needed to count how many tags + * a widget (menu, checklist, radiolist) has + */ +static int +howmany_tags(char *argv[], int group) +{ + int result = 0; + int have; + char temp[80]; + + while (argv[0] != 0) { + if (isOption(argv[0])) + break; + if ((have = arg_rest(argv)) < group) { + const char *format = _("Expected %d arguments, found only %d"); + sprintf(temp, format, group, have); + Usage(temp); + } else if ((have % group) != 0) { + const char *format = _("Expected %d arguments, found extra %d"); + sprintf(temp, format, group, (have % group)); + Usage(temp); + } + + argv += have; + result += (have / group); + } + + return result; +} + +static int +numeric_arg(char **av, int n) +{ + int result = 0; + + if (n < dlg_count_argv(av)) { + char msg[80]; + char *last = 0; + result = (int) strtol(av[n], &last, 10); + + if (last == 0 || *last != 0) { + sprintf(msg, "Expected a number for token %d of %.20s", n, av[0]); + Usage(msg); + } + } + return result; +} + +static char * +optional_str(char **av, int n, char *dft) +{ + char *ret = dft; + if (arg_rest(av) > n) + ret = av[n]; + return ret; +} + +#if defined(HAVE_DLG_GAUGE) || defined(HAVE_XDIALOG) +static int +optional_num(char **av, int n, int dft) +{ + int ret = dft; + if (arg_rest(av) > n) + ret = numeric_arg(av, n); + return ret; +} +#endif + +/* + * On AIX 4.x, we have to flush the output right away since there is a bug in + * the curses package which discards stdout even when we've used newterm to + * redirect output to /dev/tty. + */ +static int +show_result(int ret) +{ + bool either = FALSE; + + switch (ret) { + case DLG_EXIT_OK: + case DLG_EXIT_EXTRA: + case DLG_EXIT_HELP: + case DLG_EXIT_ITEM_HELP: + if ((dialog_state.output_count > 1) && !dialog_vars.separate_output) { + fputs((dialog_state.separate_str + ? dialog_state.separate_str + : DEFAULT_SEPARATE_STR), + dialog_state.output); + either = TRUE; + } + if (dialog_vars.input_result != 0 + && dialog_vars.input_result[0] != '\0') { + fputs(dialog_vars.input_result, dialog_state.output); + DLG_TRACE(("# input_result:\n%s\n", dialog_vars.input_result)); + either = TRUE; + } + if (either) { + fflush(dialog_state.output); + } + break; + } + return ret; +} + +/* + * These are the widget callers. + */ + +static int +call_yesno(CALLARGS) +{ + *offset_add = 4; + return dialog_yesno(t, + av[1], + numeric_arg(av, 2), + numeric_arg(av, 3)); +} + +static int +call_msgbox(CALLARGS) +{ + *offset_add = 4; + return dialog_msgbox(t, + av[1], + numeric_arg(av, 2), + numeric_arg(av, 3), 1); +} + +static int +call_infobox(CALLARGS) +{ + *offset_add = 4; + return dialog_msgbox(t, + av[1], + numeric_arg(av, 2), + numeric_arg(av, 3), 0); +} + +static int +call_textbox(CALLARGS) +{ + *offset_add = 4; + return dialog_textbox(t, + av[1], + numeric_arg(av, 2), + numeric_arg(av, 3)); +} + +static int +call_menu(CALLARGS) +{ + int tags = howmany_tags(av + 5, MENUBOX_TAGS); + *offset_add = 5 + tags * MENUBOX_TAGS; + + return dialog_menu(t, + av[1], + numeric_arg(av, 2), + numeric_arg(av, 3), + numeric_arg(av, 4), + tags, av + 5); +} + +static int +call_inputmenu(CALLARGS) +{ + int tags = howmany_tags(av + 5, MENUBOX_TAGS); + bool free_extra_label = FALSE; + int result; + + dialog_vars.input_menu = TRUE; + + if (dialog_vars.max_input == 0) + dialog_vars.max_input = MAX_LEN / 2; + + if (dialog_vars.extra_label == 0) { + free_extra_label = TRUE; + dialog_vars.extra_label = dlg_strclone(_("Rename")); + } + + dialog_vars.extra_button = TRUE; + + *offset_add = 5 + tags * MENUBOX_TAGS; + result = dialog_menu(t, + av[1], + numeric_arg(av, 2), + numeric_arg(av, 3), + numeric_arg(av, 4), + tags, av + 5); + if (free_extra_label) { + free(dialog_vars.extra_label); + dialog_vars.extra_label = 0; + } + return result; +} + +static int +call_checklist(CALLARGS) +{ + int tags = howmany_tags(av + 5, CHECKBOX_TAGS); + int code; + + *offset_add = 5 + tags * CHECKBOX_TAGS; + code = dialog_checklist(t, + av[1], + numeric_arg(av, 2), + numeric_arg(av, 3), + numeric_arg(av, 4), + tags, av + 5, FLAG_CHECK); + return code; +} + +static int +call_radiolist(CALLARGS) +{ + int tags = howmany_tags(av + 5, CHECKBOX_TAGS); + *offset_add = 5 + tags * CHECKBOX_TAGS; + return dialog_checklist(t, + av[1], + numeric_arg(av, 2), + numeric_arg(av, 3), + numeric_arg(av, 4), + tags, av + 5, FLAG_RADIO); +} + +static int +call_inputbox(CALLARGS) +{ + *offset_add = arg_rest(av); + return dialog_inputbox(t, + av[1], + numeric_arg(av, 2), + numeric_arg(av, 3), + optional_str(av, 4, 0), 0); +} + +static int +call_passwordbox(CALLARGS) +{ + *offset_add = arg_rest(av); + return dialog_inputbox(t, + av[1], + numeric_arg(av, 2), + numeric_arg(av, 3), + optional_str(av, 4, 0), 1); +} + +#ifdef HAVE_XDIALOG +static int +call_calendar(CALLARGS) +{ + *offset_add = arg_rest(av); + return dialog_calendar(t, + av[1], + numeric_arg(av, 2), + numeric_arg(av, 3), + optional_num(av, 4, -1), + optional_num(av, 5, -1), + optional_num(av, 6, -1)); +} + +static int +call_dselect(CALLARGS) +{ + *offset_add = arg_rest(av); + return dialog_dselect(t, + av[1], + numeric_arg(av, 2), + numeric_arg(av, 3)); +} + +static int +call_editbox(CALLARGS) +{ + *offset_add = 4; + return dialog_editbox(t, + av[1], + numeric_arg(av, 2), + numeric_arg(av, 3)); +} + +static int +call_fselect(CALLARGS) +{ + *offset_add = arg_rest(av); + return dialog_fselect(t, + av[1], + numeric_arg(av, 2), + numeric_arg(av, 3)); +} + +static int +call_timebox(CALLARGS) +{ + *offset_add = arg_rest(av); + return dialog_timebox(t, + av[1], + numeric_arg(av, 2), + numeric_arg(av, 3), + optional_num(av, 4, -1), + optional_num(av, 5, -1), + optional_num(av, 6, -1)); +} +#endif /* HAVE_XDIALOG */ + +/* dialog 1.2 widgets */ +#ifdef HAVE_XDIALOG2 + +#define DisableNoTags() \ + bool save_no_tags = dialog_vars.no_tags; \ + bool save_no_items = dialog_vars.no_items; \ + dialog_vars.no_tags = TRUE; \ + dialog_vars.no_items = FALSE + +#define RestoreNoTags() \ + dialog_vars.no_tags = save_no_tags; \ + dialog_vars.no_items = save_no_items + +static int +call_buildlist(CALLARGS) +{ + int tags = howmany_tags(av + 5, CHECKBOX_TAGS); + int result; + + DisableNoTags(); + + *offset_add = 5 + tags * CHECKBOX_TAGS; + result = dialog_buildlist(t, + av[1], + numeric_arg(av, 2), + numeric_arg(av, 3), + numeric_arg(av, 4), + tags, av + 5, + dialog_vars.reorder); + RestoreNoTags(); + return result; +} + +static int +call_rangebox(CALLARGS) +{ + int min_value; + + *offset_add = arg_rest(av); + min_value = numeric_arg(av, 4); + return dialog_rangebox(t, + av[1], + numeric_arg(av, 2), + numeric_arg(av, 3), + min_value, + numeric_arg(av, 5), + (*offset_add > 6) ? numeric_arg(av, 6) : min_value); +} + +static int +call_treeview(CALLARGS) +{ + int tags = howmany_tags(av + 5, TREEVIEW_TAGS); + int result; + + DisableNoTags(); + + *offset_add = arg_rest(av); + result = dialog_treeview(t, + av[1], + numeric_arg(av, 2), + numeric_arg(av, 3), + numeric_arg(av, 4), + tags, av + 5, FLAG_RADIO); + RestoreNoTags(); + return result; +} +#endif /* HAVE_XDIALOG */ + +#ifdef HAVE_DLG_FORMBOX +static int +call_form(CALLARGS) +{ + int group = FORMBOX_TAGS; + int tags = howmany_tags(av + 5, group); + *offset_add = 5 + tags * group; + + return dialog_form(t, + av[1], + numeric_arg(av, 2), + numeric_arg(av, 3), + numeric_arg(av, 4), + tags, av + 5); +} + +static int +call_password_form(CALLARGS) +{ + unsigned save = dialog_vars.formitem_type; + int result; + + dialog_vars.formitem_type = 1; + result = call_form(PASSARGS); + dialog_vars.formitem_type = save; + + return result; +} +#endif /* HAVE_DLG_FORMBOX */ + +#ifdef HAVE_DLG_MIXEDFORM +static int +call_mixed_form(CALLARGS) +{ + int group = MIXEDFORM_TAGS; + int tags = howmany_tags(av + 5, group); + *offset_add = 5 + tags * group; + + return dialog_mixedform(t, + av[1], + numeric_arg(av, 2), + numeric_arg(av, 3), + numeric_arg(av, 4), + tags, av + 5); +} +#endif /* HAVE_DLG_MIXEDFORM */ + +#ifdef HAVE_DLG_GAUGE +static int +call_gauge(CALLARGS) +{ + *offset_add = arg_rest(av); + return dialog_gauge(t, + av[1], + numeric_arg(av, 2), + numeric_arg(av, 3), + optional_num(av, 4, 0)); +} + +static int +call_pause(CALLARGS) +{ + *offset_add = arg_rest(av); + return dialog_pause(t, + av[1], + numeric_arg(av, 2), + numeric_arg(av, 3), + numeric_arg(av, 4)); +} +#endif + +#ifdef HAVE_MIXEDGAUGE +static int +call_mixed_gauge(CALLARGS) +{ +#define MIXEDGAUGE_BASE 5 + int tags = howmany_tags(av + MIXEDGAUGE_BASE, MIXEDGAUGE_TAGS); + *offset_add = MIXEDGAUGE_BASE + tags * MIXEDGAUGE_TAGS; + return dialog_mixedgauge(t, + av[1], + numeric_arg(av, 2), + numeric_arg(av, 3), + numeric_arg(av, 4), + tags, av + MIXEDGAUGE_BASE); +} +#endif + +#ifdef HAVE_DLG_GAUGE +static int +call_prgbox(CALLARGS) +{ + *offset_add = arg_rest(av); + /* the original version does not accept a prompt string, but for + * consistency we allow it. + */ + return ((*offset_add == 5) + ? dialog_prgbox(t, + av[1], + av[2], + numeric_arg(av, 3), + numeric_arg(av, 4), TRUE) + : dialog_prgbox(t, + "", + av[1], + numeric_arg(av, 2), + numeric_arg(av, 3), TRUE)); +} +#endif + +#ifdef HAVE_DLG_GAUGE +static int +call_programbox(CALLARGS) +{ + int result; + + *offset_add = arg_rest(av); + /* this function is a compromise between --prgbox and --progressbox. + */ + result = ((*offset_add == 4) + ? dlg_progressbox(t, + av[1], + numeric_arg(av, 2), + numeric_arg(av, 3), + TRUE, + dialog_state.pipe_input) + : dlg_progressbox(t, + "", + numeric_arg(av, 1), + numeric_arg(av, 2), + TRUE, + dialog_state.pipe_input)); + dialog_state.pipe_input = 0; + return result; +} +#endif + +#ifdef HAVE_DLG_GAUGE +static int +call_progressbox(CALLARGS) +{ + *offset_add = arg_rest(av); + /* the original version does not accept a prompt string, but for + * consistency we allow it. + */ + return ((*offset_add == 4) + ? dialog_progressbox(t, + av[1], + numeric_arg(av, 2), + numeric_arg(av, 3)) + : dialog_progressbox(t, + "", + numeric_arg(av, 1), + numeric_arg(av, 2))); +} +#endif + +#ifdef HAVE_DLG_TAILBOX +static int +call_tailbox(CALLARGS) +{ + *offset_add = 4; + return dialog_tailbox(t, + av[1], + numeric_arg(av, 2), + numeric_arg(av, 3), + FALSE); +} + +static int +call_tailboxbg(CALLARGS) +{ + *offset_add = 4; + return dialog_tailbox(t, + av[1], + numeric_arg(av, 2), + numeric_arg(av, 3), + TRUE); +} +#endif +/* *INDENT-OFF* */ +static const Mode modes[] = +{ + {o_yesno, 4, 4, call_yesno}, + {o_msgbox, 4, 4, call_msgbox}, + {o_infobox, 4, 4, call_infobox}, + {o_textbox, 4, 4, call_textbox}, + {o_menu, 6, 0, call_menu}, + {o_inputmenu, 6, 0, call_inputmenu}, + {o_checklist, 7, 0, call_checklist}, + {o_radiolist, 7, 0, call_radiolist}, + {o_inputbox, 4, 5, call_inputbox}, + {o_passwordbox, 4, 5, call_passwordbox}, +#ifdef HAVE_DLG_GAUGE + {o_gauge, 4, 5, call_gauge}, + {o_pause, 5, 5, call_pause}, + {o_prgbox, 4, 5, call_prgbox}, + {o_programbox, 3, 4, call_programbox}, + {o_progressbox, 3, 4, call_progressbox}, +#endif +#ifdef HAVE_DLG_FORMBOX + {o_passwordform, 13, 0, call_password_form}, + {o_form, 13, 0, call_form}, +#endif +#ifdef HAVE_MIXEDGAUGE + {o_mixedgauge, MIXEDGAUGE_BASE, 0, call_mixed_gauge}, +#endif +#ifdef HAVE_DLG_MIXEDFORM + {o_mixedform, 13, 0, call_mixed_form}, +#endif +#ifdef HAVE_DLG_TAILBOX + {o_tailbox, 4, 4, call_tailbox}, + {o_tailboxbg, 4, 4, call_tailboxbg}, +#endif +#ifdef HAVE_XDIALOG + {o_calendar, 4, 7, call_calendar}, + {o_dselect, 4, 5, call_dselect}, + {o_editbox, 4, 4, call_editbox}, + {o_fselect, 4, 5, call_fselect}, + {o_timebox, 4, 7, call_timebox}, +#endif +#ifdef HAVE_XDIALOG2 + {o_buildlist, 4, 0, call_buildlist}, + {o_rangebox, 5, 7, call_rangebox}, + {o_treeview, 4, 0, call_treeview}, +#endif +}; +/* *INDENT-ON* */ + +static char * +optionString(char **argv, int *num) +{ + int next = *num + 1; + char *result = argv[next]; + if (result == 0) { + char temp[80]; + sprintf(temp, "Expected a string-parameter for %.20s", argv[*num]); + Usage(temp); + } + *num = next; + return result; +} + +static int +optionValue(char **argv, int *num) +{ + int next = *num + 1; + char *src = argv[next]; + char *tmp = 0; + int result = 0; + + if (src != 0) { + result = (int) strtol(src, &tmp, 0); + if (tmp == 0 || *tmp != 0) + src = 0; + } + + if (src == 0) { + char temp[80]; + sprintf(temp, "Expected a numeric-parameter for %.20s", argv[*num]); + Usage(temp); + } + *num = next; + return result; +} + +/* Return exit-code for a named button */ +static int +button_code(const char *name) +{ + /* *INDENT-OFF* */ + static struct { + const char *name; + int code; + } table[] = { + { "ok", DLG_EXIT_OK }, + { "yes", DLG_EXIT_OK }, + { "cancel", DLG_EXIT_CANCEL }, + { "no", DLG_EXIT_CANCEL }, + { "help", DLG_EXIT_HELP }, + { "extra", DLG_EXIT_EXTRA }, + }; + /* *INDENT-ON* */ + + int code = DLG_EXIT_ERROR; + size_t i; + + for (i = 0; i < (sizeof(table) / sizeof(table[0])); i++) { + if (!dlg_strcmp(name, table[i].name)) { + code = table[i].code; + break; + } + } + + if (code == DLG_EXIT_ERROR) { + char temp[80]; + sprintf(temp, "Button name \"%.20s\" unknown", name); + Usage(temp); + } + + return code; +} + +/* + * If this is the last option, we do not want any error messages - just our + * output. Calling end_dialog() cancels the refresh() at the end of the + * program as well. + */ +static void +IgnoreNonScreen(char **argv, int offset) +{ + if (argv[offset + 1] == 0) { + ignore_unknown = TRUE; + end_dialog(); + } +} + +static void +PrintTextOnly(char **argv, int *offset, eOptions code) +{ + /* TODO - handle two optional numeric params */ + char *text; + int height = 0; + int width = 0; + int height2 = 0; + int width2 = 0; + int next = arg_rest(argv + *offset); + + if (LINES <= 0 && COLS <= 0) + dlg_ttysize(fileno(dialog_state.input), &LINES, &COLS); + + text = strdup(optionString(argv, offset)); + IgnoreNonScreen(argv, *offset); + + if (next >= 1) { + next = MIN(next, 3); + height = numeric_arg(argv, *offset + 1); + if (next >= 2) + width = numeric_arg(argv, *offset + 2); + *offset += next - 1; + } + + dlg_trim_string(text); + dlg_auto_size(NULL, text, &height2, &width2, height, width); + + switch (code) { + case o_print_text_only: + dialog_state.text_only = TRUE; + dlg_print_autowrap(stdscr, text, height2, width2); + dialog_state.text_only = FALSE; + break; + case o_print_text_size: + fprintf(dialog_state.output, "%d %d\n", + dialog_state.text_height, + dialog_state.text_width); + break; + default: + break; + } +} + +/* + * Print parts of a message + */ +static void +PrintList(const char *const *list) +{ + const char *leaf = strrchr(program, '/'); + unsigned n = 0; + + if (leaf != 0) + leaf++; + else + leaf = program; + + while (*list != 0) { + fprintf(dialog_state.output, *list, n ? leaf : dialog_version()); + (void) fputc('\n', dialog_state.output); + n = 1; + list++; + } +} + +static const Mode * +lookupMode(eOptions code) +{ + const Mode *modePtr = 0; + unsigned n; + + for (n = 0; n < sizeof(modes) / sizeof(modes[0]); n++) { + if (modes[n].code == code) { + modePtr = &modes[n]; + break; + } + } + return modePtr; +} + +static int +compare_opts(const void *a, const void *b) +{ + Options *const *p = (Options * const *) a; + Options *const *q = (Options * const *) b; + return strcmp((*p)->name, (*q)->name); +} + +/* + * Print program's version. + */ +static void +PrintVersion(FILE *fp) +{ + fprintf(fp, "Version: %s\n", dialog_version()); +} + +/* + * Print program help-message + */ +static void +Help(void) +{ + static const char *const tbl_1[] = + { + "cdialog (ComeOn Dialog!) version %s", + "Copyright 2000-2017,2018 Thomas E. Dickey", + "This is free software; see the source for copying conditions. There is NO", + "warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.", + "", + "* Display dialog boxes from shell scripts *", + "", + "Usage: %s <options> { --and-widget <options> }", + "where options are \"common\" options, followed by \"box\" options", + "", +#ifdef HAVE_RC_FILE + "Special options:", + " [--create-rc \"file\"]", +#endif + 0 + }, *const tbl_3[] = + { + "", + "Auto-size with height and width = 0. Maximize with height and width = -1.", + "Global-auto-size if also menu_height/list_height = 0.", + 0 + }; + size_t limit = sizeof(options) / sizeof(options[0]); + size_t j, k; + const Options **opts; + + end_dialog(); + dialog_state.output = stdout; + + opts = dlg_calloc(const Options *, limit); + assert_ptr(opts, "Help"); + for (j = 0; j < limit; ++j) { + opts[j] = &(options[j]); + } + qsort(opts, limit, sizeof(Options *), compare_opts); + + PrintList(tbl_1); + fprintf(dialog_state.output, "Common options:\n "); + for (j = k = 0; j < limit; j++) { + if ((opts[j]->pass & 1) + && opts[j]->help != 0) { + size_t len = 6 + strlen(opts[j]->name) + strlen(opts[j]->help); + k += len; + if (k > 75) { + fprintf(dialog_state.output, "\n "); + k = len; + } + fprintf(dialog_state.output, " [--%s%s%s]", opts[j]->name, + *(opts[j]->help) ? " " : "", opts[j]->help); + } + } + fprintf(dialog_state.output, "\nBox options:\n"); + for (j = 0; j < limit; j++) { + if ((opts[j]->pass & 2) != 0 + && opts[j]->help != 0 + && lookupMode(opts[j]->code)) { + fprintf(dialog_state.output, " --%-12s %s\n", opts[j]->name, + opts[j]->help); + } + } + PrintList(tbl_3); + + free(opts); + handle_leaks(); + dlg_exit(DLG_EXIT_OK); +} + +#ifdef HAVE_DLG_TRACE +/* + * Only the first call to dlg_trace will open a trace file. But each time + * --trace is parsed, we show the whole parameter list as it is at that moment, + * counting discarded parameters. The only way to capture the whole parameter + * list is if --trace is the first option. + */ +static void +process_trace_option(char **argv, int *offset) +{ + int j; + + if (dialog_state.trace_output == 0) { + dlg_trace(optionString(argv, offset)); + } else { + DLG_TRACE(("# ignore extra --trace option\n")); + *offset += 1; + } + + DLG_TRACE(("# Parameters:\n")); + for (j = 0; argv[j] != 0; ++j) { + DLG_TRACE(("#\targv[%d] = %s\n", j, argv[j])); + } +} +#endif + +/* + * "Common" options apply to all widgets more/less. Most of the common options + * set values in dialog_vars, a few set dialog_state and a couple write to the + * output stream. + */ +static int +process_common_options(int argc, char **argv, int offset, bool output) +{ + bool done = FALSE; + eOptions code; + + DLG_TRACE(("# process_common_options, offset %d\n", offset)); + + while (offset < argc && !done) { /* Common options */ + DLG_TRACE(("#\targv[%d] = %s\n", offset, argv[offset])); + switch (code = lookupOption(argv[offset], 1)) { + case o_title: + dialog_vars.title = optionString(argv, &offset); + break; + case o_backtitle: + dialog_vars.backtitle = optionString(argv, &offset); + break; + case o_separate_widget: + dialog_state.separate_str = optionString(argv, &offset); + break; + case o_separate_output: + dialog_vars.separate_output = TRUE; + break; + case o_colors: + dialog_vars.colors = TRUE; + break; + case o_cr_wrap: + dialog_vars.cr_wrap = TRUE; + break; + case o_no_nl_expand: + dialog_vars.no_nl_expand = TRUE; + break; + case o_no_collapse: + dialog_vars.nocollapse = TRUE; + break; + case o_no_kill: + dialog_vars.cant_kill = TRUE; + break; + case o_nocancel: + dialog_vars.nocancel = TRUE; + break; + case o_nook: + dialog_vars.nook = TRUE; + break; + case o_quoted: + dialog_vars.quoted = TRUE; + break; + case o_single_quoted: + dialog_vars.single_quoted = TRUE; + break; + case o_size_err: + dialog_vars.size_err = TRUE; + break; + case o_beep: + dialog_vars.beep_signal = TRUE; + break; + case o_beep_after: + dialog_vars.beep_after_signal = TRUE; + break; + case o_scrollbar: + dialog_state.use_scrollbar = TRUE; + break; + case o_shadow: + dialog_state.use_shadow = TRUE; + break; + case o_defaultno: + dialog_vars.defaultno = TRUE; + dialog_vars.default_button = DLG_EXIT_CANCEL; + break; + case o_default_button: + dialog_vars.default_button = button_code(optionString(argv, &offset)); + dialog_vars.defaultno = dialog_vars.default_button == DLG_EXIT_CANCEL; + break; + case o_default_item: + dialog_vars.default_item = optionString(argv, &offset); + break; + case o_insecure: + dialog_vars.insecure = TRUE; + break; + case o_item_help: + dialog_vars.item_help = TRUE; + break; + case o_help_line: + dialog_vars.help_line = optionString(argv, &offset); + break; + case o_help_file: + dialog_vars.help_file = optionString(argv, &offset); + break; + case o_help_button: + dialog_vars.help_button = TRUE; + break; + case o_help_status: + dialog_vars.help_status = TRUE; + break; + case o_help_tags: + dialog_vars.help_tags = TRUE; + break; + case o_extra_button: + dialog_vars.extra_button = TRUE; + break; + case o_ignore: + ignore_unknown = TRUE; + break; + case o_keep_window: + dialog_vars.keep_window = TRUE; + break; + case o_last_key: + dialog_vars.last_key = TRUE; + break; + case o_no_shadow: + dialog_state.use_shadow = FALSE; + break; + case o_print_size: + dialog_vars.print_siz = TRUE; + break; + case o_print_text_only: + case o_print_text_size: + PrintTextOnly(argv, &offset, code); + break; + case o_print_maxsize: + if (output) { + IgnoreNonScreen(argv, offset); + fflush(dialog_state.output); + fprintf(dialog_state.output, "MaxSize: %d, %d\n", SLINES, SCOLS); + } + break; + case o_print_version: + if (output) { + PrintVersion(dialog_state.output); + } + break; + case o_separator: + case o_output_separator: + dialog_vars.output_separator = optionString(argv, &offset); + break; + case o_column_separator: + dialog_vars.column_separator = optionString(argv, &offset); + break; + case o_tab_correct: + dialog_vars.tab_correct = TRUE; + break; + case o_sleep: + dialog_vars.sleep_secs = optionValue(argv, &offset); + break; + case o_timeout: + dialog_vars.timeout_secs = optionValue(argv, &offset); + break; + case o_max_input: + dialog_vars.max_input = optionValue(argv, &offset); + break; + case o_tab_len: + dialog_state.tab_len = optionValue(argv, &offset); + break; + case o_trim: + dialog_vars.trim_whitespace = TRUE; + break; + case o_visit_items: + dialog_state.visit_items = TRUE; + dialog_state.visit_cols = 1; + break; + case o_aspect: + dialog_state.aspect_ratio = optionValue(argv, &offset); + break; + case o_begin: + dialog_vars.begin_set = TRUE; + dialog_vars.begin_y = optionValue(argv, &offset); + dialog_vars.begin_x = optionValue(argv, &offset); + break; + case o_clear: + dialog_vars.dlg_clear_screen = TRUE; + break; + case o_yes_label: + dialog_vars.yes_label = optionString(argv, &offset); + break; + case o_no_label: + dialog_vars.no_label = optionString(argv, &offset); + break; + case o_ok_label: + dialog_vars.ok_label = optionString(argv, &offset); + break; + case o_cancel_label: + dialog_vars.cancel_label = optionString(argv, &offset); + break; + case o_extra_label: + dialog_vars.extra_label = optionString(argv, &offset); + break; + case o_exit_label: + dialog_vars.exit_label = optionString(argv, &offset); + break; + case o_help_label: + dialog_vars.help_label = optionString(argv, &offset); + break; + case o_date_format: + dialog_vars.date_format = optionString(argv, &offset); + break; + case o_time_format: + dialog_vars.time_format = optionString(argv, &offset); + break; + case o_keep_tite: + dialog_vars.keep_tite = TRUE; + break; + case o_ascii_lines: + dialog_vars.ascii_lines = TRUE; + dialog_vars.no_lines = FALSE; + break; + case o_no_lines: + dialog_vars.no_lines = TRUE; + dialog_vars.ascii_lines = FALSE; + break; + case o_no_mouse: + dialog_state.no_mouse = TRUE; + mouse_close(); + break; +#ifdef HAVE_WHIPTAIL + case o_topleft: + dialog_vars.begin_set = TRUE; + dialog_vars.begin_y = 0; + dialog_vars.begin_x = 0; + break; + case o_fullbutton: + /* ignore */ + break; +#endif + /* options of Xdialog which we ignore */ + case o_icon: + case o_wmclass: + (void) optionString(argv, &offset); + /* FALLTHRU */ + case o_allow_close: + case o_auto_placement: + case o_fixed_font: + case o_keep_colors: + case o_no_close: + case o_no_cr_wrap: + case o_screen_center: + case o_smooth: + case o_under_mouse: + break; + case o_unknown: + if (ignore_unknown) + break; + /* FALLTHRU */ + default: /* no more common options */ + done = TRUE; + break; +#ifdef HAVE_DLG_TRACE + case o_trace: + process_trace_option(argv, &offset); + break; +#endif +#if defined(HAVE_XDIALOG2) || defined(HAVE_WHIPTAIL) + case o_no_items: + dialog_vars.no_items = TRUE; + break; + case o_no_tags: + dialog_vars.no_tags = TRUE; + break; +#endif +#ifdef HAVE_XDIALOG2 + case o_reorder: + dialog_vars.reorder = TRUE; + break; +#endif +#ifdef HAVE_XDIALOG + case o_week_start: + dialog_vars.week_start = optionString(argv, &offset); + break; +#endif + case o_iso_week: + dialog_vars.iso_week = TRUE; + if (dialog_vars.week_start == 0) { /* Monday is implied */ + static char default_1st[] = "1"; + dialog_vars.week_start = default_1st; + } + break; + } + if (!done) + offset++; + } + + if (dialog_state.aspect_ratio == 0) + dialog_state.aspect_ratio = DEFAULT_ASPECT_RATIO; + + return offset; +} + +/* + * Initialize options at the start of a series of common options culminating + * in a widget. + */ +static void +init_result(char *buffer) +{ + static bool first = TRUE; + + DLG_TRACE(("# init_result\n")); + + /* clear everything we do not save for the next widget */ + memset(&dialog_vars, 0, sizeof(dialog_vars)); + + dialog_vars.input_result = buffer; + dialog_vars.input_result[0] = '\0'; + + dialog_vars.default_button = -1; + + /* + * The first time this is called, check for common options given by an + * environment variable. + */ + if (first) { + char *env = getenv("DIALOGOPTS"); + if (env != 0) + env = dlg_strclone(env); + if (env != 0) { + special_argv = dlg_string_to_argv(env); + special_argc = dlg_count_argv(special_argv); + } + first = FALSE; + } + + if (special_argv != 0) { + process_common_options(special_argc, special_argv, 0, FALSE); + } +} + +int +main(int argc, char *argv[]) +{ + char temp[256]; + bool esc_pressed = FALSE; + bool keep_tite = FALSE; + bool first_time = TRUE; + int offset = 1; + int offset_add; + int retval = DLG_EXIT_OK; + int j, have; + eOptions code; + const Mode *modePtr; + char my_buffer[MAX_LEN + 1]; + + memset(&dialog_state, 0, sizeof(dialog_state)); + memset(&dialog_vars, 0, sizeof(dialog_vars)); + +#if defined(ENABLE_NLS) + /* initialize locale support */ + setlocale(LC_ALL, ""); + bindtextdomain(NLS_TEXTDOMAIN, LOCALEDIR); + textdomain(NLS_TEXTDOMAIN); +#elif defined(HAVE_SETLOCALE) + (void) setlocale(LC_ALL, ""); +#endif + + init_result(my_buffer); /* honor $DIALOGOPTS */ + unescape_argv(&argc, &argv); + program = argv[0]; + dialog_state.output = stderr; + dialog_state.input = stdin; + + /* + * Look for the last --stdout, --stderr or --output-fd option, and use + * that. We can only write to one of them. If --stdout is used, that + * can interfere with initializing the curses library, so we want to + * know explicitly if it is used. + * + * Also, look for any --version or --help message, processing those + * immediately. + */ + while (offset < argc) { + int base = offset; + switch (lookupOption(argv[offset], 7)) { + case o_stdout: + dialog_state.output = stdout; + break; + case o_stderr: + dialog_state.output = stderr; + break; + case o_input_fd: + if ((j = optionValue(argv, &offset)) < 0 + || (dialog_state.input = fdopen(j, "r")) == 0) { + handle_leaks(); + dlg_exiterr("Cannot open input-fd\n"); + } + break; + case o_output_fd: + if ((j = optionValue(argv, &offset)) < 0 + || (dialog_state.output = fdopen(j, "w")) == 0) { + handle_leaks(); + dlg_exiterr("Cannot open output-fd\n"); + } + break; + case o_keep_tite: + keep_tite = TRUE; + break; + case o_version: + dialog_state.output = stdout; + PrintVersion(dialog_state.output); + dlg_exit(DLG_EXIT_OK); + break; + case o_help: + Help(); + break; +#ifdef HAVE_DLG_TRACE + case o_trace: + /* + * Process/remove the --trace option if it is the first option. + * Otherwise, process it in more/less expected order as a + * "common" option. + */ + if (base == 1) { + process_trace_option(argv, &offset); + break; + } else { + ++offset; + continue; + } +#endif + default: + ++offset; + continue; + } + DLG_TRACE(("# discarding %d parameters starting with argv[%d] (%s)\n", + 1 + offset - base, base, + argv[base])); + for (j = base; j < argc; ++j) { + dialog_argv[j] = dialog_argv[j + 1 + (offset - base)]; + } + argc -= (1 + offset - base); + offset = base; + } + offset = 1; + init_result(my_buffer); + dialog_vars.keep_tite = keep_tite; /* init_result() cleared global */ + + /* + * Dialog's output may be redirected (see above). Handle the special + * case of options that only report information without interaction. + */ + if (argc == 2) { + switch (code = lookupOption(argv[1], 7)) { + case o_print_maxsize: + (void) initscr(); + endwin(); + fflush(dialog_state.output); + fprintf(dialog_state.output, "MaxSize: %d, %d\n", SLINES, SCOLS); + break; + case o_print_version: + PrintVersion(dialog_state.output); + break; + case o_clear: + initscr(); + refresh(); + endwin(); + break; + case o_ignore: + break; + default: + Help(); + break; + } + dlg_exit(DLG_EXIT_OK); + } else if (argc < 2) { + Help(); + } +#ifdef HAVE_RC_FILE + else if (lookupOption(argv[1], 7) == o_create_rc) { + if (argc != 3) { + sprintf(temp, "Expected a filename for %.50s", argv[1]); + Usage(temp); + } + if (dlg_parse_rc() == -1) { /* Read the configuration file */ + handle_leaks(); + dlg_exiterr("dialog: dlg_parse_rc"); + } + dlg_create_rc(argv[2]); + dlg_exit(DLG_EXIT_OK); + } +#endif + else { + /* + * Handle combinations of common options including --print-text-only + * which can be done before involving curses, in case we can exit + * without initializing curses (and writing to the terminal). + */ + offset = process_common_options(argc, argv, offset, TRUE); + if (offset >= argc) + dlg_exit(DLG_EXIT_OK); + } + + init_dialog(dialog_state.input, dialog_state.output); + + while (offset < argc && !esc_pressed) { + if (first_time) { + first_time = FALSE; + } else { + init_result(my_buffer); + offset = process_common_options(argc, argv, offset, TRUE); + } + + if (argv[offset] == NULL) { + if (ignore_unknown) + break; + Usage("Expected a box option"); + } + + if (dialog_vars.separate_output) { + switch (lookupOption(argv[offset], 2)) { +#ifdef HAVE_XDIALOG2 + case o_buildlist: + case o_treeview: +#endif + case o_checklist: + break; + default: + sprintf(temp, + "Unexpected widget with --separate-output %.20s", + argv[offset]); + Usage(temp); + } + } + + dlg_put_backtitle(); + + /* use a table to look for the requested mode, to avoid code duplication */ + + modePtr = 0; + if ((code = lookupOption(argv[offset], 2)) != o_unknown) + modePtr = lookupMode(code); + if (modePtr == 0) { + sprintf(temp, "%s option %.20s", + lookupOption(argv[offset], 7) != o_unknown + ? "Unexpected" + : "Unknown", + argv[offset]); + Usage(temp); + } + + have = arg_rest(&argv[offset]); + if (have < modePtr->argmin) { + sprintf(temp, "Expected at least %d tokens for %.20s, have %d", + modePtr->argmin - 1, argv[offset], + have - 1); + Usage(temp); + } + if (modePtr->argmax && have > modePtr->argmax) { + sprintf(temp, + "Expected no more than %d tokens for %.20s, have %d", + modePtr->argmax - 1, argv[offset], + have - 1); + Usage(temp); + } + + /* + * Trim whitespace from non-title option values, e.g., the ones that + * will be used as captions or prompts. Do that only for the widget + * we are about to process, since the "--trim" option is reset before + * accumulating options for each widget. + */ + for (j = offset + 1; j <= offset + have; j++) { + switch (lookupOption(argv[j - 1], 7)) { + case o_unknown: + case o_title: + case o_backtitle: + case o_help_line: + case o_help_file: + break; + default: + if (argv[j] != 0) { + char *argv_j = strdup(argv[j]); + if (argv_j != 0) { + dlg_trim_string(argv_j); + argv[j] = argv_j; + } else { + argv[j] = strdup("?"); + } + ignore_leak(argv[j]); + } + break; + } + } + + DLG_TRACE(("# execute %s\n", argv[offset])); + retval = show_result((*(modePtr->jumper)) (dialog_vars.title, + argv + offset, + &offset_add)); + DLG_TRACE(("# widget returns %d\n", retval)); + offset += offset_add; + + if (dialog_vars.input_result != my_buffer) { + free(dialog_vars.input_result); + dialog_vars.input_result = 0; + } + + if (retval == DLG_EXIT_ESC) { + esc_pressed = TRUE; + } else { + + if (dialog_vars.beep_after_signal) + (void) beep(); + + if (dialog_vars.sleep_secs) + (void) napms(dialog_vars.sleep_secs * 1000); + + if (offset < argc) { + switch (lookupOption(argv[offset], 7)) { + case o_and_widget: + offset++; + break; + case o_unknown: + sprintf(temp, "Expected --and-widget, not %.20s", + argv[offset]); + Usage(temp); + break; + default: + /* if we got a cancel, etc., stop chaining */ + if (retval != DLG_EXIT_OK) + esc_pressed = TRUE; + else + dialog_vars.dlg_clear_screen = TRUE; + break; + } + } + if (dialog_vars.dlg_clear_screen) + dlg_clear(); + } + } + + dlg_killall_bg(&retval); + if (dialog_state.screen_initialized) { + (void) refresh(); + end_dialog(); + } + handle_leaks(); + dlg_exit(retval); +} Index: vendor/dialog/1.3-20180621/dialog.h =================================================================== --- vendor/dialog/1.3-20180621/dialog.h (nonexistent) +++ vendor/dialog/1.3-20180621/dialog.h (revision 339483) @@ -0,0 +1,950 @@ +/* + * $Id: dialog.h,v 1.283 2018/06/19 22:52:11 tom Exp $ + * + * dialog.h -- common declarations for all dialog modules + * + * Copyright 2000-2017,2018 Thomas E. Dickey + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License, version 2.1 + * as published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this program; if not, write to + * Free Software Foundation, Inc. + * 51 Franklin St., Fifth Floor + * Boston, MA 02110, USA. + * + * An earlier version of this program lists as authors + * Savio Lam (lam836@cs.cuhk.hk) + */ + +#ifndef DIALOG_H_included +#define DIALOG_H_included 1 +/* *INDENT-OFF* */ + +#include <dlg_config.h> + +#ifdef __hpux +#define __HP_CURSES_COMPAT /* workaround for getattrs, etc. */ +#endif + +#include <sys/types.h> +#include <fcntl.h> +#include <unistd.h> +#include <ctype.h> +#include <stdlib.h> +#include <stdarg.h> +#include <string.h> +#include <signal.h> /* fork() etc. */ +#include <math.h> /* sqrt() */ + +/* header conflict with Solaris xpg4 versus <sys/regset.h> */ +#if defined(ERR) && (ERR == 13) +#undef ERR +#endif + +#if defined(HAVE_NCURSESW_NCURSES_H) +#include <ncursesw/ncurses.h> +#elif defined(HAVE_NCURSES_NCURSES_H) +#include <ncurses/ncurses.h> +#elif defined(HAVE_NCURSES_CURSES_H) +#include <ncurses/curses.h> +#elif defined(HAVE_NCURSES_H) +#include <ncurses.h> +#else +#include <curses.h> +#if defined(HAVE_UNCTRL_H) +#include <unctrl.h> /* most curses.h headers include this, some do not */ +#endif +#endif + +/* Solaris xpg4 renames these */ +#ifndef KEY_MAX +#ifdef __KEY_MAX +#define KEY_MAX __KEY_MAX +#endif +#endif + +#ifndef KEY_MIN +#ifdef __KEY_MIN +#define KEY_MIN __KEY_MIN +#endif +#endif + +/* possible conflicts with <term.h> which may be included in <curses.h> */ +#ifdef color_names +#undef color_names +#endif + +#ifdef buttons +#undef buttons +#endif + +#ifdef ENABLE_NLS +#include <libintl.h> +#include <langinfo.h> +#define _(s) dgettext(PACKAGE, s) +#else +#undef _ +#define _(s) s +#endif + +#ifndef GCC_PRINTFLIKE +#define GCC_PRINTFLIKE(fmt,var) /*nothing*/ +#endif + +#ifndef GCC_NORETURN +#define GCC_NORETURN /*nothing*/ +#endif + +#ifndef GCC_UNUSED +#define GCC_UNUSED /*nothing*/ +#endif + +#ifndef HAVE_WGET_WCH +#undef USE_WIDE_CURSES +#endif + +/* + * FIXME: a configure check would be useful + */ +#ifdef __hpux +#undef ACS_UARROW +#undef ACS_DARROW +#undef ACS_BLOCK +#endif + +/* + * Change these if you want + */ +#define USE_SHADOW TRUE +#define USE_COLORS TRUE + +#ifdef HAVE_COLOR +#define SCOLS (COLS - (dialog_state.use_shadow ? SHADOW_COLS : 0)) +#define SLINES (LINES - (dialog_state.use_shadow ? SHADOW_ROWS : 0)) +#else +#define SCOLS COLS +#define SLINES LINES +#endif + +#define DLG_EXIT_ESC 255 +#define DLG_EXIT_UNKNOWN -2 /* never return this (internal use) */ +#define DLG_EXIT_ERROR -1 /* the shell sees this as 255 */ +#define DLG_EXIT_OK 0 +#define DLG_EXIT_CANCEL 1 +#define DLG_EXIT_HELP 2 +#define DLG_EXIT_EXTRA 3 +#define DLG_EXIT_ITEM_HELP 4 /* actually DLG_EXIT_HELP */ + +#define DLG_CTRL(n) ((n) & 0x1f) /* CTRL is preferred, but conflicts */ + +#define CHR_HELP DLG_CTRL('E') +#define CHR_BACKSPACE DLG_CTRL('H') +#define CHR_REPAINT DLG_CTRL('L') +#define CHR_KILL DLG_CTRL('U') +#define CHR_LITERAL DLG_CTRL('V') +#define CHR_DELETE 127 +#define CHR_NEXT DLG_CTRL('N') +#define CHR_PREVIOUS DLG_CTRL('P') +#define CHR_TRACE DLG_CTRL('T') +#define CHR_SPACE ' ' + +#define ESC 27 +#define TAB DLG_CTRL('I') + +#define MARGIN 1 /* width of the line drawn around each box */ +#define GUTTER 2 /* minimum columns between name/description in menu */ +#define SHADOW_ROWS 1 /* rows to reserve for window's shadow */ +#define SHADOW_COLS 2 /* columns to reserve for window's shadow */ +#define ARROWS_COL 5 /* distance from left margin to up/down arrows */ + +#define MAX_LEN 2048 +#define BUF_SIZE (10L*1024) + +#undef MIN +#define MIN(x,y) ((x) < (y) ? (x) : (y)) + +#undef MAX +#define MAX(x,y) ((x) > (y) ? (x) : (y)) + +#define DEFAULT_SEPARATE_STR "\t" +#define DEFAULT_ASPECT_RATIO 9 +/* how many spaces is a tab long (default)? */ +#define TAB_LEN 8 +#define WTIMEOUT_VAL 10 /* minimum amount of time needed for curses */ + +#ifndef A_CHARTEXT +#define A_CHARTEXT 0xff +#endif + +#define CharOf(ch) ((ch) & 0xff) + +#ifndef ACS_ULCORNER +#define ACS_ULCORNER '+' +#endif +#ifndef ACS_LLCORNER +#define ACS_LLCORNER '+' +#endif +#ifndef ACS_URCORNER +#define ACS_URCORNER '+' +#endif +#ifndef ACS_LRCORNER +#define ACS_LRCORNER '+' +#endif +#ifndef ACS_HLINE +#define ACS_HLINE '-' +#endif +#ifndef ACS_VLINE +#define ACS_VLINE '|' +#endif +#ifndef ACS_LTEE +#define ACS_LTEE '+' +#endif +#ifndef ACS_RTEE +#define ACS_RTEE '+' +#endif +#ifndef ACS_UARROW +#define ACS_UARROW '^' +#endif +#ifndef ACS_DARROW +#define ACS_DARROW 'v' +#endif +#ifndef ACS_BLOCK +#define ACS_BLOCK '#' +#endif + +/* these definitions may work for antique versions of curses */ +#ifndef HAVE_GETBEGYX +#undef getbegyx +#define getbegyx(win,y,x) (y = (win)?(win)->_begy:ERR, x = (win)?(win)->_begx:ERR) +#endif + +#ifndef HAVE_GETMAXYX +#undef getmaxyx +#define getmaxyx(win,y,x) (y = (win)?(win)->_maxy:ERR, x = (win)?(win)->_maxx:ERR) +#endif + +#ifndef HAVE_GETPARYX +#undef getparyx +#define getparyx(win,y,x) (y = (win)?(win)->_pary:ERR, x = (win)?(win)->_parx:ERR) +#endif + +#if !defined(HAVE_WGETPARENT) && defined(HAVE_WINDOW__PARENT) +#undef wgetparent +#define wgetparent(win) ((win) ? (win)->_parent : 0) +#endif + +#if !defined(HAVE_WSYNCUP) +#undef wsyncup +#define wsyncup(win) /* nothing */ +#endif + +#if !defined(HAVE_WCURSYNCUP) +#undef wcursyncup +#define wcursyncup(win) /* nothing */ +#endif + +#ifdef __cplusplus +extern "C" { +#endif + +/* these definitions may be needed for bleeding-edge curses implementations */ +#if !(defined(HAVE_GETBEGX) && defined(HAVE_GETBEGY)) +#undef getbegx +#undef getbegy +#define getbegx(win) dlg_getbegx(win) +#define getbegy(win) dlg_getbegy(win) +extern int dlg_getbegx(WINDOW * /*win*/); +extern int dlg_getbegy(WINDOW * /*win*/); +#endif + +#if !(defined(HAVE_GETCURX) && defined(HAVE_GETCURY)) +#undef getcurx +#undef getcury +#define getcurx(win) dlg_getcurx(win) +#define getcury(win) dlg_getcury(win) +extern int dlg_getcurx(WINDOW * /*win*/); +extern int dlg_getcury(WINDOW * /*win*/); +#endif + +#if !(defined(HAVE_GETMAXX) && defined(HAVE_GETMAXY)) +#undef getmaxx +#undef getmaxy +#define getmaxx(win) dlg_getmaxx(win) +#define getmaxy(win) dlg_getmaxy(win) +extern int dlg_getmaxx(WINDOW * /*win*/); +extern int dlg_getmaxy(WINDOW * /*win*/); +#endif + +#if !(defined(HAVE_GETPARX) && defined(HAVE_GETPARY)) +#undef getparx +#undef getpary +#define getparx(win) dlg_getparx(win) +#define getpary(win) dlg_getpary(win) +extern int dlg_getparx(WINDOW * /*win*/); +extern int dlg_getpary(WINDOW * /*win*/); +#endif + +#if !(defined(HAVE_WGETPARENT) && defined(HAVE_WINDOW__PARENT)) +#undef wgetparent +#define wgetparent(win) dlg_wgetparent(win) +extern WINDOW * dlg_wgetparent(WINDOW * /*win*/); +#endif + +/* + * This is a list of "old" names, which should be helpful in updating + * applications that use libdialog. Starting with 2003/11/26, all exported + * symbols from libdialog have "dlg_" prefix, or "dialog_" prefix or "_dialog" + * suffix (or suffix "_dialog", e.g., init_dialog). + */ +#ifdef __DIALOG_OLD_NAMES__ +#define color_table dlg_color_table +#define attr_clear(win,h,w,a) dlg_attr_clear(win,h,w,a) +#define auto_size(t,s,h,w,xl,mc) dlg_auto_size(t,s,h,w,xl,mc) +#define auto_sizefile(t,f,h,w,xl,mc) dlg_auto_sizefile(t,f,h,w,xl,mc) +#define beeping() dlg_beeping() +#define box_x_ordinate(w) dlg_box_x_ordinate(w) +#define box_y_ordinate(h) dlg_box_y_ordinate(h) +#define calc_listh(h,lh,in) dlg_calc_listh(h,lh,in) +#define calc_listw(in,items,group) dlg_calc_listw(in,items,group) +#define color_setup() dlg_color_setup() +#define create_rc(f) dlg_create_rc(f) +#define ctl_size(h,w) dlg_ctl_size(h,w) +#define del_window(win) dlg_del_window(win) +#define dialog_clear() dlg_clear() +#define draw_bottom_box(win) dlg_draw_bottom_box(win) +#define draw_box(win,y,x,h,w,xc,bc) dlg_draw_box(win,y,x,h,w,xc,bc) +#define draw_shadow(win,h,w,y,x) dlg_draw_shadow(win,h,w,y,x) +#define draw_title(win,t) dlg_draw_title(win,t) +#define exiterr dlg_exiterr +#define killall_bg(n) dlg_killall_bg(n) +#define mouse_bigregion(y,x) dlg_mouse_bigregion(y,x) +#define mouse_free_regions() dlg_mouse_free_regions() +#define mouse_mkbigregion(y,x,h,w,n,ix,iy,m) dlg_mouse_mkbigregion(y,x,h,w,n,ix,iy,m) +#define mouse_mkregion(y,x,h,w,n) dlg_mouse_mkregion(y,x,h,w,n) +#define mouse_region(y,x) dlg_mouse_region(y,x) +#define mouse_setbase(x,y) dlg_mouse_setbase(x,y) +#define mouse_setcode(c) dlg_mouse_setcode(c) +#define mouse_wgetch(w,c) dlg_mouse_wgetch(w,c) +#define new_window(h,w,y,x) dlg_new_window(h,w,y,x) +#define parse_rc() dlg_parse_rc() +#define print_autowrap(win,s,h,w) dlg_print_autowrap(win,s,h,w) +#define print_size(h,w) dlg_print_size(h,w) +#define put_backtitle() dlg_put_backtitle() +#define strclone(cprompt) dlg_strclone(cprompt) +#define sub_window(win,h,w,y,x) dlg_sub_window(win,h,w,y,x) +#define tab_correct_str(s) dlg_tab_correct_str(s) +#endif + +/* + * Attribute names + */ +#define DIALOG_ATR(n) dlg_color_table[n].atr + +#define screen_attr DIALOG_ATR(0) +#define shadow_attr DIALOG_ATR(1) +#define dialog_attr DIALOG_ATR(2) +#define title_attr DIALOG_ATR(3) +#define border_attr DIALOG_ATR(4) +#define button_active_attr DIALOG_ATR(5) +#define button_inactive_attr DIALOG_ATR(6) +#define button_key_active_attr DIALOG_ATR(7) +#define button_key_inactive_attr DIALOG_ATR(8) +#define button_label_active_attr DIALOG_ATR(9) +#define button_label_inactive_attr DIALOG_ATR(10) +#define inputbox_attr DIALOG_ATR(11) +#define inputbox_border_attr DIALOG_ATR(12) +#define searchbox_attr DIALOG_ATR(13) +#define searchbox_title_attr DIALOG_ATR(14) +#define searchbox_border_attr DIALOG_ATR(15) +#define position_indicator_attr DIALOG_ATR(16) +#define menubox_attr DIALOG_ATR(17) +#define menubox_border_attr DIALOG_ATR(18) +#define item_attr DIALOG_ATR(19) +#define item_selected_attr DIALOG_ATR(20) +#define tag_attr DIALOG_ATR(21) +#define tag_selected_attr DIALOG_ATR(22) +#define tag_key_attr DIALOG_ATR(23) +#define tag_key_selected_attr DIALOG_ATR(24) +#define check_attr DIALOG_ATR(25) +#define check_selected_attr DIALOG_ATR(26) +#define uarrow_attr DIALOG_ATR(27) +#define darrow_attr DIALOG_ATR(28) +#define itemhelp_attr DIALOG_ATR(29) +#define form_active_text_attr DIALOG_ATR(30) +#define form_text_attr DIALOG_ATR(31) +#define form_item_readonly_attr DIALOG_ATR(32) +#define gauge_attr DIALOG_ATR(33) +#define border2_attr DIALOG_ATR(34) +#define inputbox_border2_attr DIALOG_ATR(35) +#define searchbox_border2_attr DIALOG_ATR(36) +#define menubox_border2_attr DIALOG_ATR(37) + +#define DLGK_max (KEY_MAX + 256) + +/* + * Use attributes. + */ +#ifdef PDCURSES +#define dlg_attrset(w,a) (void) wattrset((w), (a)) +#define dlg_attron(w,a) (void) wattron((w), (a)) +#define dlg_attroff(w,a) (void) wattroff((w), (a)) +#else +#define dlg_attrset(w,a) (void) wattrset((w), (int)(a)) +#define dlg_attron(w,a) (void) wattron((w), (int)(a)) +#define dlg_attroff(w,a) (void) wattroff((w), (int)(a)) +#endif + +/* + * Callbacks are used to implement the "background" tailbox. + */ +struct _dlg_callback; + +typedef void (*DIALOG_FREEBACK) (struct _dlg_callback * /* p */); + +typedef struct _dlg_callback { + struct _dlg_callback *next; + FILE *input; + WINDOW *win; + bool keep_bg; /* keep in background, on exit */ + bool bg_task; /* true if this is background task */ + bool (*handle_getc)(struct _dlg_callback *p, int ch, int fkey, int *result); + bool keep_win; /* true to not erase window on exit */ + /* data for dlg_add_callback_ref */ + struct _dlg_callback **caller; + DIALOG_FREEBACK freeback; + /* 1.1-20110107 */ + bool (*handle_input)(struct _dlg_callback *p); + bool input_ready; +} DIALOG_CALLBACK; + +typedef struct _dlg_windows { + struct _dlg_windows *next; + WINDOW *normal; + WINDOW *shadow; +} DIALOG_WINDOWS; + +/* + * Global variables, which are initialized as needed + */ +typedef struct { + DIALOG_CALLBACK *getc_callbacks; + DIALOG_CALLBACK *getc_redirect; + DIALOG_WINDOWS *all_windows; + DIALOG_WINDOWS *all_subwindows; + FILE *output; /* option "--output-fd fd" */ + FILE *pipe_input; /* used for gauge widget */ + FILE *screen_output; /* newterm(), etc. */ + bool screen_initialized; + bool use_colors; /* use colors by default? */ + bool use_scrollbar; /* option "--scrollbar" */ + bool use_shadow; /* shadow dialog boxes by default? */ + bool visit_items; /* option "--visit-items" */ + char *separate_str; /* option "--separate-widget string" */ + int aspect_ratio; /* option "--aspect ratio" */ + int output_count; /* # of widgets that may have done output */ + int tab_len; /* option "--tab-len n" */ + /* 1.0-20070227 */ + FILE *input; /* option "--input-fd fd" */ +#ifdef HAVE_DLG_TRACE + FILE *trace_output; /* option "--trace file" */ +#endif + /* 1.1-20110106 */ + bool no_mouse; /* option "--no-mouse" */ + int visit_cols; /* option "--visit-items" */ + /* 1.2-20130922 */ + bool finish_string; /* caching optimization for gauge */ + /* 1.2-20150125 */ + bool plain_buttons; /* true to suppress button-label highlight */ + /* 1.3-20180610 */ + bool text_only; /* option "--print-text-only", etc. */ + int text_height; + int text_width; +} DIALOG_STATE; + +extern DIALOG_STATE dialog_state; + +/* + * Global variables, which dialog resets before each widget + */ +typedef struct { + bool beep_after_signal; /* option "--beep-after" */ + bool beep_signal; /* option "--beep" */ + bool begin_set; /* option "--begin y x" was used */ + bool cant_kill; /* option "--no-kill" */ + bool colors; /* option "--colors" */ + bool cr_wrap; /* option "--cr-wrap" */ + bool defaultno; /* option "--defaultno" */ + bool dlg_clear_screen; /* option "--clear" */ + bool extra_button; /* option "--extra-button" */ + bool help_button; /* option "--help-button" */ + bool help_status; /* option "--help-status" */ + bool input_menu; /* menu vs inputmenu widget */ + bool insecure; /* option "--insecure" */ + bool item_help; /* option "--item-help" */ + bool keep_window; /* option "--keep-window" */ + bool nocancel; /* option "--no-cancel" */ + bool nocollapse; /* option "--no-collapse" */ + bool print_siz; /* option "--print-size" */ + bool separate_output; /* option "--separate-output" */ + bool single_quoted; /* option "--single-quoted" */ + bool size_err; /* option "--size-err" */ + bool tab_correct; /* option "--tab-correct" */ + bool trim_whitespace; /* option "--trim" */ + char *backtitle; /* option "--backtitle backtitle" */ + char *cancel_label; /* option "--cancel-label string" */ + char *default_item; /* option "--default-item string" */ + char *exit_label; /* option "--exit-label string" */ + char *extra_label; /* option "--extra-label string" */ + char *help_label; /* option "--help-label string" */ + char *input_result; + char *no_label; /* option "--no-label string" */ + char *ok_label; /* option "--ok-label string" */ + char *title; /* option "--title title" */ + char *yes_label; /* option "--yes-label string" */ + int begin_x; /* option "--begin y x" (second value) */ + int begin_y; /* option "--begin y x" (first value) */ + int max_input; /* option "--max-input size" */ + int scale_factor; /* RESERVED */ + int sleep_secs; /* option "--sleep secs" */ + int timeout_secs; /* option "--timeout secs" */ + unsigned input_length; /* nonzero if input_result is allocated */ + /* 1.0-20051207 */ + unsigned formitem_type; /* DIALOG_FORMITEM.type in dialog_form() */ + /* 1.1-20070227 */ + bool keep_tite; /* option "--keep-tite" */ + bool ascii_lines; /* option "--ascii-lines" */ + bool no_lines; /* option "--no-lines" */ + /* 1.1-20070930 */ + bool nook; /* option "--no-ok" */ + /* 1.1-20080727 */ + bool quoted; /* option "--quoted" */ + char *column_header; /* RESERVED "--column-header" */ + char *column_separator; /* option "--column-separator" */ + char *output_separator; /* option "--output-separator" */ + /* 1.1-20100118 */ + char *date_format; /* option "--date-format" */ + char *time_format; /* option "--time-format" */ + /* 1.1-20110629 */ + char *help_line; /* option "--hline" */ + char *help_file; /* option "--hfile" */ + bool in_helpfile; /* flag to prevent recursion in --hfile */ + bool no_nl_expand; /* option "--no-nl-expand" */ + /* 1.1-20120701 */ + int default_button; /* option "--default-button" (exit code) */ + /* 1.1-20121218 */ + bool no_tags; /* option "--no-tags" */ + bool no_items; /* option "--no-items" */ + /* 1.2-20130315 */ + bool last_key; /* option "--last-key" */ + /* 1.2-20130902 */ + bool help_tags; /* option "--help-tags" */ + /* 1.3-20160126 */ + char *week_start; /* option "--week-start" */ + /* 1.3-20160206 */ + bool iso_week; /* option "--iso-week" */ + /* 1.3-20170131 */ + bool reorder; /* option "--reorder" */ +} DIALOG_VARS; + +#define USE_ITEM_HELP(s) (dialog_vars.item_help && (s) != 0) + +/* + * Some settings change the number of data items per row which dialog reads + * from a script. + */ +#define DLG__NO_ITEMS (dialog_vars.no_items ? 0 : 1) +#define DLG__ITEM_HELP (dialog_vars.item_help ? 1 : 0) + +/* + * These are the total number of data items per row used for each widget type. + */ +#define CHECKBOX_TAGS (2 + DLG__ITEM_HELP + DLG__NO_ITEMS) +#define MENUBOX_TAGS (1 + DLG__ITEM_HELP + DLG__NO_ITEMS) +#define FORMBOX_TAGS (8 + DLG__ITEM_HELP) +#define MIXEDFORM_TAGS (1 + FORMBOX_TAGS) +#define MIXEDGAUGE_TAGS 2 +#define TREEVIEW_TAGS (3 + DLG__ITEM_HELP + DLG__NO_ITEMS) + +extern DIALOG_VARS dialog_vars; + +#ifndef HAVE_TYPE_CHTYPE +#define chtype long +#endif + +#ifndef isblank +#define isblank(c) ((c) == ' ' || (c) == TAB) +#endif + +#define UCH(ch) ((unsigned char)(ch)) + +#define assert_ptr(ptr,msg) if ((ptr) == 0) dlg_exiterr("cannot allocate memory in " msg) + +#define dlg_malloc(t,n) (t *) malloc((size_t)(n) * sizeof(t)) +#define dlg_calloc(t,n) (t *) calloc((size_t)(n), sizeof(t)) +#define dlg_realloc(t,n,p) (t *) realloc((p), (n) * sizeof(t)) + +/* + * Table for attribute- and color-values. + */ +typedef struct { + chtype atr; +#ifdef HAVE_COLOR + int fg; + int bg; + int hilite; +#endif +#ifdef HAVE_RC_FILE + const char *name; + const char *comment; +#endif +} DIALOG_COLORS; + +extern DIALOG_COLORS dlg_color_table[]; + +/* + * Function prototypes + */ +extern const char *dialog_version(void); + +/* widgets, each in separate files */ +extern int dialog_buildlist(const char * /*title*/, const char * /*cprompt*/, int /*height*/, int /*width*/, int /*list_height*/, int /*item_no*/, char ** /*items*/, int /*order_mode*/); +extern int dialog_calendar(const char * /*title*/, const char * /*subtitle*/, int /*height*/, int /*width*/, int /*day*/, int /*month*/, int /*year*/); +extern int dialog_checklist(const char * /*title*/, const char * /*cprompt*/, int /*height*/, int /*width*/, int /*list_height*/, int /*item_no*/, char ** /*items*/, int /*flag*/); +extern int dialog_dselect(const char * /*title*/, const char * /*path*/, int /*height*/, int /*width*/); +extern int dialog_editbox(const char * /*title*/, const char * /*file*/, int /*height*/, int /*width*/); +extern int dialog_form(const char * /*title*/, const char * /*cprompt*/, int /*height*/, int /*width*/, int /*form_height*/, int /*item_no*/, char ** /*items*/); +extern int dialog_fselect(const char * /*title*/, const char * /*path*/, int /*height*/, int /*width*/); +extern int dialog_gauge(const char * /*title*/, const char * /*cprompt*/, int /*height*/, int /*width*/, int /*percent*/); +extern int dialog_helpfile(const char * /*title*/, const char * /*file*/, int /*height*/, int /*width*/); +extern int dialog_inputbox(const char * /*title*/, const char * /*cprompt*/, int /*height*/, int /*width*/, const char * /*init*/, const int /*password*/); +extern int dialog_menu(const char * /*title*/, const char * /*cprompt*/, int /*height*/, int /*width*/, int /*menu_height*/, int /*item_no*/, char ** /*items*/); +extern int dialog_mixedform(const char * /*title*/, const char * /*cprompt*/, int /*height*/, int /*width*/, int /*form_height*/, int /*item_no*/, char ** /*items*/); +extern int dialog_mixedgauge(const char * /*title*/, const char * /*cprompt*/, int /*height*/, int /*width*/, int /*percent*/, int /*item_no*/, char ** /*items*/); +extern int dialog_msgbox(const char * /*title*/, const char * /*cprompt*/, int /*height*/, int /*width*/, int /*pauseopt*/); +extern int dialog_pause(const char * /*title*/, const char * /*cprompt*/, int /*height*/, int /*width*/, int /*seconds*/); +extern int dialog_prgbox(const char * /*title*/, const char * /*cprompt*/, const char * /*command*/, int /*height*/, int /*width*/, int /*pauseopt*/); +extern int dialog_progressbox(const char * /*title*/, const char * /*cprompt*/, int /*height*/, int /*width*/); +extern int dialog_rangebox(const char * /*title*/, const char * /*file*/, int /*height*/, int /*width*/, int /*min_value*/, int /*max_value*/, int /*default_value*/); +extern int dialog_tailbox(const char * /*title*/, const char * /*file*/, int /*height*/, int /*width*/, int /*bg_task*/); +extern int dialog_textbox(const char * /*title*/, const char * /*file*/, int /*height*/, int /*width*/); +extern int dialog_timebox(const char * /*title*/, const char * /*subtitle*/, int /*height*/, int /*width*/, int /*hour*/, int /*minute*/, int /*second*/); +extern int dialog_treeview(const char * /*title*/, const char * /*subtitle*/, int /*height*/, int /*width*/, int /*list_height*/, int /*item_no*/, char ** /*items*/, int /*flag*/); +extern int dialog_yesno(const char * /*title*/, const char * /*cprompt*/, int /*height*/, int /*width*/); + +/* some widgets have alternate entrypoints, to allow list manipulation */ +typedef struct { + char *name; + char *text; + char *help; + int state; +} DIALOG_LISTITEM; + +typedef struct { + unsigned type; /* the field type (0=input, 1=password) */ + char *name; /* the field label */ + int name_len; /* ...its length */ + int name_y; /* ...its y-ordinate */ + int name_x; /* ...its x-ordinate */ + bool name_free; /* ...true if .name can be freed */ + char *text; /* the field contents */ + int text_len; /* ...its length on the screen */ + int text_y; /* ...its y-ordinate */ + int text_x; /* ...its x-ordinate */ + int text_flen; /* ...its length on screen, or 0 if no input allowed */ + int text_ilen; /* ...its limit on amount to be entered */ + bool text_free; /* ...true if .text can be freed */ + char *help; /* help-message, if any */ + bool help_free; /* ...true if .help can be freed */ +} DIALOG_FORMITEM; + +typedef int (DIALOG_INPUTMENU) (DIALOG_LISTITEM * /*items*/, int /*current*/, char * /*newtext*/); + +extern int dlg_checklist(const char * /*title*/, const char * /*cprompt*/, int /*height*/, int /*width*/, int /*list_height*/, int /*item_no*/, DIALOG_LISTITEM * /*items*/, const char * /*states*/, int /*flag*/, int * /*current_item*/); +extern int dlg_form(const char * /*title*/, const char * /*cprompt*/, int /*height*/, int /*width*/, int /*form_height*/, int /*item_no*/, DIALOG_FORMITEM * /*items*/, int * /*current_item*/); +extern int dlg_menu(const char * /*title*/, const char * /*cprompt*/, int /*height*/, int /*width*/, int /*menu_height*/, int /*item_no*/, DIALOG_LISTITEM * /*items*/, int * /*current_item*/, DIALOG_INPUTMENU /*rename_menu*/); +extern int dlg_progressbox(const char * /*title*/, const char * /*cprompt*/, int /*height*/, int /*width*/, int /*pauseopt*/, FILE * /* fp */); + +/* argv.c */ +extern char ** dlg_string_to_argv(char * /* blob */); +extern int dlg_count_argv(char ** /* argv */); +extern int dlg_eat_argv(int * /* argcp */, char *** /* argvp */, int /* start */, int /* count */); + +/* arrows.c */ +extern void dlg_draw_arrows(WINDOW * /*dialog*/, int /*top_arrow*/, int /*bottom_arrow*/, int /*x*/, int /*top*/, int /*bottom*/); +extern void dlg_draw_arrows2(WINDOW * /*dialog*/, int /*top_arrow*/, int /*bottom_arrow*/, int /*x*/, int /*top*/, int /*bottom*/, chtype /*attr*/, chtype /*borderattr*/); +extern void dlg_draw_helpline(WINDOW * /*dialog*/, bool /*decorations*/); +extern void dlg_draw_scrollbar(WINDOW * /*dialog*/, long /* first_data */, long /* this_data */, long /* next_data */, long /* total_data */, int /* left */, int /* right */, int /*top*/, int /*bottom*/, chtype /*attr*/, chtype /*borderattr*/); + +/* buildlist.c */ +extern int dlg_buildlist(const char * /*title*/, const char * /*cprompt*/, int /*height*/, int /*width*/, int /*list_height*/, int /*item_no*/, DIALOG_LISTITEM * /*items*/, const char * /*states*/, int /*order_mode*/, int * /*current_item*/); + +/* buttons.c */ +extern const char ** dlg_exit_label(void); +extern const char ** dlg_ok_label(void); +extern const char ** dlg_ok_labels(void); +extern const char ** dlg_yes_labels(void); +extern int dlg_button_count(const char ** /*labels*/); +extern int dlg_button_to_char(const char * /*label*/); +extern int dlg_button_x_step(const char ** /*labels*/, int /*limit*/, int * /*gap*/, int * /*margin*/, int * /*step*/); +extern int dlg_char_to_button(int /*ch*/, const char ** /*labels*/); +extern int dlg_exit_buttoncode(int /*button*/); +extern int dlg_match_char(int /*ch*/, const char * /*string*/); +extern int dlg_next_button(const char ** /*labels*/, int /*button*/); +extern int dlg_next_ok_buttonindex(int /*current*/, int /*extra*/); +extern int dlg_ok_buttoncode(int /*button*/); +extern int dlg_prev_button(const char ** /*labels*/, int /*button*/); +extern int dlg_prev_ok_buttonindex(int /*current*/, int /*extra*/); +extern int dlg_yes_buttoncode(int /*button*/); +extern void dlg_button_layout(const char ** /*labels*/, int * /*limit*/); +extern void dlg_button_sizes(const char ** /*labels*/, int /*vertical*/, int * /*longest*/, int * /*length*/); +extern void dlg_draw_buttons(WINDOW * /*win*/, int /*y*/, int /*x*/, const char ** /*labels*/, int /*selected*/, int /*vertical*/, int /*limit*/); + +/* columns.c */ +extern void dlg_align_columns(char ** /* target */, int /* per_row */, int /* num_rows */); +extern void dlg_free_columns(char ** /* target */, int /* per_row */, int /* num_rows */); + +/* editbox.c */ +extern int dlg_editbox(const char * /*title*/, char *** /*list*/, int * /*rows*/, int /*height*/, int /*width*/); + +/* formbox.c */ +extern int dlg_default_formitem(DIALOG_FORMITEM * /*items*/); +extern int dlg_ordinate(const char * /*s*/); +extern void dlg_free_formitems(DIALOG_FORMITEM * /*items*/); + +/* guage.c */ +extern void * dlg_allocate_gauge(const char * /* title */, const char * /* cprompt */, int /* height */, int /* width */, int /* percent */); +extern void * dlg_reallocate_gauge(void * /* objptr */, const char * /* title */, const char * /* cprompt */, int /* height */, int /* width */, int /* percent */); +extern void dlg_free_gauge(void * /* objptr */); +extern void dlg_update_gauge(void * /* objptr */, int /* percent */); + +/* inputstr.c */ +extern bool dlg_edit_string(char * /*string*/, int * /*offset*/, int /*key*/, int /*fkey*/, bool /*force*/); +extern const int * dlg_index_columns(const char * /*string*/); +extern const int * dlg_index_wchars(const char * /*string*/); +extern int dlg_count_columns(const char * /*string*/); +extern int dlg_count_wchars(const char * /*string*/); +extern int dlg_edit_offset(char * /*string*/, int /*offset*/, int /*x_last*/); +extern int dlg_find_index(const int * /*list*/, int /*limit*/, int /*to_find*/); +extern int dlg_limit_columns(const char * /*string*/, int /*limit*/, int /*offset*/); +extern void dlg_finish_string(const char * /* string */); +extern void dlg_show_string(WINDOW * /*win*/, const char * /*string*/, int /*offset*/, chtype /*attr*/, int /*y_base*/, int /*x_base*/, int /*x_last*/, bool /*hidden*/, bool /*force*/); + +/* menubox.c */ +extern int dlg_dummy_menutext(DIALOG_LISTITEM * /*items*/, int /*current*/, char * /*newtext*/); +extern int dlg_renamed_menutext(DIALOG_LISTITEM * /*items*/, int /*current*/, char * /*newtext*/); + +/* prgbox.c */ +extern FILE * dlg_popen(const char * /*command */, const char * /*type */); + +/* rc.c */ +#ifdef HAVE_RC_FILE +extern int dlg_parse_rc(void); +extern void dlg_create_rc(const char * /*filename*/); +#endif + +/* treeview.c */ +extern int dlg_treeview(const char * /*title*/, const char * /*cprompt*/, int /*height*/, int /*width*/, int /*list_height*/, int /*item_no*/, DIALOG_LISTITEM * /*items*/, const char * /*states*/, int * /*depths*/, int /*flag*/, int * /*current_item*/); + +/* ttysize.c */ +extern int dlg_ttysize(int /* fd */, int * /* height */, int * /* width */); + +/* ui_getc.c */ +extern int dlg_getc(WINDOW * /*win*/, int * /*fkey*/); +extern int dlg_getc_callbacks(int /*ch*/, int /*fkey*/, int * /*result*/); +extern int dlg_last_getc(void); +extern void dlg_add_last_key(int /*mode*/); +extern void dlg_add_callback(DIALOG_CALLBACK * /*p*/); +extern void dlg_add_callback_ref(DIALOG_CALLBACK ** /*p*/, DIALOG_FREEBACK /* cleanup */); +extern void dlg_flush_getc(void); +extern void dlg_remove_callback(DIALOG_CALLBACK * /*p*/); +extern void dlg_killall_bg(int *retval); + +/* util.c */ +extern WINDOW * dlg_new_modal_window(WINDOW * /*parent*/, int /*height*/, int /*width*/, int /*y*/, int /*x*/); +extern WINDOW * dlg_new_window(int /*height*/, int /*width*/, int /*y*/, int /*x*/); +extern WINDOW * dlg_sub_window(WINDOW * /*win*/, int /*height*/, int /*width*/, int /*y*/, int /*x*/); +extern bool dlg_need_separator(void); +extern char * dlg_set_result(const char * /*string*/); +extern char * dlg_strclone(const char * /*cprompt*/); +extern char * dlg_strempty(void); +extern chtype dlg_asciibox(chtype /*ch*/); +extern chtype dlg_boxchar(chtype /*ch*/); +extern chtype dlg_get_attrs(WINDOW * /*win*/); +extern const char * dlg_print_line(WINDOW * /*win*/, chtype * /*attr*/, const char * /*prompt*/, int /*lm*/, int /*rm*/, int * /*x*/); +extern int dlg_box_x_ordinate(int /*width*/); +extern int dlg_box_y_ordinate(int /*height*/); +extern int dlg_calc_list_width(int /*item_no*/, DIALOG_LISTITEM * /*items*/); +extern int dlg_calc_listw(int /*item_no*/, char ** /*items*/, int /*group*/); +extern int dlg_check_scrolled(int /* key */, int /* last */, int /* page */, bool * /* show */, int * /* offset */); +extern int dlg_count_real_columns(const char * /*text*/); +extern int dlg_default_item(char ** /*items*/, int /*llen*/); +extern int dlg_default_listitem(DIALOG_LISTITEM * /*items*/); +extern int dlg_defaultno_button(void); +extern int dlg_default_button(void); +extern int dlg_max_input(int /*max_len*/); +extern int dlg_print_scrolled(WINDOW * /* win */, const char * /* prompt */, int /* offset */, int /* height */, int /* width */, int /* pauseopt */); +extern void dlg_add_help_formitem(int * /* result */, char ** /* tag */, DIALOG_FORMITEM * /* item */); +extern void dlg_add_help_listitem(int * /* result */, char ** /* tag */, DIALOG_LISTITEM * /* item */); +extern void dlg_add_quoted(char * /*string*/); +extern void dlg_add_result(const char * /*string*/); +extern void dlg_add_separator(void); +extern void dlg_add_string(char * /*string*/); +extern void dlg_attr_clear(WINDOW * /*win*/, int /*height*/, int /*width*/, chtype /*attr*/); +extern void dlg_auto_size(const char * /*title*/, const char * /*prompt*/, int * /*height*/, int * /*width*/, int /*boxlines*/, int /*mincols*/); +extern void dlg_auto_sizefile(const char * /*title*/, const char * /*file*/, int * /*height*/, int * /*width*/, int /*boxlines*/, int /*mincols*/); +extern void dlg_beeping(void); +extern void dlg_calc_listh(int * /*height*/, int * /*list_height*/, int /*item_no*/); +extern void dlg_clear(void); +extern void dlg_clr_result(void); +extern void dlg_ctl_size(int /*height*/, int /*width*/); +extern void dlg_del_window(WINDOW * /*win*/); +extern void dlg_does_output(void); +extern void dlg_draw_bottom_box(WINDOW * /*win*/); +extern void dlg_draw_bottom_box2(WINDOW * /*win*/, chtype /*on_left*/, chtype /*on_right*/, chtype /*on_inside*/); +extern void dlg_draw_box(WINDOW * /*win*/, int /*y*/, int /*x*/, int /*height*/, int /*width*/, chtype /*boxchar*/, chtype /*borderchar*/); +extern void dlg_draw_box2(WINDOW * /*win*/, int /*y*/, int /*x*/, int /*height*/, int /*width*/, chtype /*boxchar*/, chtype /*borderchar*/, chtype /*borderchar2*/); +extern void dlg_draw_title(WINDOW *win, const char *title); +extern void dlg_exit(int /*code*/) GCC_NORETURN; +extern void dlg_item_help(const char * /*txt*/); +extern void dlg_print_autowrap(WINDOW * /*win*/, const char * /*prompt*/, int /*height*/, int /*width*/); +extern void dlg_print_listitem(WINDOW * /*win*/, const char * /*text*/, int /*climit*/, bool /*first*/, int /*selected*/); +extern void dlg_print_size(int /*height*/, int /*width*/); +extern void dlg_print_text(WINDOW * /*win*/, const char * /*txt*/, int /*len*/, chtype * /*attr*/); +extern void dlg_put_backtitle(void); +extern void dlg_restore_vars(DIALOG_VARS * /* save */); +extern void dlg_save_vars(DIALOG_VARS * /* save */); +extern void dlg_set_focus(WINDOW * /*parent*/, WINDOW * /*win*/); +extern void dlg_tab_correct_str(char * /*prompt*/); +extern void dlg_trim_string(char * /*src*/); +extern void end_dialog(void); +extern void init_dialog(FILE * /*input*/, FILE * /*output*/); + +extern void dlg_exiterr(const char *, ...) GCC_NORETURN GCC_PRINTFLIKE(1,2); + +#ifdef HAVE_COLOR +extern chtype dlg_color_pair(int /*foreground*/, int /*background*/); +extern int dlg_color_count(void); +extern void dlg_color_setup(void); +extern void dlg_draw_shadow(WINDOW * /*win*/, int /*height*/, int /*width*/, int /*y*/, int /*x*/); +#endif + +#ifdef HAVE_STRCASECMP +#define dlg_strcmp(a,b) strcasecmp(a,b) +#else +extern int dlg_strcmp(const char * /*a*/, const char * /*b*/); +#endif + +#ifdef HAVE_DLG_TRACE +#define DLG_TRACE(params) dlg_trace_msg params +extern void dlg_trace_msg(const char *fmt, ...) GCC_PRINTFLIKE(1,2); +#define DLG_TRACE2S(name,value) dlg_trace_2s (name,value) +#define DLG_TRACE2N(name,value) dlg_trace_2n (name,value) +extern void dlg_trace_2s(const char * /*name*/, const char * /*value*/); +extern void dlg_trace_2n(const char * /*name*/, int /*value*/); +extern void dlg_trace_win(WINDOW * /*win*/); +extern void dlg_trace_chr(int /*ch*/, int /*fkey*/); +extern void dlg_trace(const char * /*fname*/); +#else +#define DLG_TRACE(params) /* nothing */ +#define DLG_TRACE2S(name,value) /* nothing */ +#define DLG_TRACE2N(name,value) /* nothing */ +#define dlg_trace_win(win) /* nothing */ +#define dlg_trace_chr(ch,fkey) /* nothing */ +#define dlg_trace(fname) /* nothing */ +#endif + +#ifdef KEY_RESIZE +extern void dlg_move_window(WINDOW * /*win*/, int /*height*/, int /*width*/, int /*y*/, int /*x*/); +extern void dlg_will_resize(WINDOW * /*win*/); +#endif + +/* + * Normally "enter" means "ok". Use this macro to handle the explicit + * check for DLGK_ENTER: + */ +#define dlg_enter_buttoncode(code) (dialog_vars.nook ? DLG_EXIT_OK : dlg_ok_buttoncode(code)) + +/* + * The following stuff is needed for mouse support + */ +typedef struct mseRegion { + int x, y, X, Y, code; + int mode, step_x, step_y; + struct mseRegion *next; +} mseRegion; + +#if defined(NCURSES_MOUSE_VERSION) + +#define mouse_open() mousemask(BUTTON1_PRESSED, (mmask_t *) 0) +#define mouse_close() mousemask(0, (mmask_t *) 0) + +extern mseRegion * dlg_mouse_mkregion (int /*y*/, int /*x*/, int /*height*/, int /*width*/, int /*code*/); +extern void dlg_mouse_free_regions (void); +extern void dlg_mouse_mkbigregion (int /*y*/, int /*x*/, int /*height*/, int /*width*/, int /*code*/, int /*step_x*/, int /*step_y*/, int /*mode*/); +extern void dlg_mouse_setbase (int /*x*/, int /*y*/); +extern void dlg_mouse_setcode (int /*code*/); + +#define USE_MOUSE 1 + +#else + +#define mouse_open() /*nothing*/ +#define mouse_close() /*nothing*/ +#define dlg_mouse_free_regions() /* nothing */ +#define dlg_mouse_mkregion(y, x, height, width, code) /*nothing*/ +#define dlg_mouse_mkbigregion(y, x, height, width, code, step_x, step_y, mode) /*nothing*/ +#define dlg_mouse_setbase(x, y) /*nothing*/ +#define dlg_mouse_setcode(c) /*nothing*/ + +#define USE_MOUSE 0 + +#endif + +extern mseRegion *dlg_mouse_region (int /*y*/, int /*x*/); +extern mseRegion *dlg_mouse_bigregion (int /*y*/, int /*x*/); +extern int dlg_mouse_wgetch (WINDOW * /*win*/, int * /*fkey*/); +extern int dlg_mouse_wgetch_nowait (WINDOW * /*win*/, int * /*fkey*/); + +#define mouse_mkbutton(y,x,len,code) dlg_mouse_mkregion(y,x,1,len,code); + +/* + * This is the base for fictitious keys, which activate + * the buttons. + * + * Mouse-generated keys are the following: + * -- the first 32 are used as numbers, in addition to '0'-'9' + * -- uppercase chars are used to invoke the button (M_EVENT + 'O') + */ +#define M_EVENT (DLGK_max + 1) + +/* + * The `flag' parameter in checklist is used to select between + * radiolist and checklist + */ +#define FLAG_CHECK 1 +#define FLAG_RADIO 0 + +/* + * This is used only for debugging (FIXME: should have a separate header). + */ +#ifdef NO_LEAKS +extern void _dlg_inputstr_leaks(void); +#if defined(NCURSES_VERSION) && defined(HAVE__NC_FREE_AND_EXIT) +extern void _nc_free_and_exit(int); /* nc_alloc.h normally not installed */ +#endif +#endif + +#ifdef __cplusplus +} +#endif +/* *INDENT-ON* */ + +#endif /* DIALOG_H_included */ Index: vendor/dialog/1.3-20180621/dialog.pl =================================================================== --- vendor/dialog/1.3-20180621/dialog.pl (nonexistent) +++ vendor/dialog/1.3-20180621/dialog.pl (revision 339483) @@ -0,0 +1,600 @@ +# Functions that handle calling dialog(1) -*-perl-*- +# $Id: dialog.pl,v 1.18 2018/06/12 21:01:58 tom Exp $ +################################################################################ +# Copyright 2018 Thomas E. Dickey +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License, version 2.1 +# as published by the Free Software Foundation. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to +# Free Software Foundation, Inc. +# 51 Franklin St., Fifth Floor +# Boston, MA 02110, USA. +################################################################################ +# The "rhs_" functions, as well as return_output originally came from Redhat +# 4.0, e.g., +# http://www.ibiblio.org/pub/historic-linux/distributions/redhat-4.0/i386/live/usr/bin/Xconfigurator.pl +# The other functions were added to make this more useful for demonstrations. + +# These comments are from the original file: +#------------------------------------------------------------------------------ +# Return values are 1 for success and 0 for failure (or cancel) +# Resultant text (if any) is in dialog_result + +# Unfortunately, the gauge requires use of /bin/sh to get going. +# I didn't bother to make the others shell-free, although it +# would be simple to do. + +# Note that dialog generally returns 0 for success, so I invert the +# sense of the return code for more readable boolean expressions. +#------------------------------------------------------------------------------ + +use warnings; +use strict; +use diagnostics; + +our $DIALOG = "dialog"; +our $GAUGE; +our $gauge_width; +our $scr_lines = 24; +our $scr_cols = 80; +our @dialog_result; +our $trace = 0; + +require "flush.pl"; + +sub trace { + if ($trace) { + if ( open TRACE, ">>dialog.log" ) { + printf TRACE $_[0], @_[ 1 .. $#_ ]; + close TRACE; + } + } +} + +sub quoted($) { + my $text = shift; + $text =~ s/[\r\n]+/\n/g; + $text =~ s/[^\n\t -~]/?/g; + $text =~ s/([\\"])/\\$1/g; + return sprintf "\"%s\"", $text; +} + +sub screensize() { + my $params = `$DIALOG --stdout --print-maxsize`; + $params =~ s/\s+$//; + $params =~ s/^[^:]*:\s+//; + my @params = split /,\s+/, $params; + if ( $#params == 1 ) { + $scr_lines = $params[0]; + $scr_cols = $params[1]; + } + else { + $scr_lines = 24; + $scr_cols = 80; + } +} + +sub height_of($$) { + my $width = shift; + my $message = shift; + my $command = + "$DIALOG --stdout --print-text-size " + . "ed($message) + . " $scr_lines $width 2>&1"; + my $params = `$command`; + my @params = split( /\s/, $params ); + return $params[0]; +} + +sub rhs_clear { + return system("$DIALOG --clear"); +} + +sub rhs_textbox { + my ( $title, $file, $width, $height ) = @_; + + $width = int($width); + $height = int($height); + system( "$DIALOG --title " + . "ed($title) + . " --textbox $file $height $width" ); + + return 1; +} + +sub rhs_msgbox { + my ( $title, $message, $width ) = @_; + my ( $tmp, $height ); + + $width = int($width); + $message = &rhs_wordwrap( $message, $width ); + $height = 5 + &height_of( $width, $message ); + + $tmp = + system( "$DIALOG --title " + . "ed($title) + . " --msgbox " + . "ed($message) + . " $height $width" ); + if ($tmp) { + return 0; + } + else { + return 1; + } +} + +sub rhs_infobox { + my ( $title, $message, $width ) = @_; + my ( $tmp, $height ); + + $width = int($width); + $message = &rhs_wordwrap( $message, $width ); + $height = 2 + &height_of( $width, $message ); + + return + system( "$DIALOG --title " + . "ed($title) + . " --infobox " + . "ed($message) + . " $height $width" ); +} + +sub rhs_yesno { + my ( $title, $message, $width ) = @_; + my ( $tmp, $height ); + + $width = int($width); + $message = &rhs_wordwrap( $message, $width ); + $height = 4 + &height_of( $width, $message ); + + $tmp = + system( "$DIALOG --title " + . "ed($title) + . " --yesno " + . "ed($message) + . " $height $width" ); + + # Dumb: dialog returns 0 for "yes" and 1 for "no" + if ( !$tmp ) { + return 1; + } + else { + return 0; + } +} + +sub rhs_gauge { + my ( $title, $message, $width, $percent ) = @_; + my ( $tmp, $height ); + + $width = int($width); + $gauge_width = $width; + + $message = &rhs_wordwrap( $message, $width ); + $height = 5 + &height_of( $width, $message ); + + open( $GAUGE, + "|$DIALOG --title " + . "ed($title) + . " --gauge " + . "ed($message) + . " $height $width $percent" ); +} + +sub rhs_update_gauge { + my ($percent) = @_; + + &printflush( $GAUGE, "$percent\n" ); +} + +sub rhs_update_gauge_and_message { + my ( $message, $percent ) = @_; + + $message = &rhs_wordwrap( $message, $gauge_width ); + $message =~ s/\n/\\n/g; + &printflush( $GAUGE, "XXX\n$percent\n$message\nXXX\n" ); +} + +sub rhs_stop_gauge { + close $GAUGE; +} + +sub rhs_inputbox { + my ( $title, $message, $width, $instr ) = @_; + my ( $tmp, $height ); + + $width = int($width); + $message = &rhs_wordwrap( $message, $width ); + $height = 7 + &height_of( $width, $message ); + + return &return_output( 0, + "$DIALOG --title " + . "ed($title) + . " --inputbox " + . "ed($message) + . " $height $width " + . "ed($instr) ); +} + +sub rhs_menu { + my ( $title, $message, $width, $numitems ) = @_; + my ( $i, $tmp, $ent, $height, $listheight, $menuheight, @list ); + + $width = int($width); + $numitems = int($numitems); + + shift; + shift; + shift; + shift; + + @list = (); + for ( $i = 0 ; $i < $numitems ; $i++ ) { + $ent = shift; + $list[@list] = "ed($ent); + $ent = shift; + $list[@list] = "ed($ent); + } + + $message = &rhs_wordwrap( $message, $width ); + $listheight = &height_of( $width, $message ); + $height = 6 + $listheight + $numitems; + + if ( $height <= $scr_lines ) { + $menuheight = $numitems; + } + else { + $height = $scr_lines; + $menuheight = $scr_lines - $listheight - 6; + } + + return &return_output( 0, + "$DIALOG --title " + . "ed($title) + . " --menu " + . "ed($message) + . " $height $width $menuheight @list" ); +} + +sub rhs_menul { + my ( $title, $message, $width, $numitems ) = @_; + my ( $i, $tmp, $ent, $height, $listheight, $menuheight, @list ); + + $width = int($width); + $numitems = int($numitems); + + shift; + shift; + shift; + shift; + + @list = (); + for ( $i = 0 ; $i < $numitems ; $i++ ) { + $ent = shift; + $list[@list] = "ed($ent); + $list[@list] = "ed(""); + } + + $message = &rhs_wordwrap( $message, $width ); + $listheight = &height_of( $width, $message ); + $height = 6 + $listheight + $numitems; + + if ( $height <= $scr_lines ) { + $menuheight = $numitems; + } + else { + $height = $scr_lines; + $menuheight = $scr_lines - $listheight - 6; + } + + return &return_output( 0, + "$DIALOG --title " + . "ed($title) + . " --menu " + . "ed($message) + . " $height $width $menuheight @list" ); +} + +sub rhs_menua { + my ( $title, $message, $width, %items ) = @_; + my ( $tmp, $ent, $height, $listheight, $menuheight, @list ); + + $width = int($width); + @list = (); + foreach $ent ( sort keys(%items) ) { + $list[@list] = "ed($ent); + $list[@list] = "ed( $items{$ent} ); + } + + my $numitems = keys(%items); + $message = &rhs_wordwrap( $message, $width ); + $listheight = &height_of( $width, $message ); + $height = 6 + $listheight + $numitems; + + if ( $height <= $scr_lines ) { + $menuheight = $numitems; + } + else { + $height = $scr_lines; + $menuheight = $scr_lines - $listheight - 6; + } + + return &return_output( 0, + "$DIALOG --title " + . "ed($title) + . " --menu " + . "ed($message) + . " $height $width $menuheight @list" ); +} + +sub rhs_checklist { + my ( $title, $message, $width, $numitems ) = @_; + my ( $i, $tmp, $ent, $height, $listheight, $menuheight, @list ); + + $width = int($width); + $numitems = int($numitems); + + shift; + shift; + shift; + shift; + + @list = (); + for ( $i = 0 ; $i < $numitems ; $i++ ) { + $ent = shift; + $list[@list] = "ed($ent); + $ent = shift; + $list[@list] = "ed($ent); + $ent = shift; + if ($ent) { + $list[@list] = "ON"; + } + else { + $list[@list] = "OFF"; + } + } + + $message = &rhs_wordwrap( $message, $width ); + $listheight = &height_of( $width, $message ); + $height = 6 + $listheight + $numitems; + + if ( $height <= $scr_lines ) { + $menuheight = $numitems; + } + else { + $height = $scr_lines; + $menuheight = $scr_lines - $listheight - 6; + } + + return &return_output( "list", + "$DIALOG --title " + . "ed($title) + . " --separate-output --checklist " + . "ed($message) + . " $height $width $menuheight @list" ); +} + +sub rhs_checklistl { + my ( $title, $message, $width, $numitems ) = @_; + my ( $i, $tmp, $ent, $height, $listheight, $menuheight, @list ); + + $width = int($width); + $numitems = int($numitems); + + shift; + shift; + shift; + shift; + + @list = (); + for ( $i = 0 ; $i < $numitems ; $i++ ) { + $ent = shift; + $list[@list] = "ed($ent); + $list[@list] = "ed(""); + $list[@list] = "OFF"; + } + + $message = &rhs_wordwrap( $message, $width ); + $listheight = &height_of( $width, $message ); + $height = 6 + $listheight + $numitems; + + if ( $height <= $scr_lines ) { + $menuheight = $numitems; + } + else { + $height = $scr_lines; + $menuheight = $scr_lines - $listheight - 6; + } + return &return_output( "list", + "$DIALOG --title " + . "ed($title) + . " --separate-output --checklist " + . "ed($message) + . " $height $width $menuheight @list" ); +} + +sub rhs_checklista { + my ( $title, $message, $width, %items ) = @_; + my ( $tmp, $ent, $height, $listheight, $menuheight, @list ); + + shift; + shift; + shift; + shift; + + @list = (); + foreach $ent ( sort keys(%items) ) { + $list[@list] = "ed($ent); + $list[@list] = "ed( $items{$ent} ); + $list[@list] = "OFF"; + } + + my $numitems = keys(%items); + $message = &rhs_wordwrap( $message, $width ); + $listheight = &height_of( $width, $message ); + $height = 6 + $listheight + $numitems; + + if ( $height <= $scr_lines ) { + $menuheight = $numitems; + } + else { + $height = $scr_lines; + $menuheight = $scr_lines - $listheight - 6; + } + + return &return_output( "list", + "$DIALOG --title " + . "ed($title) + . " --separate-output --checklist " + . "ed($message) + . " $height $width $menuheight @list" ); +} + +sub rhs_radiolist { + my ( $title, $message, $width, $numitems ) = @_; + my ( $i, $tmp, $ent, $height, $listheight, $menuheight, @list ); + + $width = int($width); + $numitems = int($numitems); + + shift; + shift; + shift; + shift; + + @list = (); + for ( $i = 0 ; $i < $numitems ; $i++ ) { + $ent = shift; + $list[@list] = "ed($ent); + $ent = shift; + $list[@list] = "ed($ent); + $ent = shift; + if ($ent) { + $list[@list] = "ON"; + } + else { + $list[@list] = "OFF"; + } + } + + $message = &rhs_wordwrap( $message, $width ); + $listheight = &height_of( $width, $message ); + $height = 6 + $listheight + $numitems; + + if ( $height <= $scr_lines ) { + $menuheight = $numitems; + } + else { + $height = $scr_lines; + $menuheight = $scr_lines - $listheight - 6; + } + + return &return_output( 0, + "$DIALOG --title " + . "ed($title) + . " --radiolist " + . "ed($message) + . " $height $width $menuheight @list" ); +} + +sub return_output { + my ( $listp, $command ) = @_; + my ($res) = 1; + + pipe( PARENT_READER, CHILD_WRITER ); + + # We have to fork (as opposed to using "system") so that the parent + # process can read from the pipe to avoid deadlock. + my ($pid) = fork; + if ( $pid == 0 ) { # child + close(PARENT_READER); + open( STDERR, ">&CHILD_WRITER" ); + exec($command); + die("no exec"); + } + if ( $pid > 0 ) { # parent + close(CHILD_WRITER); + if ($listp) { + @dialog_result = (); + while (<PARENT_READER>) { + chop; + $dialog_result[@dialog_result] = $_; + } + } + else { + @dialog_result = <PARENT_READER>; + } + close(PARENT_READER); + waitpid( $pid, 0 ); + $res = $?; + } + + # Again, dialog returns results backwards + if ( !$res ) { + return 1; + } + else { + return 0; + } +} + +sub rhs_wordwrap { + my ( $intext, $width ) = @_; + my ( $outtext, $i, $j, @lines, $wrap, @words, $pos, $pad ); + + &trace( "rhs_wordwrap\n\tintext:%s\n\twidth:%d\n", $intext, $width ); + &screensize; + $width = int($width); + $outtext = ""; + $pad = 3; # leave 3 spaces around each line + $pos = $pad; # current insert position + $wrap = 0; # 1 if we have been auto wrapping + my $insert_nl = 0; # 1 if we just did an absolute + # and we should preface any new text + # with a new line + @lines = split( /\n/, $intext ); + + for ( $i = 0 ; $i <= $#lines ; $i++ ) { + + if ( $lines[$i] =~ /^>/ ) { + $outtext .= "\n" if ($insert_nl); + $outtext .= "\n" if ($wrap); + $lines[$i] =~ /^>(.*)$/; + $outtext .= $1; + $insert_nl = 1; + $wrap = 0; + $pos = $pad; + } + else { + $wrap = 1; + @words = split( /\s+/, $lines[$i] ); + for ( $j = 0 ; $j <= $#words ; $j++ ) { + if ($insert_nl) { + $outtext .= "\n"; + $insert_nl = 0; + } + if ( ( length( $words[$j] ) + $pos ) > $width - $pad ) { + $outtext .= "\n"; + $pos = $pad; + } + $outtext .= $words[$j] . " "; + $pos += length( $words[$j] ) + 1; + } + } + } + + &trace( "\touttext:%s\n", $outtext ); + return $outtext; +} + +############ +1; Index: vendor/dialog/1.3-20180621/dlg_keys.c =================================================================== --- vendor/dialog/1.3-20180621/dlg_keys.c (nonexistent) +++ vendor/dialog/1.3-20180621/dlg_keys.c (revision 339483) @@ -0,0 +1,888 @@ +/* + * $Id: dlg_keys.c,v 1.45 2018/05/28 17:27:10 tom Exp $ + * + * dlg_keys.c -- runtime binding support for dialog + * + * Copyright 2006-2017,2018 Thomas E. Dickey + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License, version 2.1 + * as published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this program; if not, write to + * Free Software Foundation, Inc. + * 51 Franklin St., Fifth Floor + * Boston, MA 02110, USA. + */ + +#include <dialog.h> +#include <dlg_keys.h> + +#define LIST_BINDINGS struct _list_bindings + +#define CHR_BACKSLASH '\\' +#define IsOctal(ch) ((ch) >= '0' && (ch) <= '7') +#define TableSize(name) (sizeof(name)/sizeof(name[0])) + +LIST_BINDINGS { + LIST_BINDINGS *link; + WINDOW *win; /* window on which widget gets input */ + const char *name; /* widget name */ + bool buttons; /* true only for dlg_register_buttons() */ + DLG_KEYS_BINDING *binding; /* list of bindings */ +}; + +#define WILDNAME "*" +static LIST_BINDINGS *all_bindings; +static const DLG_KEYS_BINDING end_keys_binding = END_KEYS_BINDING; + +/* + * For a given named widget's window, associate a binding table. + */ +void +dlg_register_window(WINDOW *win, const char *name, DLG_KEYS_BINDING * binding) +{ + LIST_BINDINGS *p, *q; + + for (p = all_bindings, q = 0; p != 0; q = p, p = p->link) { + if (p->win == win && !strcmp(p->name, name)) { + p->binding = binding; + return; + } + } + /* add built-in bindings at the end of the list (see compare_bindings). */ + if ((p = dlg_calloc(LIST_BINDINGS, 1)) != 0) { + p->win = win; + p->name = name; + p->binding = binding; + if (q != 0) { + q->link = p; + } else { + all_bindings = p; + } + } +#if defined(HAVE_DLG_TRACE) && defined(HAVE_RC_FILE) + /* + * Trace the binding information assigned to this window. For most widgets + * there is only one binding table. forms have two, so the trace will be + * longer. Since compiled-in bindings are only visible when the widget is + * registered, there is no other way to see what bindings are available, + * than by running dialog and tracing it. + */ + DLG_TRACE(("# dlg_register_window %s\n", name)); + dlg_dump_keys(dialog_state.trace_output); + dlg_dump_window_keys(dialog_state.trace_output, win); + DLG_TRACE(("# ...done dlg_register_window %s\n", name)); +#endif +} + +/* + * Unlike dlg_lookup_key(), this looks for either widget-builtin or rc-file + * definitions, depending on whether 'win' is null. + */ +static int +key_is_bound(WINDOW *win, const char *name, int curses_key, int function_key) +{ + LIST_BINDINGS *p; + + for (p = all_bindings; p != 0; p = p->link) { + if (p->win == win && !dlg_strcmp(p->name, name)) { + int n; + for (n = 0; p->binding[n].is_function_key >= 0; ++n) { + if (p->binding[n].curses_key == curses_key + && p->binding[n].is_function_key == function_key) { + return TRUE; + } + } + } + } + return FALSE; +} + +/* + * Call this function after dlg_register_window(), for the list of button + * labels associated with the widget. + * + * Ensure that dlg_lookup_key() will not accidentally translate a key that + * we would like to use for a button abbreviation to some other key, e.g., + * h/j/k/l for navigation into a cursor key. Do this by binding the key + * to itself. + * + * See dlg_char_to_button(). + */ +void +dlg_register_buttons(WINDOW *win, const char *name, const char **buttons) +{ + int n; + LIST_BINDINGS *p; + DLG_KEYS_BINDING *q; + + if (buttons == 0) + return; + + for (n = 0; buttons[n] != 0; ++n) { + int curses_key = dlg_button_to_char(buttons[n]); + + /* ignore multibyte characters */ + if (curses_key >= KEY_MIN) + continue; + + /* if it is not bound in the widget, skip it (no conflicts) */ + if (!key_is_bound(win, name, curses_key, FALSE)) + continue; + +#ifdef HAVE_RC_FILE + /* if it is bound in the rc-file, skip it */ + if (key_is_bound(0, name, curses_key, FALSE)) + continue; +#endif + + if ((p = dlg_calloc(LIST_BINDINGS, 1)) != 0) { + if ((q = dlg_calloc(DLG_KEYS_BINDING, 2)) != 0) { + q[0].is_function_key = 0; + q[0].curses_key = curses_key; + q[0].dialog_key = curses_key; + q[1] = end_keys_binding; + + p->win = win; + p->name = name; + p->buttons = TRUE; + p->binding = q; + + /* put these at the beginning, to override the widget's table */ + p->link = all_bindings; + all_bindings = p; + } else { + free(p); + } + } + } +} + +/* + * Remove the bindings for a given window. + */ +void +dlg_unregister_window(WINDOW *win) +{ + LIST_BINDINGS *p, *q; + + for (p = all_bindings, q = 0; p != 0; p = p->link) { + if (p->win == win) { + if (q != 0) { + q->link = p->link; + } else { + all_bindings = p->link; + } + /* the user-defined and buttons-bindings all are length=1 */ + if (p->binding[1].is_function_key < 0) + free(p->binding); + free(p); + dlg_unregister_window(win); + break; + } + q = p; + } +} + +/* + * Call this after wgetch(), using the same window pointer and passing + * the curses-key. + * + * If there is no binding associated with the widget, it simply returns + * the given curses-key. + * + * Parameters: + * win is the window on which the wgetch() was done. + * curses_key is the value returned by wgetch(). + * fkey in/out (on input, it is nonzero if curses_key is a function key, + * and on output, it is nonzero if the result is a function key). + */ +int +dlg_lookup_key(WINDOW *win, int curses_key, int *fkey) +{ + LIST_BINDINGS *p; + DLG_KEYS_BINDING *q; + + /* + * Ignore mouse clicks, since they are already encoded properly. + */ +#ifdef KEY_MOUSE + if (*fkey != 0 && curses_key == KEY_MOUSE) { + ; + } else +#endif + /* + * Ignore resize events, since they are already encoded properly. + */ +#ifdef KEY_RESIZE + if (*fkey != 0 && curses_key == KEY_RESIZE) { + ; + } else +#endif + if (*fkey == 0 || curses_key < KEY_MAX) { + const char *name = WILDNAME; + if (win != 0) { + for (p = all_bindings; p != 0; p = p->link) { + if (p->win == win) { + name = p->name; + break; + } + } + } + for (p = all_bindings; p != 0; p = p->link) { + if (p->win == win || + (p->win == 0 && + (!strcmp(p->name, name) || !strcmp(p->name, WILDNAME)))) { + int function_key = (*fkey != 0); + for (q = p->binding; q->is_function_key >= 0; ++q) { + if (p->buttons + && !function_key + && q->curses_key == (int) dlg_toupper(curses_key)) { + *fkey = 0; + return q->dialog_key; + } + if (q->curses_key == curses_key + && q->is_function_key == function_key) { + *fkey = q->dialog_key; + return *fkey; + } + } + } + } + } + return curses_key; +} + +/* + * Test a dialog internal keycode to see if it corresponds to one of the push + * buttons on the widget such as "OK". + * + * This is only useful if there are user-defined key bindings, since there are + * no built-in bindings that map directly to DLGK_OK, etc. + * + * See also dlg_ok_buttoncode(). + */ +int +dlg_result_key(int dialog_key, int fkey GCC_UNUSED, int *resultp) +{ + int done = FALSE; + +#ifdef HAVE_RC_FILE + if (fkey) { + switch ((DLG_KEYS_ENUM) dialog_key) { + case DLGK_OK: + *resultp = DLG_EXIT_OK; + done = TRUE; + break; + case DLGK_CANCEL: + if (!dialog_vars.nocancel) { + *resultp = DLG_EXIT_CANCEL; + done = TRUE; + } + break; + case DLGK_EXTRA: + if (dialog_vars.extra_button) { + *resultp = DLG_EXIT_EXTRA; + done = TRUE; + } + break; + case DLGK_HELP: + if (dialog_vars.help_button) { + *resultp = DLG_EXIT_HELP; + done = TRUE; + } + break; + case DLGK_ESC: + *resultp = DLG_EXIT_ESC; + done = TRUE; + break; + default: + break; + } + } else +#endif + if (dialog_key == ESC) { + *resultp = DLG_EXIT_ESC; + done = TRUE; + } else if (dialog_key == ERR) { + *resultp = DLG_EXIT_ERROR; + done = TRUE; + } + + return done; +} + +#ifdef HAVE_RC_FILE +typedef struct { + const char *name; + int code; +} CODENAME; + +#define ASCII_NAME(name,code) { #name, code } +#define CURSES_NAME(upper) { #upper, KEY_ ## upper } +#define COUNT_CURSES TableSize(curses_names) +static const CODENAME curses_names[] = +{ + ASCII_NAME(ESC, '\033'), + ASCII_NAME(CR, '\r'), + ASCII_NAME(LF, '\n'), + ASCII_NAME(FF, '\f'), + ASCII_NAME(TAB, '\t'), + ASCII_NAME(DEL, '\177'), + + CURSES_NAME(DOWN), + CURSES_NAME(UP), + CURSES_NAME(LEFT), + CURSES_NAME(RIGHT), + CURSES_NAME(HOME), + CURSES_NAME(BACKSPACE), + CURSES_NAME(F0), + CURSES_NAME(DL), + CURSES_NAME(IL), + CURSES_NAME(DC), + CURSES_NAME(IC), + CURSES_NAME(EIC), + CURSES_NAME(CLEAR), + CURSES_NAME(EOS), + CURSES_NAME(EOL), + CURSES_NAME(SF), + CURSES_NAME(SR), + CURSES_NAME(NPAGE), + CURSES_NAME(PPAGE), + CURSES_NAME(STAB), + CURSES_NAME(CTAB), + CURSES_NAME(CATAB), + CURSES_NAME(ENTER), + CURSES_NAME(PRINT), + CURSES_NAME(LL), + CURSES_NAME(A1), + CURSES_NAME(A3), + CURSES_NAME(B2), + CURSES_NAME(C1), + CURSES_NAME(C3), + CURSES_NAME(BTAB), + CURSES_NAME(BEG), + CURSES_NAME(CANCEL), + CURSES_NAME(CLOSE), + CURSES_NAME(COMMAND), + CURSES_NAME(COPY), + CURSES_NAME(CREATE), + CURSES_NAME(END), + CURSES_NAME(EXIT), + CURSES_NAME(FIND), + CURSES_NAME(HELP), + CURSES_NAME(MARK), + CURSES_NAME(MESSAGE), + CURSES_NAME(MOVE), + CURSES_NAME(NEXT), + CURSES_NAME(OPEN), + CURSES_NAME(OPTIONS), + CURSES_NAME(PREVIOUS), + CURSES_NAME(REDO), + CURSES_NAME(REFERENCE), + CURSES_NAME(REFRESH), + CURSES_NAME(REPLACE), + CURSES_NAME(RESTART), + CURSES_NAME(RESUME), + CURSES_NAME(SAVE), + CURSES_NAME(SBEG), + CURSES_NAME(SCANCEL), + CURSES_NAME(SCOMMAND), + CURSES_NAME(SCOPY), + CURSES_NAME(SCREATE), + CURSES_NAME(SDC), + CURSES_NAME(SDL), + CURSES_NAME(SELECT), + CURSES_NAME(SEND), + CURSES_NAME(SEOL), + CURSES_NAME(SEXIT), + CURSES_NAME(SFIND), + CURSES_NAME(SHELP), + CURSES_NAME(SHOME), + CURSES_NAME(SIC), + CURSES_NAME(SLEFT), + CURSES_NAME(SMESSAGE), + CURSES_NAME(SMOVE), + CURSES_NAME(SNEXT), + CURSES_NAME(SOPTIONS), + CURSES_NAME(SPREVIOUS), + CURSES_NAME(SPRINT), + CURSES_NAME(SREDO), + CURSES_NAME(SREPLACE), + CURSES_NAME(SRIGHT), + CURSES_NAME(SRSUME), + CURSES_NAME(SSAVE), + CURSES_NAME(SSUSPEND), + CURSES_NAME(SUNDO), + CURSES_NAME(SUSPEND), + CURSES_NAME(UNDO), +}; + +#define DIALOG_NAME(upper) { #upper, DLGK_ ## upper } +#define COUNT_DIALOG TableSize(dialog_names) +static const CODENAME dialog_names[] = +{ + DIALOG_NAME(OK), + DIALOG_NAME(CANCEL), + DIALOG_NAME(EXTRA), + DIALOG_NAME(HELP), + DIALOG_NAME(ESC), + DIALOG_NAME(PAGE_FIRST), + DIALOG_NAME(PAGE_LAST), + DIALOG_NAME(PAGE_NEXT), + DIALOG_NAME(PAGE_PREV), + DIALOG_NAME(ITEM_FIRST), + DIALOG_NAME(ITEM_LAST), + DIALOG_NAME(ITEM_NEXT), + DIALOG_NAME(ITEM_PREV), + DIALOG_NAME(FIELD_FIRST), + DIALOG_NAME(FIELD_LAST), + DIALOG_NAME(FIELD_NEXT), + DIALOG_NAME(FIELD_PREV), + DIALOG_NAME(FORM_FIRST), + DIALOG_NAME(FORM_LAST), + DIALOG_NAME(FORM_NEXT), + DIALOG_NAME(FORM_PREV), + DIALOG_NAME(GRID_UP), + DIALOG_NAME(GRID_DOWN), + DIALOG_NAME(GRID_LEFT), + DIALOG_NAME(GRID_RIGHT), + DIALOG_NAME(DELETE_LEFT), + DIALOG_NAME(DELETE_RIGHT), + DIALOG_NAME(DELETE_ALL), + DIALOG_NAME(ENTER), + DIALOG_NAME(BEGIN), + DIALOG_NAME(FINAL), + DIALOG_NAME(SELECT), + DIALOG_NAME(HELPFILE), + DIALOG_NAME(TRACE), + DIALOG_NAME(TOGGLE) +}; + +#define MAP2(letter,actual) { letter, actual } + +static const struct { + int letter; + int actual; +} escaped_letters[] = { + + MAP2('a', DLG_CTRL('G')), + MAP2('b', DLG_CTRL('H')), + MAP2('f', DLG_CTRL('L')), + MAP2('n', DLG_CTRL('J')), + MAP2('r', DLG_CTRL('M')), + MAP2('s', CHR_SPACE), + MAP2('t', DLG_CTRL('I')), + MAP2('\\', '\\'), +}; + +#undef MAP2 + +static char * +skip_white(char *s) +{ + while (*s != '\0' && isspace(UCH(*s))) + ++s; + return s; +} + +static char * +skip_black(char *s) +{ + while (*s != '\0' && !isspace(UCH(*s))) + ++s; + return s; +} + +/* + * Find a user-defined binding, given the curses key code. + */ +static DLG_KEYS_BINDING * +find_binding(char *widget, int curses_key) +{ + LIST_BINDINGS *p; + DLG_KEYS_BINDING *result = 0; + + for (p = all_bindings; p != 0; p = p->link) { + if (p->win == 0 + && !dlg_strcmp(p->name, widget) + && p->binding->curses_key == curses_key) { + result = p->binding; + break; + } + } + return result; +} + +/* + * Built-in bindings have a nonzero "win" member, and the associated binding + * table can have more than one entry. We keep those last, since lookups will + * find the user-defined bindings first and use those. + * + * Sort "*" (all-widgets) entries past named widgets, since those are less + * specific. + */ +static int +compare_bindings(LIST_BINDINGS * a, LIST_BINDINGS * b) +{ + int result = 0; + if (a->win == b->win) { + if (!strcmp(a->name, b->name)) { + result = a->binding[0].curses_key - b->binding[0].curses_key; + } else if (!strcmp(b->name, WILDNAME)) { + result = -1; + } else if (!strcmp(a->name, WILDNAME)) { + result = 1; + } else { + result = dlg_strcmp(a->name, b->name); + } + } else if (b->win) { + result = -1; + } else { + result = 1; + } + return result; +} + +/* + * Find a user-defined binding, given the curses key code. If it does not + * exist, create a new one, inserting it into the linked list, keeping it + * sorted to simplify lookups for user-defined bindings that can override + * the built-in bindings. + */ +static DLG_KEYS_BINDING * +make_binding(char *widget, int curses_key, int is_function, int dialog_key) +{ + LIST_BINDINGS *entry = 0; + DLG_KEYS_BINDING *data = 0; + char *name; + LIST_BINDINGS *p, *q; + DLG_KEYS_BINDING *result = find_binding(widget, curses_key); + + if (result == 0 + && (entry = dlg_calloc(LIST_BINDINGS, 1)) != 0 + && (data = dlg_calloc(DLG_KEYS_BINDING, 2)) != 0 + && (name = dlg_strclone(widget)) != 0) { + + entry->name = name; + entry->binding = data; + + data[0].is_function_key = is_function; + data[0].curses_key = curses_key; + data[0].dialog_key = dialog_key; + + data[1] = end_keys_binding; + + for (p = all_bindings, q = 0; p != 0; q = p, p = p->link) { + if (compare_bindings(entry, p) < 0) { + break; + } + } + if (q != 0) { + q->link = entry; + } else { + all_bindings = entry; + } + if (p != 0) { + entry->link = p; + } + result = data; + } else if (entry != 0) { + free(entry); + if (data) + free(data); + } + + return result; +} + +static int +decode_escaped(char **string) +{ + unsigned n; + int result = 0; + + if (IsOctal(**string)) { + int limit = 3; + while (limit-- > 0 && IsOctal(**string)) { + int ch = (**string); + *string += 1; + result = (result << 3) | (ch - '0'); + } + } else { + for (n = 0; n < TableSize(escaped_letters); ++n) { + if (**string == escaped_letters[n].letter) { + *string += 1; + result = escaped_letters[n].actual; + break; + } + } + } + return result; +} + +static char * +encode_escaped(int value) +{ + static char result[80]; + unsigned n; + bool found = FALSE; + for (n = 0; n < TableSize(escaped_letters); ++n) { + if (value == escaped_letters[n].actual) { + found = TRUE; + sprintf(result, "%c", escaped_letters[n].letter); + break; + } + } + if (!found) { + sprintf(result, "%03o", value & 0xff); + } + return result; +} + +/* + * Parse the parameters of the "bindkey" configuration-file entry. This + * expects widget name which may be "*", followed by curses key definition and + * then dialog key definition. + * + * The curses key "should" be one of the names (ignoring case) from + * curses_names[], but may also be a single control character (prefix "^" or + * "~" depending on whether it is C0 or C1), or an escaped single character. + * Binding a printable character with dialog is possible but not useful. + * + * The dialog key must be one of the names from dialog_names[]. + */ +int +dlg_parse_bindkey(char *params) +{ + char *p = skip_white(params); + char *q; + bool escaped = FALSE; + int modified = 0; + int result = FALSE; + unsigned xx; + char *widget; + int is_function = FALSE; + int curses_key; + int dialog_key; + + curses_key = -1; + dialog_key = -1; + widget = p; + + p = skip_black(p); + if (p != widget && *p != '\0') { + *p++ = '\0'; + p = skip_white(p); + q = p; + while (*p != '\0' && curses_key < 0) { + if (escaped) { + escaped = FALSE; + curses_key = decode_escaped(&p); + } else if (*p == CHR_BACKSLASH) { + escaped = TRUE; + } else if (modified) { + if (*p == '?') { + curses_key = ((modified == '^') + ? 127 + : 255); + } else { + curses_key = ((modified == '^') + ? (*p & 0x1f) + : ((*p & 0x1f) | 0x80)); + } + } else if (*p == '^') { + modified = *p; + } else if (*p == '~') { + modified = *p; + } else if (isspace(UCH(*p))) { + break; + } + ++p; + } + if (!isspace(UCH(*p))) { + ; + } else { + *p++ = '\0'; + if (curses_key < 0) { + char fprefix[2]; + char check[2]; + int keynumber; + if (sscanf(q, "%[Ff]%d%c", fprefix, &keynumber, check) == 2) { + curses_key = KEY_F(keynumber); + is_function = TRUE; + } else { + for (xx = 0; xx < COUNT_CURSES; ++xx) { + if (!dlg_strcmp(curses_names[xx].name, q)) { + curses_key = curses_names[xx].code; + is_function = (curses_key >= KEY_MIN); + break; + } + } + } + } + } + q = skip_white(p); + p = skip_black(q); + if (p != q) { + for (xx = 0; xx < COUNT_DIALOG; ++xx) { + if (!dlg_strcmp(dialog_names[xx].name, q)) { + dialog_key = dialog_names[xx].code; + break; + } + } + } + if (*widget != '\0' + && curses_key >= 0 + && dialog_key >= 0 + && make_binding(widget, curses_key, is_function, dialog_key) != 0) { + result = TRUE; + } + } + return result; +} + +static void +dump_curses_key(FILE *fp, int curses_key) +{ + if (curses_key > KEY_MIN) { + unsigned n; + bool found = FALSE; + for (n = 0; n < COUNT_CURSES; ++n) { + if (curses_names[n].code == curses_key) { + fprintf(fp, "%s", curses_names[n].name); + found = TRUE; + break; + } + } + if (!found) { +#ifdef KEY_MOUSE + if (is_DLGK_MOUSE(curses_key)) { + fprintf(fp, "MOUSE-"); + dump_curses_key(fp, curses_key - M_EVENT); + } else +#endif + if (curses_key >= KEY_F(0)) { + fprintf(fp, "F%d", curses_key - KEY_F(0)); + } else { + fprintf(fp, "curses%d", curses_key); + } + } + } else if (curses_key >= 0 && curses_key < 32) { + fprintf(fp, "^%c", curses_key + 64); + } else if (curses_key == 127) { + fprintf(fp, "^?"); + } else if (curses_key >= 128 && curses_key < 160) { + fprintf(fp, "~%c", curses_key - 64); + } else if (curses_key == 255) { + fprintf(fp, "~?"); + } else if (curses_key > 32 && + curses_key < 127 && + curses_key != CHR_BACKSLASH) { + fprintf(fp, "%c", curses_key); + } else { + fprintf(fp, "%c%s", CHR_BACKSLASH, encode_escaped(curses_key)); + } +} + +static void +dump_dialog_key(FILE *fp, int dialog_key) +{ + unsigned n; + bool found = FALSE; + for (n = 0; n < COUNT_DIALOG; ++n) { + if (dialog_names[n].code == dialog_key) { + fputs(dialog_names[n].name, fp); + found = TRUE; + break; + } + } + if (!found) { + fprintf(fp, "dialog%d", dialog_key); + } +} + +static void +dump_one_binding(FILE *fp, + WINDOW *win, + const char *widget, + DLG_KEYS_BINDING * binding) +{ + int actual; + int fkey = (binding->curses_key > 255); + + fprintf(fp, "bindkey %s ", widget); + dump_curses_key(fp, binding->curses_key); + fputc(' ', fp); + dump_dialog_key(fp, binding->dialog_key); + actual = dlg_lookup_key(win, binding->curses_key, &fkey); +#ifdef KEY_MOUSE + if (is_DLGK_MOUSE(binding->curses_key) && is_DLGK_MOUSE(actual)) { + ; /* EMPTY */ + } else +#endif + if (actual != binding->dialog_key) { + fprintf(fp, "\t# overridden by "); + dump_dialog_key(fp, actual); + } + fputc('\n', fp); +} + +/* + * Dump bindings for the given window. If it is a null, then this dumps the + * initial bindings which were loaded from the rc-file that are used as + * overall defaults. + */ +void +dlg_dump_window_keys(FILE *fp, WINDOW *win) +{ + if (fp != 0) { + LIST_BINDINGS *p; + DLG_KEYS_BINDING *q; + const char *last = ""; + + for (p = all_bindings; p != 0; p = p->link) { + if (p->win == win) { + if (dlg_strcmp(last, p->name)) { + fprintf(fp, "# key bindings for %s widgets%s\n", + !strcmp(p->name, WILDNAME) ? "all" : p->name, + win == 0 ? " (user-defined)" : ""); + last = p->name; + } + for (q = p->binding; q->is_function_key >= 0; ++q) { + dump_one_binding(fp, win, p->name, q); + } + } + } + } +} + +/* + * Dump all of the bindings which are not specific to a given widget, i.e., + * the "win" member is null. + */ +void +dlg_dump_keys(FILE *fp) +{ + if (fp != 0) { + LIST_BINDINGS *p; + unsigned count = 0; + + for (p = all_bindings; p != 0; p = p->link) { + if (p->win == 0) { + ++count; + } + } + if (count != 0) { + dlg_dump_window_keys(fp, 0); + } + } +} +#endif /* HAVE_RC_FILE */ Index: vendor/dialog/1.3-20180621/dlg_keys.h =================================================================== --- vendor/dialog/1.3-20180621/dlg_keys.h (nonexistent) +++ vendor/dialog/1.3-20180621/dlg_keys.h (revision 339483) @@ -0,0 +1,178 @@ +/* + * $Id: dlg_keys.h,v 1.36 2016/08/28 21:23:17 tom Exp $ + * + * dlg_keys.h -- runtime binding support for dialog + * + * Copyright 2005-2012,2016 Thomas E. Dickey + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License, version 2.1 + * as published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this program; if not, write to + * Free Software Foundation, Inc. + * 51 Franklin St., Fifth Floor + * Boston, MA 02110, USA. + */ + +#ifndef DLG_KEYS_H_included +#define DLG_KEYS_H_included 1 +/* *INDENT-OFF* */ + +#include <dialog.h> + +#ifdef USE_WIDE_CURSES +#include <wctype.h> +#define dlg_toupper(ch) towupper((wint_t)ch) +#define dlg_isupper(ch) iswupper((wint_t)ch) +#else +#define dlg_toupper(ch) (((ch) > 0 && (ch) <= 255) ? toupper(ch) : (ch)) +#define dlg_isupper(ch) (isalpha(ch) && isupper(ch)) +#endif + +#ifdef __cplusplus +extern "C" { +#endif + +typedef struct { + int is_function_key; + int curses_key; + int dialog_key; +} DLG_KEYS_BINDING; + +#define DLG_KEYS_DATA(dialog, curses) { (curses) >= KEY_MIN, curses, dialog } + +#define END_KEYS_BINDING { -1, 0, 0 } + +/* + * Define dialog's internal function-keys past the range used by curses. + */ +typedef enum { + DLGK_MIN = KEY_MAX + 1, + /* predefined buttons */ + DLGK_OK, + DLGK_CANCEL, + DLGK_EXTRA, + DLGK_HELP, + DLGK_ESC, + /* moving from screen to screen (pages) */ + DLGK_PAGE_FIRST, + DLGK_PAGE_LAST, + DLGK_PAGE_NEXT, + DLGK_PAGE_PREV, + /* moving within a list */ + DLGK_ITEM_FIRST, + DLGK_ITEM_LAST, + DLGK_ITEM_NEXT, + DLGK_ITEM_PREV, + /* moving from field to field (or buttons) */ + DLGK_FIELD_FIRST, + DLGK_FIELD_LAST, + DLGK_FIELD_NEXT, + DLGK_FIELD_PREV, + /* moving from form-field to form-field (or buttons) */ + DLGK_FORM_FIRST, + DLGK_FORM_LAST, + DLGK_FORM_NEXT, + DLGK_FORM_PREV, + /* moving within a grid */ + DLGK_GRID_UP, + DLGK_GRID_DOWN, + DLGK_GRID_LEFT, + DLGK_GRID_RIGHT, + /* delete */ + DLGK_DELETE_LEFT, + DLGK_DELETE_RIGHT, + DLGK_DELETE_ALL, + /* special */ + DLGK_ENTER, + DLGK_BEGIN, + DLGK_FINAL, + DLGK_SELECT, + DLGK_HELPFILE, + DLGK_TRACE, + DLGK_TOGGLE +} DLG_KEYS_ENUM; + +#define is_DLGK_MOUSE(code) ((code) >= M_EVENT) +#define DLGK_MOUSE(code) ((code) + M_EVENT) + +#define HELPKEY_BINDINGS \ + DLG_KEYS_DATA( DLGK_HELPFILE, CHR_HELP ), \ + DLG_KEYS_DATA( DLGK_HELPFILE, KEY_F(1) ), \ + DLG_KEYS_DATA( DLGK_HELPFILE, KEY_HELP ) + +#define ENTERKEY_BINDINGS \ + DLG_KEYS_DATA( DLGK_ENTER, '\n' ), \ + DLG_KEYS_DATA( DLGK_ENTER, '\r' ), \ + DLG_KEYS_DATA( DLGK_ENTER, KEY_ENTER ) + +/* ^U == 21 */ +#define INPUTSTR_BINDINGS \ + DLG_KEYS_DATA( DLGK_BEGIN, KEY_HOME ), \ + DLG_KEYS_DATA( DLGK_DELETE_ALL, CHR_KILL ), \ + DLG_KEYS_DATA( DLGK_DELETE_LEFT, CHR_BACKSPACE ), \ + DLG_KEYS_DATA( DLGK_DELETE_LEFT, KEY_BACKSPACE ), \ + DLG_KEYS_DATA( DLGK_DELETE_RIGHT, CHR_DELETE ), \ + DLG_KEYS_DATA( DLGK_DELETE_RIGHT, KEY_DC ), \ + DLG_KEYS_DATA( DLGK_FINAL, KEY_END ), \ + DLG_KEYS_DATA( DLGK_GRID_LEFT, KEY_LEFT ), \ + DLG_KEYS_DATA( DLGK_GRID_RIGHT, KEY_RIGHT ) + +#define SCROLL_FKEY_BINDINGS \ + DLG_KEYS_DATA( DLGK_GRID_DOWN, KEY_DOWN ), \ + DLG_KEYS_DATA( DLGK_GRID_UP, KEY_UP ), \ + DLG_KEYS_DATA( DLGK_PAGE_FIRST, KEY_HOME ), \ + DLG_KEYS_DATA( DLGK_PAGE_LAST, KEY_END ), \ + DLG_KEYS_DATA( DLGK_PAGE_NEXT, KEY_NPAGE ), \ + DLG_KEYS_DATA( DLGK_PAGE_PREV, KEY_PPAGE ) + +#define SCROLLKEY_BINDINGS \ + SCROLL_FKEY_BINDINGS, \ + DLG_KEYS_DATA( DLGK_GRID_DOWN, 'J' ), \ + DLG_KEYS_DATA( DLGK_GRID_DOWN, 'j' ), \ + DLG_KEYS_DATA( DLGK_GRID_UP, 'K' ), \ + DLG_KEYS_DATA( DLGK_GRID_UP, 'k' ), \ + DLG_KEYS_DATA( DLGK_PAGE_FIRST, 'g' ), \ + DLG_KEYS_DATA( DLGK_PAGE_LAST, 'G' ), \ + DLG_KEYS_DATA( DLGK_PAGE_NEXT, 'F' ), \ + DLG_KEYS_DATA( DLGK_PAGE_NEXT, 'f' ), \ + DLG_KEYS_DATA( DLGK_PAGE_PREV, 'B' ), \ + DLG_KEYS_DATA( DLGK_PAGE_PREV, 'b' ) + +#define TRAVERSE_BINDINGS \ + DLG_KEYS_DATA( DLGK_ENTER, CHR_SPACE ), \ + DLG_KEYS_DATA( DLGK_FIELD_NEXT, KEY_DOWN ), \ + DLG_KEYS_DATA( DLGK_FIELD_NEXT, KEY_RIGHT ), \ + DLG_KEYS_DATA( DLGK_FIELD_NEXT, TAB ), \ + DLG_KEYS_DATA( DLGK_FIELD_PREV, KEY_UP ), \ + DLG_KEYS_DATA( DLGK_FIELD_PREV, KEY_BTAB ), \ + DLG_KEYS_DATA( DLGK_FIELD_PREV, KEY_LEFT ) + +#define TOGGLEKEY_BINDINGS \ + DLG_KEYS_DATA( DLGK_TOGGLE, CHR_SPACE ) + +extern int dlg_lookup_key(WINDOW * /*win*/, int /*curses_key*/, int * /*dialog_key*/); +extern int dlg_result_key(int /*dialog_key*/, int /*fkey*/, int * /*resultp*/); +extern void dlg_register_buttons(WINDOW * /*win*/, const char * /*name*/, const char ** /*buttons*/); +extern void dlg_register_window(WINDOW * /*win*/, const char * /*name*/, DLG_KEYS_BINDING * /*binding*/); +extern void dlg_unregister_window(WINDOW * /*win*/); + +#ifdef HAVE_RC_FILE +extern int dlg_parse_bindkey(char * /*params*/); +extern void dlg_dump_keys(FILE * /*fp*/); +extern void dlg_dump_window_keys(FILE * /*fp*/, WINDOW * /*win*/); +#endif + +#ifdef __cplusplus +} +#endif +/* *INDENT-ON* */ + +#endif /* DLG_KEYS_H_included */ Index: vendor/dialog/1.3-20180621/editbox.c =================================================================== --- vendor/dialog/1.3-20180621/editbox.c (nonexistent) +++ vendor/dialog/1.3-20180621/editbox.c (revision 339483) @@ -0,0 +1,760 @@ +/* + * $Id: editbox.c,v 1.70 2018/06/19 22:57:01 tom Exp $ + * + * editbox.c -- implements the edit box + * + * Copyright 2007-2016,2018 Thomas E. Dickey + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License, version 2.1 + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this program; if not, write to + * Free Software Foundation, Inc. + * 51 Franklin St., Fifth Floor + * Boston, MA 02110, USA. + */ + +#include <dialog.h> +#include <dlg_keys.h> + +#include <sys/stat.h> + +#define sTEXT -1 + +static void +fail_list(void) +{ + dlg_exiterr("File too large"); +} + +static void +grow_list(char ***list, int *have, int want) +{ + if (want > *have) { + size_t last = (size_t) *have; + size_t need = (size_t) (want | 31) + 3; + *have = (int) need; + (*list) = dlg_realloc(char *, need, *list); + if ((*list) == 0) { + fail_list(); + } else { + while (++last < need) { + (*list)[last] = 0; + } + } + } +} + +static void +load_list(const char *file, char ***list, int *rows) +{ + FILE *fp; + char *blob = 0; + struct stat sb; + unsigned n, pass; + unsigned need; + size_t size; + + *list = 0; + *rows = 0; + + if (stat(file, &sb) < 0 || + (sb.st_mode & S_IFMT) != S_IFREG) + dlg_exiterr("Not a file: %s", file); + + size = (size_t) sb.st_size; + if ((blob = dlg_malloc(char, size + 2)) == 0) { + fail_list(); + } else { + blob[size] = '\0'; + + if ((fp = fopen(file, "r")) == 0) + dlg_exiterr("Cannot open: %s", file); + size = fread(blob, sizeof(char), size, fp); + fclose(fp); + + /* + * If the file is not empty, ensure that it ends with a newline. + */ + if (size != 0 && blob[size - 1] != '\n') { + blob[++size - 1] = '\n'; + blob[size] = '\0'; + } + + for (pass = 0; pass < 2; ++pass) { + int first = TRUE; + need = 0; + for (n = 0; n < size; ++n) { + if (first && pass) { + (*list)[need] = blob + n; + first = FALSE; + } + if (blob[n] == '\n') { + first = TRUE; + ++need; + if (pass) + blob[n] = '\0'; + } + } + if (pass) { + if (need == 0) { + (*list)[0] = dlg_strclone(""); + (*list)[1] = 0; + } else { + for (n = 0; n < need; ++n) { + (*list)[n] = dlg_strclone((*list)[n]); + } + (*list)[need] = 0; + } + } else { + grow_list(list, rows, (int) need + 1); + } + } + free(blob); + } +} + +static void +free_list(char ***list, int *rows) +{ + if (*list != 0) { + int n; + for (n = 0; n < (*rows); ++n) { + if ((*list)[n] != 0) + free((*list)[n]); + } + free(*list); + *list = 0; + } + *rows = 0; +} + +/* + * Display a single row in the editing window: + * thisrow is the actual row number that's being displayed. + * show_row is the row number that's highlighted for edit. + * base_row is the first row number in the window + */ +static bool +display_one(WINDOW *win, + char *text, + int thisrow, + int show_row, + int base_row, + int chr_offset) +{ + bool result; + + if (text != 0) { + dlg_show_string(win, + text, + chr_offset, + ((thisrow == show_row) + ? form_active_text_attr + : form_text_attr), + thisrow - base_row, + 0, + getmaxx(win), + FALSE, + FALSE); + result = TRUE; + } else { + result = FALSE; + } + return result; +} + +static void +display_all(WINDOW *win, + char **list, + int show_row, + int firstrow, + int lastrow, + int chr_offset) +{ + int limit = getmaxy(win); + int row; + + dlg_attr_clear(win, getmaxy(win), getmaxx(win), dialog_attr); + if (lastrow - firstrow >= limit) + lastrow = firstrow + limit; + for (row = firstrow; row < lastrow; ++row) { + if (!display_one(win, list[row], + row, show_row, firstrow, + (row == show_row) ? chr_offset : 0)) + break; + } +} + +static int +size_list(char **list) +{ + int result = 0; + + if (list != 0) { + while (*list++ != 0) { + ++result; + } + } + return result; +} + +static bool +scroll_to(int pagesize, int rows, int *base_row, int *this_row, int target) +{ + bool result = FALSE; + + if (target < *base_row) { + if (target < 0) { + if (*base_row == 0 && *this_row == 0) { + beep(); + } else { + *this_row = 0; + *base_row = 0; + result = TRUE; + } + } else { + *this_row = target; + *base_row = target; + result = TRUE; + } + } else if (target >= rows) { + if (*this_row < rows - 1) { + *this_row = rows - 1; + *base_row = rows - 1; + result = TRUE; + } else { + beep(); + } + } else if (target >= *base_row + pagesize) { + *this_row = target; + *base_row = target; + result = TRUE; + } else { + *this_row = target; + result = FALSE; + } + if (pagesize < rows) { + if (*base_row + pagesize >= rows) { + *base_row = rows - pagesize; + } + } else { + *base_row = 0; + } + return result; +} + +static int +col_to_chr_offset(const char *text, int col) +{ + const int *cols = dlg_index_columns(text); + const int *indx = dlg_index_wchars(text); + bool found = FALSE; + int result = 0; + unsigned n; + unsigned len = (unsigned) dlg_count_wchars(text); + + for (n = 0; n < len; ++n) { + if (cols[n] <= col && cols[n + 1] > col) { + result = indx[n]; + found = TRUE; + break; + } + } + if (!found && len && cols[len] == col) { + result = indx[len]; + } + return result; +} + +#define SCROLL_TO(target) show_all = scroll_to(pagesize, listsize, &base_row, &thisrow, target) + +#define PREV_ROW (*list)[thisrow - 1] +#define THIS_ROW (*list)[thisrow] +#define NEXT_ROW (*list)[thisrow + 1] + +#define UPDATE_COL(input) col_offset = dlg_edit_offset(input, chr_offset, box_width) + +static int +widest_line(char **list) +{ + int result = MAX_LEN; + char *value; + + if (list != 0) { + while ((value = *list++) != 0) { + int check = (int) strlen(value); + if (check > result) + result = check; + } + } + return result; +} + +#define NAVIGATE_BINDINGS \ + DLG_KEYS_DATA( DLGK_GRID_DOWN, KEY_DOWN ), \ + DLG_KEYS_DATA( DLGK_GRID_RIGHT, KEY_RIGHT ), \ + DLG_KEYS_DATA( DLGK_GRID_LEFT, KEY_LEFT ), \ + DLG_KEYS_DATA( DLGK_GRID_UP, KEY_UP ), \ + DLG_KEYS_DATA( DLGK_FIELD_NEXT, TAB ), \ + DLG_KEYS_DATA( DLGK_FIELD_PREV, KEY_BTAB ), \ + DLG_KEYS_DATA( DLGK_PAGE_FIRST, KEY_HOME ), \ + DLG_KEYS_DATA( DLGK_PAGE_LAST, KEY_END ), \ + DLG_KEYS_DATA( DLGK_PAGE_LAST, KEY_LL ), \ + DLG_KEYS_DATA( DLGK_PAGE_NEXT, KEY_NPAGE ), \ + DLG_KEYS_DATA( DLGK_PAGE_NEXT, DLGK_MOUSE(KEY_NPAGE) ), \ + DLG_KEYS_DATA( DLGK_PAGE_PREV, KEY_PPAGE ), \ + DLG_KEYS_DATA( DLGK_PAGE_PREV, DLGK_MOUSE(KEY_PPAGE) ) +/* + * Display a dialog box for editing a copy of a file + */ +int +dlg_editbox(const char *title, + char ***list, + int *rows, + int height, + int width) +{ + /* *INDENT-OFF* */ + static DLG_KEYS_BINDING binding[] = { + HELPKEY_BINDINGS, + ENTERKEY_BINDINGS, + NAVIGATE_BINDINGS, + TOGGLEKEY_BINDINGS, + END_KEYS_BINDING + }; + static DLG_KEYS_BINDING binding2[] = { + INPUTSTR_BINDINGS, + HELPKEY_BINDINGS, + ENTERKEY_BINDINGS, + NAVIGATE_BINDINGS, + /* no TOGGLEKEY_BINDINGS, since that includes space... */ + END_KEYS_BINDING + }; + /* *INDENT-ON* */ + +#ifdef KEY_RESIZE + int old_height = height; + int old_width = width; +#endif + int x, y, box_y, box_x, box_height, box_width; + int show_buttons; + int thisrow, base_row, lastrow; + int goal_col = -1; + int col_offset = 0; + int chr_offset = 0; + int key, fkey, code; + int pagesize; + int listsize = size_list(*list); + int result = DLG_EXIT_UNKNOWN; + int state; + size_t max_len = (size_t) dlg_max_input(widest_line(*list)); + char *input, *buffer; + bool show_all, show_one, was_mouse; + bool first_trace = TRUE; + WINDOW *dialog; + WINDOW *editing; + DIALOG_VARS save_vars; + const char **buttons = dlg_ok_labels(); + int mincols = (3 * COLS / 4); + + DLG_TRACE(("# editbox args:\n")); + DLG_TRACE2S("title", title); + /* FIXME dump the rows & list */ + DLG_TRACE2N("height", height); + DLG_TRACE2N("width", width); + + dlg_save_vars(&save_vars); + dialog_vars.separate_output = TRUE; + + dlg_does_output(); + + buffer = dlg_malloc(char, max_len + 1); + assert_ptr(buffer, "dlg_editbox"); + + thisrow = base_row = lastrow = 0; + +#ifdef KEY_RESIZE + retry: +#endif + show_buttons = TRUE; + state = dialog_vars.default_button >= 0 ? dlg_default_button() : sTEXT; + fkey = 0; + + dlg_button_layout(buttons, &mincols); + dlg_auto_size(title, "", &height, &width, 3 * LINES / 4, mincols); + dlg_print_size(height, width); + dlg_ctl_size(height, width); + + x = dlg_box_x_ordinate(width); + y = dlg_box_y_ordinate(height); + + dialog = dlg_new_window(height, width, y, x); + dlg_register_window(dialog, "editbox", binding); + dlg_register_buttons(dialog, "editbox", buttons); + + dlg_mouse_setbase(x, y); + + dlg_draw_box2(dialog, 0, 0, height, width, dialog_attr, border_attr, border2_attr); + dlg_draw_bottom_box2(dialog, border_attr, border2_attr, dialog_attr); + dlg_draw_title(dialog, title); + + dlg_attrset(dialog, dialog_attr); + + /* Draw the editing field in a box */ + box_y = MARGIN + 0; + box_x = MARGIN + 1; + box_width = width - 2 - (2 * MARGIN); + box_height = height - (4 * MARGIN); + + dlg_draw_box(dialog, + box_y, + box_x, + box_height, + box_width, + border_attr, border2_attr); + dlg_mouse_mkbigregion(box_y + MARGIN, + box_x + MARGIN, + box_height - (2 * MARGIN), + box_width - (2 * MARGIN), + KEY_MAX, 1, 1, 3); + editing = dlg_sub_window(dialog, + box_height - (2 * MARGIN), + box_width - (2 * MARGIN), + getbegy(dialog) + box_y + 1, + getbegx(dialog) + box_x + 1); + dlg_register_window(editing, "editbox2", binding2); + + show_all = TRUE; + show_one = FALSE; + pagesize = getmaxy(editing); + + while (result == DLG_EXIT_UNKNOWN) { + int edit = 0; + + if (show_all) { + display_all(editing, *list, thisrow, base_row, listsize, chr_offset); + display_one(editing, THIS_ROW, + thisrow, thisrow, base_row, chr_offset); + show_all = FALSE; + show_one = TRUE; + } else { + if (thisrow != lastrow) { + display_one(editing, (*list)[lastrow], + lastrow, thisrow, base_row, 0); + show_one = TRUE; + } + } + if (show_one) { + display_one(editing, THIS_ROW, + thisrow, thisrow, base_row, chr_offset); + getyx(editing, y, x); + dlg_draw_scrollbar(dialog, + base_row, + base_row, + base_row + pagesize, + listsize, + box_x, + box_x + getmaxx(editing), + box_y + 0, + box_y + getmaxy(editing) + 1, + border2_attr, + border_attr); + wmove(editing, y, x); + show_one = FALSE; + } + lastrow = thisrow; + input = THIS_ROW; + + /* + * The last field drawn determines where the cursor is shown: + */ + if (show_buttons) { + show_buttons = FALSE; + UPDATE_COL(input); + if (state != sTEXT) { + display_one(editing, input, thisrow, + -1, base_row, 0); + wrefresh(editing); + } + dlg_draw_buttons(dialog, + height - 2, + 0, + buttons, + (state != sTEXT) ? state : 99, + FALSE, + width); + if (state == sTEXT) { + display_one(editing, input, thisrow, + thisrow, base_row, chr_offset); + } + } + + if (first_trace) { + first_trace = FALSE; + dlg_trace_win(dialog); + } + + key = dlg_mouse_wgetch((state == sTEXT) ? editing : dialog, &fkey); + if (key == ERR) { + result = DLG_EXIT_ERROR; + break; + } else if (key == ESC) { + result = DLG_EXIT_ESC; + break; + } + if (state != sTEXT) { + if (dlg_result_key(key, fkey, &result)) + break; + } + + was_mouse = (fkey && is_DLGK_MOUSE(key)); + if (was_mouse) + key -= M_EVENT; + + /* + * Handle mouse clicks first, since we want to know if this is a + * button, or something that dlg_edit_string() should handle. + */ + if (fkey + && was_mouse + && (code = dlg_ok_buttoncode(key)) >= 0) { + result = code; + continue; + } + + if (was_mouse + && (key >= KEY_MAX)) { + int wide = getmaxx(editing); + int cell = key - KEY_MAX; + int check = (cell / wide) + base_row; + if (check < listsize) { + thisrow = check; + col_offset = (cell % wide); + chr_offset = col_to_chr_offset(THIS_ROW, col_offset); + show_one = TRUE; + if (state != sTEXT) { + state = sTEXT; + show_buttons = TRUE; + } + } else { + beep(); + } + continue; + } else if (was_mouse && key >= KEY_MIN) { + key = dlg_lookup_key(dialog, key, &fkey); + } + + if (state == sTEXT) { /* editing box selected */ + /* + * Intercept scrolling keys that dlg_edit_string() does not + * understand. + */ + if (fkey) { + bool moved = TRUE; + + switch (key) { + case DLGK_GRID_UP: + SCROLL_TO(thisrow - 1); + break; + case DLGK_GRID_DOWN: + SCROLL_TO(thisrow + 1); + break; + case DLGK_PAGE_FIRST: + SCROLL_TO(0); + break; + case DLGK_PAGE_LAST: + SCROLL_TO(listsize); + break; + case DLGK_PAGE_NEXT: + SCROLL_TO(base_row + pagesize); + break; + case DLGK_PAGE_PREV: + if (thisrow > base_row) { + SCROLL_TO(base_row); + } else { + SCROLL_TO(base_row - pagesize); + } + break; + case DLGK_DELETE_LEFT: + if (chr_offset == 0) { + if (thisrow == 0) { + beep(); + } else { + size_t len = (strlen(THIS_ROW) + + strlen(PREV_ROW) + 1); + char *tmp = dlg_malloc(char, len); + + assert_ptr(tmp, "dlg_editbox"); + + chr_offset = dlg_count_wchars(PREV_ROW); + UPDATE_COL(PREV_ROW); + goal_col = col_offset; + + sprintf(tmp, "%s%s", PREV_ROW, THIS_ROW); + if (len > max_len) + tmp[max_len] = '\0'; + + free(PREV_ROW); + PREV_ROW = tmp; + for (y = thisrow; y < listsize; ++y) { + (*list)[y] = (*list)[y + 1]; + } + --listsize; + --thisrow; + SCROLL_TO(thisrow); + + show_all = TRUE; + } + } else { + /* dlg_edit_string() can handle this case */ + moved = FALSE; + } + break; + default: + moved = FALSE; + break; + } + if (moved) { + if (thisrow != lastrow) { + if (goal_col < 0) + goal_col = col_offset; + chr_offset = col_to_chr_offset(THIS_ROW, goal_col); + } else { + UPDATE_COL(THIS_ROW); + } + continue; + } + } + strncpy(buffer, input, max_len - 1)[max_len - 1] = '\0'; + edit = dlg_edit_string(buffer, &chr_offset, key, fkey, FALSE); + + if (edit) { + goal_col = UPDATE_COL(input); + if (strcmp(input, buffer)) { + free(input); + THIS_ROW = dlg_strclone(buffer); + input = THIS_ROW; + } + display_one(editing, input, thisrow, + thisrow, base_row, chr_offset); + continue; + } + } + + /* handle non-functionkeys */ + if (!fkey && (code = dlg_char_to_button(key, buttons)) >= 0) { + dlg_del_window(dialog); + result = dlg_ok_buttoncode(code); + continue; + } + + /* handle functionkeys */ + if (fkey) { + switch (key) { + case DLGK_GRID_UP: + case DLGK_GRID_LEFT: + case DLGK_FIELD_PREV: + show_buttons = TRUE; + state = dlg_prev_ok_buttonindex(state, sTEXT); + break; + case DLGK_GRID_RIGHT: + case DLGK_GRID_DOWN: + case DLGK_FIELD_NEXT: + show_buttons = TRUE; + state = dlg_next_ok_buttonindex(state, sTEXT); + break; + case DLGK_ENTER: + if (state == sTEXT) { + const int *indx = dlg_index_wchars(THIS_ROW); + int split = indx[chr_offset]; + char *tmp = dlg_strclone(THIS_ROW + split); + + assert_ptr(tmp, "dlg_editbox"); + grow_list(list, rows, listsize + 1); + ++listsize; + for (y = listsize; y > thisrow; --y) { + (*list)[y] = (*list)[y - 1]; + } + THIS_ROW[split] = '\0'; + ++thisrow; + chr_offset = 0; + col_offset = 0; + THIS_ROW = tmp; + SCROLL_TO(thisrow); + show_all = TRUE; + } else { + result = dlg_ok_buttoncode(state); + } + break; +#ifdef KEY_RESIZE + case KEY_RESIZE: + dlg_will_resize(dialog); + /* reset data */ + height = old_height; + width = old_width; + dlg_clear(); + dlg_unregister_window(editing); + dlg_del_window(editing); + dlg_del_window(dialog); + dlg_mouse_free_regions(); + /* repaint */ + goto retry; +#endif + case DLGK_TOGGLE: + if (state != sTEXT) { + result = dlg_ok_buttoncode(state); + } else { + beep(); + } + break; + default: + beep(); + break; + } + } else { + beep(); + } + } + + dlg_unregister_window(editing); + dlg_del_window(editing); + dlg_del_window(dialog); + dlg_mouse_free_regions(); + + /* + * The caller's copy of the (*list)[] array has been updated, but for + * consistency with the other widgets, we put the "real" result in + * the output buffer. + */ + if (result == DLG_EXIT_OK) { + int n; + for (n = 0; n < listsize; ++n) { + dlg_add_result((*list)[n]); + dlg_add_separator(); + } + dlg_add_last_key(-1); + } + free(buffer); + dlg_restore_vars(&save_vars); + return result; +} + +int +dialog_editbox(const char *title, const char *file, int height, int width) +{ + int result; + char **list; + int rows; + + load_list(file, &list, &rows); + result = dlg_editbox(title, &list, &rows, height, width); + free_list(&list, &rows); + return result; +} Index: vendor/dialog/1.3-20180621/formbox.c =================================================================== --- vendor/dialog/1.3-20180621/formbox.c (nonexistent) +++ vendor/dialog/1.3-20180621/formbox.c (revision 339483) @@ -0,0 +1,998 @@ +/* + * $Id: formbox.c,v 1.95 2018/06/21 08:23:31 tom Exp $ + * + * formbox.c -- implements the form (i.e., some pairs label/editbox) + * + * Copyright 2003-2016,2018 Thomas E. Dickey + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License, version 2.1 + * as published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this program; if not, write to + * Free Software Foundation, Inc. + * 51 Franklin St., Fifth Floor + * Boston, MA 02110, USA. + * + * This is adapted from source contributed by + * Valery Reznic (valery_reznic@users.sourceforge.net) + */ + +#include <dialog.h> +#include <dlg_keys.h> + +#define LLEN(n) ((n) * FORMBOX_TAGS) + +#define ItemName(i) items[LLEN(i) + 0] +#define ItemNameY(i) items[LLEN(i) + 1] +#define ItemNameX(i) items[LLEN(i) + 2] +#define ItemText(i) items[LLEN(i) + 3] +#define ItemTextY(i) items[LLEN(i) + 4] +#define ItemTextX(i) items[LLEN(i) + 5] +#define ItemTextFLen(i) items[LLEN(i) + 6] +#define ItemTextILen(i) items[LLEN(i) + 7] +#define ItemHelp(i) (dialog_vars.item_help ? items[LLEN(i) + 8] : dlg_strempty()) + +static bool +is_readonly(DIALOG_FORMITEM * item) +{ + return ((item->type & 2) != 0) || (item->text_flen <= 0); +} + +static bool +is_hidden(DIALOG_FORMITEM * item) +{ + return ((item->type & 1) != 0); +} + +static bool +in_window(WINDOW *win, int scrollamt, int y) +{ + return (y >= scrollamt && y - scrollamt < getmaxy(win)); +} + +static bool +ok_move(WINDOW *win, int scrollamt, int y, int x) +{ + return in_window(win, scrollamt, y) + && (wmove(win, y - scrollamt, x) != ERR); +} + +static void +move_past(WINDOW *win, int y, int x) +{ + if (wmove(win, y, x) == ERR) + wmove(win, y, getmaxx(win) - 1); +} + +/* + * Print form item + */ +static int +print_item(WINDOW *win, DIALOG_FORMITEM * item, int scrollamt, bool choice) +{ + int count = 0; + int len; + + if (ok_move(win, scrollamt, item->name_y, item->name_x)) { + len = item->name_len; + len = MIN(len, getmaxx(win) - item->name_x); + if (len > 0) { + dlg_show_string(win, + item->name, + 0, + menubox_attr, + item->name_y - scrollamt, + item->name_x, + len, + FALSE, + FALSE); + move_past(win, item->name_y - scrollamt, item->name_x + len); + count = 1; + } + } + if (item->text_len && ok_move(win, scrollamt, item->text_y, item->text_x)) { + chtype this_item_attribute; + + len = item->text_len; + len = MIN(len, getmaxx(win) - item->text_x); + + if (!is_readonly(item)) { + this_item_attribute = choice + ? form_active_text_attr + : form_text_attr; + } else { + this_item_attribute = form_item_readonly_attr; + } + + if (len > 0) { + dlg_show_string(win, + item->text, + 0, + this_item_attribute, + item->text_y - scrollamt, + item->text_x, + len, + is_hidden(item), + FALSE); + move_past(win, item->text_y - scrollamt, item->text_x + len); + count = 1; + } + } + return count; +} + +/* + * Print the entire form. + */ +static void +print_form(WINDOW *win, DIALOG_FORMITEM * item, int total, int scrollamt, int choice) +{ + int n; + int count = 0; + + for (n = 0; n < total; ++n) { + count += print_item(win, item + n, scrollamt, n == choice); + } + if (count) { + wbkgdset(win, menubox_attr | ' '); + wclrtobot(win); + (void) wnoutrefresh(win); + } +} + +static int +set_choice(DIALOG_FORMITEM item[], int choice, int item_no, bool * noneditable) +{ + int result = -1; + int i; + + *noneditable = FALSE; + if (!is_readonly(&item[choice])) { + result = choice; + } else { + for (i = 0; i < item_no; i++) { + if (!is_readonly(&(item[i]))) { + result = i; + break; + } + } + if (result < 0) { + *noneditable = TRUE; + result = 0; + } + } + return result; +} + +/* + * Find the last y-value in the form. + */ +static int +form_limit(DIALOG_FORMITEM item[]) +{ + int n; + int limit = 0; + for (n = 0; item[n].name != 0; ++n) { + if (limit < item[n].name_y) + limit = item[n].name_y; + if (limit < item[n].text_y) + limit = item[n].text_y; + } + return limit; +} + +static int +is_first_field(DIALOG_FORMITEM item[], int choice) +{ + int count = 0; + while (choice >= 0) { + if (item[choice].text_flen > 0) { + ++count; + } + --choice; + } + + return (count == 1); +} + +static int +is_last_field(DIALOG_FORMITEM item[], int choice, int item_no) +{ + int count = 0; + while (choice < item_no) { + if (item[choice].text_flen > 0) { + ++count; + } + ++choice; + } + + return (count == 1); +} + +/* + * Tab to the next field. + */ +static bool +tab_next(WINDOW *win, + DIALOG_FORMITEM item[], + int item_no, + int stepsize, + int *choice, + int *scrollamt) +{ + int old_choice = *choice; + int old_scroll = *scrollamt; + bool wrapped = FALSE; + + do { + do { + *choice += stepsize; + if (*choice < 0) { + *choice = item_no - 1; + wrapped = TRUE; + } else if (*choice >= item_no) { + *choice = 0; + wrapped = TRUE; + } + } while ((*choice != old_choice) && is_readonly(&(item[*choice]))); + + if (item[*choice].text_flen > 0) { + int lo = MIN(item[*choice].name_y, item[*choice].text_y); + int hi = MAX(item[*choice].name_y, item[*choice].text_y); + + if (old_choice == *choice) + break; + print_item(win, item + old_choice, *scrollamt, FALSE); + + if (*scrollamt < lo + 1 - getmaxy(win)) + *scrollamt = lo + 1 - getmaxy(win); + if (*scrollamt > hi) + *scrollamt = hi; + /* + * If we have to scroll to show a wrap-around, it does get + * confusing. Just give up rather than scroll. Tab'ing to the + * next field in a multi-column form is a different matter. Scroll + * for that. + */ + if (*scrollamt != old_scroll) { + if (wrapped) { + beep(); + *scrollamt = old_scroll; + *choice = old_choice; + } else { + scrollok(win, TRUE); + wscrl(win, *scrollamt - old_scroll); + scrollok(win, FALSE); + } + } + break; + } + } while (*choice != old_choice); + + return (old_choice != *choice) || (old_scroll != *scrollamt); +} + +/* + * Scroll to the next page, putting the choice at the first editable field + * in that page. Note that fields are not necessarily in top-to-bottom order, + * nor is there necessarily a field on each row of the window. + */ +static bool +scroll_next(WINDOW *win, DIALOG_FORMITEM item[], int stepsize, int *choice, int *scrollamt) +{ + bool result = TRUE; + int old_choice = *choice; + int old_scroll = *scrollamt; + int old_row = MIN(item[old_choice].text_y, item[old_choice].name_y); + int target = old_scroll + stepsize; + int n; + + if (stepsize < 0) { + if (old_row != old_scroll) + target = old_scroll; + else + target = old_scroll + stepsize; + if (target < 0) { + result = FALSE; + } + } else { + if (target > form_limit(item)) { + result = FALSE; + } + } + + if (result) { + for (n = 0; item[n].name != 0; ++n) { + if (item[n].text_flen > 0) { + int new_row = MIN(item[n].text_y, item[n].name_y); + if (abs(new_row - target) < abs(old_row - target)) { + old_row = new_row; + *choice = n; + } + } + } + + if (old_choice != *choice) + print_item(win, item + old_choice, *scrollamt, FALSE); + + *scrollamt = *choice; + if (*scrollamt != old_scroll) { + scrollok(win, TRUE); + wscrl(win, *scrollamt - old_scroll); + scrollok(win, FALSE); + } + result = (old_choice != *choice) || (old_scroll != *scrollamt); + } + if (!result) + beep(); + return result; +} + +/* + * Do a sanity check on the field length, and return the "right" value. + */ +static int +real_length(DIALOG_FORMITEM * item) +{ + return (item->text_flen > 0 + ? item->text_flen + : (item->text_flen < 0 + ? -item->text_flen + : item->text_len)); +} + +/* + * Compute the form size, setup field buffers. + */ +static void +make_FORM_ELTs(DIALOG_FORMITEM * item, + int item_no, + int *min_height, + int *min_width) +{ + int i; + int min_w = 0; + int min_h = 0; + + for (i = 0; i < item_no; ++i) { + int real_len = real_length(item + i); + + /* + * Special value '0' for text_flen: no input allowed + * Special value '0' for text_ilen: 'be the same as text_flen' + */ + if (item[i].text_ilen == 0) + item[i].text_ilen = real_len; + + min_h = MAX(min_h, item[i].name_y + 1); + min_h = MAX(min_h, item[i].text_y + 1); + min_w = MAX(min_w, item[i].name_x + 1 + item[i].name_len); + min_w = MAX(min_w, item[i].text_x + 1 + real_len); + + item[i].text_len = real_length(item + i); + + /* + * We do not know the actual length of .text, so we allocate it here + * to ensure it is big enough. + */ + if (item[i].text_flen > 0) { + int max_len = dlg_max_input(MAX(item[i].text_ilen + 1, MAX_LEN)); + char *old_text = item[i].text; + + item[i].text = dlg_malloc(char, (size_t) max_len + 1); + assert_ptr(item[i].text, "make_FORM_ELTs"); + + sprintf(item[i].text, "%.*s", item[i].text_ilen, old_text); + + if (item[i].text_free) { + item[i].text_free = FALSE; + free(old_text); + } + item[i].text_free = TRUE; + } + } + + *min_height = min_h; + *min_width = min_w; +} + +int +dlg_default_formitem(DIALOG_FORMITEM * items) +{ + int result = 0; + + if (dialog_vars.default_item != 0) { + int count = 0; + while (items->name != 0) { + if (!strcmp(dialog_vars.default_item, items->name)) { + result = count; + break; + } + ++items; + count++; + } + } + return result; +} + +#define sTEXT -1 + +static int +next_valid_buttonindex(int state, int extra, bool non_editable) +{ + state = dlg_next_ok_buttonindex(state, extra); + while (non_editable && state == sTEXT) + state = dlg_next_ok_buttonindex(state, sTEXT); + return state; +} + +static int +prev_valid_buttonindex(int state, int extra, bool non_editable) +{ + state = dlg_prev_ok_buttonindex(state, extra); + while (non_editable && state == sTEXT) + state = dlg_prev_ok_buttonindex(state, sTEXT); + return state; +} + +#define NAVIGATE_BINDINGS \ + DLG_KEYS_DATA( DLGK_FIELD_NEXT, TAB ), \ + DLG_KEYS_DATA( DLGK_FIELD_PREV, KEY_BTAB ), \ + DLG_KEYS_DATA( DLGK_ITEM_NEXT, CHR_NEXT ), \ + DLG_KEYS_DATA( DLGK_ITEM_NEXT, KEY_DOWN ), \ + DLG_KEYS_DATA( DLGK_ITEM_NEXT, KEY_RIGHT ), \ + DLG_KEYS_DATA( DLGK_ITEM_NEXT, KEY_NEXT ), \ + DLG_KEYS_DATA( DLGK_ITEM_PREV, CHR_PREVIOUS ), \ + DLG_KEYS_DATA( DLGK_ITEM_PREV, KEY_PREVIOUS ), \ + DLG_KEYS_DATA( DLGK_ITEM_PREV, KEY_LEFT ), \ + DLG_KEYS_DATA( DLGK_ITEM_PREV, KEY_UP ), \ + DLG_KEYS_DATA( DLGK_PAGE_NEXT, KEY_NPAGE ), \ + DLG_KEYS_DATA( DLGK_PAGE_PREV, KEY_PPAGE ) +/* + * Display a form for entering a number of fields + */ +int +dlg_form(const char *title, + const char *cprompt, + int height, + int width, + int form_height, + int item_no, + DIALOG_FORMITEM * items, + int *current_item) +{ + /* *INDENT-OFF* */ + static DLG_KEYS_BINDING binding[] = { + HELPKEY_BINDINGS, + ENTERKEY_BINDINGS, + NAVIGATE_BINDINGS, + TOGGLEKEY_BINDINGS, + END_KEYS_BINDING + }; + static DLG_KEYS_BINDING binding2[] = { + INPUTSTR_BINDINGS, + HELPKEY_BINDINGS, + ENTERKEY_BINDINGS, + NAVIGATE_BINDINGS, + /* no TOGGLEKEY_BINDINGS, since that includes space... */ + END_KEYS_BINDING + }; + /* *INDENT-ON* */ + +#ifdef KEY_RESIZE + int old_height = height; + int old_width = width; +#endif + + int form_width; + bool first = TRUE; + bool first_trace = TRUE; + int chr_offset = 0; + int state = (dialog_vars.default_button >= 0 + ? dlg_default_button() + : sTEXT); + int x, y, cur_x, cur_y, box_x, box_y; + int code; + int key = 0; + int fkey; + int choice = dlg_default_formitem(items); + int new_choice, new_scroll; + int scrollamt = 0; + int result = DLG_EXIT_UNKNOWN; + int min_width = 0, min_height = 0; + bool was_autosize = (height == 0 || width == 0); + bool show_buttons = FALSE; + bool scroll_changed = FALSE; + bool field_changed = FALSE; + bool non_editable = FALSE; + WINDOW *dialog, *form; + char *prompt; + const char **buttons = dlg_ok_labels(); + DIALOG_FORMITEM *current; + + DLG_TRACE(("# %sform args:\n", (dialog_vars.formitem_type + ? "password" + : ""))); + DLG_TRACE2S("title", title); + DLG_TRACE2S("message", cprompt); + DLG_TRACE2N("height", height); + DLG_TRACE2N("width", width); + DLG_TRACE2N("lheight", form_height); + DLG_TRACE2N("llength", item_no); + /* FIXME dump the items[][] too */ + DLG_TRACE2N("current", *current_item); + + make_FORM_ELTs(items, item_no, &min_height, &min_width); + dlg_button_layout(buttons, &min_width); + dlg_does_output(); + +#ifdef KEY_RESIZE + retry: +#endif + + prompt = dlg_strclone(cprompt); + dlg_tab_correct_str(prompt); + dlg_auto_size(title, prompt, &height, &width, + 1 + 3 * MARGIN, + MAX(26, 2 + min_width)); + + if (form_height == 0) + form_height = min_height; + + if (was_autosize) { + form_height = MIN(SLINES - height, form_height); + height += form_height; + } else { + int thigh = 0; + int twide = 0; + dlg_auto_size(title, prompt, &thigh, &twide, 0, width); + thigh = SLINES - (height - (thigh + 1 + 3 * MARGIN)); + form_height = MIN(thigh, form_height); + } + + dlg_print_size(height, width); + dlg_ctl_size(height, width); + + x = dlg_box_x_ordinate(width); + y = dlg_box_y_ordinate(height); + + dialog = dlg_new_window(height, width, y, x); + dlg_register_window(dialog, "formbox", binding); + dlg_register_buttons(dialog, "formbox", buttons); + + dlg_mouse_setbase(x, y); + + dlg_draw_box2(dialog, 0, 0, height, width, dialog_attr, border_attr, border2_attr); + dlg_draw_bottom_box2(dialog, border_attr, border2_attr, dialog_attr); + dlg_draw_title(dialog, title); + + dlg_attrset(dialog, dialog_attr); + dlg_print_autowrap(dialog, prompt, height, width); + + form_width = width - 6; + getyx(dialog, cur_y, cur_x); + (void) cur_x; + box_y = cur_y + 1; + box_x = (width - form_width) / 2 - 1; + + /* create new window for the form */ + form = dlg_sub_window(dialog, form_height, form_width, y + box_y + 1, + x + box_x + 1); + dlg_register_window(form, "formfield", binding2); + + /* draw a box around the form items */ + dlg_draw_box(dialog, box_y, box_x, form_height + 2, form_width + 2, + menubox_border_attr, menubox_border2_attr); + + /* register the new window, along with its borders */ + dlg_mouse_mkbigregion(getbegy(form) - getbegy(dialog), + getbegx(form) - getbegx(dialog), + getmaxy(form), + getmaxx(form), + KEY_MAX, 1, 1, 3 /* by cells */ ); + + show_buttons = TRUE; + scroll_changed = TRUE; + + choice = set_choice(items, choice, item_no, &non_editable); + current = &items[choice]; + if (non_editable) + state = next_valid_buttonindex(state, sTEXT, non_editable); + + while (result == DLG_EXIT_UNKNOWN) { + int edit = FALSE; + + if (scroll_changed) { + print_form(form, items, item_no, scrollamt, choice); + dlg_draw_scrollbar(dialog, + scrollamt, + scrollamt, + scrollamt + form_height + 1, + min_height, + box_x + 1, + box_x + form_width, + box_y, + box_y + form_height + 1, + menubox_border2_attr, + menubox_border_attr); + scroll_changed = FALSE; + } + + if (show_buttons) { + dlg_item_help(""); + dlg_draw_buttons(dialog, height - 2, 0, buttons, + ((state < 0) + ? 1000 /* no such button, not highlighted */ + : state), + FALSE, width); + show_buttons = FALSE; + } + + if (first_trace) { + first_trace = FALSE; + dlg_trace_win(dialog); + } + + if (field_changed || state == sTEXT) { + if (field_changed) + chr_offset = 0; + current = &items[choice]; + dialog_vars.max_input = current->text_ilen; + dlg_item_help(current->help); + dlg_show_string(form, current->text, chr_offset, + form_active_text_attr, + current->text_y - scrollamt, + current->text_x, + current->text_len, + is_hidden(current), first); + wsyncup(form); + wcursyncup(form); + field_changed = FALSE; + } + + key = dlg_mouse_wgetch((state == sTEXT) ? form : dialog, &fkey); + if (dlg_result_key(key, fkey, &result)) + break; + + /* handle non-functionkeys */ + if (!fkey) { + if (state != sTEXT) { + code = dlg_char_to_button(key, buttons); + if (code >= 0) { + dlg_del_window(dialog); + result = dlg_ok_buttoncode(code); + continue; + } + } + } + + /* handle functionkeys */ + if (fkey) { + bool do_scroll = FALSE; + bool do_tab = FALSE; + int move_by = 0; + + switch (key) { + case DLGK_MOUSE(KEY_PPAGE): + case DLGK_PAGE_PREV: + do_scroll = TRUE; + move_by = -form_height; + break; + + case DLGK_MOUSE(KEY_NPAGE): + case DLGK_PAGE_NEXT: + do_scroll = TRUE; + move_by = form_height; + break; + + case DLGK_TOGGLE: + case DLGK_ENTER: + dlg_del_window(dialog); + result = (state >= 0) ? dlg_enter_buttoncode(state) : DLG_EXIT_OK; + continue; + + case DLGK_GRID_LEFT: + if (state == sTEXT) + break; + /* FALLTHRU */ + case DLGK_ITEM_PREV: + if (state == sTEXT) { + do_tab = TRUE; + move_by = -1; + break; + } else { + state = prev_valid_buttonindex(state, 0, non_editable); + show_buttons = TRUE; + continue; + } + + case DLGK_FORM_PREV: + if (state == sTEXT && !is_first_field(items, choice)) { + do_tab = TRUE; + move_by = -1; + break; + } else { + int old_state = state; + state = prev_valid_buttonindex(state, sTEXT, non_editable); + show_buttons = TRUE; + if (old_state >= 0 && state == sTEXT) { + new_choice = item_no - 1; + if (choice != new_choice) { + print_item(form, items + choice, scrollamt, FALSE); + choice = new_choice; + } + } + continue; + } + + case DLGK_FIELD_PREV: + state = prev_valid_buttonindex(state, sTEXT, non_editable); + show_buttons = TRUE; + continue; + + case DLGK_FIELD_NEXT: + state = next_valid_buttonindex(state, sTEXT, non_editable); + show_buttons = TRUE; + continue; + + case DLGK_GRID_RIGHT: + if (state == sTEXT) + break; + /* FALLTHRU */ + + case DLGK_ITEM_NEXT: + if (state == sTEXT) { + do_tab = TRUE; + move_by = 1; + break; + } else { + state = next_valid_buttonindex(state, 0, non_editable); + show_buttons = TRUE; + continue; + } + + case DLGK_FORM_NEXT: + if (state == sTEXT && !is_last_field(items, choice, item_no)) { + do_tab = TRUE; + move_by = 1; + break; + } else { + state = next_valid_buttonindex(state, sTEXT, non_editable); + show_buttons = TRUE; + if (state == sTEXT && choice) { + print_item(form, items + choice, scrollamt, FALSE); + choice = 0; + } + continue; + } + +#ifdef KEY_RESIZE + case KEY_RESIZE: + dlg_will_resize(dialog); + /* reset data */ + height = old_height; + width = old_width; + free(prompt); + dlg_clear(); + dlg_unregister_window(form); + dlg_del_window(dialog); + dlg_mouse_free_regions(); + /* repaint */ + goto retry; +#endif + default: +#if USE_MOUSE + if (is_DLGK_MOUSE(key)) { + if (key >= DLGK_MOUSE(KEY_MAX)) { + int cell = key - DLGK_MOUSE(KEY_MAX); + int row = (cell / getmaxx(form)) + scrollamt; + int col = (cell % getmaxx(form)); + int n; + + for (n = 0; n < item_no; ++n) { + if (items[n].name_y == row + && items[n].name_x <= col + && (items[n].name_x + items[n].name_len > col + || (items[n].name_y == items[n].text_y + && items[n].text_x > col))) { + if (!is_readonly(&(items[n]))) { + field_changed = TRUE; + break; + } + } + if (items[n].text_y == row + && items[n].text_x <= col + && items[n].text_x + items[n].text_ilen > col) { + if (!is_readonly(&(items[n]))) { + field_changed = TRUE; + break; + } + } + } + if (field_changed) { + print_item(form, items + choice, scrollamt, FALSE); + choice = n; + continue; + } + beep(); + } else if ((code = dlg_ok_buttoncode(key - M_EVENT)) >= 0) { + result = code; + } + continue; + } +#endif + break; + } + + new_scroll = scrollamt; + new_choice = choice; + if (do_scroll) { + if (scroll_next(form, items, move_by, &new_choice, &new_scroll)) { + if (choice != new_choice) { + choice = new_choice; + field_changed = TRUE; + } + if (scrollamt != new_scroll) { + scrollamt = new_scroll; + scroll_changed = TRUE; + } + } + continue; + } + if (do_tab) { + if (tab_next(form, items, item_no, move_by, &new_choice, &new_scroll)) { + if (choice != new_choice) { + choice = new_choice; + field_changed = TRUE; + } + if (scrollamt != new_scroll) { + scrollamt = new_scroll; + scroll_changed = TRUE; + } + } + continue; + } + } + + if (state == sTEXT) { /* Input box selected */ + if (!is_readonly(current)) + edit = dlg_edit_string(current->text, &chr_offset, key, + fkey, first); + if (edit) { + dlg_show_string(form, current->text, chr_offset, + form_active_text_attr, + current->text_y - scrollamt, + current->text_x, + current->text_len, + is_hidden(current), first); + continue; + } + } + + } + + dlg_mouse_free_regions(); + dlg_unregister_window(form); + dlg_del_window(dialog); + free(prompt); + + *current_item = choice; + return result; +} + +/* + * Free memory owned by a list of DIALOG_FORMITEM's. + */ +void +dlg_free_formitems(DIALOG_FORMITEM * items) +{ + int n; + for (n = 0; items[n].name != 0; ++n) { + if (items[n].name_free) + free(items[n].name); + if (items[n].text_free) + free(items[n].text); + if (items[n].help_free && items[n].help != dlg_strempty()) + free(items[n].help); + } + free(items); +} + +/* + * The script accepts values beginning at 1, while curses starts at 0. + */ +int +dlg_ordinate(const char *s) +{ + int result = atoi(s); + if (result > 0) + --result; + else + result = 0; + return result; +} + +int +dialog_form(const char *title, + const char *cprompt, + int height, + int width, + int form_height, + int item_no, + char **items) +{ + int result; + int choice = 0; + int i; + DIALOG_FORMITEM *listitems; + DIALOG_VARS save_vars; + bool show_status = FALSE; + char *help_result; + + dlg_save_vars(&save_vars); + dialog_vars.separate_output = TRUE; + + listitems = dlg_calloc(DIALOG_FORMITEM, (size_t) item_no + 1); + assert_ptr(listitems, "dialog_form"); + + for (i = 0; i < item_no; ++i) { + listitems[i].type = dialog_vars.formitem_type; + listitems[i].name = ItemName(i); + listitems[i].name_len = (int) strlen(ItemName(i)); + listitems[i].name_y = dlg_ordinate(ItemNameY(i)); + listitems[i].name_x = dlg_ordinate(ItemNameX(i)); + listitems[i].text = ItemText(i); + listitems[i].text_len = (int) strlen(ItemText(i)); + listitems[i].text_y = dlg_ordinate(ItemTextY(i)); + listitems[i].text_x = dlg_ordinate(ItemTextX(i)); + listitems[i].text_flen = atoi(ItemTextFLen(i)); + listitems[i].text_ilen = atoi(ItemTextILen(i)); + listitems[i].help = ((dialog_vars.item_help) + ? ItemHelp(i) + : dlg_strempty()); + } + + result = dlg_form(title, + cprompt, + height, + width, + form_height, + item_no, + listitems, + &choice); + + switch (result) { + case DLG_EXIT_OK: /* FALLTHRU */ + case DLG_EXIT_EXTRA: + show_status = TRUE; + break; + case DLG_EXIT_HELP: + dlg_add_help_formitem(&result, &help_result, &listitems[choice]); + show_status = dialog_vars.help_status; + dlg_add_string(help_result); + if (show_status) + dlg_add_separator(); + break; + } + if (show_status) { + for (i = 0; i < item_no; i++) { + if (listitems[i].text_flen > 0) { + dlg_add_string(listitems[i].text); + dlg_add_separator(); + } + } + dlg_add_last_key(-1); + } + + dlg_free_formitems(listitems); + dlg_restore_vars(&save_vars); + + return result; +} Index: vendor/dialog/1.3-20180621/fselect.c =================================================================== --- vendor/dialog/1.3-20180621/fselect.c (nonexistent) +++ vendor/dialog/1.3-20180621/fselect.c (revision 339483) @@ -0,0 +1,941 @@ +/* + * $Id: fselect.c,v 1.102 2018/06/21 23:28:04 tom Exp $ + * + * fselect.c -- implements the file-selector box + * + * Copyright 2000-2017,2018 Thomas E. Dickey + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License, version 2.1 + * as published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this program; if not, write to + * Free Software Foundation, Inc. + * 51 Franklin St., Fifth Floor + * Boston, MA 02110, USA. + */ + +#include <dialog.h> +#include <dlg_keys.h> + +#include <sys/types.h> +#include <sys/stat.h> + +#if HAVE_DIRENT_H +# include <dirent.h> +# define NAMLEN(dirent) strlen((dirent)->d_name) +#else +# define dirent direct +# define NAMLEN(dirent) (dirent)->d_namlen +# if HAVE_SYS_NDIR_H +# include <sys/ndir.h> +# endif +# if HAVE_SYS_DIR_H +# include <sys/dir.h> +# endif +# if HAVE_NDIR_H +# include <ndir.h> +# endif +#endif + +# if defined(_FILE_OFFSET_BITS) && defined(HAVE_STRUCT_DIRENT64) +# if !defined(_LP64) && (_FILE_OFFSET_BITS == 64) +# define DIRENT struct dirent64 +# else +# define DIRENT struct dirent +# endif +# else +# define DIRENT struct dirent +# endif + +#define EXT_WIDE 1 +#define HDR_HIGH 1 +#define BTN_HIGH (1 + 2 * MARGIN) /* Ok/Cancel, also input-box */ +#define MIN_HIGH (HDR_HIGH - MARGIN + (BTN_HIGH * 2) + 4 * MARGIN) +#define MIN_WIDE (2 * MAX(dlg_count_columns(d_label), dlg_count_columns(f_label)) + 6 * MARGIN + 2 * EXT_WIDE) + +#define MOUSE_D (KEY_MAX + 0) +#define MOUSE_F (KEY_MAX + 10000) +#define MOUSE_T (KEY_MAX + 20000) + +typedef enum { + sDIRS = -3 + ,sFILES = -2 + ,sTEXT = -1 +} STATES; + +typedef struct { + WINDOW *par; /* parent window */ + WINDOW *win; /* this window */ + int length; /* length of the data[] array */ + int offset; /* index of first item on screen */ + int choice; /* index of the selection */ + int mousex; /* base of mouse-code return-values */ + unsigned allocd; + char **data; +} LIST; + +typedef struct { + int length; + char **data; +} MATCH; + +static void +init_list(LIST * list, WINDOW *par, WINDOW *win, int mousex) +{ + list->par = par; + list->win = win; + list->length = 0; + list->offset = 0; + list->choice = 0; + list->mousex = mousex; + list->allocd = 0; + list->data = 0; + dlg_mouse_mkbigregion(getbegy(win), getbegx(win), + getmaxy(win), getmaxx(win), + mousex, 1, 1, 1 /* by lines */ ); +} + +static char * +leaf_of(char *path) +{ + char *leaf = strrchr(path, '/'); + if (leaf != 0) + leaf++; + else + leaf = path; + return leaf; +} + +static char * +data_of(LIST * list) +{ + if (list != 0 + && list->data != 0) + return list->data[list->choice]; + return 0; +} + +static void +free_list(LIST * list, int reinit) +{ + int n; + + if (list->data != 0) { + for (n = 0; list->data[n] != 0; n++) + free(list->data[n]); + free(list->data); + list->data = 0; + } + if (reinit) + init_list(list, list->par, list->win, list->mousex); +} + +static void +add_to_list(LIST * list, char *text) +{ + unsigned need; + + need = (unsigned) (list->length + 1); + if (need + 1 > list->allocd) { + list->allocd = 2 * (need + 1); + if (list->data == 0) { + list->data = dlg_malloc(char *, list->allocd); + } else { + list->data = dlg_realloc(char *, list->allocd, list->data); + } + assert_ptr(list->data, "add_to_list"); + } + list->data[list->length++] = dlg_strclone(text); + list->data[list->length] = 0; +} + +static void +keep_visible(LIST * list) +{ + int high = getmaxy(list->win); + + if (list->choice < list->offset) { + list->offset = list->choice; + } + if (list->choice - list->offset >= high) + list->offset = list->choice - high + 1; +} + +#define Value(c) (int)((c) & 0xff) + +static int +find_choice(char *target, LIST * list) +{ + int n; + int choice = list->choice; + int len_1, len_2, cmp_1, cmp_2; + + if (*target == 0) { + list->choice = 0; + } else { + /* find the match with the longest length. If more than one has the + * same length, choose the one with the closest match of the final + * character. + */ + len_1 = 0; + cmp_1 = 256; + for (n = 0; n < list->length; n++) { + char *a = target; + char *b = list->data[n]; + + len_2 = 0; + while ((*a != 0) && (*b != 0) && (*a == *b)) { + a++; + b++; + len_2++; + } + cmp_2 = Value(*a) - Value(*b); + if (cmp_2 < 0) + cmp_2 = -cmp_2; + if ((len_2 > len_1) + || (len_1 == len_2 && cmp_2 < cmp_1)) { + len_1 = len_2; + cmp_1 = cmp_2; + list->choice = n; + } + } + } + if (choice != list->choice) { + keep_visible(list); + } + return (choice != list->choice); +} + +static void +display_list(LIST * list) +{ + int n; + int x; + int y; + int top; + int bottom; + + if (list->win != 0) { + dlg_attr_clear(list->win, getmaxy(list->win), getmaxx(list->win), item_attr); + for (n = list->offset; n < list->length && list->data[n]; n++) { + y = n - list->offset; + if (y >= getmaxy(list->win)) + break; + (void) wmove(list->win, y, 0); + if (n == list->choice) + dlg_attrset(list->win, item_selected_attr); + (void) waddstr(list->win, list->data[n]); + dlg_attrset(list->win, item_attr); + } + dlg_attrset(list->win, item_attr); + + getparyx(list->win, y, x); + + top = y - 1; + bottom = y + getmaxy(list->win); + dlg_draw_scrollbar(list->par, + (long) list->offset, + (long) list->offset, + (long) (list->offset + getmaxy(list->win)), + (long) (list->length), + x + 1, + x + getmaxx(list->win), + top, + bottom, + menubox_border2_attr, + menubox_border_attr); + + (void) wmove(list->win, list->choice - list->offset, 0); + (void) wnoutrefresh(list->win); + } +} + +/* FIXME: see arrows.c + * This workaround is used to allow two lists to have scroll-tabs at the same + * time, by reassigning their return-values to be different. Just for + * readability, we use the names of keys with similar connotations, though all + * that is really required is that they're distinct, so we can put them in a + * switch statement. + */ +static void +fix_arrows(LIST * list) +{ + int x; + int y; + int top; + int right; + int bottom; + + if (list->win != 0) { + getparyx(list->win, y, x); + top = y - 1; + right = getmaxx(list->win); + bottom = y + getmaxy(list->win); + + mouse_mkbutton(top, x, right, + ((list->mousex == MOUSE_D) + ? KEY_PREVIOUS + : KEY_PPAGE)); + mouse_mkbutton(bottom, x, right, + ((list->mousex == MOUSE_D) + ? KEY_NEXT + : KEY_NPAGE)); + } +} + +static bool +show_list(char *target, LIST * list, bool keep) +{ + bool changed = keep || find_choice(target, list); + display_list(list); + return changed; +} + +/* + * Highlight the closest match to 'target' in the given list, setting offset + * to match. + */ +static bool +show_both_lists(char *input, LIST * d_list, LIST * f_list, bool keep) +{ + char *leaf = leaf_of(input); + + return show_list(leaf, d_list, keep) || show_list(leaf, f_list, keep); +} + +/* + * Move up/down in the given list + */ +static bool +change_list(int choice, LIST * list) +{ + if (data_of(list) != 0) { + int last = list->length - 1; + + choice += list->choice; + if (choice < 0) + choice = 0; + if (choice > last) + choice = last; + list->choice = choice; + keep_visible(list); + display_list(list); + return TRUE; + } + return FALSE; +} + +static void +scroll_list(int direction, LIST * list) +{ + if (data_of(list) != 0) { + int length = getmaxy(list->win); + if (change_list(direction * length, list)) + return; + } + beep(); +} + +static int +compar(const void *a, const void *b) +{ + return strcmp(*(const char *const *) a, *(const char *const *) b); +} + +static void +match(char *name, LIST * d_list, LIST * f_list, MATCH * match_list) +{ + char *test = leaf_of(name); + size_t test_len = strlen(test); + char **matches = dlg_malloc(char *, (size_t) (d_list->length + f_list->length)); + size_t data_len = 0; + int i; + for (i = 2; i < d_list->length; i++) { + if (strncmp(test, d_list->data[i], test_len) == 0) { + matches[data_len++] = d_list->data[i]; + } + } + for (i = 0; i < f_list->length; i++) { + if (strncmp(test, f_list->data[i], test_len) == 0) { + matches[data_len++] = f_list->data[i]; + } + } + matches = dlg_realloc(char *, data_len + 1, matches); + match_list->data = matches; + match_list->length = (int) data_len; +} + +static void +free_match(MATCH * match_list) +{ + free(match_list->data); + match_list->length = 0; +} + +static int +complete(char *name, LIST * d_list, LIST * f_list, char **buff_ptr) +{ + MATCH match_list; + char *test; + size_t test_len; + size_t i; + int j; + char *buff; + + match(name, d_list, f_list, &match_list); + if (match_list.length == 0) { + *buff_ptr = NULL; + return 0; + } + + test = match_list.data[0]; + test_len = strlen(test); + buff = dlg_malloc(char, test_len + 2); + if (match_list.length == 1) { + strcpy(buff, test); + i = test_len; + if (test == data_of(d_list)) { + buff[test_len] = '/'; + i++; + } + } else { + for (i = 0; i < test_len; i++) { + char test_char = test[i]; + if (test_char == '\0') + break; + for (j = 0; j < match_list.length; j++) { + if (match_list.data[j][i] != test_char) { + break; + } + } + if (j == match_list.length) { + (buff)[i] = test_char; + } else + break; + } + buff = dlg_realloc(char, i + 1, buff); + } + free_match(&match_list); + buff[i] = '\0'; + *buff_ptr = buff; + return (i != 0); +} + +static bool +fill_lists(char *current, char *input, LIST * d_list, LIST * f_list, bool keep) +{ + bool result = TRUE; + bool rescan = FALSE; + DIR *dp; + DIRENT *de; + struct stat sb; + int n; + char path[MAX_LEN + 1]; + char *leaf; + + /* check if we've updated the lists */ + for (n = 0; current[n] && input[n]; n++) { + if (current[n] != input[n]) + break; + } + + if (current[n] == input[n]) { + result = FALSE; + rescan = (n == 0 && d_list->length == 0); + } else if (strchr(current + n, '/') == 0 + && strchr(input + n, '/') == 0) { + result = show_both_lists(input, d_list, f_list, keep); + } else { + rescan = TRUE; + } + + if (rescan) { + size_t have = strlen(input); + + if (have > MAX_LEN) + have = MAX_LEN; + memcpy(current, input, have); + current[have] = '\0'; + + /* refill the lists */ + free_list(d_list, TRUE); + free_list(f_list, TRUE); + memcpy(path, current, have); + path[have] = '\0'; + if ((leaf = strrchr(path, '/')) != 0) { + *++leaf = 0; + } else { + strcpy(path, "./"); + leaf = path + strlen(path); + } + DLG_TRACE(("opendir '%s'\n", path)); + if ((dp = opendir(path)) != 0) { + while ((de = readdir(dp)) != 0) { + size_t len = NAMLEN(de); + if (len == 0 || (len + have + 2) >= MAX_LEN) + continue; + memcpy(leaf, de->d_name, len); + leaf[len] = '\0'; + if (stat(path, &sb) == 0) { + if ((sb.st_mode & S_IFMT) == S_IFDIR) + add_to_list(d_list, leaf); + else if (f_list->win) + add_to_list(f_list, leaf); + } + } + (void) closedir(dp); + /* sort the lists */ + if (d_list->data != 0 && d_list->length > 1) { + qsort(d_list->data, + (size_t) d_list->length, + sizeof(d_list->data[0]), + compar); + } + if (f_list->data != 0 && f_list->length > 1) { + qsort(f_list->data, + (size_t) f_list->length, + sizeof(f_list->data[0]), + compar); + } + } + + (void) show_both_lists(input, d_list, f_list, FALSE); + d_list->offset = d_list->choice; + f_list->offset = f_list->choice; + result = TRUE; + } + return result; +} + +static bool +usable_state(int state, LIST * dirs, LIST * files) +{ + bool result; + + switch (state) { + case sDIRS: + result = (dirs->win != 0) && (data_of(dirs) != 0); + break; + case sFILES: + result = (files->win != 0) && (data_of(files) != 0); + break; + default: + result = TRUE; + break; + } + return result; +} + +#define which_list() ((state == sFILES) \ + ? &f_list \ + : ((state == sDIRS) \ + ? &d_list \ + : 0)) +#define NAVIGATE_BINDINGS \ + DLG_KEYS_DATA( DLGK_FIELD_NEXT, KEY_RIGHT ), \ + DLG_KEYS_DATA( DLGK_FIELD_NEXT, TAB ), \ + DLG_KEYS_DATA( DLGK_FIELD_PREV, KEY_BTAB ), \ + DLG_KEYS_DATA( DLGK_ITEM_NEXT, KEY_DOWN ), \ + DLG_KEYS_DATA( DLGK_ITEM_NEXT, CHR_NEXT ), \ + DLG_KEYS_DATA( DLGK_ITEM_NEXT, KEY_NEXT ), \ + DLG_KEYS_DATA( DLGK_ITEM_PREV, CHR_PREVIOUS ), \ + DLG_KEYS_DATA( DLGK_ITEM_PREV, KEY_UP ), \ + DLG_KEYS_DATA( DLGK_PAGE_NEXT, KEY_NPAGE ), \ + DLG_KEYS_DATA( DLGK_PAGE_PREV, KEY_PPAGE ) + +/* + * Display a dialog box for entering a filename + */ +static int +dlg_fselect(const char *title, const char *path, int height, int width, int dselect) +{ + /* *INDENT-OFF* */ + static DLG_KEYS_BINDING binding[] = { + HELPKEY_BINDINGS, + ENTERKEY_BINDINGS, + NAVIGATE_BINDINGS, + TOGGLEKEY_BINDINGS, + END_KEYS_BINDING + }; + static DLG_KEYS_BINDING binding2[] = { + INPUTSTR_BINDINGS, + HELPKEY_BINDINGS, + ENTERKEY_BINDINGS, + NAVIGATE_BINDINGS, + TOGGLEKEY_BINDINGS, + END_KEYS_BINDING + }; + /* *INDENT-ON* */ + +#ifdef KEY_RESIZE + int old_height = height; + int old_width = width; + bool resized = FALSE; +#endif + int tbox_y, tbox_x, tbox_width, tbox_height; + int dbox_y, dbox_x, dbox_width, dbox_height; + int fbox_y, fbox_x, fbox_width, fbox_height; + int show_buttons = TRUE; + int offset = 0; + int key = 0; + int fkey = FALSE; + int code; + int result = DLG_EXIT_UNKNOWN; + int state = dialog_vars.default_button >= 0 ? dlg_default_button() : sTEXT; + int button; + bool first = (state == sTEXT); + bool first_trace = TRUE; + char *input; + char *completed; + char current[MAX_LEN + 1]; + WINDOW *dialog = 0; + WINDOW *w_text = 0; + WINDOW *w_work = 0; + const char **buttons = dlg_ok_labels(); + const char *d_label = _("Directories"); + const char *f_label = _("Files"); + char *partial = 0; + int min_wide = MIN_WIDE; + int min_items = height ? 0 : 4; + LIST d_list, f_list; + + DLG_TRACE(("# %s args:\n", dselect ? "dselect" : "fselect")); + DLG_TRACE2S("title", title); + DLG_TRACE2S("path", path); + DLG_TRACE2N("height", height); + DLG_TRACE2N("width", width); + + dlg_does_output(); + + /* Set up the initial value */ + input = dlg_set_result(path); + offset = (int) strlen(input); + *current = 0; + + dlg_button_layout(buttons, &min_wide); + +#ifdef KEY_RESIZE + retry: +#endif + dlg_auto_size(title, (char *) 0, &height, &width, 6, 25); + height += MIN_HIGH + min_items; + if (width < min_wide) + width = min_wide; + dlg_print_size(height, width); + dlg_ctl_size(height, width); + + dialog = dlg_new_window(height, width, + dlg_box_y_ordinate(height), + dlg_box_x_ordinate(width)); + dlg_register_window(dialog, "fselect", binding); + dlg_register_buttons(dialog, "fselect", buttons); + + dlg_mouse_setbase(0, 0); + + dlg_draw_box2(dialog, 0, 0, height, width, dialog_attr, border_attr, border2_attr); + dlg_draw_bottom_box2(dialog, border_attr, border2_attr, dialog_attr); + dlg_draw_title(dialog, title); + + dlg_attrset(dialog, dialog_attr); + + /* Draw the input field box */ + tbox_height = 1; + tbox_width = width - (4 * MARGIN + 2); + tbox_y = height - (BTN_HIGH * 2) + MARGIN; + tbox_x = (width - tbox_width) / 2; + + w_text = derwin(dialog, tbox_height, tbox_width, tbox_y, tbox_x); + if (w_text == 0) { + result = DLG_EXIT_ERROR; + goto finish; + } + + (void) keypad(w_text, TRUE); + dlg_draw_box(dialog, tbox_y - MARGIN, tbox_x - MARGIN, + (2 * MARGIN + 1), tbox_width + (MARGIN + EXT_WIDE), + menubox_border_attr, menubox_border2_attr); + dlg_mouse_mkbigregion(getbegy(dialog) + tbox_y - MARGIN, + getbegx(dialog) + tbox_x - MARGIN, + 1 + (2 * MARGIN), + tbox_width + (MARGIN + EXT_WIDE), + MOUSE_T, 1, 1, 3 /* doesn't matter */ ); + + dlg_register_window(w_text, "fselect2", binding2); + + /* Draw the directory listing box */ + if (dselect) + dbox_width = (width - (6 * MARGIN)); + else + dbox_width = (width - (6 * MARGIN + 2 * EXT_WIDE)) / 2; + dbox_height = height - MIN_HIGH; + dbox_y = (2 * MARGIN + 1); + dbox_x = tbox_x; + + w_work = derwin(dialog, dbox_height, dbox_width, dbox_y, dbox_x); + if (w_work == 0) { + result = DLG_EXIT_ERROR; + goto finish; + } + + (void) keypad(w_work, TRUE); + (void) mvwaddstr(dialog, dbox_y - (MARGIN + 1), dbox_x - MARGIN, d_label); + dlg_draw_box(dialog, + dbox_y - MARGIN, dbox_x - MARGIN, + dbox_height + (MARGIN + 1), dbox_width + (MARGIN + 1), + menubox_border_attr, menubox_border2_attr); + init_list(&d_list, dialog, w_work, MOUSE_D); + + if (!dselect) { + /* Draw the filename listing box */ + fbox_height = dbox_height; + fbox_width = dbox_width; + fbox_y = dbox_y; + fbox_x = tbox_x + dbox_width + (2 * MARGIN); + + w_work = derwin(dialog, fbox_height, fbox_width, fbox_y, fbox_x); + if (w_work == 0) { + result = DLG_EXIT_ERROR; + goto finish; + } + + (void) keypad(w_work, TRUE); + (void) mvwaddstr(dialog, fbox_y - (MARGIN + 1), fbox_x - MARGIN, f_label); + dlg_draw_box(dialog, + fbox_y - MARGIN, fbox_x - MARGIN, + fbox_height + (MARGIN + 1), fbox_width + (MARGIN + 1), + menubox_border_attr, menubox_border2_attr); + init_list(&f_list, dialog, w_work, MOUSE_F); + } else { + memset(&f_list, 0, sizeof(f_list)); + } + + while (result == DLG_EXIT_UNKNOWN) { + + if (fill_lists(current, input, &d_list, &f_list, state < sTEXT)) + show_buttons = TRUE; + +#ifdef KEY_RESIZE + if (resized) { + resized = FALSE; + dlg_show_string(w_text, input, offset, inputbox_attr, + 0, 0, tbox_width, FALSE, first); + } +#endif + + /* + * The last field drawn determines where the cursor is shown: + */ + if (show_buttons) { + show_buttons = FALSE; + button = (state < 0) ? 0 : state; + dlg_draw_buttons(dialog, height - 2, 0, buttons, button, FALSE, width); + } + + if (first_trace) { + first_trace = FALSE; + dlg_trace_win(dialog); + } + + if (state < 0) { + switch (state) { + case sTEXT: + dlg_set_focus(dialog, w_text); + break; + case sFILES: + dlg_set_focus(dialog, f_list.win); + break; + case sDIRS: + dlg_set_focus(dialog, d_list.win); + break; + } + } + + if (first) { + (void) wrefresh(dialog); + } else { + fix_arrows(&d_list); + fix_arrows(&f_list); + key = dlg_mouse_wgetch((state == sTEXT) ? w_text : dialog, &fkey); + if (dlg_result_key(key, fkey, &result)) + break; + } + + if (key == DLGK_TOGGLE) { + key = DLGK_SELECT; + fkey = TRUE; + } + + if (fkey) { + switch (key) { + case DLGK_MOUSE(KEY_PREVIOUS): + state = sDIRS; + scroll_list(-1, which_list()); + continue; + case DLGK_MOUSE(KEY_NEXT): + state = sDIRS; + scroll_list(1, which_list()); + continue; + case DLGK_MOUSE(KEY_PPAGE): + state = sFILES; + scroll_list(-1, which_list()); + continue; + case DLGK_MOUSE(KEY_NPAGE): + state = sFILES; + scroll_list(1, which_list()); + continue; + case DLGK_PAGE_PREV: + scroll_list(-1, which_list()); + continue; + case DLGK_PAGE_NEXT: + scroll_list(1, which_list()); + continue; + case DLGK_ITEM_PREV: + if (change_list(-1, which_list())) + continue; + /* FALLTHRU */ + case DLGK_FIELD_PREV: + show_buttons = TRUE; + do { + state = dlg_prev_ok_buttonindex(state, sDIRS); + } while (!usable_state(state, &d_list, &f_list)); + continue; + case DLGK_ITEM_NEXT: + if (change_list(1, which_list())) + continue; + /* FALLTHRU */ + case DLGK_FIELD_NEXT: + show_buttons = TRUE; + do { + state = dlg_next_ok_buttonindex(state, sDIRS); + } while (!usable_state(state, &d_list, &f_list)); + continue; + case DLGK_SELECT: + completed = 0; + if (partial != 0) { + free(partial); + partial = 0; + } + if (state == sFILES && !dselect) { + completed = data_of(&f_list); + } else if (state == sDIRS) { + completed = data_of(&d_list); + } else { + if (complete(input, &d_list, &f_list, &partial)) { + completed = partial; + } + } + if (completed != 0) { + state = sTEXT; + show_buttons = TRUE; + strcpy(leaf_of(input), completed); + offset = (int) strlen(input); + dlg_show_string(w_text, input, offset, inputbox_attr, + 0, 0, tbox_width, 0, first); + if (partial != NULL) { + free(partial); + partial = 0; + } + continue; + } else { /* if (state < sTEXT) */ + (void) beep(); + continue; + } + /* FALLTHRU */ + case DLGK_ENTER: + result = (state > 0) ? dlg_enter_buttoncode(state) : DLG_EXIT_OK; + continue; +#ifdef KEY_RESIZE + case KEY_RESIZE: + dlg_will_resize(dialog); + /* reset data */ + height = old_height; + width = old_width; + show_buttons = TRUE; + *current = 0; + resized = TRUE; + /* repaint */ + dlg_clear(); + dlg_del_window(dialog); + refresh(); + dlg_mouse_free_regions(); + goto retry; +#endif + default: + if (key >= DLGK_MOUSE(MOUSE_T)) { + state = sTEXT; + continue; + } else if (key >= DLGK_MOUSE(MOUSE_F)) { + if (f_list.win != 0) { + state = sFILES; + f_list.choice = (key - DLGK_MOUSE(MOUSE_F)) + f_list.offset; + display_list(&f_list); + } + continue; + } else if (key >= DLGK_MOUSE(MOUSE_D)) { + if (d_list.win != 0) { + state = sDIRS; + d_list.choice = (key - DLGK_MOUSE(MOUSE_D)) + d_list.offset; + display_list(&d_list); + } + continue; + } else if (is_DLGK_MOUSE(key) + && (code = dlg_ok_buttoncode(key - M_EVENT)) >= 0) { + result = code; + continue; + } + break; + } + } + + if (state < 0) { /* Input box selected if we're editing */ + int edit = dlg_edit_string(input, &offset, key, fkey, first); + + if (edit) { + dlg_show_string(w_text, input, offset, inputbox_attr, + 0, 0, tbox_width, 0, first); + first = FALSE; + state = sTEXT; + } + } else if (state >= 0 && + (code = dlg_char_to_button(key, buttons)) >= 0) { + result = dlg_ok_buttoncode(code); + break; + } + } + + dlg_unregister_window(w_text); + dlg_del_window(dialog); + dlg_mouse_free_regions(); + free_list(&d_list, FALSE); + free_list(&f_list, FALSE); + + finish: + if (partial != 0) + free(partial); + return result; +} + +/* + * Display a dialog box for entering a filename + */ +int +dialog_fselect(const char *title, const char *path, int height, int width) +{ + return dlg_fselect(title, path, height, width, FALSE); +} + +/* + * Display a dialog box for entering a directory + */ +int +dialog_dselect(const char *title, const char *path, int height, int width) +{ + return dlg_fselect(title, path, height, width, TRUE); +} Index: vendor/dialog/1.3-20180621/guage.c =================================================================== --- vendor/dialog/1.3-20180621/guage.c (nonexistent) +++ vendor/dialog/1.3-20180621/guage.c (revision 339483) @@ -0,0 +1,453 @@ +/* + * $Id: guage.c,v 1.76 2018/06/21 08:23:43 tom Exp $ + * + * guage.c -- implements the gauge dialog + * + * Copyright 2000-2015,2018 Thomas E. Dickey + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License, version 2.1 + * as published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this program; if not, write to + * Free Software Foundation, Inc. + * 51 Franklin St., Fifth Floor + * Boston, MA 02110, USA. + * + * An earlier version of this program lists as authors + * Marc Ewing, Red Hat Software + */ + +#include <dialog.h> + +#include <errno.h> + +#define MY_LEN (MAX_LEN)/2 + +#define MIN_HIGH (4) +#define MIN_WIDE (10 + 2 * (2 + MARGIN)) + +#define isMarker(buf) !strncmp(buf, "XXX", (size_t) 3) + +typedef struct _my_obj { + DIALOG_CALLBACK obj; /* has to be first in struct */ + struct _my_obj *next; + WINDOW *text; + char *title; + char *prompt; + char prompt_buf[MY_LEN]; + int percent; + int height; + int width; + char line[MAX_LEN + 1]; +} MY_OBJ; + +static MY_OBJ *all_objects; + +static int +valid(MY_OBJ * obj) +{ + MY_OBJ *list = all_objects; + int result = 0; + + while (list != 0) { + if (list == obj) { + result = 1; + break; + } + list = list->next; + } + return result; +} + +static void +delink(MY_OBJ * obj) +{ + MY_OBJ *p = all_objects; + MY_OBJ *q = 0; + while (p != 0) { + if (p == obj) { + if (q != 0) { + q->next = p->next; + } else { + all_objects = p->next; + } + break; + } + q = p; + p = p->next; + } +} + +static int +read_data(char *buffer, FILE *fp) +{ + int result; + + if (feof(fp)) { + result = 0; + } else if (fgets(buffer, MY_LEN, fp) != 0) { + DLG_TRACE(("read_data:%s", buffer)); + buffer[MY_LEN] = '\0'; + dlg_trim_string(buffer); + result = 1; + } else { + result = -1; + } + return result; +} + +static int +decode_percent(char *buffer) +{ + char *tmp = 0; + long value = strtol(buffer, &tmp, 10); + + if (tmp != 0 && (*tmp == 0 || isspace(UCH(*tmp))) && value >= 0) { + return TRUE; + } + return FALSE; +} + +static void +repaint_text(MY_OBJ * obj) +{ + WINDOW *dialog = obj->obj.win; + int i, x; + + if (dialog != 0) { + (void) werase(dialog); + dlg_draw_box2(dialog, 0, 0, obj->height, obj->width, dialog_attr, + border_attr, border2_attr); + + dlg_draw_title(dialog, obj->title); + + dlg_attrset(dialog, dialog_attr); + dlg_draw_helpline(dialog, FALSE); + dlg_print_autowrap(dialog, obj->prompt, obj->height, obj->width); + + dlg_draw_box2(dialog, + obj->height - 4, 2 + MARGIN, + 2 + MARGIN, obj->width - 2 * (2 + MARGIN), + dialog_attr, + border_attr, + border2_attr); + + /* + * Clear the area for the progress bar by filling it with spaces + * in the gauge-attribute, and write the percentage with that + * attribute. + */ + (void) wmove(dialog, obj->height - 3, 4); + dlg_attrset(dialog, gauge_attr); + + for (i = 0; i < (obj->width - 2 * (3 + MARGIN)); i++) + (void) waddch(dialog, ' '); + + (void) wmove(dialog, obj->height - 3, (obj->width / 2) - 2); + (void) wprintw(dialog, "%3d%%", obj->percent); + + /* + * Now draw a bar in reverse, relative to the background. + * The window attribute was useful for painting the background, + * but requires some tweaks to reverse it. + */ + x = (obj->percent * (obj->width - 2 * (3 + MARGIN))) / 100; + if ((gauge_attr & A_REVERSE) != 0) { + dlg_attroff(dialog, A_REVERSE); + } else { + dlg_attrset(dialog, A_REVERSE); + } + (void) wmove(dialog, obj->height - 3, 4); + for (i = 0; i < x; i++) { + chtype ch2 = winch(dialog); + if (gauge_attr & A_REVERSE) { + ch2 &= ~A_REVERSE; + } + (void) waddch(dialog, ch2); + } + + (void) wrefresh(dialog); + } +} + +static bool +handle_input(DIALOG_CALLBACK * cb) +{ + MY_OBJ *obj = (MY_OBJ *) cb; + bool result; + bool cleanup = FALSE; + int status; + char buf[MY_LEN + 1]; + + if (dialog_state.pipe_input == 0) { + status = -1; + cleanup = TRUE; + } else if ((status = read_data(buf, dialog_state.pipe_input)) > 0) { + + if (isMarker(buf)) { + /* + * Historically, next line should be percentage, but one of the + * worse-written clones of 'dialog' assumes the number is missing. + * (Gresham's Law applied to software). + */ + if ((status = read_data(buf, dialog_state.pipe_input)) > 0) { + + obj->prompt_buf[0] = '\0'; + if (decode_percent(buf)) + obj->percent = atoi(buf); + else + strcpy(obj->prompt_buf, buf); + + /* Rest is message text */ + while ((status = read_data(buf, dialog_state.pipe_input)) > 0 + && !isMarker(buf)) { + if (strlen(obj->prompt_buf) + strlen(buf) < + sizeof(obj->prompt_buf) - 1) { + strcat(obj->prompt_buf, buf); + } + } + + if (obj->prompt != obj->prompt_buf) + free(obj->prompt); + obj->prompt = obj->prompt_buf; + } + } else if (decode_percent(buf)) { + obj->percent = atoi(buf); + } + } else { + if (feof(dialog_state.pipe_input) || + (ferror(dialog_state.pipe_input) && errno != EINTR)) { + cleanup = TRUE; + } + } + + repaint_text(obj); + if (status > 0) { + result = TRUE; + } else { + result = FALSE; + if (cleanup) { + dlg_remove_callback(cb); + delink(obj); + } + } + + return result; +} + +static bool +handle_my_getc(DIALOG_CALLBACK * cb, int ch, int fkey, int *result) +{ + bool status = TRUE; + + *result = DLG_EXIT_OK; + if (cb != 0) { + if (!fkey && (ch == ERR)) { + (void) handle_input(cb); + /* cb might be freed in handle_input */ + status = (valid((MY_OBJ *) cb) && (cb->input != 0)); + } + } else { + status = FALSE; + } + return status; +} + +static void +my_cleanup(DIALOG_CALLBACK * cb) +{ + MY_OBJ *obj = (MY_OBJ *) cb; + + if (valid(obj)) { + if (obj->prompt != obj->prompt_buf) { + free(obj->prompt); + obj->prompt = obj->prompt_buf; + } + free(obj->title); + dlg_del_window(obj->obj.win); + delink(obj); + } +} + +void +dlg_update_gauge(void *objptr, int percent) +{ + MY_OBJ *obj = (MY_OBJ *) objptr; + bool save_finish_string = dialog_state.finish_string; + + dialog_state.finish_string = TRUE; + curs_set(0); + obj->percent = percent; + repaint_text(obj); + dialog_state.finish_string = save_finish_string; +} + +/* + * (Re)Allocates an object and fills it as per the arguments + */ +void * +dlg_reallocate_gauge(void *objptr, + const char *title, + const char *cprompt, + int height, + int width, + int percent) +{ + char *prompt = dlg_strclone(cprompt); + MY_OBJ *obj = objptr; + bool save_finish_string = dialog_state.finish_string; + + dialog_state.finish_string = TRUE; + dlg_tab_correct_str(prompt); + + if (objptr == 0) { + /* create a new object */ + obj = dlg_calloc(MY_OBJ, 1); + assert_ptr(obj, "dialog_gauge"); + + dlg_auto_size(title, prompt, &height, &width, MIN_HIGH, MIN_WIDE); + dlg_print_size(height, width); + dlg_ctl_size(height, width); + + } else { + /* reuse an existing object */ + obj = objptr; + height = obj->height; + width = obj->width; + } + + if (obj->obj.win == 0) { + /* center dialog box on screen */ + int x = dlg_box_x_ordinate(width); + int y = dlg_box_y_ordinate(height); + WINDOW *dialog = dlg_new_window(height, width, y, x); + obj->obj.win = dialog; + } + + obj->obj.input = dialog_state.pipe_input; + obj->obj.keep_win = TRUE; + obj->obj.bg_task = TRUE; + obj->obj.handle_getc = handle_my_getc; + obj->obj.handle_input = handle_input; + + if (obj->title == 0 || strcmp(obj->title, title)) { + dlg_finish_string(obj->title); + free(obj->title); + obj->title = dlg_strclone(title); + } + + dlg_finish_string(obj->prompt); + free(obj->prompt); + + obj->prompt = prompt; + obj->percent = percent; + obj->height = height; + obj->width = width; + + /* if this was a new object, link it into the list */ + if (objptr == 0) { + obj->next = all_objects; + all_objects = obj; + } + + dialog_state.finish_string = save_finish_string; + return (void *) obj; +} + +void * +dlg_allocate_gauge(const char *title, + const char *cprompt, + int height, + int width, + int percent) +{ + return dlg_reallocate_gauge(NULL, title, cprompt, height, width, percent); +} + +void +dlg_free_gauge(void *objptr) +{ + MY_OBJ *obj = (MY_OBJ *) objptr; + + if (valid(obj)) { + obj->obj.keep_win = FALSE; + dlg_remove_callback(&(obj->obj)); + delink(obj); + } + curs_set(1); +} + +/* + * Display a gauge, or progress meter. Starts at percent% and reads stdin. If + * stdin is not XXX, then it is interpreted as a percentage, and the display is + * updated accordingly. Otherwise the next line is the percentage, and + * subsequent lines up to another XXX are used for the new prompt. Note that + * the size of the window never changes, so the prompt can not get any larger + * than the height and width specified. + */ +int +dialog_gauge(const char *title, + const char *cprompt, + int height, + int width, + int percent) +{ + int fkey; + int ch, result; + void *objptr = dlg_allocate_gauge(title, cprompt, height, width, percent); + MY_OBJ *obj = (MY_OBJ *) objptr; + + DLG_TRACE(("# gauge args:\n")); + DLG_TRACE2S("title", title); + DLG_TRACE2S("message", cprompt); + DLG_TRACE2N("height", height); + DLG_TRACE2N("width", width); + DLG_TRACE2N("percent", percent); + + dlg_add_callback_ref((DIALOG_CALLBACK **) & obj, my_cleanup); + dlg_update_gauge(obj, percent); + + dlg_trace_win(obj->obj.win); + do { + ch = dlg_getc(obj->obj.win, &fkey); +#ifdef KEY_RESIZE + if (fkey && ch == KEY_RESIZE) { + MY_OBJ *oldobj = obj; + + dlg_will_resize(obj->obj.win); + dlg_mouse_free_regions(); + + obj = dlg_allocate_gauge(title, + cprompt, + height, + width, + oldobj->percent); + + /* avoid breaking new window in dlg_remove_callback */ + oldobj->obj.caller = 0; + oldobj->obj.input = 0; + oldobj->obj.keep_win = FALSE; + + /* remove the old version of the gauge */ + dlg_clear(); + dlg_remove_callback(&(oldobj->obj)); + refresh(); + + dlg_add_callback_ref((DIALOG_CALLBACK **) & obj, my_cleanup); + dlg_update_gauge(obj, obj->percent); + } +#endif + } + while (valid(obj) && handle_my_getc(&(obj->obj), ch, fkey, &result)); + + dlg_free_gauge(obj); + + return (DLG_EXIT_OK); +} Index: vendor/dialog/1.3-20180621/headers.sh =================================================================== --- vendor/dialog/1.3-20180621/headers.sh (nonexistent) +++ vendor/dialog/1.3-20180621/headers.sh (revision 339483) @@ -0,0 +1,103 @@ +#! /bin/sh +# $Id: headers.sh,v 1.3 2007/02/25 20:37:56 tom Exp $ +############################################################################## +# Copyright (c) 2004,2007 Thomas E. Dickey # +# # +# 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. # +############################################################################## +# +# Adjust includes for header files that reside in a subdirectory of +# /usr/include, etc. +# +# Parameters (the first case creates the sed script): +# $1 is the target directory +# $2 is the source directory +# or (the second case does the install, using the sed script): +# $1 is the script to use for installing +# $2 is the target directory +# $3 is the source directory +# $4 is the file to install, editing source/target/etc. + +PACKAGE=DIALOG +PKGNAME=DLG +CONFIGH=dlg_config.h + +TMPSED=headers.sed + +if test $# = 2 ; then + rm -f $TMPSED + DST=$1 + REF=$2 + LEAF=`basename $DST` + case $DST in + /*/include/$LEAF) + END=`basename $DST` + for i in $REF/*.h + do + NAME=`basename $i` + echo "s/<$NAME>/<$END\/$NAME>/g" >> $TMPSED + done + ;; + *) + echo "" >> $TMPSED + ;; + esac + for name in ` + egrep '^#define[ ][ ]*[_ABCDEFGHIJKLMNOPQRSTUVWXYZ]' $REF/$CONFIGH \ + | sed -e 's/^#define[ ][ ]*//' \ + -e 's/[ ].*//' \ + | egrep -v "^${PACKAGE}_" \ + | sort -u \ + | egrep -v "^${PKGNAME}_"` + do + echo "s/\\<$name\\>/${PKGNAME}_$name/g" >>$TMPSED + done +else + PRG="" + while test $# != 3 + do + PRG="$PRG $1"; shift + done + + DST=$1 + REF=$2 + SRC=$3 + + SHOW=`basename $SRC` + TMPSRC=${TMPDIR-/tmp}/${SHOW}$$ + + echo " ... $SHOW" + test -f $REF/$SRC && SRC="$REF/$SRC" + + rm -f $TMPSRC + sed -f $TMPSED $SRC > $TMPSRC + NAME=`basename $SRC` + + # Just in case someone gzip'd manpages, remove the conflicting copy. + test -f $DST/$NAME.gz && rm -f $DST/$NAME.gz + + eval $PRG $TMPSRC $DST/$NAME + rm -f $TMPSRC +fi Property changes on: vendor/dialog/1.3-20180621/headers.sh ___________________________________________________________________ Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:executable ## -0,0 +1 ## +* \ No newline at end of property Added: svn:keywords ## -0,0 +1 ## +FreeBSD=%H \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/plain \ No newline at end of property Index: vendor/dialog/1.3-20180621/inputbox.c =================================================================== --- vendor/dialog/1.3-20180621/inputbox.c (nonexistent) +++ vendor/dialog/1.3-20180621/inputbox.c (revision 339483) @@ -0,0 +1,266 @@ +/* + * $Id: inputbox.c,v 1.84 2018/06/21 23:29:35 tom Exp $ + * + * inputbox.c -- implements the input box + * + * Copyright 2000-2016,2018 Thomas E. Dickey + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License, version 2.1 + * as published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this program; if not, write to + * Free Software Foundation, Inc. + * 51 Franklin St., Fifth Floor + * Boston, MA 02110, USA. + * + * An earlier version of this program lists as authors: + * Savio Lam (lam836@cs.cuhk.hk) + */ + +#include <dialog.h> +#include <dlg_keys.h> + +#define sTEXT -1 + +#define NAVIGATE_BINDINGS \ + DLG_KEYS_DATA( DLGK_FIELD_NEXT, KEY_DOWN ), \ + DLG_KEYS_DATA( DLGK_FIELD_NEXT, KEY_RIGHT ), \ + DLG_KEYS_DATA( DLGK_FIELD_NEXT, TAB ), \ + DLG_KEYS_DATA( DLGK_FIELD_PREV, KEY_BTAB ), \ + DLG_KEYS_DATA( DLGK_FIELD_PREV, KEY_LEFT ), \ + DLG_KEYS_DATA( DLGK_FIELD_PREV, KEY_UP ) + +/* + * Display a dialog box for entering a string + */ +int +dialog_inputbox(const char *title, const char *cprompt, int height, int width, + const char *init, const int password) +{ + /* *INDENT-OFF* */ + static DLG_KEYS_BINDING binding[] = { + HELPKEY_BINDINGS, + ENTERKEY_BINDINGS, + NAVIGATE_BINDINGS, + TOGGLEKEY_BINDINGS, + END_KEYS_BINDING + }; + static DLG_KEYS_BINDING binding2[] = { + INPUTSTR_BINDINGS, + HELPKEY_BINDINGS, + ENTERKEY_BINDINGS, + NAVIGATE_BINDINGS, + /* no TOGGLEKEY_BINDINGS, since that includes space... */ + END_KEYS_BINDING + }; + /* *INDENT-ON* */ + +#ifdef KEY_RESIZE + int old_height = height; + int old_width = width; +#endif + int xorg, yorg; + int x, y, box_y, box_x, box_width; + int show_buttons; + int col_offset = 0; + int chr_offset = 0; + int key, fkey, code; + int result = DLG_EXIT_UNKNOWN; + int state; + bool first; + bool edited; + char *input; + WINDOW *dialog; + WINDOW *editor; + char *prompt = dlg_strclone(cprompt); + const char **buttons = dlg_ok_labels(); + + dlg_does_output(); + + DLG_TRACE(("# inputbox args:\n")); + DLG_TRACE2S("title", title); + DLG_TRACE2S("message", cprompt); + DLG_TRACE2N("height", height); + DLG_TRACE2N("width", width); + DLG_TRACE2S("init", init); + DLG_TRACE2N("password", password); + + dlg_tab_correct_str(prompt); + + /* Set up the initial value */ + input = dlg_set_result(init); + edited = FALSE; + +#ifdef KEY_RESIZE + retry: +#endif + show_buttons = TRUE; + state = dialog_vars.default_button >= 0 ? dlg_default_button() : sTEXT; + first = (state == sTEXT); + key = fkey = 0; + + if (init != NULL) { + dlg_auto_size(title, prompt, &height, &width, 5, + MIN(MAX(dlg_count_columns(init) + 7, 26), + SCOLS - (dialog_vars.begin_set ? + dialog_vars.begin_x : 0))); + chr_offset = (int) strlen(init); + } else { + dlg_auto_size(title, prompt, &height, &width, 5, 26); + } + dlg_button_layout(buttons, &width); + dlg_print_size(height, width); + dlg_ctl_size(height, width); + + xorg = dlg_box_x_ordinate(width); + yorg = dlg_box_y_ordinate(height); + + dialog = dlg_new_window(height, width, yorg, xorg); + dlg_register_window(dialog, "inputbox", binding); + dlg_register_buttons(dialog, "inputbox", buttons); + + dlg_mouse_setbase(xorg, yorg); + + dlg_draw_box2(dialog, 0, 0, height, width, dialog_attr, border_attr, border2_attr); + dlg_draw_bottom_box2(dialog, border_attr, border2_attr, dialog_attr); + dlg_draw_title(dialog, title); + + dlg_attrset(dialog, dialog_attr); + dlg_draw_helpline(dialog, FALSE); + dlg_print_autowrap(dialog, prompt, height, width); + + /* Draw the input field box */ + box_width = width - 6; + getyx(dialog, y, x); + (void) x; + box_y = y + 2; + box_x = (width - box_width) / 2; + dlg_mouse_mkregion(y + 1, box_x - 1, 3, box_width + 2, 'i'); + dlg_draw_box(dialog, y + 1, box_x - 1, 3, box_width + 2, + border_attr, border2_attr); + + /* Make a window for the input-field, to associate bindings */ + editor = dlg_sub_window(dialog, 1, box_width, yorg + box_y, xorg + box_x); + dlg_register_window(editor, "inputbox2", binding2); + + if (*input != '\0') { + dlg_show_string(editor, input, chr_offset, inputbox_attr, + 0, 0, box_width, (bool) (password != 0), first); + wsyncup(editor); + wcursyncup(editor); + } + while (result == DLG_EXIT_UNKNOWN) { + int edit = 0; + + /* + * The last field drawn determines where the cursor is shown: + */ + if (show_buttons) { + show_buttons = FALSE; + col_offset = dlg_edit_offset(input, chr_offset, box_width); + (void) wmove(dialog, box_y, box_x + col_offset); + dlg_draw_buttons(dialog, height - 2, 0, buttons, state, FALSE, width); + } + + if (!first) { + if (*input != '\0' && !edited) { + dlg_show_string(editor, input, chr_offset, inputbox_attr, + 0, 0, box_width, (bool) (password != 0), first); + wmove(editor, 0, chr_offset); + wsyncup(editor); + wcursyncup(editor); + } + key = dlg_mouse_wgetch((state == sTEXT) ? editor : dialog, &fkey); + if (dlg_result_key(key, fkey, &result)) + break; + } + + /* + * Handle mouse clicks first, since we want to know if this is a button, + * or something that dlg_edit_string() should handle. + */ + if (fkey + && is_DLGK_MOUSE(key) + && (code = dlg_ok_buttoncode(key - M_EVENT)) >= 0) { + result = code; + continue; + } + + if (state == sTEXT) { /* Input box selected */ + edit = dlg_edit_string(input, &chr_offset, key, fkey, first); + + if (edit) { + dlg_show_string(editor, input, chr_offset, inputbox_attr, + 0, 0, box_width, (bool) (password != 0), first); + wsyncup(editor); + wcursyncup(editor); + first = FALSE; + edited = TRUE; + continue; + } else if (first) { + first = FALSE; + continue; + } + } + + /* handle non-functionkeys */ + if (!fkey && (code = dlg_char_to_button(key, buttons)) >= 0) { + dlg_del_window(dialog); + result = dlg_ok_buttoncode(code); + continue; + } + + /* handle functionkeys */ + if (fkey) { + switch (key) { + case DLGK_MOUSE('i'): /* mouse enter events */ + state = 0; + /* FALLTHRU */ + case DLGK_FIELD_PREV: + show_buttons = TRUE; + state = dlg_prev_ok_buttonindex(state, sTEXT); + break; + case DLGK_FIELD_NEXT: + show_buttons = TRUE; + state = dlg_next_ok_buttonindex(state, sTEXT); + break; + case DLGK_TOGGLE: + case DLGK_ENTER: + dlg_del_window(dialog); + result = (state >= 0) ? dlg_enter_buttoncode(state) : DLG_EXIT_OK; + break; +#ifdef KEY_RESIZE + case KEY_RESIZE: + dlg_will_resize(dialog); + /* reset data */ + height = old_height; + width = old_width; + /* repaint */ + dlg_clear(); + dlg_del_window(dialog); + refresh(); + dlg_mouse_free_regions(); + goto retry; +#endif + default: + beep(); + break; + } + } else { + beep(); + } + } + + dlg_unregister_window(editor); + dlg_del_window(dialog); + dlg_mouse_free_regions(); + free(prompt); + return result; +} Index: vendor/dialog/1.3-20180621/inputstr.c =================================================================== --- vendor/dialog/1.3-20180621/inputstr.c (nonexistent) +++ vendor/dialog/1.3-20180621/inputstr.c (revision 339483) @@ -0,0 +1,804 @@ +/* + * $Id: inputstr.c,v 1.88 2018/06/18 22:10:54 tom Exp $ + * + * inputstr.c -- functions for input/display of a string + * + * Copyright 2000-2017,2018 Thomas E. Dickey + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License, version 2.1 + * as published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this program; if not, write to + * Free Software Foundation, Inc. + * 51 Franklin St., Fifth Floor + * Boston, MA 02110, USA. + */ + +#include <dialog.h> +#include <dlg_keys.h> + +#include <errno.h> + +#ifdef HAVE_SETLOCALE +#include <locale.h> +#endif + +#if defined(HAVE_SEARCH_H) && defined(HAVE_TSEARCH) +#include <search.h> +#else +#undef HAVE_TSEARCH +#endif + +#ifdef NEED_WCHAR_H +#include <wchar.h> +#endif + +#if defined(USE_WIDE_CURSES) +#define USE_CACHING 1 +#elif defined(HAVE_XDIALOG) +#define USE_CACHING 1 /* editbox really needs caching! */ +#else +#define USE_CACHING 0 +#endif + +typedef struct _cache { + struct _cache *next; +#if USE_CACHING + int cache_num; /* tells what type of data is in list[] */ + const char *string_at; /* unique: associate caches by char* */ +#endif + size_t s_len; /* strlen(string) - we add 1 for EOS */ + size_t i_len; /* length(list) - we add 1 for EOS */ + char *string; /* a copy of the last-processed string */ + int *list; /* indices into the string */ +} CACHE; + +#if USE_CACHING +#define SAME_CACHE(c,s,l) (c->string != 0 && memcmp(c->string,s,l) == 0) + +static CACHE *cache_list; + +typedef enum { + cInxCols + ,cCntWideBytes + ,cCntWideChars + ,cInxWideChars + ,cMAX +} CACHE_USED; + +#ifdef HAVE_TSEARCH +static void *sorted_cache; +#endif + +#ifdef USE_WIDE_CURSES +static int +have_locale(void) +{ + static int result = -1; + if (result < 0) { + char *test = setlocale(LC_ALL, 0); + if (test == 0 || *test == 0) { + result = FALSE; + } else if (strcmp(test, "C") && strcmp(test, "POSIX")) { + result = TRUE; + } else { + result = FALSE; + } + } + return result; +} +#endif + +#ifdef HAVE_TSEARCH + +#if 0 +static void +show_tsearch(const void *nodep, const VISIT which, const int depth) +{ + const CACHE *p = *(CACHE * const *) nodep; + (void) depth; + if (which == postorder || which == leaf) { + DLG_TRACE(("# cache %p %p:%s\n", p, p->string, p->string)); + } +} + +static void +trace_cache(const char *fn, int ln) +{ + DLG_TRACE(("# trace_cache %s@%d\n", fn, ln)); + twalk(sorted_cache, show_tsearch); +} + +#else +#define trace_cache(fn, ln) /* nothing */ +#endif + +#define CMP(a,b) (((a) > (b)) ? 1 : (((a) < (b)) ? -1 : 0)) + +static int +compare_cache(const void *a, const void *b) +{ + const CACHE *p = (const CACHE *) a; + const CACHE *q = (const CACHE *) b; + int result = CMP(p->cache_num, q->cache_num); + if (result == 0) + result = CMP(p->string_at, q->string_at); + return result; +} +#endif + +static CACHE * +find_cache(int cache_num, const char *string) +{ + CACHE *p; + +#ifdef HAVE_TSEARCH + void *pp; + CACHE find; + + memset(&find, 0, sizeof(find)); + find.cache_num = cache_num; + find.string_at = string; + + if ((pp = tfind(&find, &sorted_cache, compare_cache)) != 0) { + p = *(CACHE **) pp; + } else { + p = 0; + } +#else + for (p = cache_list; p != 0; p = p->next) { + if (p->string_at == string) { + break; + } + } +#endif + return p; +} + +static CACHE * +make_cache(int cache_num, const char *string) +{ + CACHE *p; + + p = dlg_calloc(CACHE, 1); + assert_ptr(p, "load_cache"); + p->next = cache_list; + cache_list = p; + + p->cache_num = cache_num; + p->string_at = string; + +#ifdef HAVE_TSEARCH + (void) tsearch(p, &sorted_cache, compare_cache); +#endif + return p; +} + +static CACHE * +load_cache(int cache_num, const char *string) +{ + CACHE *p; + + if ((p = find_cache(cache_num, string)) == 0) { + p = make_cache(cache_num, string); + } + return p; +} +#else +static CACHE my_cache; +#define SAME_CACHE(c,s,l) (c->string != 0) +#define load_cache(cache, string) &my_cache +#endif /* USE_CACHING */ + +/* + * If the given string has not changed, we do not need to update the index. + * If we need to update the index, allocate enough memory for it. + */ +static bool +same_cache2(CACHE * cache, const char *string, unsigned i_len) +{ + unsigned need; + size_t s_len = strlen(string); + bool result = TRUE; + + if (cache->s_len == 0 + || cache->s_len < s_len + || cache->list == 0 + || !SAME_CACHE(cache, string, (size_t) s_len)) { + + need = (i_len + 1); + if (cache->list == 0) { + cache->list = dlg_malloc(int, need); + } else if (cache->i_len < i_len) { + cache->list = dlg_realloc(int, need, cache->list); + } + assert_ptr(cache->list, "load_cache"); + cache->i_len = i_len; + + if (cache->s_len >= s_len && cache->string != 0) { + strcpy(cache->string, string); + } else { + if (cache->string != 0) + free(cache->string); + cache->string = dlg_strclone(string); + } + cache->s_len = s_len; + + result = FALSE; + } + return result; +} + +#ifdef USE_WIDE_CURSES +/* + * Like same_cache2(), but we are only concerned about caching a copy of the + * string and its associated length. + */ +static bool +same_cache1(CACHE * cache, const char *string, size_t i_len) +{ + size_t s_len = strlen(string); + bool result = TRUE; + + if (cache->s_len != s_len + || !SAME_CACHE(cache, string, (size_t) s_len)) { + + if (cache->s_len >= s_len && cache->string != 0) { + strcpy(cache->string, string); + } else { + if (cache->string != 0) + free(cache->string); + cache->string = dlg_strclone(string); + } + cache->s_len = s_len; + cache->i_len = i_len; + + result = FALSE; + } + return result; +} +#endif /* USE_CACHING */ + +/* + * Counts the number of bytes that make up complete wide-characters, up to byte + * 'len'. If there is no locale set, simply return the original length. + */ +#ifdef USE_WIDE_CURSES +static int +dlg_count_wcbytes(const char *string, size_t len) +{ + int result; + + if (have_locale()) { + CACHE *cache = load_cache(cCntWideBytes, string); + if (!same_cache1(cache, string, len)) { + while (len != 0) { + size_t code = 0; + const char *src = cache->string; + mbstate_t state; + char save = cache->string[len]; + + cache->string[len] = '\0'; + memset(&state, 0, sizeof(state)); + code = mbsrtowcs((wchar_t *) 0, &src, len, &state); + cache->string[len] = save; + if ((int) code >= 0) { + break; + } + --len; + } + cache->i_len = len; + } + result = (int) cache->i_len; + } else { + result = (int) len; + } + return result; +} +#endif /* USE_WIDE_CURSES */ + +/* + * Counts the number of wide-characters in the string. + */ +int +dlg_count_wchars(const char *string) +{ + int result; +#ifdef USE_WIDE_CURSES + + if (have_locale()) { + size_t len = strlen(string); + CACHE *cache = load_cache(cCntWideChars, string); + + if (!same_cache1(cache, string, len)) { + const char *src = cache->string; + mbstate_t state; + int part = dlg_count_wcbytes(cache->string, len); + char save = cache->string[part]; + size_t code; + wchar_t *temp = dlg_calloc(wchar_t, len + 1); + + if (temp != 0) { + cache->string[part] = '\0'; + memset(&state, 0, sizeof(state)); + code = mbsrtowcs(temp, &src, (size_t) part, &state); + cache->i_len = ((int) code >= 0) ? wcslen(temp) : 0; + cache->string[part] = save; + free(temp); + } else { + cache->i_len = 0; + } + } + result = (int) cache->i_len; + } else +#endif /* USE_WIDE_CURSES */ + { + result = (int) strlen(string); + } + return result; +} + +/* + * Build an index of the wide-characters in the string, so we can easily tell + * which byte-offset begins a given wide-character. + */ +const int * +dlg_index_wchars(const char *string) +{ + unsigned len = (unsigned) dlg_count_wchars(string); + unsigned inx; + CACHE *cache = load_cache(cInxWideChars, string); + + if (!same_cache2(cache, string, len)) { + const char *current = string; + + cache->list[0] = 0; + for (inx = 1; inx <= len; ++inx) { +#ifdef USE_WIDE_CURSES + if (have_locale()) { + mbstate_t state; + int width; + memset(&state, 0, sizeof(state)); + width = (int) mbrlen(current, strlen(current), &state); + if (width <= 0) + width = 1; /* FIXME: what if we have a control-char? */ + current += width; + cache->list[inx] = cache->list[inx - 1] + width; + } else +#endif /* USE_WIDE_CURSES */ + { + (void) current; + cache->list[inx] = (int) inx; + } + } + } + return cache->list; +} + +/* + * Given the character-offset to find in the list, return the corresponding + * array index. + */ +int +dlg_find_index(const int *list, int limit, int to_find) +{ + int result; + for (result = 0; result <= limit; ++result) { + if (to_find == list[result] + || result == limit + || ((result < limit) && (to_find < list[result + 1]))) { + break; + } + } + return result; +} + +/* + * Build a list of the display-columns for the given string's characters. + */ +const int * +dlg_index_columns(const char *string) +{ + unsigned len = (unsigned) dlg_count_wchars(string); + unsigned inx; + CACHE *cache = load_cache(cInxCols, string); + + if (!same_cache2(cache, string, len)) { + cache->list[0] = 0; +#ifdef USE_WIDE_CURSES + if (have_locale()) { + size_t num_bytes = strlen(string); + const int *inx_wchars = dlg_index_wchars(string); + mbstate_t state; + + for (inx = 0; inx < len; ++inx) { + wchar_t temp[2]; + size_t check; + int result; + + if (string[inx_wchars[inx]] == TAB) { + result = ((cache->list[inx] | 7) + 1) - cache->list[inx]; + } else { + memset(&state, 0, sizeof(state)); + memset(temp, 0, sizeof(temp)); + check = mbrtowc(temp, + string + inx_wchars[inx], + num_bytes - (size_t) inx_wchars[inx], + &state); + if ((int) check <= 0) { + result = 1; + } else { + result = wcwidth(temp[0]); + } + if (result < 0) { + const wchar_t *printable; + cchar_t temp2, *temp2p = &temp2; + setcchar(temp2p, temp, 0, 0, 0); + printable = wunctrl(temp2p); + result = printable ? (int) wcslen(printable) : 1; + } + } + cache->list[inx + 1] = result; + if (inx != 0) + cache->list[inx + 1] += cache->list[inx]; + } + } else +#endif /* USE_WIDE_CURSES */ + { + for (inx = 0; inx < len; ++inx) { + chtype ch = UCH(string[inx]); + + if (ch == TAB) + cache->list[inx + 1] = + ((cache->list[inx] | 7) + 1) - cache->list[inx]; + else if (isprint(UCH(ch))) + cache->list[inx + 1] = 1; + else { + const char *printable; + printable = unctrl(ch); + cache->list[inx + 1] = (printable + ? (int) strlen(printable) + : 1); + } + if (inx != 0) + cache->list[inx + 1] += cache->list[inx]; + } + } + } + return cache->list; +} + +/* + * Returns the number of columns used for a string. That happens to be the + * end-value of the cols[] array. + */ +int +dlg_count_columns(const char *string) +{ + int result = 0; + int limit = dlg_count_wchars(string); + if (limit > 0) { + const int *cols = dlg_index_columns(string); + result = cols[limit]; + } else { + result = (int) strlen(string); + } + dlg_finish_string(string); + return result; +} + +/* + * Given a column limit, count the number of wide characters that can fit + * into that limit. The offset is used to skip over a leading character + * that was already written. + */ +int +dlg_limit_columns(const char *string, int limit, int offset) +{ + const int *cols = dlg_index_columns(string); + int result = dlg_count_wchars(string); + + while (result > 0 && (cols[result] - cols[offset]) > limit) + --result; + return result; +} + +/* + * Updates the string and character-offset, given various editing characters + * or literal characters which are inserted at the character-offset. + */ +bool +dlg_edit_string(char *string, int *chr_offset, int key, int fkey, bool force) +{ + int i; + int len = (int) strlen(string); + int limit = dlg_count_wchars(string); + const int *indx = dlg_index_wchars(string); + int offset = dlg_find_index(indx, limit, *chr_offset); + int max_len = dlg_max_input(MAX_LEN); + bool edit = TRUE; + + /* transform editing characters into equivalent function-keys */ + if (!fkey) { + fkey = TRUE; /* assume we transform */ + switch (key) { + case 0: + break; + case ESC: + case TAB: + fkey = FALSE; /* this is used for navigation */ + break; + default: + fkey = FALSE; /* ...no, we did not transform */ + break; + } + } + + if (fkey) { + switch (key) { + case 0: /* special case for loop entry */ + edit = force; + break; + case DLGK_GRID_LEFT: + if (*chr_offset && offset > 0) + *chr_offset = indx[offset - 1]; + break; + case DLGK_GRID_RIGHT: + if (offset < limit) + *chr_offset = indx[offset + 1]; + break; + case DLGK_BEGIN: + if (*chr_offset) + *chr_offset = 0; + break; + case DLGK_FINAL: + if (offset < limit) + *chr_offset = indx[limit]; + break; + case DLGK_DELETE_LEFT: + if (offset) { + int gap = indx[offset] - indx[offset - 1]; + *chr_offset = indx[offset - 1]; + if (gap > 0) { + for (i = *chr_offset; + (string[i] = string[i + gap]) != '\0'; + i++) { + ; + } + } + } + break; + case DLGK_DELETE_RIGHT: + if (limit) { + if (--limit == 0) { + string[*chr_offset = 0] = '\0'; + } else { + int gap = ((offset <= limit) + ? (indx[offset + 1] - indx[offset]) + : 0); + if (gap > 0) { + for (i = indx[offset]; + (string[i] = string[i + gap]) != '\0'; + i++) { + ; + } + } else if (offset > 0) { + string[indx[offset - 1]] = '\0'; + } + if (*chr_offset > indx[limit]) + *chr_offset = indx[limit]; + } + } + break; + case DLGK_DELETE_ALL: + string[*chr_offset = 0] = '\0'; + break; + case DLGK_ENTER: + edit = 0; + break; +#ifdef KEY_RESIZE + case KEY_RESIZE: + edit = 0; + break; +#endif + case DLGK_GRID_UP: + case DLGK_GRID_DOWN: + case DLGK_FIELD_NEXT: + case DLGK_FIELD_PREV: + edit = 0; + break; + case ERR: + edit = 0; + break; + default: + beep(); + break; + } + } else { + if (key == ESC || key == ERR) { + edit = 0; + } else { + if (len < max_len) { + for (i = ++len; i > *chr_offset; i--) + string[i] = string[i - 1]; + string[*chr_offset] = (char) key; + *chr_offset += 1; + } else { + (void) beep(); + } + } + } + return edit; +} + +static void +compute_edit_offset(const char *string, + int chr_offset, + int x_last, + int *p_dpy_column, + int *p_scroll_amt) +{ + const int *cols = dlg_index_columns(string); + const int *indx = dlg_index_wchars(string); + int limit = dlg_count_wchars(string); + int offset = dlg_find_index(indx, limit, chr_offset); + int offset2; + int dpy_column; + int n; + + for (n = offset2 = 0; n <= offset; ++n) { + if ((cols[offset] - cols[n]) < x_last + && (offset == limit || (cols[offset + 1] - cols[n]) < x_last)) { + offset2 = n; + break; + } + } + + dpy_column = cols[offset] - cols[offset2]; + + if (p_dpy_column != 0) + *p_dpy_column = dpy_column; + if (p_scroll_amt != 0) + *p_scroll_amt = offset2; +} + +/* + * Given the character-offset in the string, returns the display-offset where + * we will position the cursor. + */ +int +dlg_edit_offset(char *string, int chr_offset, int x_last) +{ + int result; + + compute_edit_offset(string, chr_offset, x_last, &result, 0); + + return result; +} + +/* + * Displays the string, shifted as necessary, to fit within the box and show + * the current character-offset. + */ +void +dlg_show_string(WINDOW *win, + const char *string, /* string to display (may be multibyte) */ + int chr_offset, /* character (not bytes) offset */ + chtype attr, /* window-attributes */ + int y_base, /* beginning row on screen */ + int x_base, /* beginning column on screen */ + int x_last, /* number of columns on screen */ + bool hidden, /* if true, do not echo */ + bool force) /* if true, force repaint */ +{ + x_last = MIN(x_last + x_base, getmaxx(win)) - x_base; + + if (hidden && !dialog_vars.insecure) { + if (force) { + (void) wmove(win, y_base, x_base); + wrefresh(win); + } + } else { + const int *cols = dlg_index_columns(string); + const int *indx = dlg_index_wchars(string); + int limit = dlg_count_wchars(string); + + int i, j, k; + int input_x; + int scrollamt; + + compute_edit_offset(string, chr_offset, x_last, &input_x, &scrollamt); + + dlg_attrset(win, attr); + (void) wmove(win, y_base, x_base); + for (i = scrollamt, k = 0; i < limit && k < x_last; ++i) { + int check = cols[i + 1] - cols[scrollamt]; + if (check <= x_last) { + for (j = indx[i]; j < indx[i + 1]; ++j) { + chtype ch = UCH(string[j]); + if (hidden && dialog_vars.insecure) { + waddch(win, '*'); + } else if (ch == TAB) { + int count = cols[i + 1] - cols[i]; + while (--count >= 0) + waddch(win, ' '); + } else { + waddch(win, ch); + } + } + k = check; + } else { + break; + } + } + while (k++ < x_last) + waddch(win, ' '); + (void) wmove(win, y_base, x_base + input_x); + wrefresh(win); + } +} + +/* + * Discard cached data for the given string. + */ +void +dlg_finish_string(const char *string) +{ +#if USE_CACHING + if ((string != 0) && dialog_state.finish_string) { + CACHE *p = cache_list; + CACHE *q = 0; + CACHE *r; + + while (p != 0) { + if (p->string_at == string) { +#ifdef HAVE_TSEARCH + if (tdelete(p, &sorted_cache, compare_cache) == 0) { + continue; + } + trace_cache(__FILE__, __LINE__); +#endif + if (p->string != 0) + free(p->string); + if (p->list != 0) + free(p->list); + if (p == cache_list) { + cache_list = p->next; + r = cache_list; + } else { + q->next = p->next; + r = q; + } + free(p); + p = r; + } else { + q = p; + p = p->next; + } + } + } +#else + (void) string; +#endif +} + +#ifdef NO_LEAKS +void +_dlg_inputstr_leaks(void) +{ +#if USE_CACHING + dialog_state.finish_string = TRUE; + trace_cache(__FILE__, __LINE__); + while (cache_list != 0) { + dlg_finish_string(cache_list->string_at); + } +#endif /* USE_CACHING */ +} +#endif /* NO_LEAKS */ Index: vendor/dialog/1.3-20180621/makefile.in =================================================================== --- vendor/dialog/1.3-20180621/makefile.in (nonexistent) +++ vendor/dialog/1.3-20180621/makefile.in (revision 339483) @@ -0,0 +1,358 @@ +# $Id: makefile.in,v 1.97 2018/06/09 01:05:18 tom Exp $ +# template makefile for DIALOG +############################################################################## +# Copyright (c) 1999-2017,2018 Thomas E. Dickey # +# # +# 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. # +############################################################################## +# +SHELL = /bin/sh + +srcdir = @srcdir@ +top_srcdir = @top_srcdir@ +VPATH = @srcdir@ + +prefix = @prefix@ +exec_prefix = @exec_prefix@ +datarootdir = @datarootdir@ + +top_builddir = . + +x = @EXEEXT@ +o = .@OBJEXT@ + +DESTDIR = @DESTDIR@ + +THIS = dialog + +CFG_ROOTNAME = @CFG_ROOTNAME@ +HDR_ROOTNAME = @HDR_ROOTNAME@ +LIB_ROOTNAME = @LIB_ROOTNAME@ +LIB_PREFIX = @LIB_PREFIX@ +LIB_SUFFIX = @LIB_SUFFIX@ + +VERSION_MAJOR = @VERSION_MAJOR@ +VERSION_MINOR = @VERSION_MINOR@ +VERSION = $(VERSION_MAJOR).$(VERSION_MINOR) +REL_VERSION = @REL_VERSION@ +ABI_VERSION = @ABI_VERSION@ +LIB_ROOTNAME = @LIB_ROOTNAME@ + +RESULTING_SYMS = @RESULTING_SYMS@ +VERSIONED_SYMS = @VERSIONED_SYMS@ + +@SET_SHLIB_VARS@ + +bindir = @bindir@ +includedir = @includedir@ +libdir = @libdir@ +mandir = @mandir@ +manext = 1 +libext = 3 + +BINDIR = $(DESTDIR)$(bindir) +INCLUDEDIR = $(DESTDIR)$(includedir) +LIBDIR = $(DESTDIR)$(libdir) +MANDIR = $(DESTDIR)$(mandir) + +MAN1DIR = $(MANDIR)/man1 +MAN3DIR = $(MANDIR)/man3 + +# see po/makefile +localedir = $(prefix)/@DATADIRNAME@/locale + +CFLAGS = @CFLAGS@ +CPPFLAGS = -I. -I$(srcdir) @CPPFLAGS@ @DEFS@ -DLOCALEDIR=\"$(localedir)\" +EXTRA_CFLAGS = @EXTRA_CFLAGS@ +CC = @CC@ +CPP = @CPP@ +AR = @AR@ +ARFLAGS = @ARFLAGS@ +LDFLAGS = @EXTRA_LDFLAGS@ @LDFLAGS@ +LIBS = @LIBS@ @INTLLIBS@ +RANLIB = @LIB_PREP@ + +RM = rm -f +LN_S = @LN_S@ +LINT = @LINT@ +LINT_OPTS = @LINT_OPTS@ + +CTAGS = @CTAGS@ +ETAGS = @ETAGS@ + +LIBTOOL = @LIBTOOL@ @ECHO_LT@ +LIBTOOL_OPTS = @LIBTOOL_OPTS@ +LIBTOOL_CLEAN = @LIB_CLEAN@ +LIBTOOL_COMPILE = @LIB_COMPILE@ +LIBTOOL_CREATE = @LIB_CREATE@ +LIBTOOL_LINK = @LIB_LINK@ +LIBTOOL_INSTALL = @LIB_INSTALL@ +LIBTOOL_UNINSTALL = @LIB_UNINSTALL@ +LIBTOOL_VERSION = @LIBTOOL_VERSION@ + +INSTALL = @INSTALL@ +INSTALL_PROGRAM = $(LIBTOOL_INSTALL) @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_DATA = @INSTALL_DATA@ + +LINK = $(LIBTOOL_LINK) + +# The library is always named for the package, but the program can be further +# renamed at install time, starting with the package name. +PACKAGE = @PACKAGE@ +ACTUAL_PROG = `echo $(PACKAGE) |sed @program_transform_name@` +LIB_CONFIG = $(CFG_ROOTNAME)-config + +# The library name $(LIB) is set at configure/make time, since it is used as a +# makefile target. Ditto for $(PROG). +LIB = @LIB_TARGET@ +PROG = @PACKAGE@$x +# +# Standard .c to .o compile line. +# +.SUFFIXES: .c .i $o .1 .man .txt @MAN2HTML_NOTE@ .html @GROFF_NOTE@ .ps .pdf +.c.i : + @RULE_CC@ + @ECHO_CC@$(CPP) $(CPPFLAGS) -c $< >$@ +.c$o : + @RULE_CC@ + @ECHO_CC@$(LIBTOOL_COMPILE) $(CC) $(CFLAGS) $(EXTRA_CFLAGS) $(CPPFLAGS) -c $< + +@NROFF_NOTE@.1.txt : +@NROFF_NOTE@ GROFF_NO_SGR=stupid $(SHELL) -c "tbl $< | nroff -Tascii -man | col -bx" >$@ + +@MAN2HTML_NOTE@.1.html : +@MAN2HTML_NOTE@ ./@MAN2HTML_TEMP@ $* 1 man >$@ +@MAN2HTML_NOTE@ +@GROFF_NOTE@.1.ps : +@GROFF_NOTE@ $(SHELL) -c "tbl $< | groff -man" >$@ +@GROFF_NOTE@ +@GROFF_NOTE@.ps.pdf : +@GROFF_NOTE@ ps2pdf $*.ps + +EXTRAOBJS = @EXTRAOBJS@ +OBJECTS = $(EXTRAOBJS) \ + argv$o \ + arrows$o \ + buttons$o \ + checklist$o \ + columns$o \ + dlg_keys$o \ + editbox$o \ + help$o \ + inputbox$o \ + inputstr$o \ + menubox$o \ + mouse$o \ + mousewget$o \ + msgbox$o \ + textbox$o \ + ttysize$o \ + ui_getc$o \ + util$o \ + version$o \ + yesno$o + +LIB_OBJECT = @LIB_OBJECT@ + +SRCS = $(OBJECTS:$o=.c) +HDRS = \ + dialog.h \ + dlg_colors.h \ + dlg_config.h \ + dlg_keys.h + +ALL = $(LIB) $(PROG) + +BIN_DIRS = $(BINDIR) $(MAN1DIR) +LIB_DIRS = $(LIBDIR) $(INCLUDEDIR) + +PO_DIR = $(srcdir)/po + +all :: $(ALL) + +@LIBTOOL_MAKE@install :: install-lib +@LIBTOOL_MAKE@uninstall :: uninstall-lib + +@INTLDIR_MAKE@@INTLLIBS@ : +@INTLDIR_MAKE@ @echo "Building GNU gettext library..." +@INTLDIR_MAKE@ @cd intl && $(MAKE) @cf_cv_makeflags@ + +dialog$o \ +$(OBJECTS) : $(srcdir)/dialog.h $(srcdir)/dlg_keys.h dlg_config.h VERSION + +$(PROG)$x : $(LIB) dialog$o @INTLDIR_MAKE@ @INTLLIBS@ + $(LINK) -o $@ dialog$o -L. -l@PACKAGE@ $(CFLAGS) $(LDFLAGS) $(LIBS) + +clean \ +distclean \ +install \ +install-full \ +install-strip \ +uninstall :: + @echo making $@ +@INTLDIR_MAKE@ @-test -f intl/makefile && cd intl && $(MAKE) @cf_cv_makeflags@ $@ +@MSG_DIR_MAKE@ @-test -f po/makefile && cd po && $(MAKE) @cf_cv_makeflags@ $@ + +clean :: + @- $(RM) -r autom4te.cache + - $(RM) *.*cov *.da *.bb *.bbg + - $(LIBTOOL_CLEAN) $(RM) *.i *$o $(ALL) + - $(RM) headers.sed + - $(RM) *.html *.pdf *.png *.ps *.txt dialog_lib.1 + - $(RM) core *~ tags TAGS + +distclean :: clean + $(RM) intl/libintl.h intl/po2tbl.sed + $(RM) makefile dlg_config.h config.cache config.log config.status + $(RM) samples/install/makefile + $(RM) headers-sh + $(RM) man2html.* + $(RM) dialog-config + +install :: install-bin install-man + @echo "made $@" + +install-full :: install-lib install-bin install-man + @echo "made $@" + +install-strip :: $(PROG) $(BINDIR) + $(INSTALL_PROGRAM) -s $(PROG) $(BINDIR) + +uninstall :: uninstall-bin uninstall-man + @echo "made $@" + +uninstall-full :: uninstall-bin uninstall-man uninstall-lib + @echo "made $@" + +install-bin : $(PROG) $(BINDIR) + $(INSTALL_PROGRAM) $(PROG) $(BINDIR)/$(ACTUAL_PROG)$x + +uninstall-bin : + $(RM) $(BINDIR)/$(ACTUAL_PROG)$x + +install-man :: $(MAN1DIR) + @ echo "** installing $(ACTUAL_PROG).$(manext)" + @ $(SHELL) $(srcdir)/rename.sh \ + $(srcdir)/dialog.1 \ + $(MAN1DIR)/$(ACTUAL_PROG).$(manext) \ + $(ACTUAL_PROG) \ + @PACKAGE@ \ + $(INSTALL_DATA) + +uninstall-man :: + $(RM) $(MAN1DIR)/$(ACTUAL_PROG).$(manext) + +# most users do not want/need the library, so the install rules are distinct. +install-lib :: $(BINDIR) dialog-config + @ echo "** installing config script in $(BINDIR)" + @ $(INSTALL_SCRIPT) dialog-config $(BINDIR)/$(LIB_CONFIG) + +install-lib :: $(LIB_DIRS) $(LIB) headers.sed + @ echo "** installing library in $(LIBDIR)" + @ $(LIBTOOL_INSTALL) $(INSTALL_DATA) $(LIB) $(LIBDIR) + @ echo "** installing headers in $(INCLUDEDIR)" + @ $(SHELL) headers-sh $(INSTALL_DATA) $(INCLUDEDIR) $(srcdir) dialog.h + @ $(SHELL) headers-sh $(INSTALL_DATA) $(INCLUDEDIR) $(srcdir) dlg_colors.h + @ $(SHELL) headers-sh $(INSTALL_DATA) $(INCLUDEDIR) $(srcdir) dlg_keys.h + @ $(SHELL) headers-sh $(INSTALL_DATA) $(INCLUDEDIR) . dlg_config.h + +uninstall-lib :: $(BINDIR) + $(RM) $(BINDIR)/$(LIB_CONFIG) + +uninstall-lib :: $(LIB_DIRS) + - $(LIBTOOL_UNINSTALL) $(RM) $(LIBDIR)/$(LIB) + @ $(SHELL) headers-sh $(RM) $(INCLUDEDIR) $(srcdir) dialog.h + @ $(SHELL) headers-sh $(RM) $(INCLUDEDIR) $(srcdir) dlg_colors.h + @ $(SHELL) headers-sh $(RM) $(INCLUDEDIR) $(srcdir) dlg_keys.h + @ $(SHELL) headers-sh $(RM) $(INCLUDEDIR) . dlg_config.h + +install-lib :: $(MAN3DIR) + @ echo "** installing @PACKAGE@.$(libext)" + @ $(SHELL) $(srcdir)/rename.sh \ + $(srcdir)/dialog.3 \ + $(MAN3DIR)/@PACKAGE@.$(libext) \ + $(ACTUAL_PROG) \ + @PACKAGE@ \ + $(INSTALL_DATA) + +uninstall-lib :: + $(RM) $(MAN3DIR)/@PACKAGE@.$(libext) + +headers.sed : headers-sh + $(SHELL) headers-sh $(INCLUDEDIR) $(srcdir) + +################################################################################ +TOP_DOCS = \ +@NROFF_NOTE@ dialog.txt \ +@MAN2HTML_NOTE@ dialog.html \ +@GROFF_NOTE@ dialog.pdf \ +@GROFF_NOTE@ dialog.ps + +dialog.html : dialog.1 +dialog.pdf : dialog.ps +dialog.ps : dialog.1 +dialog.txt : dialog.1 +################################################################################ +# rename, to use suffix-rules +dialog_lib.1 : dialog.3 + -$(RM) $@ + cp dialog.3 $@ + +LIB_DOCS = \ + dialog_lib.1 \ +@NROFF_NOTE@ dialog_lib.txt \ +@MAN2HTML_NOTE@ dialog_lib.html \ +@GROFF_NOTE@ dialog_lib.pdf \ +@GROFF_NOTE@ dialog_lib.ps + +dialog_lib.html : dialog_lib.1 +dialog_lib.pdf : dialog_lib.ps +dialog_lib.ps : dialog_lib.1 +dialog_lib.txt : dialog_lib.1 +################################################################################ +docs: $(TOP_DOCS) $(LIB_DOCS) +clean-docs: + -$(RM) $(TOP_DOCS) $(LIB_DOCS) +################################################################################ + +$(MAN1DIR) \ +$(MAN3DIR) \ +$(BINDIR) \ +$(INCLUDEDIR) \ +$(LIBDIR) : ; mkdir -p $@ + +@MAKE_LOWER_TAGS@tags : +@MAKE_LOWER_TAGS@ $(CTAGS) $(SRCS) $(HDRS) + +@MAKE_LOWER_TAGS@TAGS : +@MAKE_LOWER_TAGS@ $(ETAGS) $(SRCS) $(HDRS) + +update-po: + rsync -Lrtvz translationproject.org::tp/latest/dialog/ $(PO_DIR) + test -f $(PO_DIR)/makefile && cd $(PO_DIR) && $(MAKE) $@ + +lint: + $(LINT) $(LINT_OPTS) $(CPPFLAGS) *.c Index: vendor/dialog/1.3-20180621/menubox.c =================================================================== --- vendor/dialog/1.3-20180621/menubox.c (nonexistent) +++ vendor/dialog/1.3-20180621/menubox.c (revision 339483) @@ -0,0 +1,801 @@ +/* + * $Id: menubox.c,v 1.159 2018/06/21 23:28:56 tom Exp $ + * + * menubox.c -- implements the menu box + * + * Copyright 2000-2016,2018 Thomas E. Dickey + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public Licens, version 2.1e + * as published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this program; if not, write to + * Free Software Foundation, Inc. + * 51 Franklin St., Fifth Floor + * Boston, MA 02110, USA. + * + * An earlier version of this program lists as authors + * Savio Lam (lam836@cs.cuhk.hk) + */ + +#include <dialog.h> +#include <dlg_keys.h> + +typedef enum { + Unselected = 0, + Selected, + Editing +} Mode; + +typedef struct { + /* the outer-window */ + WINDOW *dialog; + int box_y; + int box_x; + int tag_x; + int item_x; + int menu_height; + int menu_width; + /* the inner-window */ + WINDOW *menu; + DIALOG_LISTITEM *items; + int item_no; +} ALL_DATA; + +#define MIN_HIGH (1 + (5 * MARGIN)) + +#define INPUT_ROWS 3 /* rows per inputmenu entry */ + +#define RowHeight(i) (is_inputmenu ? ((i) * INPUT_ROWS) : ((i) * 1)) +#define ItemToRow(i) (is_inputmenu ? ((i) * INPUT_ROWS + 1) : (i)) +#define RowToItem(i) (is_inputmenu ? ((i) / INPUT_ROWS + 0) : (i)) + +/* + * Print menu item + */ +static void +print_item(ALL_DATA * data, + WINDOW *win, + DIALOG_LISTITEM * item, + int choice, + Mode selected, + bool is_inputmenu) +{ + chtype save = dlg_get_attrs(win); + int n; + int climit = (data->item_x - data->tag_x - GUTTER); + int my_width = data->menu_width; + int my_x = data->item_x; + int my_y = ItemToRow(choice); + bool both = (!dialog_vars.no_tags && !dialog_vars.no_items); + bool first = TRUE; + chtype bordchar; + const char *show = (dialog_vars.no_items + ? item->name + : item->text); + + switch (selected) { + default: + case Unselected: + bordchar = item_attr; + break; + case Selected: + bordchar = item_selected_attr; + break; + case Editing: + bordchar = dialog_attr; + break; + } + + /* Clear 'residue' of last item and mark current current item */ + if (is_inputmenu) { + dlg_attrset(win, (selected != Unselected) ? item_selected_attr : item_attr); + for (n = my_y - 1; n < my_y + INPUT_ROWS - 1; n++) { + wmove(win, n, 0); + wprintw(win, "%*s", my_width, " "); + } + } else { + dlg_attrset(win, menubox_attr); + wmove(win, my_y, 0); + wprintw(win, "%*s", my_width, " "); + } + + /* highlight first char of the tag to be special */ + if (both) { + (void) wmove(win, my_y, data->tag_x); + dlg_print_listitem(win, item->name, climit, first, selected); + first = FALSE; + } + + /* Draw the input field box (only for inputmenu) */ + (void) wmove(win, my_y, my_x); + if (is_inputmenu) { + my_width -= 1; + dlg_draw_box(win, my_y - 1, my_x, INPUT_ROWS, my_width - my_x - data->tag_x, + bordchar, + bordchar); + my_width -= 1; + ++my_x; + } + + /* print actual item */ + wmove(win, my_y, my_x); + dlg_print_listitem(win, show, my_width - my_x, first, selected); + + if (selected) { + dlg_item_help(item->help); + } + dlg_attrset(win, save); +} + +/* + * Allow the user to edit the text of a menu entry. + */ +static int +input_menu_edit(ALL_DATA * data, + DIALOG_LISTITEM * items, + int choice, + char **resultp) +{ + chtype save = dlg_get_attrs(data->menu); + char *result; + int offset = 0; + int key = 0, fkey = 0; + bool first = TRUE; + /* see above */ + bool is_inputmenu = TRUE; + int y = ItemToRow(choice); + int code = TRUE; + int max_len = dlg_max_input(MAX((int) strlen(items->text) + 1, MAX_LEN)); + + result = dlg_malloc(char, (size_t) max_len); + assert_ptr(result, "input_menu_edit"); + + /* original item is used to initialize the input string. */ + result[0] = '\0'; + strcpy(result, items->text); + + print_item(data, data->menu, items, choice, Editing, TRUE); + + /* taken out of inputbox.c - but somewhat modified */ + for (;;) { + if (!first) + key = dlg_mouse_wgetch(data->menu, &fkey); + if (dlg_edit_string(result, &offset, key, fkey, first)) { + dlg_show_string(data->menu, result, offset, inputbox_attr, + y, + data->item_x + 1, + data->menu_width - data->item_x - 3, + FALSE, first); + first = FALSE; + } else if (key == ESC || key == TAB) { + code = FALSE; + break; + } else { + break; + } + } + print_item(data, data->menu, items, choice, Selected, TRUE); + dlg_attrset(data->menu, save); + + *resultp = result; + return code; +} + +static int +handle_button(int code, DIALOG_LISTITEM * items, int choice) +{ + char *help_result; + + switch (code) { + case DLG_EXIT_OK: /* FALLTHRU */ + case DLG_EXIT_EXTRA: + dlg_add_string(items[choice].name); + break; + case DLG_EXIT_HELP: + dlg_add_help_listitem(&code, &help_result, &items[choice]); + dlg_add_string(help_result); + break; + } + return code; +} + +int +dlg_renamed_menutext(DIALOG_LISTITEM * items, int current, char *newtext) +{ + if (dialog_vars.input_result) + dialog_vars.input_result[0] = '\0'; + dlg_add_result("RENAMED "); + dlg_add_string(items[current].name); + dlg_add_result(" "); + dlg_add_string(newtext); + return DLG_EXIT_EXTRA; +} + +int +dlg_dummy_menutext(DIALOG_LISTITEM * items, int current, char *newtext) +{ + (void) items; + (void) current; + (void) newtext; + return DLG_EXIT_ERROR; +} + +static void +print_menu(ALL_DATA * data, int choice, int scrollamt, int max_choice, bool is_inputmenu) +{ + int i; + + for (i = 0; i < max_choice; i++) { + print_item(data, + data->menu, + &data->items[i + scrollamt], + i, + (i == choice) ? Selected : Unselected, + is_inputmenu); + } + + /* Clean bottom lines */ + if (is_inputmenu) { + int spare_lines, x_count; + spare_lines = data->menu_height % INPUT_ROWS; + dlg_attrset(data->menu, menubox_attr); + for (; spare_lines; spare_lines--) { + wmove(data->menu, data->menu_height - spare_lines, 0); + for (x_count = 0; x_count < data->menu_width; + x_count++) { + waddch(data->menu, ' '); + } + } + } + + (void) wnoutrefresh(data->menu); + + dlg_draw_scrollbar(data->dialog, + scrollamt, + scrollamt, + scrollamt + max_choice, + data->item_no, + data->box_x, + data->box_x + data->menu_width, + data->box_y, + data->box_y + data->menu_height + 1, + menubox_border2_attr, + menubox_border_attr); +} + +static bool +check_hotkey(DIALOG_LISTITEM * items, int choice) +{ + bool result = FALSE; + + if (dlg_match_char(dlg_last_getc(), + (dialog_vars.no_tags + ? items[choice].text + : items[choice].name))) { + result = TRUE; + } + return result; +} + +/* + * This is an alternate interface to 'menu' which allows the application + * to read the list item states back directly without putting them in the + * output buffer. + */ +int +dlg_menu(const char *title, + const char *cprompt, + int height, + int width, + int menu_height, + int item_no, + DIALOG_LISTITEM * items, + int *current_item, + DIALOG_INPUTMENU rename_menutext) +{ + /* *INDENT-OFF* */ + static DLG_KEYS_BINDING binding[] = { + HELPKEY_BINDINGS, + ENTERKEY_BINDINGS, + TOGGLEKEY_BINDINGS, + DLG_KEYS_DATA( DLGK_FIELD_NEXT, KEY_RIGHT ), + DLG_KEYS_DATA( DLGK_FIELD_NEXT, TAB ), + DLG_KEYS_DATA( DLGK_FIELD_PREV, KEY_BTAB ), + DLG_KEYS_DATA( DLGK_FIELD_PREV, KEY_LEFT ), + DLG_KEYS_DATA( DLGK_ITEM_NEXT, '+' ), + DLG_KEYS_DATA( DLGK_ITEM_NEXT, KEY_DOWN ), + DLG_KEYS_DATA( DLGK_ITEM_NEXT, CHR_NEXT ), + DLG_KEYS_DATA( DLGK_ITEM_PREV, '-' ), + DLG_KEYS_DATA( DLGK_ITEM_PREV, KEY_UP ), + DLG_KEYS_DATA( DLGK_ITEM_PREV, CHR_PREVIOUS ), + DLG_KEYS_DATA( DLGK_PAGE_FIRST, KEY_HOME ), + DLG_KEYS_DATA( DLGK_PAGE_LAST, KEY_END ), + DLG_KEYS_DATA( DLGK_PAGE_LAST, KEY_LL ), + DLG_KEYS_DATA( DLGK_PAGE_NEXT, KEY_NPAGE ), + DLG_KEYS_DATA( DLGK_PAGE_PREV, KEY_PPAGE ), + END_KEYS_BINDING + }; + static DLG_KEYS_BINDING binding2[] = { + INPUTSTR_BINDINGS, + HELPKEY_BINDINGS, + ENTERKEY_BINDINGS, + END_KEYS_BINDING + }; + /* *INDENT-ON* */ + +#ifdef KEY_RESIZE + int old_LINES = LINES; + int old_COLS = COLS; + int old_height = height; + int old_width = width; +#endif + ALL_DATA all; + int i, j, x, y, cur_x, cur_y; + int key = 0, fkey; + int button = dialog_state.visit_items ? -1 : dlg_default_button(); + int choice = dlg_default_listitem(items); + int result = DLG_EXIT_UNKNOWN; + int scrollamt = 0; + int max_choice; + int found; + int use_width, name_width, text_width, list_width; + WINDOW *dialog, *menu; + char *prompt = 0; + const char **buttons = dlg_ok_labels(); + bool is_inputmenu = ((rename_menutext != 0) + && (rename_menutext != dlg_dummy_menutext)); + + DLG_TRACE(("# menubox args:\n")); + DLG_TRACE2S("title", title); + DLG_TRACE2S("message", cprompt); + DLG_TRACE2N("height", height); + DLG_TRACE2N("width", width); + DLG_TRACE2N("lheight", menu_height); + DLG_TRACE2N("llength", item_no); + /* FIXME dump the items[][] too */ + DLG_TRACE2N("current", *current_item); + DLG_TRACE2N("rename", rename_menutext != 0); + + dialog_state.plain_buttons = TRUE; + + all.items = items; + all.item_no = item_no; + + dlg_does_output(); + +#ifdef KEY_RESIZE + retry: +#endif + + prompt = dlg_strclone(cprompt); + dlg_tab_correct_str(prompt); + + all.menu_height = menu_height; + use_width = dlg_calc_list_width(item_no, items) + 10; + use_width = MAX(26, use_width); + if (all.menu_height == 0) { + /* calculate height without items (4) */ + dlg_auto_size(title, prompt, &height, &width, MIN_HIGH, use_width); + dlg_calc_listh(&height, &all.menu_height, item_no); + } else { + dlg_auto_size(title, prompt, + &height, &width, + MIN_HIGH + all.menu_height, use_width); + } + dlg_button_layout(buttons, &width); + dlg_print_size(height, width); + dlg_ctl_size(height, width); + + x = dlg_box_x_ordinate(width); + y = dlg_box_y_ordinate(height); + + dialog = dlg_new_window(height, width, y, x); + all.dialog = dialog; + + dlg_register_window(dialog, "menubox", binding); + dlg_register_buttons(dialog, "menubox", buttons); + + dlg_mouse_setbase(x, y); + + dlg_draw_box2(dialog, 0, 0, height, width, dialog_attr, border_attr, border2_attr); + dlg_draw_bottom_box2(dialog, border_attr, border2_attr, dialog_attr); + dlg_draw_title(dialog, title); + + dlg_attrset(dialog, dialog_attr); + dlg_print_autowrap(dialog, prompt, height, width); + + all.menu_width = width - 6; + getyx(dialog, cur_y, cur_x); + all.box_y = cur_y + 1; + all.box_x = (width - all.menu_width) / 2 - 1; + + /* + * After displaying the prompt, we know how much space we really have. + * Limit the list to avoid overwriting the ok-button. + */ + if (all.menu_height + MIN_HIGH > height - cur_y) + all.menu_height = height - MIN_HIGH - cur_y; + if (all.menu_height <= 0) + all.menu_height = 1; + + /* Find out maximal number of displayable items at once. */ + max_choice = MIN(all.menu_height, + RowHeight(item_no)); + if (is_inputmenu) + max_choice /= INPUT_ROWS; + + /* create new window for the menu */ + menu = dlg_sub_window(dialog, all.menu_height, all.menu_width, + y + all.box_y + 1, + x + all.box_x + 1); + all.menu = menu; + + dlg_register_window(menu, "menu", binding2); + dlg_register_buttons(menu, "menu", buttons); + + /* draw a box around the menu items */ + dlg_draw_box(dialog, + all.box_y, all.box_x, + all.menu_height + 2, all.menu_width + 2, + menubox_border_attr, menubox_border2_attr); + + name_width = 0; + text_width = 0; + + /* Find length of longest item to center menu * + * only if --menu was given, using --inputmenu * + * won't be centered. */ + for (i = 0; i < item_no; i++) { + name_width = MAX(name_width, dlg_count_columns(items[i].name)); + text_width = MAX(text_width, dlg_count_columns(items[i].text)); + } + + /* If the name+text is wider than the list is allowed, then truncate + * one or both of them. If the name is no wider than 30% of the list, + * leave it intact. + * + * FIXME: the gutter width and name/list ratio should be configurable. + */ + use_width = (all.menu_width - GUTTER); + if (dialog_vars.no_tags) { + list_width = MIN(use_width, text_width); + } else if (dialog_vars.no_items) { + list_width = MIN(use_width, name_width); + } else { + if (text_width >= 0 + && name_width >= 0 + && use_width > 0 + && text_width + name_width > use_width) { + int need = (int) (0.30 * use_width); + if (name_width > need) { + int want = (int) (use_width + * ((double) name_width) + / (text_width + name_width)); + name_width = (want > need) ? want : need; + } + text_width = use_width - name_width; + } + list_width = (text_width + name_width); + } + + all.tag_x = (is_inputmenu + ? 0 + : (use_width - list_width) / 2); + all.item_x = ((dialog_vars.no_tags + ? 0 + : (dialog_vars.no_items + ? 0 + : (GUTTER + name_width))) + + all.tag_x); + + if (choice - scrollamt >= max_choice) { + scrollamt = choice - (max_choice - 1); + choice = max_choice - 1; + } + + print_menu(&all, choice, scrollamt, max_choice, is_inputmenu); + + /* register the new window, along with its borders */ + dlg_mouse_mkbigregion(all.box_y + 1, all.box_x, + all.menu_height + 2, all.menu_width + 2, + KEY_MAX, 1, 1, 1 /* by lines */ ); + + dlg_draw_buttons(dialog, height - 2, 0, buttons, button, FALSE, width); + + dlg_trace_win(dialog); + while (result == DLG_EXIT_UNKNOWN) { + if (button < 0) /* --visit-items */ + wmove(dialog, + all.box_y + ItemToRow(choice) + 1, + all.box_x + all.tag_x + 1); + + key = dlg_mouse_wgetch(dialog, &fkey); + if (dlg_result_key(key, fkey, &result)) + break; + + found = FALSE; + if (fkey) { + /* + * Allow a mouse-click on a box to switch selection to that box. + * Handling a button click is a little more complicated, since we + * push a KEY_ENTER back onto the input stream so we'll put the + * cursor at the right place before handling the "keypress". + */ + if (key >= DLGK_MOUSE(KEY_MAX)) { + key -= DLGK_MOUSE(KEY_MAX); + i = RowToItem(key); + if (i < max_choice) { + found = TRUE; + } else { + beep(); + continue; + } + } else if (is_DLGK_MOUSE(key) + && dlg_ok_buttoncode(key - M_EVENT) >= 0) { + button = (key - M_EVENT); + ungetch('\n'); + continue; + } + } else { + /* + * Check if key pressed matches first character of any item tag in + * list. If there is more than one match, we will cycle through + * each one as the same key is pressed repeatedly. + */ + if (button < 0 || !dialog_state.visit_items) { + for (j = scrollamt + choice + 1; j < item_no; j++) { + if (check_hotkey(items, j)) { + found = TRUE; + i = j - scrollamt; + break; + } + } + if (!found) { + for (j = 0; j <= scrollamt + choice; j++) { + if (check_hotkey(items, j)) { + found = TRUE; + i = j - scrollamt; + break; + } + } + } + if (found) + dlg_flush_getc(); + } else if ((j = dlg_char_to_button(key, buttons)) >= 0) { + button = j; + ungetch('\n'); + continue; + } + + /* + * A single digit (1-9) positions the selection to that line in the + * current screen. + */ + if (!found + && (key <= '9') + && (key > '0') + && (key - '1' < max_choice)) { + found = TRUE; + i = key - '1'; + } + } + + if (!found && fkey) { + found = TRUE; + switch (key) { + case DLGK_PAGE_FIRST: + i = -scrollamt; + break; + case DLGK_PAGE_LAST: + i = item_no - 1 - scrollamt; + break; + case DLGK_MOUSE(KEY_PPAGE): + case DLGK_PAGE_PREV: + if (choice) + i = 0; + else if (scrollamt != 0) + i = -MIN(scrollamt, max_choice); + else + continue; + break; + case DLGK_MOUSE(KEY_NPAGE): + case DLGK_PAGE_NEXT: + i = MIN(choice + max_choice, item_no - scrollamt - 1); + break; + case DLGK_ITEM_PREV: + i = choice - 1; + if (choice == 0 && scrollamt == 0) + continue; + break; + case DLGK_ITEM_NEXT: + i = choice + 1; + if (scrollamt + choice >= item_no - 1) + continue; + break; + default: + found = FALSE; + break; + } + } + + if (found) { + if (i != choice) { + getyx(dialog, cur_y, cur_x); + if (i < 0 || i >= max_choice) { + if (i < 0) { + scrollamt += i; + choice = 0; + } else { + choice = max_choice - 1; + scrollamt += (i - max_choice + 1); + } + print_menu(&all, choice, scrollamt, max_choice, is_inputmenu); + } else { + choice = i; + print_menu(&all, choice, scrollamt, max_choice, is_inputmenu); + (void) wmove(dialog, cur_y, cur_x); + wrefresh(dialog); + } + } + continue; /* wait for another key press */ + } + + if (fkey) { + switch (key) { + case DLGK_FIELD_PREV: + button = dlg_prev_button(buttons, button); + dlg_draw_buttons(dialog, height - 2, 0, buttons, button, + FALSE, width); + break; + case DLGK_FIELD_NEXT: + button = dlg_next_button(buttons, button); + dlg_draw_buttons(dialog, height - 2, 0, buttons, button, + FALSE, width); + break; + case DLGK_TOGGLE: + case DLGK_ENTER: + if (is_inputmenu) + result = dlg_ok_buttoncode(button); + else + result = dlg_enter_buttoncode(button); + + /* + * If dlg_menu() is called from dialog_menu(), we want to + * capture the results into dialog_vars.input_result. + */ + if (result == DLG_EXIT_ERROR) { + result = DLG_EXIT_UNKNOWN; + } else if (is_inputmenu + || rename_menutext == dlg_dummy_menutext) { + result = handle_button(result, + items, + scrollamt + choice); + } + + /* + * If we have a rename_menutext function, interpret the Extra + * button as a request to rename the menu's text. If that + * function doesn't return "Unknown", we will exit from this + * function. Usually that is done for dialog_menu(), so the + * shell script can use the updated value. If it does return + * "Unknown", update the list item only. A direct caller of + * dlg_menu() can free the renamed value - we cannot. + */ + if (is_inputmenu && result == DLG_EXIT_EXTRA) { + char *tmp; + + if (input_menu_edit(&all, + &items[scrollamt + choice], + choice, + &tmp)) { + result = rename_menutext(items, scrollamt + choice, tmp); + if (result == DLG_EXIT_UNKNOWN) { + items[scrollamt + choice].text = tmp; + } else { + free(tmp); + } + } else { + result = DLG_EXIT_UNKNOWN; + print_item(&all, + menu, + &items[scrollamt + choice], + choice, + Selected, + is_inputmenu); + (void) wnoutrefresh(menu); + free(tmp); + } + + if (result == DLG_EXIT_UNKNOWN) { + dlg_draw_buttons(dialog, height - 2, 0, + buttons, button, FALSE, width); + } + } + break; +#ifdef KEY_RESIZE + case KEY_RESIZE: + dlg_will_resize(dialog); + /* reset data */ +#define resizeit(name, NAME) \ + name = ((NAME >= old_##NAME) \ + ? (NAME - (old_##NAME - old_##name)) \ + : old_##name) + resizeit(height, LINES); + resizeit(width, COLS); + free(prompt); + dlg_clear(); + dlg_del_window(dialog); + dlg_mouse_free_regions(); + /* repaint */ + goto retry; +#endif + default: + flash(); + break; + } + } + } + + dlg_mouse_free_regions(); + dlg_unregister_window(menu); + dlg_del_window(dialog); + free(prompt); + + *current_item = scrollamt + choice; + return result; +} + +/* + * Display a menu for choosing among a number of options + */ +int +dialog_menu(const char *title, + const char *cprompt, + int height, + int width, + int menu_height, + int item_no, + char **items) +{ + int result; + int choice; + int i, j; + DIALOG_LISTITEM *listitems; + + listitems = dlg_calloc(DIALOG_LISTITEM, (size_t) item_no + 1); + assert_ptr(listitems, "dialog_menu"); + + for (i = j = 0; i < item_no; ++i) { + listitems[i].name = items[j++]; + listitems[i].text = (dialog_vars.no_items + ? dlg_strempty() + : items[j++]); + listitems[i].help = ((dialog_vars.item_help) + ? items[j++] + : dlg_strempty()); + } + dlg_align_columns(&listitems[0].text, sizeof(DIALOG_LISTITEM), item_no); + + result = dlg_menu(title, + cprompt, + height, + width, + menu_height, + item_no, + listitems, + &choice, + (dialog_vars.input_menu + ? dlg_renamed_menutext + : dlg_dummy_menutext)); + + dlg_free_columns(&listitems[0].text, sizeof(DIALOG_LISTITEM), item_no); + free(listitems); + return result; +} Index: vendor/dialog/1.3-20180621/mixedform.c =================================================================== --- vendor/dialog/1.3-20180621/mixedform.c (nonexistent) +++ vendor/dialog/1.3-20180621/mixedform.c (revision 339483) @@ -0,0 +1,118 @@ +/* + * $Id: mixedform.c,v 1.13 2018/06/15 01:23:33 tom Exp $ + * + * mixedform.c -- implements the mixed form (i.e, typed pairs label/editbox) + * + * Copyright 2007-2013,2018 Thomas E. Dickey + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License, version 2.1 + * as published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this program; if not, write to + * Free Software Foundation, Inc. + * 51 Franklin St., Fifth Floor + * Boston, MA 02110, USA. + * + * This is inspired by a patch from Kiran Cherupally + * (but different interface design). + */ + +#include <dialog.h> + +#define LLEN(n) ((n) * MIXEDFORM_TAGS) + +#define ItemName(i) items[LLEN(i) + 0] +#define ItemNameY(i) items[LLEN(i) + 1] +#define ItemNameX(i) items[LLEN(i) + 2] +#define ItemText(i) items[LLEN(i) + 3] +#define ItemTextY(i) items[LLEN(i) + 4] +#define ItemTextX(i) items[LLEN(i) + 5] +#define ItemTextFLen(i) items[LLEN(i) + 6] +#define ItemTextILen(i) items[LLEN(i) + 7] +#define ItemTypep(i) items[LLEN(i) + 8] +#define ItemHelp(i) (dialog_vars.item_help ? items[LLEN(i) + 9] : dlg_strempty()) + +int +dialog_mixedform(const char *title, + const char *cprompt, + int height, + int width, + int form_height, + int item_no, + char **items) +{ + int result; + int choice = 0; + int i; + DIALOG_FORMITEM *listitems; + DIALOG_VARS save_vars; + bool show_status = FALSE; + char *help_result; + + dlg_save_vars(&save_vars); + dialog_vars.separate_output = TRUE; + + listitems = dlg_calloc(DIALOG_FORMITEM, (size_t) item_no + 1); + assert_ptr(listitems, "dialog_mixedform"); + + for (i = 0; i < item_no; ++i) { + listitems[i].type = dialog_vars.formitem_type; + listitems[i].name = ItemName(i); + listitems[i].name_len = (int) strlen(ItemName(i)); + listitems[i].name_y = dlg_ordinate(ItemNameY(i)); + listitems[i].name_x = dlg_ordinate(ItemNameX(i)); + listitems[i].text = ItemText(i); + listitems[i].text_len = (int) strlen(ItemText(i)); + listitems[i].text_y = dlg_ordinate(ItemTextY(i)); + listitems[i].text_x = dlg_ordinate(ItemTextX(i)); + listitems[i].text_flen = atoi(ItemTextFLen(i)); + listitems[i].text_ilen = atoi(ItemTextILen(i)); + listitems[i].help = (dialog_vars.item_help ? ItemHelp(i) : + dlg_strempty()); + listitems[i].type = (unsigned) atoi(ItemTypep(i)); + } + + result = dlg_form(title, + cprompt, + height, + width, + form_height, + item_no, + listitems, + &choice); + + switch (result) { + case DLG_EXIT_OK: /* FALLTHRU */ + case DLG_EXIT_EXTRA: + show_status = TRUE; + break; + case DLG_EXIT_HELP: + dlg_add_help_formitem(&result, &help_result, &listitems[choice]); + show_status = dialog_vars.help_status; + dlg_add_string(help_result); + if (show_status) + dlg_add_separator(); + break; + } + if (show_status) { + for (i = 0; i < item_no; i++) { + if (listitems[i].text_flen > 0) { + dlg_add_string(listitems[i].text); + dlg_add_separator(); + } + } + dlg_add_last_key(-1); + } + + dlg_free_formitems(listitems); + dlg_restore_vars(&save_vars); + + return result; +} Index: vendor/dialog/1.3-20180621/mixedgauge.c =================================================================== --- vendor/dialog/1.3-20180621/mixedgauge.c (nonexistent) +++ vendor/dialog/1.3-20180621/mixedgauge.c (revision 339483) @@ -0,0 +1,403 @@ +/* + * $Id: mixedgauge.c,v 1.34 2018/06/18 22:09:31 tom Exp $ + * + * mixedgauge.c -- implements the mixedgauge dialog + * + * Copyright 2007-2012,2018 Thomas E. Dickey + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License, version 2.1 + * as published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this program; if not, write to + * Free Software Foundation, Inc. + * 51 Franklin St., Fifth Floor + * Boston, MA 02110, USA. + * + * This is inspired by a patch from Kiran Cherupally + * (but different interface design). + */ + +#include <dialog.h> + +#define LLEN(n) ((n) * MIXEDGAUGE_TAGS) +#define ItemData(i) &items[LLEN(i)] +#define ItemName(i) items[LLEN(i)] +#define ItemText(i) items[LLEN(i) + 1] + +#define MIN_HIGH (4) +#define MIN_WIDE (10 + 2 * (2 + MARGIN)) + +typedef struct { + WINDOW *dialog; + WINDOW *caption; + const char *title; + char *prompt; + int height, old_height, min_height; + int width, old_width, min_width; + int len_name, len_text; + int item_no; + DIALOG_LISTITEM *list; +} DIALOG_MIXEDGAUGE; + +static const char * +status_string(char *given, char **freeMe) +{ + const char *result; + + *freeMe = 0; + if (isdigit(UCH(*given))) { + switch (*given) { + case '0': + result = _("Succeeded"); + break; + case '1': + result = _("Failed"); + break; + case '2': + result = _("Passed"); + break; + case '3': + result = _("Completed"); + break; + case '4': + result = _("Checked"); + break; + case '5': + result = _("Done"); + break; + case '6': + result = _("Skipped"); + break; + case '7': + result = _("In Progress"); + break; + case '8': + result = ""; + break; + case '9': + result = _("N/A"); + break; + default: + result = "?"; + break; + } + } else if (*given == '-') { + size_t need = strlen(++given) + 4; + char *temp = dlg_malloc(char, need); + *freeMe = temp; + sprintf(temp, "%3s%%", given); + result = temp; + } else if (!isspace(UCH(*given))) { + result = given; + } else { + result = 0; + } + return result; +} + +/* This function displays status messages */ +static void +myprint_status(DIALOG_MIXEDGAUGE * dlg) +{ + WINDOW *win = dlg->dialog; + int limit_y = dlg->height; + int limit_x = dlg->width; + + int y = MARGIN; + int item; + int cells = dlg->len_text - 2; + int lm = limit_x - dlg->len_text - 1; + int bm = limit_y; /* bottom margin */ + int last_y = 0, last_x = 0; + int j, xxx; + float percent; + const char *status = ""; + char *freeMe = 0; + + bm -= (2 * MARGIN); + getyx(win, last_y, last_x); + for (item = 0; item < dlg->item_no; ++item) { + chtype attr = A_NORMAL; + + y = item + MARGIN + 1; + if (y > bm) + break; + + status = status_string(dlg->list[item].text, &freeMe); + if (status == 0 || *status == 0) + continue; + + (void) wmove(win, y, 2 * MARGIN); + dlg_attrset(win, dialog_attr); + dlg_print_text(win, dlg->list[item].name, lm, &attr); + + (void) wmove(win, y, lm); + (void) waddch(win, '['); + (void) wmove(win, y, lm + (cells - (int) strlen(status)) / 2); + if (freeMe) { + (void) wmove(win, y, lm + 1); + dlg_attrset(win, title_attr); + for (j = 0; j < cells; j++) + (void) waddch(win, ' '); + + (void) wmove(win, y, lm + (cells - (int) strlen(status)) / 2); + (void) waddstr(win, status); + + if ((title_attr & A_REVERSE) != 0) { + dlg_attroff(win, A_REVERSE); + } else { + dlg_attrset(win, A_REVERSE); + } + (void) wmove(win, y, lm + 1); + + if (sscanf(status, "%f%%", &percent) != 1) + percent = 0.0; + xxx = (int) ((cells * (percent + 0.5)) / 100.0); + for (j = 0; j < xxx; j++) { + chtype ch1 = winch(win); + if (title_attr & A_REVERSE) { + ch1 &= ~A_REVERSE; + } + (void) waddch(win, ch1); + } + free(freeMe); + + } else { + (void) wmove(win, y, lm + (cells - (int) strlen(status)) / 2); + (void) waddstr(win, status); + } + (void) wmove(win, y, limit_x - 3); + dlg_attrset(win, dialog_attr); + (void) waddch(win, ']'); + (void) wnoutrefresh(win); + } + if (win != 0) + wmove(win, last_y, last_x); +} + +static void +mydraw_mixed_box(WINDOW *win, int y, int x, int height, int width, + chtype boxchar, chtype borderchar) +{ + dlg_draw_box(win, y, x, height, width, boxchar, borderchar); + { + chtype attr = A_NORMAL; + const char *message = _("Overall Progress"); + chtype save2 = dlg_get_attrs(win); + dlg_attrset(win, title_attr); + (void) wmove(win, y, x + 2); + dlg_print_text(win, message, width, &attr); + dlg_attrset(win, save2); + } +} + +static char * +clean_copy(const char *string) +{ + char *result = dlg_strclone(string); + + dlg_trim_string(result); + dlg_tab_correct_str(result); + return result; +} + +/* + * Update mixed-gauge dialog (may be from pipe, may be via direct calls). + */ +static void +dlg_update_mixedgauge(DIALOG_MIXEDGAUGE * dlg, int percent) +{ + int i, x; + + /* + * Clear the area for the progress bar by filling it with spaces + * in the title-attribute, and write the percentage with that + * attribute. + */ + (void) wmove(dlg->dialog, dlg->height - 3, 4); + dlg_attrset(dlg->dialog, gauge_attr); + + for (i = 0; i < (dlg->width - 2 * (3 + MARGIN)); i++) + (void) waddch(dlg->dialog, ' '); + + (void) wmove(dlg->dialog, dlg->height - 3, (dlg->width / 2) - 2); + (void) wprintw(dlg->dialog, "%3d%%", percent); + + /* + * Now draw a bar in reverse, relative to the background. + * The window attribute was useful for painting the background, + * but requires some tweaks to reverse it. + */ + x = (percent * (dlg->width - 2 * (3 + MARGIN))) / 100; + if ((title_attr & A_REVERSE) != 0) { + dlg_attroff(dlg->dialog, A_REVERSE); + } else { + dlg_attrset(dlg->dialog, A_REVERSE); + } + (void) wmove(dlg->dialog, dlg->height - 3, 4); + for (i = 0; i < x; i++) { + chtype ch = winch(dlg->dialog); + if (title_attr & A_REVERSE) { + ch &= ~A_REVERSE; + } + (void) waddch(dlg->dialog, ch); + } + myprint_status(dlg); + dlg_trace_win(dlg->dialog); +} + +/* + * Setup dialog. + */ +static void +dlg_begin_mixedgauge(DIALOG_MIXEDGAUGE * dlg, + int *began, + const char *aTitle, + const char *aPrompt, + int aHeight, + int aWidth, + int aItemNo, + char **items) +{ + int n, y, x; + + if (!*began) { + curs_set(0); + + memset(dlg, 0, sizeof(*dlg)); + dlg->title = aTitle; + dlg->prompt = clean_copy(aPrompt); + dlg->height = dlg->old_height = aHeight; + dlg->width = dlg->old_width = aWidth; + dlg->item_no = aItemNo; + + dlg->list = dlg_calloc(DIALOG_LISTITEM, (size_t) aItemNo); + assert_ptr(dlg->list, "dialog_mixedgauge"); + + dlg->len_name = 0; + dlg->len_text = 15; + + for (n = 0; n < aItemNo; ++n) { + int thisWidth = (int) strlen(ItemName(n)); + if (dlg->len_name < thisWidth) + dlg->len_name = thisWidth; + dlg->list[n].name = ItemName(n); + dlg->list[n].text = ItemText(n); + } + + dlg->min_height = MIN_HIGH + aItemNo; + dlg->min_width = MIN_WIDE + dlg->len_name + GUTTER + dlg->len_text; + + if (dlg->prompt != 0 && *(dlg->prompt) != 0) + dlg->min_height += (2 * MARGIN); +#ifdef KEY_RESIZE + nodelay(stdscr, TRUE); +#endif + } +#ifdef KEY_RESIZE + else { + dlg_del_window(dlg->dialog); + dlg->height = dlg->old_height; + dlg->width = dlg->old_width; + } +#endif + + dlg_auto_size(dlg->title, dlg->prompt, + &(dlg->height), + &(dlg->width), + dlg->min_height, + dlg->min_width); + dlg_print_size(dlg->height, dlg->width); + dlg_ctl_size(dlg->height, dlg->width); + + /* center dialog box on screen */ + x = dlg_box_x_ordinate(dlg->width); + y = dlg_box_y_ordinate(dlg->height); + + dlg->dialog = dlg_new_window(dlg->height, dlg->width, y, x); + + (void) werase(dlg->dialog); + dlg_draw_box2(dlg->dialog, + 0, 0, + dlg->height, + dlg->width, + dialog_attr, border_attr, border2_attr); + + dlg_draw_title(dlg->dialog, dlg->title); + dlg_draw_helpline(dlg->dialog, FALSE); + + if ((dlg->prompt != 0 && *(dlg->prompt) != 0) + && wmove(dlg->dialog, dlg->item_no, 0) != ERR) { + dlg->caption = dlg_sub_window(dlg->dialog, + dlg->height - dlg->item_no - (2 * MARGIN), + dlg->width, + y + dlg->item_no + (2 * MARGIN), + x); + dlg_attrset(dlg->caption, dialog_attr); + dlg_print_autowrap(dlg->caption, dlg->prompt, dlg->height, dlg->width); + } + + mydraw_mixed_box(dlg->dialog, + dlg->height - 4, + 2 + MARGIN, + 2 + MARGIN, + dlg->width - 2 * (2 + MARGIN), + dialog_attr, + border_attr); + + *began += 1; +} + +/* + * Discard the mixed-gauge dialog. + */ +static int +dlg_finish_mixedgauge(DIALOG_MIXEDGAUGE * dlg, int status) +{ + (void) wrefresh(dlg->dialog); +#ifdef KEY_RESIZE + nodelay(stdscr, FALSE); +#endif + curs_set(1); + dlg_del_window(dlg->dialog); + return status; +} + +/* + * Setup dialog, read mixed-gauge data from pipe. + */ +int +dialog_mixedgauge(const char *title, + const char *cprompt, + int height, + int width, + int percent, + int item_no, + char **items) +{ + DIALOG_MIXEDGAUGE dlg; + int began = 0; + + DLG_TRACE(("# mixedgauge args:\n")); + DLG_TRACE2S("title", title); + DLG_TRACE2S("message", cprompt); + DLG_TRACE2N("height", height); + DLG_TRACE2N("width", width); + DLG_TRACE2N("percent", percent); + DLG_TRACE2N("llength", item_no); + /* FIXME dump the items[][] too */ + + dlg_begin_mixedgauge(&dlg, &began, title, cprompt, height, + width, item_no, items); + + dlg_update_mixedgauge(&dlg, percent); + + return dlg_finish_mixedgauge(&dlg, DLG_EXIT_OK); +} Index: vendor/dialog/1.3-20180621/mouse.c =================================================================== --- vendor/dialog/1.3-20180621/mouse.c (nonexistent) +++ vendor/dialog/1.3-20180621/mouse.c (revision 339483) @@ -0,0 +1,162 @@ +/* + * $Id: mouse.c,v 1.24 2017/01/31 00:27:21 tom Exp $ + * + * mouse.c -- mouse support for dialog + * + * Copyright 2002-2016,2017 Thomas E. Dickey + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License, version 2.1 + * as published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this program; if not, write to + * Free Software Foundation, Inc. + * 51 Franklin St., Fifth Floor + * Boston, MA 02110, USA. + */ + +#include <dialog.h> +#include <dlg_keys.h> + +#if USE_MOUSE + +static int basex, basey, basecode; + +static mseRegion *regionList = NULL; + +/*=========== region related functions =============*/ + +static mseRegion * +find_region_by_code(int code) +{ + mseRegion *butPtr; + + for (butPtr = regionList; butPtr; butPtr = butPtr->next) { + if (code == butPtr->code) + break; + } + return butPtr; +} + +void +dlg_mouse_setbase(int x, int y) +{ + basex = x; + basey = y; +} + +void +dlg_mouse_setcode(int code) +{ + basecode = code; + DLG_TRACE(("# mouse_setcode %d\n", code)); +} + +void +dlg_mouse_mkbigregion(int y, int x, + int height, int width, + int code, + int step_y, int step_x, + int mode) +{ + mseRegion *butPtr = dlg_mouse_mkregion(y, x, height, width, -DLGK_MOUSE(code)); + butPtr->mode = mode; + butPtr->step_x = MAX(1, step_x); + butPtr->step_y = MAX(1, step_y); +} + +void +dlg_mouse_free_regions(void) +{ + while (regionList != 0) { + mseRegion *butPtr = regionList->next; + free(regionList); + regionList = butPtr; + } +} + +mseRegion * +dlg_mouse_mkregion(int y, int x, int height, int width, int code) +{ + mseRegion *butPtr; + + if ((butPtr = find_region_by_code(basecode + code)) == 0) { + butPtr = dlg_calloc(mseRegion, 1); + assert_ptr(butPtr, "dlg_mouse_mkregion"); + butPtr->next = regionList; + regionList = butPtr; + } + + if ((butPtr->mode != -1) || + (butPtr->step_x != 0) || + (butPtr->step_y != 0) || + (butPtr->y != (basey + y)) || + (butPtr->Y != (basey + y + height)) || + (butPtr->x != (basex + x)) || + (butPtr->X != (basex + x + width)) || + (butPtr->code != basecode + code)) { + DLG_TRACE(("# mouse_mkregion %d,%d %dx%d %d (%d)\n", + y, x, height, width, + butPtr->code, code)); + } + + butPtr->mode = -1; + butPtr->step_x = 0; + butPtr->step_y = 0; + butPtr->y = basey + y; + butPtr->Y = basey + y + height; + butPtr->x = basex + x; + butPtr->X = basex + x + width; + butPtr->code = basecode + code; + + return butPtr; +} + +/* retrieve the frame under the pointer */ +static mseRegion * +any_mouse_region(int y, int x, int small) +{ + mseRegion *butPtr; + + for (butPtr = regionList; butPtr; butPtr = butPtr->next) { + if (small ^ (butPtr->code >= 0)) { + continue; + } + if (y < butPtr->y || y >= butPtr->Y) { + continue; + } + if (x < butPtr->x || x >= butPtr->X) { + continue; + } + break; /* found */ + } + return butPtr; +} + +/* retrieve the frame under the pointer */ +mseRegion * +dlg_mouse_region(int y, int x) +{ + return any_mouse_region(y, x, TRUE); +} + +/* retrieve the bigframe under the pointer */ +mseRegion * +dlg_mouse_bigregion(int y, int x) +{ + return any_mouse_region(y, x, FALSE); +} + +#else +void mouse_dummy(void); +void +mouse_dummy(void) +{ +} +#endif /* USE_MOUSE */ Index: vendor/dialog/1.3-20180621/mousewget.c =================================================================== --- vendor/dialog/1.3-20180621/mousewget.c (nonexistent) +++ vendor/dialog/1.3-20180621/mousewget.c (revision 339483) @@ -0,0 +1,95 @@ +/* + * $Id: mousewget.c,v 1.24 2017/01/31 00:27:21 tom Exp $ + * + * mousewget.c -- mouse/wgetch support for dialog + * + * Copyright 2000-2016,2017 Thomas E. Dickey + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License, version 2.1 + * as published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this program; if not, write to + * Free Software Foundation, Inc. + * 51 Franklin St., Fifth Floor + * Boston, MA 02110, USA. + */ + +#include <dialog.h> +#include <dlg_keys.h> + +static int +mouse_wgetch(WINDOW *win, int *fkey, bool ignore_errs) +{ + int mouse_err = FALSE; + int key; + + do { + + key = dlg_getc(win, fkey); + +#if USE_MOUSE + + mouse_err = FALSE; + if (key == KEY_MOUSE) { + MEVENT event; + mseRegion *p; + + if (getmouse(&event) != ERR) { + DLG_TRACE(("# mouse-click abs %d,%d (rel %d,%d)\n", + event.y, event.x, + event.y - getbegy(win), + event.x - getbegx(win))); + if ((p = dlg_mouse_region(event.y, event.x)) != 0) { + key = DLGK_MOUSE(p->code); + } else if ((p = dlg_mouse_bigregion(event.y, event.x)) != 0) { + int x = event.x - p->x; + int y = event.y - p->y; + int row = (p->X - p->x) / p->step_x; + + key = -(p->code); + switch (p->mode) { + case 1: /* index by lines */ + key += y; + break; + case 2: /* index by columns */ + key += (x / p->step_x); + break; + default: + case 3: /* index by cells */ + key += (x / p->step_x) + (y * row); + break; + } + } else { + (void) beep(); + mouse_err = TRUE; + } + } else { + (void) beep(); + mouse_err = TRUE; + } + } +#endif + + } while (ignore_errs && mouse_err); + + return key; +} + +int +dlg_mouse_wgetch(WINDOW *win, int *fkey) +{ + return mouse_wgetch(win, fkey, TRUE); +} + +int +dlg_mouse_wgetch_nowait(WINDOW *win, int *fkey) +{ + return mouse_wgetch(win, fkey, FALSE); +} Index: vendor/dialog/1.3-20180621/msgbox.c =================================================================== --- vendor/dialog/1.3-20180621/msgbox.c (nonexistent) +++ vendor/dialog/1.3-20180621/msgbox.c (revision 339483) @@ -0,0 +1,202 @@ +/* + * $Id: msgbox.c,v 1.81 2018/06/21 23:29:59 tom Exp $ + * + * msgbox.c -- implements the message box and info box + * + * Copyright 2000-2012,2018 Thomas E. Dickey + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License, version 2.1 + * as published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this program; if not, write to + * Free Software Foundation, Inc. + * 51 Franklin St., Fifth Floor + * Boston, MA 02110, USA. + * + * An earlier version of this program lists as authors: + * Savio Lam (lam836@cs.cuhk.hk) + */ + +#include <dialog.h> +#include <dlg_keys.h> + +/* + * Display a message box. Program will pause and display an "OK" button + * if the parameter 'pauseopt' is non-zero. + */ +int +dialog_msgbox(const char *title, const char *cprompt, int height, int width, + int pauseopt) +{ + /* *INDENT-OFF* */ + static DLG_KEYS_BINDING binding[] = { + HELPKEY_BINDINGS, + ENTERKEY_BINDINGS, + SCROLLKEY_BINDINGS, + TRAVERSE_BINDINGS, + END_KEYS_BINDING + }; + /* *INDENT-ON* */ + + int x, y, last = 0, page; + int button; + int key = 0, fkey; + int result = DLG_EXIT_UNKNOWN; + WINDOW *dialog = 0; + char *prompt; + const char **buttons = dlg_ok_label(); + int offset = 0; + int check; + bool show = TRUE; + int min_width = (pauseopt == 1 ? 12 : 0); + bool save_nocancel = dialog_vars.nocancel; +#ifdef KEY_RESIZE + int req_high; + int req_wide; +#endif + + DLG_TRACE(("# msgbox args:\n")); + DLG_TRACE2S("title", title); + DLG_TRACE2S("message", cprompt); + DLG_TRACE2N("height", height); + DLG_TRACE2N("width", width); + DLG_TRACE2N("pauseopt", pauseopt); + + dialog_vars.nocancel = TRUE; + button = dlg_default_button(); + +#ifdef KEY_RESIZE + req_high = height; + req_wide = width; + restart: +#endif + + dlg_button_layout(buttons, &min_width); + + prompt = dlg_strclone(cprompt); + dlg_tab_correct_str(prompt); + dlg_auto_size(title, prompt, &height, &width, + (pauseopt == 1 ? 2 : 0), + min_width); + dlg_print_size(height, width); + dlg_ctl_size(height, width); + + x = dlg_box_x_ordinate(width); + y = dlg_box_y_ordinate(height); + +#ifdef KEY_RESIZE + if (dialog != 0) + dlg_move_window(dialog, height, width, y, x); + else +#endif + { + dialog = dlg_new_window(height, width, y, x); + dlg_register_window(dialog, "msgbox", binding); + dlg_register_buttons(dialog, "msgbox", buttons); + } + page = height - (1 + 3 * MARGIN); + + dlg_mouse_setbase(x, y); + + dlg_draw_box2(dialog, 0, 0, height, width, dialog_attr, border_attr, border2_attr); + dlg_draw_title(dialog, title); + + dlg_attrset(dialog, dialog_attr); + + if (pauseopt) { + dlg_draw_bottom_box2(dialog, border_attr, border2_attr, dialog_attr); + mouse_mkbutton(height - 2, width / 2 - 4, 6, '\n'); + dlg_draw_buttons(dialog, height - 2, 0, buttons, button, FALSE, width); + dlg_draw_helpline(dialog, FALSE); + + while (result == DLG_EXIT_UNKNOWN) { + if (show) { + last = dlg_print_scrolled(dialog, prompt, offset, + page, width, pauseopt); + dlg_trace_win(dialog); + show = FALSE; + } + key = dlg_mouse_wgetch(dialog, &fkey); + if (dlg_result_key(key, fkey, &result)) + break; + + if (!fkey && (check = dlg_char_to_button(key, buttons)) >= 0) { + result = dlg_ok_buttoncode(check); + break; + } + + if (fkey) { + switch (key) { +#ifdef KEY_RESIZE + case KEY_RESIZE: + dlg_will_resize(dialog); + dlg_clear(); + free(prompt); + height = req_high; + width = req_wide; + show = TRUE; + goto restart; +#endif + case DLGK_FIELD_NEXT: + button = dlg_next_button(buttons, button); + if (button < 0) + button = 0; + dlg_draw_buttons(dialog, + height - 2, 0, + buttons, button, + FALSE, width); + break; + case DLGK_FIELD_PREV: + button = dlg_prev_button(buttons, button); + if (button < 0) + button = 0; + dlg_draw_buttons(dialog, + height - 2, 0, + buttons, button, + FALSE, width); + break; + case DLGK_ENTER: + result = dlg_ok_buttoncode(button); + break; + default: + if (is_DLGK_MOUSE(key)) { + result = dlg_ok_buttoncode(key - M_EVENT); + if (result < 0) + result = DLG_EXIT_OK; + } else if (dlg_check_scrolled(key, + last, + page, + &show, + &offset) == 0) { + } else { + beep(); + } + break; + } + } else { + beep(); + } + } + } else { + dlg_print_scrolled(dialog, prompt, offset, page, width, pauseopt); + dlg_draw_helpline(dialog, FALSE); + wrefresh(dialog); + dlg_trace_win(dialog); + result = DLG_EXIT_OK; + } + + dlg_del_window(dialog); + dlg_mouse_free_regions(); + free(prompt); + + dialog_vars.nocancel = save_nocancel; + + return result; +} Index: vendor/dialog/1.3-20180621/package/debian/changelog =================================================================== --- vendor/dialog/1.3-20180621/package/debian/changelog (nonexistent) +++ vendor/dialog/1.3-20180621/package/debian/changelog (revision 339483) @@ -0,0 +1,229 @@ +cdialog (20180621) unstable; urgency=low + + * maintenance updates + + -- Thomas E. Dickey <dickey@invisible-island.net> Thu, 15 Feb 2018 05:02:43 -0500 + +cdialog (20171209) unstable; urgency=low + + * maintenance updates + + -- Thomas E. Dickey <dickey@invisible-island.net> Sat, 09 Dec 2017 10:52:09 -0500 + +cdialog (20170509) unstable; urgency=low + + * maintenance updates + + -- Thomas E. Dickey <dickey@invisible-island.net> Tue, 09 May 2017 19:08:48 -0400 + +cdialog (20170131) unstable; urgency=low + + * maintenance updates + + -- Thomas E. Dickey <dickey@invisible-island.net> Mon, 23 Jan 2017 17:41:21 -0500 + +cdialog (20161120) unstable; urgency=low + + * maintenance updates + + -- Thomas E. Dickey <dickey@invisible-island.net> Sun, 20 Nov 2016 06:47:59 -0500 + +cdialog (20160828) unstable; urgency=low + + * maintenance updates + + -- Thomas E. Dickey <dickey@invisible-island.net> Fri, 26 Aug 2016 17:41:17 -0400 + +cdialog (20160424) unstable; urgency=low + + * maintenance updates + + -- Thomas E. Dickey <dickey@invisible-island.net> Tue, 19 Apr 2016 06:33:50 -0400 + +cdialog (20160209) unstable; urgency=low + + * maintenance updates + + -- Thomas E. Dickey <dickey@invisible-island.net> Mon, 01 Feb 2016 05:18:04 -0500 + +cdialog (20160126) unstable; urgency=low + + * maintenance updates, add --week-start option + + -- Thomas E. Dickey <dickey@invisible-island.net> Mon, 25 Jan 2016 13:13:51 -0500 + +cdialog (20150920) unstable; urgency=low + + * maintenance updates + + -- Thomas E. Dickey <dickey@invisible-island.net> Sun, 20 Sep 2015 18:08:36 -0400 + +cdialog (20150528) unstable; urgency=low + + * maintenance updates + + -- Thomas E. Dickey <dickey@invisible-island.net> Thu, 28 May 2015 19:42:32 -0400 + +cdialog (20150513) unstable; urgency=low + + * maintenance updates + + -- Thomas E. Dickey <dickey@invisible-island.net> Wed, 13 May 2015 10:46:07 -0400 + +cdialog (20150512) unstable; urgency=low + + * maintenance updates + + -- Thomas E. Dickey <dickey@invisible-island.net> Sun, 10 May 2015 19:31:46 -0400 + +cdialog (20150225) unstable; urgency=low + + * maintenance updates + + -- Thomas E. Dickey <dickey@invisible-island.net> Wed, 25 Feb 2015 05:10:57 -0500 + +cdialog (20150224) unstable; urgency=low + + * maintenance updates + + -- Thomas E. Dickey <dickey@invisible-island.net> Tue, 24 Feb 2015 07:10:45 -0500 + +cdialog (20150125) unstable; urgency=low + + * maintenance updates + + -- Thomas E. Dickey <dickey@invisible-island.net> Sun, 25 Jan 2015 16:30:54 -0500 + +cdialog (20140911) unstable; urgency=low + + * maintenance updates + + -- Thomas E. Dickey <dickey@invisible-island.net> Thu, 11 Sep 2014 03:56:17 -0400 + +cdialog (20140910) unstable; urgency=low + + * maintenance updates + + -- Thomas E. Dickey <dickey@invisible-island.net> Wed, 10 Sep 2014 04:23:13 -0400 + +cdialog (20140908) unstable; urgency=low + + * maintenance updates + + -- Thomas E. Dickey <dickey@invisible-island.net> Mon, 08 Sep 2014 05:10:11 -0400 + +cdialog (20140901) unstable; urgency=low + + * maintenance updates + + -- Thomas E. Dickey <dickey@invisible-island.net> Mon, 01 Sep 2014 12:15:40 -0400 + +cdialog (20140219) unstable; urgency=low + + * maintenance updates + + -- Thomas E. Dickey <dickey@invisible-island.net> Wed, 19 Feb 2014 04:13:36 -0500 + +cdialog (20140112) unstable; urgency=low + + * maintenance updates + + -- Thomas E. Dickey <dickey@invisible-island.net> Sun, 12 Jan 2014 13:22:17 -0500 + +cdialog (20130928) unstable; urgency=low + + * maintenance updates + + -- Thomas E. Dickey <dickey@invisible-island.net> Sat, 28 Sep 2013 21:27:37 -0400 + +cdialog (20130923) unstable; urgency=low + + * improved memory-caching for gauge widget + + -- Thomas E. Dickey <dickey@invisible-island.net> Sat, 21 Sep 2013 09:18:26 -0400 + +cdialog (20130902) unstable; urgency=low + + * maintenance updates + + -- Thomas E. Dickey <dickey@invisible-island.net> Sun, 01 Sep 2013 19:08:31 -0400 + +cdialog (20130523) unstable; urgency=low + + * minor fixes + + -- Thomas E. Dickey <dickey@invisible-island.net> Thu, 23 May 2013 19:25:01 -0400 + +cdialog (20130315) unstable; urgency=low + + * minor fixes + + -- Thomas E. Dickey <dickey@invisible-island.net> Fri, 15 Mar 2013 04:41:20 -0400 + +cdialog (20121230) unstable; urgency=low + + * new widgets + * coverity fixes + * configure-script updates + + -- Thomas E. Dickey <dickey@invisible-island.net> Sat, 06 Oct 2012 09:19:29 -0400 + +cdialog (20120706) unstable; urgency=high + + * fix regression in msgbox (ArchLinux #30574) + + -- Thomas E. Dickey <dickey@invisible-island.net> Fri, 06 Jul 2012 12:52:46 -0400 + +cdialog (20120703) unstable; urgency=low + + * minor fixes + * add --default-button + + -- Thomas E. Dickey <dickey@invisible-island.net> Sat, 30 Jun 2012 10:41:05 -0400 + +cdialog (20120215) unstable; urgency=low + + * minor fixes + + -- Thomas E. Dickey <dickey@invisible-island.net> Wed, 15 Feb 2012 19:40:32 -0500 + +cdialog (20111020) unstable; urgency=high + + * fix regression in menubox.c logic for inputmenu vs menu. + + -- Thomas E. Dickey <dickey@invisible-island.net> Wed, 19 Oct 2011 19:17:40 -0400 + +cdialog (20111018) unstable; urgency=high + + * improve color configurability + * misc bug-fixes. + * various improvements to tracing. + * remove an incorrect free() call in dlg_free_gauge() + * fix missing trailing null from dlg_align_columns + + -- Thomas E. Dickey <dickey@invisible-island.net> Wed, 07 Sep 2011 20:04:04 -0400 + +cdialog (20110707) unstable; urgency=high + + * fix a regression in dlg_getc() from 20110630 changes. + + -- Thomas E. Dickey <dickey@invisible-island.net> Thu, 07 Jul 2011 18:10:47 -0400 + +cdialog (20110630) unstable; urgency=high + + * various bug-fixes reported in FreeBSD. + + -- Thomas E. Dickey <dickey@invisible-island.net> Mon, 13 Jun 2011 05:44:17 -0400 + +cdialog (20110302) unstable; urgency=high + + * Add --prgbox and --progressbox + * Bug-fix for --timeout. + + -- Thomas E. Dickey <dickey@invisible-island.net> Mon, 28 Feb 2011 18:42:17 -0500 + +cdialog (20110118) unstable; urgency=high + + * Initial package release + + -- Thomas E. Dickey <dickey@invisible-island.net> Thu, 30 Dec 2010 09:23:24 -0500 Index: vendor/dialog/1.3-20180621/package/debian/control =================================================================== --- vendor/dialog/1.3-20180621/package/debian/control (nonexistent) +++ vendor/dialog/1.3-20180621/package/debian/control (revision 339483) @@ -0,0 +1,24 @@ +Source: cdialog +Maintainer: Thomas E. Dickey <dickey@invisible-island.net> +Section: misc +Priority: optional +Standards-Version: 3.8.4 +Build-Depends: debhelper (>= 5), libc6 (>= 2.11), libncursesw5-dev (>= 5.3), groff-base +Homepage: http://invisible-island.net/dialog/ + +Package: cdialog +Architecture: any +Depends: libc6 (>= 2.11), libncursesw5 (>= 5.3) +Description: dialog - display dialog boxes from shell scripts + Dialog is a program that will let you present a variety of questions or + display messages using dialog boxes from a shell script. These types + of dialog boxes are implemented (though not all are necessarily + compiled into dialog): + . + buildlist, calendar, checklist, dselect, editbox, form, fselect, + gauge, infobox, inputbox, inputmenu, menu, mixedform, + mixedgauge, msgbox (message), passwordbox, passwordform, pause, + prgbox, programbox, progressbox, radiolist, rangebox, tailbox, + tailboxbg, textbox, timebox, treeview, and yesno (yes/no). + . + This package installs as "cdialog" to avoid conflict with other packages. Index: vendor/dialog/1.3-20180621/package/debian/copyright =================================================================== --- vendor/dialog/1.3-20180621/package/debian/copyright (nonexistent) +++ vendor/dialog/1.3-20180621/package/debian/copyright (revision 339483) @@ -0,0 +1,111 @@ +Upstream source http://invisible-island.net/dialog/dialog.html + +Current dialog upstream maintainer: Thomas Dickey <dickey@invisible-island.net> + +------------------------------------------------------------------------------- +Files: *.c *.h + Copyright 2000-2017,2018 Thomas E. Dickey + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU Lesser General Public License, version 2.1 + as published by the Free Software Foundation. + + This program is distributed in the hope that it will be useful, but + WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this program; if not, write to + Free Software Foundation, Inc. + 51 Franklin St., Fifth Floor + Boston, MA 02110, USA. + + An earlier version of this program lists as authors + Savio Lam (lam836@cs.cuhk.hk) +------------------------------------------------------------------------------- + +Files: aclocal.m4 +Licence: other-BSD +Copyright: 1999-2017,2018 by Thomas E. Dickey + 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 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. + +Files: install-sh +Copyright: 1994 X Consortium +Licence: other-BSD + 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, 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 + X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN + AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNEC- + TION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + Except as contained in this notice, the name of the X Consortium shall not + be used in advertising or otherwise to promote the sale, use or other deal- + ings in this Software without prior written authorization from the X Consor- + tium. + + FSF changes to this file are in the public domain. + + Calling this script install-sh is preferred over install.sh, to prevent + `make' implicit rules from creating a file called install from it + when there is no Makefile. + + This script is compatible with the BSD install script, but was written + from scratch. It can only install one file at a time, a restriction + shared with many OS's install programs. + +Files: debian/* +Copyright: 2010-2012,2013 Thomas E. Dickey +Licence: other-BSD + Permission to use, copy, modify, and distribute this software and its + documentation for any purpose and without fee is hereby granted, + provided that the above copyright notice appear in all copies and that + both that copyright notice and this permission notice appear in + supporting documentation, and that the name of the above listed + copyright holder(s) not be used in advertising or publicity pertaining + to distribution of the software without specific, written prior + permission. + + THE ABOVE LISTED COPYRIGHT HOLDER(S) DISCLAIM ALL WARRANTIES WITH REGARD + TO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY + AND FITNESS, IN NO EVENT SHALL THE ABOVE LISTED COPYRIGHT HOLDER(S) BE + LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN + ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF + OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + +On Debian systems, the complete text of the GNU General +Public License can be found in '/usr/share/common-licenses/GPL-2' Index: vendor/dialog/1.3-20180621/package/debian/postinst =================================================================== --- vendor/dialog/1.3-20180621/package/debian/postinst (nonexistent) +++ vendor/dialog/1.3-20180621/package/debian/postinst (revision 339483) @@ -0,0 +1,7 @@ +#! /bin/sh + +set -e + +if [ "$1" = "configure" ]; then + ldconfig +fi Property changes on: vendor/dialog/1.3-20180621/package/debian/postinst ___________________________________________________________________ Added: svn:executable ## -0,0 +1 ## +* \ No newline at end of property Index: vendor/dialog/1.3-20180621/package/debian/rules =================================================================== --- vendor/dialog/1.3-20180621/package/debian/rules (nonexistent) +++ vendor/dialog/1.3-20180621/package/debian/rules (revision 339483) @@ -0,0 +1,106 @@ +#!/usr/bin/make -f +# Made with the aid of dh_make, by Craig Small +# Sample debian/rules that uses debhelper. GNU copyright 1997 by Joey Hess. +# Some lines taken from debmake, by Cristoph Lameter. + +# 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) + +CPPFLAGS := $(shell dpkg-buildflags --get CPPFLAGS) +CFLAGS := $(shell dpkg-buildflags --get CFLAGS) +LDFLAGS := $(shell dpkg-buildflags --get LDFLAGS) + +ACTUAL_PROG = cdialog + +ifneq (,$(findstring noopt,$(DEB_BUILD_OPTIONS))) + CFLAGS += -O0 +else + CFLAGS += -O2 +endif +ifeq (,$(findstring nostrip,$(DEB_BUILD_OPTIONS))) + INSTALL_PROGRAM += -s +endif + + +configure: configure-stamp +configure-stamp: + dh_testdir + + cp -v package/dialog.map package/${ACTUAL_PROG}.map + + CPPFLAGS="$(CPPFLAGS)" \ + CFLAGS="$(CFLAGS)" \ + LDFLAGS="$(LDFLAGS)" \ + ./configure \ + --host=$(DEB_HOST_GNU_TYPE) \ + --build=$(DEB_BUILD_GNU_TYPE) \ + --prefix=/usr \ + --mandir=\$${prefix}/share/man \ + --enable-nls \ + --enable-header-subdir \ + --enable-widec \ + --with-shared \ + --with-screen=ncursesw6 \ + --with-package=${ACTUAL_PROG} \ + --with-versioned-syms \ + --disable-rpath-hack + + touch configure-stamp + +build: build-stamp +build-stamp: configure-stamp + dh_testdir + + $(MAKE) + + touch build-stamp + +clean: + dh_testdir + dh_testroot + + [ ! -f makefile ] || $(MAKE) distclean + + rm -f configure-stamp build-stamp install-stamp + + dh_clean + +install: install-stamp +install-stamp: build-stamp + dh_testdir + dh_testroot + dh_clean -k + dh_installdirs + + $(MAKE) install DESTDIR=$(CURDIR)/debian/${ACTUAL_PROG} + + touch install-stamp + +# Build architecture-independent files here. +binary-indep: build install +# No binary-indep target. + +# Build architecture-dependent files here. +binary-arch: build install + dh_testdir + dh_testroot + dh_installdocs + dh_installexamples + dh_installchangelogs CHANGES + dh_strip + dh_compress + dh_fixperms + dh_installdeb + dh_makeshlibs + dh_shlibdeps + dh_gencontrol + dh_md5sums + dh_builddeb + +binary: binary-indep binary-arch +.PHONY: build clean binary-indep binary-arch binary install install-stamp Property changes on: vendor/dialog/1.3-20180621/package/debian/rules ___________________________________________________________________ Added: svn:executable ## -0,0 +1 ## +* \ No newline at end of property Index: vendor/dialog/1.3-20180621/package/debian/watch =================================================================== --- vendor/dialog/1.3-20180621/package/debian/watch (nonexistent) +++ vendor/dialog/1.3-20180621/package/debian/watch (revision 339483) @@ -0,0 +1,4 @@ +version=3 + +opts=passive ftp://ftp.invisible-island.net/dialog/dialog-([\d.]+)\.tgz \ + debian uupdate Index: vendor/dialog/1.3-20180621/package/debian/compat =================================================================== --- vendor/dialog/1.3-20180621/package/debian/compat (nonexistent) +++ vendor/dialog/1.3-20180621/package/debian/compat (revision 339483) @@ -0,0 +1 @@ +5 Index: vendor/dialog/1.3-20180621/package/debian/docs =================================================================== --- vendor/dialog/1.3-20180621/package/debian/docs (nonexistent) +++ vendor/dialog/1.3-20180621/package/debian/docs (revision 339483) @@ -0,0 +1 @@ +README Index: vendor/dialog/1.3-20180621/package/debian/source/format =================================================================== --- vendor/dialog/1.3-20180621/package/debian/source/format (nonexistent) +++ vendor/dialog/1.3-20180621/package/debian/source/format (revision 339483) @@ -0,0 +1 @@ +3.0 (native) Index: vendor/dialog/1.3-20180621/package/dialog.map =================================================================== --- vendor/dialog/1.3-20180621/package/dialog.map (nonexistent) +++ vendor/dialog/1.3-20180621/package/dialog.map (revision 339483) @@ -0,0 +1,222 @@ +# $Id: dialog.map,v 1.7 2018/06/21 00:32:55 tom Exp $ +# script for shared library symbol-versioning using ld +# +# This file was generated by ncu-mapsyms +# Configure options (1.0.20040721) +# --disable-leaks --enable-trace +# --disable-leaks --enable-trace --enable-widec +# Configure options (1.1.20070227) +# --disable-leaks --enable-trace +# --disable-leaks --enable-trace --enable-widec +# Configure options (1.2.20121230) +# --disable-leaks --enable-trace +# --disable-leaks --enable-trace --enable-widec +# Configure options (1.3.20160126) +# --disable-leaks --enable-trace +# --disable-leaks --enable-trace --enable-widec +# Configure options (1.3.20180620) +# --disable-leaks --enable-trace +# --disable-leaks --enable-trace --enable-widec + +DIALOG_1.0.20040721 { + global: + dialog_calendar; + dialog_checklist; + dialog_form; + dialog_fselect; + dialog_gauge; + dialog_inputbox; + dialog_menu; + dialog_msgbox; + dialog_state; + dialog_tailbox; + dialog_textbox; + dialog_timebox; + dialog_vars; + dialog_version; + dialog_yesno; + dlg_add_callback; + dlg_add_quoted; + dlg_add_result; + dlg_attr_clear; + dlg_auto_size; + dlg_auto_sizefile; + dlg_beeping; + dlg_box_x_ordinate; + dlg_box_y_ordinate; + dlg_button_count; + dlg_button_layout; + dlg_button_sizes; + dlg_button_x_step; + dlg_calc_listh; + dlg_calc_listw; + dlg_char_to_button; + dlg_clear; + dlg_color_count; + dlg_color_setup; + dlg_color_table; + dlg_count_columns; + dlg_count_wchars; + dlg_create_rc; + dlg_ctl_size; + dlg_default_item; + dlg_defaultno_button; + dlg_del_window; + dlg_does_output; + dlg_draw_arrows; + dlg_draw_bottom_box; + dlg_draw_box; + dlg_draw_buttons; + dlg_draw_shadow; + dlg_draw_title; + dlg_edit_offset; + dlg_edit_string; + dlg_exit; + dlg_exit_label; + dlg_exiterr; + dlg_flush_getc; + dlg_getc; + dlg_getc_callbacks; + dlg_index_columns; + dlg_index_wchars; + dlg_item_help; + dlg_killall_bg; + dlg_last_getc; + dlg_limit_columns; + dlg_match_char; + dlg_mouse_bigregion; + dlg_mouse_free_regions; + dlg_mouse_mkbigregion; + dlg_mouse_mkregion; + dlg_mouse_region; + dlg_mouse_setbase; + dlg_mouse_wgetch; + dlg_new_window; + dlg_next_button; + dlg_next_ok_buttonindex; + dlg_ok_buttoncode; + dlg_ok_label; + dlg_ok_labels; + dlg_parse_rc; + dlg_prev_button; + dlg_prev_ok_buttonindex; + dlg_print_autowrap; + dlg_print_size; + dlg_print_text; + dlg_put_backtitle; + dlg_remove_callback; + dlg_set_focus; + dlg_show_string; + dlg_strclone; + dlg_sub_window; + dlg_tab_correct_str; + dlg_trim_string; + dlg_yes_labels; + end_dialog; + init_dialog; +}; + +DIALOG_1.1.20070227 { + global: + dialog_dselect; + dialog_editbox; + dialog_mixedform; + dialog_mixedgauge; + dialog_pause; + dialog_progressbox; + dlg_asciibox; + dlg_boxchar; + dlg_button_to_char; + dlg_calc_list_width; + dlg_checklist; + dlg_clr_result; + dlg_color_pair; + dlg_default_formitem; + dlg_default_listitem; + dlg_draw_arrows2; + dlg_dump_keys; + dlg_editbox; + dlg_exit_buttoncode; + dlg_find_index; + dlg_form; + dlg_free_formitems; + dlg_lookup_key; + dlg_max_input; + dlg_menu; + dlg_mouse_wgetch_nowait; + dlg_move_window; + dlg_ordinate; + dlg_parse_bindkey; + dlg_print_line; + dlg_register_buttons; + dlg_register_window; + dlg_result_key; + dlg_set_result; + dlg_strempty; + dlg_trace; + dlg_trace_chr; + dlg_trace_win; + dlg_unregister_window; + dlg_yes_buttoncode; +} DIALOG_1.0.20040721; + +DIALOG_1.2.20121230 { + global: + dialog_buildlist; + dialog_helpfile; + dialog_prgbox; + dialog_rangebox; + dialog_treeview; + dlg_add_callback_ref; + dlg_add_separator; + dlg_add_string; + dlg_align_columns; + dlg_allocate_gauge; + dlg_buildlist; + dlg_check_scrolled; + dlg_count_argv; + dlg_count_real_columns; + dlg_default_button; + dlg_draw_bottom_box2; + dlg_draw_box2; + dlg_draw_helpline; + dlg_draw_scrollbar; + dlg_dummy_menutext; + dlg_dump_window_keys; + dlg_eat_argv; + dlg_free_columns; + dlg_free_gauge; + dlg_get_attrs; + dlg_mouse_setcode; + dlg_need_separator; + dlg_new_modal_window; + dlg_print_listitem; + dlg_print_scrolled; + dlg_progressbox; + dlg_renamed_menutext; + dlg_restore_vars; + dlg_save_vars; + dlg_string_to_argv; + dlg_trace_msg; + dlg_treeview; + dlg_update_gauge; + dlg_wgetparent; +} DIALOG_1.1.20070227; + +DIALOG_1.3.20160126 { + global: + dlg_add_help_formitem; + dlg_add_help_listitem; + dlg_add_last_key; + dlg_finish_string; + dlg_popen; + dlg_reallocate_gauge; +} DIALOG_1.2.20121230; + +DIALOG_1.3.20180620 { + global: + dlg_trace_2n; + dlg_trace_2s; + dlg_ttysize; + dlg_will_resize; +} DIALOG_1.3.20160126; Index: vendor/dialog/1.3-20180621/package/dialog.spec =================================================================== --- vendor/dialog/1.3-20180621/package/dialog.spec (nonexistent) +++ vendor/dialog/1.3-20180621/package/dialog.spec (revision 339483) @@ -0,0 +1,95 @@ +Summary: dialog - display dialog boxes from shell scripts +%define AppProgram dialog +%define AppVersion 1.3 +%define AppRelease 20180621 +%define ActualProg c%{AppProgram} +# $XTermId: dialog.spec,v 1.108 2018/06/21 09:19:45 tom Exp $ +Name: %{ActualProg} +Version: %{AppVersion} +Release: %{AppRelease} +License: LGPL +Group: Applications/System +URL: ftp://ftp.invisible-island.net/%{AppProgram} +Source0: %{AppProgram}-%{AppVersion}-%{AppRelease}.tgz +Packager: Thomas Dickey <dickey@invisible-island.net> + +%description +Dialog is a program that will let you present a variety of questions or +display messages using dialog boxes from a shell script. These types +of dialog boxes are implemented (though not all are necessarily compiled +into dialog): + + buildlist, calendar, checklist, dselect, editbox, form, fselect, + gauge, infobox, inputbox, inputmenu, menu, mixedform, + mixedgauge, msgbox (message), passwordbox, passwordform, pause, + prgbox, programbox, progressbox, radiolist, rangebox, tailbox, + tailboxbg, textbox, timebox, treeview, and yesno (yes/no). + +This package installs as "cdialog" to avoid conflict with other packages. +%prep + +%define debug_package %{nil} + +%setup -q -n %{AppProgram}-%{AppVersion}-%{AppRelease} + +%build + +cp -v package/dialog.map package/%{ActualProg}.map + +INSTALL_PROGRAM='${INSTALL}' \ +%configure \ + --target %{_target_platform} \ + --prefix=%{_prefix} \ + --bindir=%{_bindir} \ + --libdir=%{_libdir} \ + --mandir=%{_mandir} \ + --with-package=%{ActualProg} \ + --enable-header-subdir \ + --enable-nls \ + --enable-widec \ + --with-shared \ + --with-ncursesw \ + --with-versioned-syms \ + --disable-rpath-hack + +make + +%install +[ "$RPM_BUILD_ROOT" != "/" ] && rm -rf $RPM_BUILD_ROOT + +make install DESTDIR=$RPM_BUILD_ROOT +make install-full DESTDIR=$RPM_BUILD_ROOT + +strip $RPM_BUILD_ROOT%{_bindir}/%{ActualProg} +chmod 755 $RPM_BUILD_ROOT%{_libdir}/lib%{ActualProg}.so.* + +%clean +[ "$RPM_BUILD_ROOT" != "/" ] && rm -rf $RPM_BUILD_ROOT + +%files +%defattr(-,root,root) +%{_bindir}/%{ActualProg} +%{_bindir}/%{ActualProg}-config +%{_mandir}/man1/%{ActualProg}.* +%{_mandir}/man3/%{ActualProg}.* +%{_includedir}/%{ActualProg}.h +%{_includedir}/%{ActualProg}/dlg_colors.h +%{_includedir}/%{ActualProg}/dlg_config.h +%{_includedir}/%{ActualProg}/dlg_keys.h +%{_libdir}/lib%{ActualProg}.* +%{_datadir}/locale/*/LC_MESSAGES/%{ActualProg}.mo + +%changelog +# each patch should add its ChangeLog entries here + +* Sat Dec 09 2017 Thomas Dickey +- update ftp url + +* Thu Apr 21 2016 Thomas Dickey +- remove stray call to libtool + +* Tue Oct 18 2011 Thomas Dickey +- add executable permissions for shared libraries, discard ".la" file. + +* Thu Dec 30 2010 Thomas Dickey +- initial version Index: vendor/dialog/1.3-20180621/package/dialog.sym =================================================================== --- vendor/dialog/1.3-20180621/package/dialog.sym (nonexistent) +++ vendor/dialog/1.3-20180621/package/dialog.sym (revision 339483) @@ -0,0 +1,202 @@ +# $Id: dialog.sym,v 1.7 2018/06/21 00:32:55 tom Exp $ +# script for shared library symbol-visibility using libtool +# +# This file was generated by ncu-mapsyms +# Configure options (1.0.20040721) +# --disable-leaks --enable-trace +# --disable-leaks --enable-trace --enable-widec +# Configure options (1.1.20070227) +# --disable-leaks --enable-trace +# --disable-leaks --enable-trace --enable-widec +# Configure options (1.2.20121230) +# --disable-leaks --enable-trace +# --disable-leaks --enable-trace --enable-widec +# Configure options (1.3.20160126) +# --disable-leaks --enable-trace +# --disable-leaks --enable-trace --enable-widec +# Configure options (1.3.20180620) +# --disable-leaks --enable-trace +# --disable-leaks --enable-trace --enable-widec +dialog_buildlist +dialog_calendar +dialog_checklist +dialog_dselect +dialog_editbox +dialog_form +dialog_fselect +dialog_gauge +dialog_helpfile +dialog_inputbox +dialog_menu +dialog_mixedform +dialog_mixedgauge +dialog_msgbox +dialog_pause +dialog_prgbox +dialog_progressbox +dialog_rangebox +dialog_state +dialog_tailbox +dialog_textbox +dialog_timebox +dialog_treeview +dialog_vars +dialog_version +dialog_yesno +dlg_add_callback +dlg_add_callback_ref +dlg_add_help_formitem +dlg_add_help_listitem +dlg_add_last_key +dlg_add_quoted +dlg_add_result +dlg_add_separator +dlg_add_string +dlg_align_columns +dlg_allocate_gauge +dlg_asciibox +dlg_attr_clear +dlg_auto_size +dlg_auto_sizefile +dlg_beeping +dlg_box_x_ordinate +dlg_box_y_ordinate +dlg_boxchar +dlg_buildlist +dlg_button_count +dlg_button_layout +dlg_button_sizes +dlg_button_to_char +dlg_button_x_step +dlg_calc_list_width +dlg_calc_listh +dlg_calc_listw +dlg_char_to_button +dlg_check_scrolled +dlg_checklist +dlg_clear +dlg_clr_result +dlg_color_count +dlg_color_pair +dlg_color_setup +dlg_color_table +dlg_count_argv +dlg_count_columns +dlg_count_real_columns +dlg_count_wchars +dlg_create_rc +dlg_ctl_size +dlg_default_button +dlg_default_formitem +dlg_default_item +dlg_default_listitem +dlg_defaultno_button +dlg_del_window +dlg_does_output +dlg_draw_arrows +dlg_draw_arrows2 +dlg_draw_bottom_box +dlg_draw_bottom_box2 +dlg_draw_box +dlg_draw_box2 +dlg_draw_buttons +dlg_draw_helpline +dlg_draw_scrollbar +dlg_draw_shadow +dlg_draw_title +dlg_dummy_menutext +dlg_dump_keys +dlg_dump_window_keys +dlg_eat_argv +dlg_edit_offset +dlg_edit_string +dlg_editbox +dlg_exit +dlg_exit_buttoncode +dlg_exit_label +dlg_exiterr +dlg_find_index +dlg_finish_string +dlg_flush_getc +dlg_form +dlg_free_columns +dlg_free_formitems +dlg_free_gauge +dlg_get_attrs +dlg_getc +dlg_getc_callbacks +dlg_index_columns +dlg_index_wchars +dlg_item_help +dlg_killall_bg +dlg_last_getc +dlg_limit_columns +dlg_lookup_key +dlg_match_char +dlg_max_input +dlg_menu +dlg_mouse_bigregion +dlg_mouse_free_regions +dlg_mouse_mkbigregion +dlg_mouse_mkregion +dlg_mouse_region +dlg_mouse_setbase +dlg_mouse_setcode +dlg_mouse_wgetch +dlg_mouse_wgetch_nowait +dlg_move_window +dlg_need_separator +dlg_new_modal_window +dlg_new_window +dlg_next_button +dlg_next_ok_buttonindex +dlg_ok_buttoncode +dlg_ok_label +dlg_ok_labels +dlg_ordinate +dlg_parse_bindkey +dlg_parse_rc +dlg_popen +dlg_prev_button +dlg_prev_ok_buttonindex +dlg_print_autowrap +dlg_print_line +dlg_print_listitem +dlg_print_scrolled +dlg_print_size +dlg_print_text +dlg_progressbox +dlg_put_backtitle +dlg_reallocate_gauge +dlg_register_buttons +dlg_register_window +dlg_remove_callback +dlg_renamed_menutext +dlg_restore_vars +dlg_result_key +dlg_save_vars +dlg_set_focus +dlg_set_result +dlg_show_string +dlg_strclone +dlg_strempty +dlg_string_to_argv +dlg_sub_window +dlg_tab_correct_str +dlg_trace +dlg_trace_2n +dlg_trace_2s +dlg_trace_chr +dlg_trace_msg +dlg_trace_win +dlg_treeview +dlg_trim_string +dlg_ttysize +dlg_unregister_window +dlg_update_gauge +dlg_wgetparent +dlg_will_resize +dlg_yes_buttoncode +dlg_yes_labels +end_dialog +init_dialog Index: vendor/dialog/1.3-20180621/package/freebsd/Makefile =================================================================== --- vendor/dialog/1.3-20180621/package/freebsd/Makefile (nonexistent) +++ vendor/dialog/1.3-20180621/package/freebsd/Makefile (revision 339483) @@ -0,0 +1,48 @@ +# New ports collection makefile for: ncdialog +# Date created: 2003-01-11 +# Whom: AlanE <alane@freebsd.org> +# +# $Carpetsmoker: ports/cdialog/Makefile,v 1.4 2007/04/22 11:30:53 carpetsmoker Exp $ +# $FreeBSD: ports/devel/cdialog/Makefile,v 1.40 2012/11/17 05:55:36 svnexp Exp $ +# + +PORTNAME= cdialog +PORTVERSION= 1.3.20180621 +PORTEPOCH= 1 +CATEGORIES= devel +MASTER_SITES= ftp://ftp.invisible-island.net/${PORTNAME:S|^c||}/ +DISTNAME= ${PORTNAME:S|^c||}-${PORTVERSION:R}-${PORTVERSION:E} +EXTRACT_SUFX= .tgz + +MAINTAINER= sylvio@FreeBSD.org +COMMENT= An enhanced version of 'dialog' to work with ncurses + +LICENSE= LGPL21 + +USE_AUTOTOOLS= libtool +GNU_CONFIGURE= yes +USE_LDCONFIG= yes +CONFIGURE_ARGS= --enable-widec \ + --includedir=${PREFIX}/include/${PORTNAME} \ + --with-libtool \ + --with-ncursesw \ + --with-package=${PORTNAME} +MAKEFILE= makefile + +MAN1= cdialog.1 +MAN3= cdialog.3 +MANCOMPRESSED= no + +INSTALL_TARGET= install-strip install-man install-lib + +.if !defined(NOPORTEXAMPLES) +post-patch: + @${FIND} ${WRKSRC}/samples/ -type f -exec ${REINPLACE_CMD} -i "" "s|dialog|cdialog|g" {} \; + +post-install: + @${MKDIR} ${EXAMPLESDIR} + cd ${WRKSRC}/samples && ${FIND} . | \ + ${CPIO} -pdm -L -R ${SHAREOWN}:${SHAREGRP} ${EXAMPLESDIR} +.endif + +.include <bsd.port.mk> Property changes on: vendor/dialog/1.3-20180621/package/freebsd/Makefile ___________________________________________________________________ Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/plain \ No newline at end of property Index: vendor/dialog/1.3-20180621/package/freebsd/distinfo =================================================================== --- vendor/dialog/1.3-20180621/package/freebsd/distinfo (nonexistent) +++ vendor/dialog/1.3-20180621/package/freebsd/distinfo (revision 339483) @@ -0,0 +1,2 @@ +SHA256 (dialog-1.1-20120215.tgz) = 883c58498663d939b18f3aea56976b64268b736d1579ac850512e5d5a4a2eafc +SIZE (dialog-1.1-20120215.tgz) = 441234 Index: vendor/dialog/1.3-20180621/package/freebsd/pkg-descr =================================================================== --- vendor/dialog/1.3-20180621/package/freebsd/pkg-descr (nonexistent) +++ vendor/dialog/1.3-20180621/package/freebsd/pkg-descr (revision 339483) @@ -0,0 +1,9 @@ +This is an enhanced version of the 'dialog' command. Quoting Thomas Dickey, +the ncurses developer, "DIALOG was written by Savio Lam <lam836@cs.cuhk.hk> +and modified by several people. + +"Initially, I made fixes and reviewed the code to ensure that problems +reported were not related to ncurses. After that, I resumed development, +adding new widget types. See the changelog for details." + +WWW: http://invisible-island.net/dialog/ Index: vendor/dialog/1.3-20180621/package/freebsd/pkg-plist =================================================================== --- vendor/dialog/1.3-20180621/package/freebsd/pkg-plist (nonexistent) +++ vendor/dialog/1.3-20180621/package/freebsd/pkg-plist (revision 339483) @@ -0,0 +1,203 @@ +bin/cdialog +bin/cdialog-config +include/cdialog/dialog.h +include/cdialog/dlg_colors.h +include/cdialog/dlg_config.h +include/cdialog/dlg_keys.h +lib/libcdialog.a +lib/libcdialog.la +lib/libcdialog.so +lib/libcdialog.so.10 +%%PORTEXAMPLES%%%%EXAMPLESDIR%%/README +%%PORTEXAMPLES%%%%EXAMPLESDIR%%/calendar +%%PORTEXAMPLES%%%%EXAMPLESDIR%%/calendar-stdout +%%PORTEXAMPLES%%%%EXAMPLESDIR%%/calendar2 +%%PORTEXAMPLES%%%%EXAMPLESDIR%%/calendar2-stdout +%%PORTEXAMPLES%%%%EXAMPLESDIR%%/calendar3 +%%PORTEXAMPLES%%%%EXAMPLESDIR%%/calendar3-stdout +%%PORTEXAMPLES%%%%EXAMPLESDIR%%/checklist +%%PORTEXAMPLES%%%%EXAMPLESDIR%%/checklist-8bit +%%PORTEXAMPLES%%%%EXAMPLESDIR%%/checklist-utf8 +%%PORTEXAMPLES%%%%EXAMPLESDIR%%/checklist1 +%%PORTEXAMPLES%%%%EXAMPLESDIR%%/checklist10 +%%PORTEXAMPLES%%%%EXAMPLESDIR%%/checklist11 +%%PORTEXAMPLES%%%%EXAMPLESDIR%%/checklist2 +%%PORTEXAMPLES%%%%EXAMPLESDIR%%/checklist3 +%%PORTEXAMPLES%%%%EXAMPLESDIR%%/checklist4 +%%PORTEXAMPLES%%%%EXAMPLESDIR%%/checklist5 +%%PORTEXAMPLES%%%%EXAMPLESDIR%%/checklist6 +%%PORTEXAMPLES%%%%EXAMPLESDIR%%/checklist7 +%%PORTEXAMPLES%%%%EXAMPLESDIR%%/checklist8 +%%PORTEXAMPLES%%%%EXAMPLESDIR%%/checklist9 +%%PORTEXAMPLES%%%%EXAMPLESDIR%%/checklist9.txt +%%PORTEXAMPLES%%%%EXAMPLESDIR%%/copifuncs/admin.funcs +%%PORTEXAMPLES%%%%EXAMPLESDIR%%/copifuncs/common.funcs +%%PORTEXAMPLES%%%%EXAMPLESDIR%%/copifuncs/copi.funcs +%%PORTEXAMPLES%%%%EXAMPLESDIR%%/copifuncs/copi.ifman1 +%%PORTEXAMPLES%%%%EXAMPLESDIR%%/copifuncs/copi.ifman2 +%%PORTEXAMPLES%%%%EXAMPLESDIR%%/copifuncs/copi.ifmcfg2 +%%PORTEXAMPLES%%%%EXAMPLESDIR%%/copifuncs/copi.ifmcfg4 +%%PORTEXAMPLES%%%%EXAMPLESDIR%%/copifuncs/copi.ifmcfg5 +%%PORTEXAMPLES%%%%EXAMPLESDIR%%/copifuncs/copi.ifpoll1 +%%PORTEXAMPLES%%%%EXAMPLESDIR%%/copifuncs/copi.ifpoll2 +%%PORTEXAMPLES%%%%EXAMPLESDIR%%/copifuncs/copi.ifreq1 +%%PORTEXAMPLES%%%%EXAMPLESDIR%%/copifuncs/copi.ifreq2 +%%PORTEXAMPLES%%%%EXAMPLESDIR%%/copifuncs/copi.rcnews +%%PORTEXAMPLES%%%%EXAMPLESDIR%%/copifuncs/copi.sendifm1 +%%PORTEXAMPLES%%%%EXAMPLESDIR%%/copifuncs/copi.sendifm2 +%%PORTEXAMPLES%%%%EXAMPLESDIR%%/copifuncs/copi.trnrc +%%PORTEXAMPLES%%%%EXAMPLESDIR%%/copifuncs/copi.wheel +%%PORTEXAMPLES%%%%EXAMPLESDIR%%/copifuncs/ifpatch +%%PORTEXAMPLES%%%%EXAMPLESDIR%%/copismall +%%PORTEXAMPLES%%%%EXAMPLESDIR%%/debian.rc +%%PORTEXAMPLES%%%%EXAMPLESDIR%%/dialog.py +%%PORTEXAMPLES%%%%EXAMPLESDIR%%/editbox +%%PORTEXAMPLES%%%%EXAMPLESDIR%%/editbox-utf8 +%%PORTEXAMPLES%%%%EXAMPLESDIR%%/editbox2 +%%PORTEXAMPLES%%%%EXAMPLESDIR%%/editbox3 +%%PORTEXAMPLES%%%%EXAMPLESDIR%%/editbox4 +%%PORTEXAMPLES%%%%EXAMPLESDIR%%/form1 +%%PORTEXAMPLES%%%%EXAMPLESDIR%%/form1-both +%%PORTEXAMPLES%%%%EXAMPLESDIR%%/form1-extra +%%PORTEXAMPLES%%%%EXAMPLESDIR%%/form1-help +%%PORTEXAMPLES%%%%EXAMPLESDIR%%/form1-utf8 +%%PORTEXAMPLES%%%%EXAMPLESDIR%%/form2 +%%PORTEXAMPLES%%%%EXAMPLESDIR%%/form3 +%%PORTEXAMPLES%%%%EXAMPLESDIR%%/form4 +%%PORTEXAMPLES%%%%EXAMPLESDIR%%/form5 +%%PORTEXAMPLES%%%%EXAMPLESDIR%%/form6 +%%PORTEXAMPLES%%%%EXAMPLESDIR%%/fselect +%%PORTEXAMPLES%%%%EXAMPLESDIR%%/fselect-stdout +%%PORTEXAMPLES%%%%EXAMPLESDIR%%/fselect0 +%%PORTEXAMPLES%%%%EXAMPLESDIR%%/fselect1 +%%PORTEXAMPLES%%%%EXAMPLESDIR%%/fselect1-stdout +%%PORTEXAMPLES%%%%EXAMPLESDIR%%/fselect2 +%%PORTEXAMPLES%%%%EXAMPLESDIR%%/fselect2-stdout +%%PORTEXAMPLES%%%%EXAMPLESDIR%%/gauge +%%PORTEXAMPLES%%%%EXAMPLESDIR%%/gauge0 +%%PORTEXAMPLES%%%%EXAMPLESDIR%%/gauge0-input-fd +%%PORTEXAMPLES%%%%EXAMPLESDIR%%/gauge2 +%%PORTEXAMPLES%%%%EXAMPLESDIR%%/infobox +%%PORTEXAMPLES%%%%EXAMPLESDIR%%/infobox1 +%%PORTEXAMPLES%%%%EXAMPLESDIR%%/infobox2 +%%PORTEXAMPLES%%%%EXAMPLESDIR%%/infobox3 +%%PORTEXAMPLES%%%%EXAMPLESDIR%%/infobox4 +%%PORTEXAMPLES%%%%EXAMPLESDIR%%/infobox5 +%%PORTEXAMPLES%%%%EXAMPLESDIR%%/infobox6 +%%PORTEXAMPLES%%%%EXAMPLESDIR%%/inputbox +%%PORTEXAMPLES%%%%EXAMPLESDIR%%/inputbox-both +%%PORTEXAMPLES%%%%EXAMPLESDIR%%/inputbox-extra +%%PORTEXAMPLES%%%%EXAMPLESDIR%%/inputbox-help +%%PORTEXAMPLES%%%%EXAMPLESDIR%%/inputbox1 +%%PORTEXAMPLES%%%%EXAMPLESDIR%%/inputbox2 +%%PORTEXAMPLES%%%%EXAMPLESDIR%%/inputbox3 +%%PORTEXAMPLES%%%%EXAMPLESDIR%%/inputbox4 +%%PORTEXAMPLES%%%%EXAMPLESDIR%%/inputbox5 +%%PORTEXAMPLES%%%%EXAMPLESDIR%%/inputbox6-8bit +%%PORTEXAMPLES%%%%EXAMPLESDIR%%/inputbox6-utf8 +%%PORTEXAMPLES%%%%EXAMPLESDIR%%/inputbox7 +%%PORTEXAMPLES%%%%EXAMPLESDIR%%/inputmenu +%%PORTEXAMPLES%%%%EXAMPLESDIR%%/inputmenu-stdout +%%PORTEXAMPLES%%%%EXAMPLESDIR%%/inputmenu1 +%%PORTEXAMPLES%%%%EXAMPLESDIR%%/inputmenu2 +%%PORTEXAMPLES%%%%EXAMPLESDIR%%/inputmenu3 +%%PORTEXAMPLES%%%%EXAMPLESDIR%%/inputmenu4 +%%PORTEXAMPLES%%%%EXAMPLESDIR%%/install/FDISK.TEST +%%PORTEXAMPLES%%%%EXAMPLESDIR%%/install/makefile +%%PORTEXAMPLES%%%%EXAMPLESDIR%%/install/makefile.in +%%PORTEXAMPLES%%%%EXAMPLESDIR%%/install/setup.c +%%PORTEXAMPLES%%%%EXAMPLESDIR%%/install/setup.help +%%PORTEXAMPLES%%%%EXAMPLESDIR%%/killall +%%PORTEXAMPLES%%%%EXAMPLESDIR%%/listing +%%PORTEXAMPLES%%%%EXAMPLESDIR%%/menubox +%%PORTEXAMPLES%%%%EXAMPLESDIR%%/menubox-8bit +%%PORTEXAMPLES%%%%EXAMPLESDIR%%/menubox-utf8 +%%PORTEXAMPLES%%%%EXAMPLESDIR%%/menubox1 +%%PORTEXAMPLES%%%%EXAMPLESDIR%%/menubox10 +%%PORTEXAMPLES%%%%EXAMPLESDIR%%/menubox2 +%%PORTEXAMPLES%%%%EXAMPLESDIR%%/menubox3 +%%PORTEXAMPLES%%%%EXAMPLESDIR%%/menubox4 +%%PORTEXAMPLES%%%%EXAMPLESDIR%%/menubox5 +%%PORTEXAMPLES%%%%EXAMPLESDIR%%/menubox6 +%%PORTEXAMPLES%%%%EXAMPLESDIR%%/menubox7 +%%PORTEXAMPLES%%%%EXAMPLESDIR%%/menubox8 +%%PORTEXAMPLES%%%%EXAMPLESDIR%%/menubox9 +%%PORTEXAMPLES%%%%EXAMPLESDIR%%/mixedform +%%PORTEXAMPLES%%%%EXAMPLESDIR%%/mixedform2 +%%PORTEXAMPLES%%%%EXAMPLESDIR%%/mixedgauge +%%PORTEXAMPLES%%%%EXAMPLESDIR%%/msgbox +%%PORTEXAMPLES%%%%EXAMPLESDIR%%/msgbox-help +%%PORTEXAMPLES%%%%EXAMPLESDIR%%/msgbox-utf8 +%%PORTEXAMPLES%%%%EXAMPLESDIR%%/msgbox1 +%%PORTEXAMPLES%%%%EXAMPLESDIR%%/msgbox2 +%%PORTEXAMPLES%%%%EXAMPLESDIR%%/msgbox3 +%%PORTEXAMPLES%%%%EXAMPLESDIR%%/msgbox4-8bit +%%PORTEXAMPLES%%%%EXAMPLESDIR%%/msgbox4-eucjp +%%PORTEXAMPLES%%%%EXAMPLESDIR%%/msgbox4-utf8 +%%PORTEXAMPLES%%%%EXAMPLESDIR%%/msgbox5 +%%PORTEXAMPLES%%%%EXAMPLESDIR%%/msgbox6 +%%PORTEXAMPLES%%%%EXAMPLESDIR%%/msgbox6a +%%PORTEXAMPLES%%%%EXAMPLESDIR%%/password +%%PORTEXAMPLES%%%%EXAMPLESDIR%%/password1 +%%PORTEXAMPLES%%%%EXAMPLESDIR%%/password2 +%%PORTEXAMPLES%%%%EXAMPLESDIR%%/passwordform1 +%%PORTEXAMPLES%%%%EXAMPLESDIR%%/passwordform1-utf8 +%%PORTEXAMPLES%%%%EXAMPLESDIR%%/pause +%%PORTEXAMPLES%%%%EXAMPLESDIR%%/pause-both +%%PORTEXAMPLES%%%%EXAMPLESDIR%%/pause-extra +%%PORTEXAMPLES%%%%EXAMPLESDIR%%/pause-help +%%PORTEXAMPLES%%%%EXAMPLESDIR%%/prgbox +%%PORTEXAMPLES%%%%EXAMPLESDIR%%/prgbox2 +%%PORTEXAMPLES%%%%EXAMPLESDIR%%/programbox +%%PORTEXAMPLES%%%%EXAMPLESDIR%%/programbox2 +%%PORTEXAMPLES%%%%EXAMPLESDIR%%/progress +%%PORTEXAMPLES%%%%EXAMPLESDIR%%/progress2 +%%PORTEXAMPLES%%%%EXAMPLESDIR%%/radiolist +%%PORTEXAMPLES%%%%EXAMPLESDIR%%/radiolist1 +%%PORTEXAMPLES%%%%EXAMPLESDIR%%/radiolist10 +%%PORTEXAMPLES%%%%EXAMPLESDIR%%/radiolist2 +%%PORTEXAMPLES%%%%EXAMPLESDIR%%/radiolist3 +%%PORTEXAMPLES%%%%EXAMPLESDIR%%/radiolist4 +%%PORTEXAMPLES%%%%EXAMPLESDIR%%/report-button +%%PORTEXAMPLES%%%%EXAMPLESDIR%%/report-edit +%%PORTEXAMPLES%%%%EXAMPLESDIR%%/report-string +%%PORTEXAMPLES%%%%EXAMPLESDIR%%/report-tempfile +%%PORTEXAMPLES%%%%EXAMPLESDIR%%/report-yesno +%%PORTEXAMPLES%%%%EXAMPLESDIR%%/rotated-data +%%PORTEXAMPLES%%%%EXAMPLESDIR%%/setup-edit +%%PORTEXAMPLES%%%%EXAMPLESDIR%%/setup-tempfile +%%PORTEXAMPLES%%%%EXAMPLESDIR%%/setup-utf8 +%%PORTEXAMPLES%%%%EXAMPLESDIR%%/setup-vars +%%PORTEXAMPLES%%%%EXAMPLESDIR%%/shortlist +%%PORTEXAMPLES%%%%EXAMPLESDIR%%/slackware.rc +%%PORTEXAMPLES%%%%EXAMPLESDIR%%/sourcemage.rc +%%PORTEXAMPLES%%%%EXAMPLESDIR%%/suse.rc +%%PORTEXAMPLES%%%%EXAMPLESDIR%%/tailbox +%%PORTEXAMPLES%%%%EXAMPLESDIR%%/tailboxbg +%%PORTEXAMPLES%%%%EXAMPLESDIR%%/tailboxbg1 +%%PORTEXAMPLES%%%%EXAMPLESDIR%%/tailboxbg2 +%%PORTEXAMPLES%%%%EXAMPLESDIR%%/testdata-8bit +%%PORTEXAMPLES%%%%EXAMPLESDIR%%/textbox +%%PORTEXAMPLES%%%%EXAMPLESDIR%%/textbox-both +%%PORTEXAMPLES%%%%EXAMPLESDIR%%/textbox-help +%%PORTEXAMPLES%%%%EXAMPLESDIR%%/textbox.txt +%%PORTEXAMPLES%%%%EXAMPLESDIR%%/textbox2 +%%PORTEXAMPLES%%%%EXAMPLESDIR%%/textbox3 +%%PORTEXAMPLES%%%%EXAMPLESDIR%%/timebox +%%PORTEXAMPLES%%%%EXAMPLESDIR%%/timebox-stdout +%%PORTEXAMPLES%%%%EXAMPLESDIR%%/timebox2 +%%PORTEXAMPLES%%%%EXAMPLESDIR%%/timebox2-stdout +%%PORTEXAMPLES%%%%EXAMPLESDIR%%/wheel +%%PORTEXAMPLES%%%%EXAMPLESDIR%%/whiptail.rc +%%PORTEXAMPLES%%%%EXAMPLESDIR%%/yesno +%%PORTEXAMPLES%%%%EXAMPLESDIR%%/yesno-both +%%PORTEXAMPLES%%%%EXAMPLESDIR%%/yesno-extra +%%PORTEXAMPLES%%%%EXAMPLESDIR%%/yesno-help +%%PORTEXAMPLES%%%%EXAMPLESDIR%%/yesno-utf8 +%%PORTEXAMPLES%%%%EXAMPLESDIR%%/yesno2 +%%PORTEXAMPLES%%%%EXAMPLESDIR%%/yesno3 +%%PORTEXAMPLES%%%%EXAMPLESDIR%%/yesno4 +%%PORTEXAMPLES%%@dirrm %%EXAMPLESDIR%%/install +%%PORTEXAMPLES%%@dirrm %%EXAMPLESDIR%%/copifuncs +%%PORTEXAMPLES%%@dirrm %%EXAMPLESDIR%% +@dirrm include/cdialog Index: vendor/dialog/1.3-20180621/pause.c =================================================================== --- vendor/dialog/1.3-20180621/pause.c (nonexistent) +++ vendor/dialog/1.3-20180621/pause.c (revision 339483) @@ -0,0 +1,256 @@ +/* + * $Id: pause.c,v 1.39 2018/06/19 22:57:01 tom Exp $ + * + * pause.c -- implements the pause dialog + * + * Copyright 2004-2012,2018 Thomas E. Dickey + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License, version 2.1 + * as published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this program; if not, write to + * Free Software Foundation, Inc. + * 51 Franklin St., Fifth Floor + * Boston, MA 02110, USA. + * + * This is adapted from source contributed by + * Yura Kalinichenko + */ + +#include <dialog.h> +#include <dlg_keys.h> + +#define MY_TIMEOUT 50 + +#define MIN_HIGH (4) +#define MIN_WIDE (10 + 2 * (2 + MARGIN)) +#define BTN_HIGH (1 + 2 * MARGIN) + +/* + * This is like gauge, but can be interrupted. + * + * A pause box displays a meter along the bottom of the box. The meter + * indicates how many seconds remain until the end of the pause. The pause + * exits when timeout is reached (status OK) or the user presses: + * OK button (status OK) + * CANCEL button (status CANCEL) + * Esc key (status ESC) + * + */ +int +dialog_pause(const char *title, + const char *cprompt, + int height, + int width, + int seconds) +{ + /* *INDENT-OFF* */ + static DLG_KEYS_BINDING binding[] = { + HELPKEY_BINDINGS, + ENTERKEY_BINDINGS, + TRAVERSE_BINDINGS, + END_KEYS_BINDING + }; + /* *INDENT-ON* */ + +#ifdef KEY_RESIZE + int old_height = height; + int old_width = width; +#endif + + int i, x, y, step; + int button = dlg_default_button(); + int seconds_orig; + WINDOW *dialog; + const char **buttons = dlg_ok_labels(); + bool have_buttons = (dlg_button_count(buttons) != 0); + bool first; + int key = 0, fkey; + int result = DLG_EXIT_UNKNOWN; + int button_high = (have_buttons ? BTN_HIGH : MARGIN); + int gauge_y; + char *prompt; + int save_timeout = dialog_vars.timeout_secs; + + DLG_TRACE(("# pause args:\n")); + DLG_TRACE2S("title", title); + DLG_TRACE2S("message", cprompt); + DLG_TRACE2N("height", height); + DLG_TRACE2N("width", width); + DLG_TRACE2N("seconds", seconds); + + curs_set(0); + + dialog_vars.timeout_secs = 0; + seconds_orig = (seconds > 0) ? seconds : 1; + +#ifdef KEY_RESIZE + retry: +#endif + + prompt = dlg_strclone(cprompt); + dlg_tab_correct_str(prompt); + + if (have_buttons) { + dlg_auto_size(title, prompt, &height, &width, + MIN_HIGH, + MIN_WIDE); + dlg_button_layout(buttons, &width); + } else { + dlg_auto_size(title, prompt, &height, &width, + MIN_HIGH + MARGIN - BTN_HIGH, + MIN_WIDE); + } + gauge_y = height - button_high - (1 + 2 * MARGIN); + dlg_print_size(height, width); + dlg_ctl_size(height, width); + + /* center dialog box on screen */ + x = dlg_box_x_ordinate(width); + y = dlg_box_y_ordinate(height); + + dialog = dlg_new_window(height, width, y, x); + dlg_register_window(dialog, "pause", binding); + dlg_register_buttons(dialog, "pause", buttons); + + dlg_mouse_setbase(x, y); + nodelay(dialog, TRUE); + + first = TRUE; + do { + (void) werase(dialog); + dlg_draw_box2(dialog, 0, 0, height, width, dialog_attr, border_attr, border2_attr); + + dlg_draw_title(dialog, title); + dlg_draw_helpline(dialog, FALSE); + + dlg_attrset(dialog, dialog_attr); + dlg_print_autowrap(dialog, prompt, height, width); + + dlg_draw_box2(dialog, + gauge_y, 2 + MARGIN, + 2 + MARGIN, width - 2 * (2 + MARGIN), + dialog_attr, + border_attr, + border2_attr); + + /* + * Clear the area for the progress bar by filling it with spaces + * in the title-attribute, and write the percentage with that + * attribute. + */ + (void) wmove(dialog, gauge_y + MARGIN, 4); + dlg_attrset(dialog, title_attr); + + for (i = 0; i < (width - 2 * (3 + MARGIN)); i++) + (void) waddch(dialog, ' '); + + (void) wmove(dialog, gauge_y + MARGIN, (width / 2) - 2); + (void) wprintw(dialog, "%3d", seconds); + + /* + * Now draw a bar in reverse, relative to the background. + * The window attribute was useful for painting the background, + * but requires some tweaks to reverse it. + */ + x = (seconds * (width - 2 * (3 + MARGIN))) / seconds_orig; + if ((title_attr & A_REVERSE) != 0) { + dlg_attroff(dialog, A_REVERSE); + } else { + dlg_attrset(dialog, A_REVERSE); + } + (void) wmove(dialog, gauge_y + MARGIN, 4); + for (i = 0; i < x; i++) { + chtype ch = winch(dialog); + if (title_attr & A_REVERSE) { + ch &= ~A_REVERSE; + } + (void) waddch(dialog, ch); + } + + mouse_mkbutton(height - 2, width / 2 - 4, 6, '\n'); + if (have_buttons) { + dlg_draw_bottom_box2(dialog, border_attr, border2_attr, dialog_attr); + dlg_draw_buttons(dialog, height - 2, 0, buttons, button, FALSE, width); + } + if (first) { + (void) wrefresh(dialog); + dlg_trace_win(dialog); + first = FALSE; + } + + for (step = 0; + (result == DLG_EXIT_UNKNOWN) && (step < 1000); + step += MY_TIMEOUT) { + + napms(MY_TIMEOUT); + key = dlg_mouse_wgetch_nowait(dialog, &fkey); + if (key == ERR) { + ; /* ignore errors in nodelay mode */ + } else { + if (dlg_result_key(key, fkey, &result)) + break; + } + + switch (key) { +#ifdef KEY_RESIZE + case KEY_RESIZE: + dlg_will_resize(dialog); + dlg_clear(); /* fill the background */ + dlg_del_window(dialog); /* delete this window */ + height = old_height; + width = old_width; + free(prompt); + refresh(); /* get it all onto the terminal */ + goto retry; +#endif + case DLGK_FIELD_NEXT: + button = dlg_next_button(buttons, button); + if (button < 0) + button = 0; + dlg_draw_buttons(dialog, + height - 2, 0, + buttons, button, + FALSE, width); + break; + case DLGK_FIELD_PREV: + button = dlg_prev_button(buttons, button); + if (button < 0) + button = 0; + dlg_draw_buttons(dialog, + height - 2, 0, + buttons, button, + FALSE, width); + break; + case DLGK_ENTER: + result = dlg_enter_buttoncode(button); + break; + case ERR: + break; + default: + if (is_DLGK_MOUSE(key)) { + result = dlg_ok_buttoncode(key - M_EVENT); + if (result < 0) + result = DLG_EXIT_OK; + } + break; + } + } + } while ((result == DLG_EXIT_UNKNOWN) && (seconds-- > 0)); + + curs_set(1); + dlg_mouse_free_regions(); + dlg_del_window(dialog); + free(prompt); + + dialog_vars.timeout_secs = save_timeout; + + return ((result == DLG_EXIT_UNKNOWN) ? DLG_EXIT_OK : result); +} Index: vendor/dialog/1.3-20180621/po/de.po =================================================================== Cannot display: file marked as a binary type. svn:mime-type = application/octet-stream Property changes on: vendor/dialog/1.3-20180621/po/de.po ___________________________________________________________________ Added: svn:mime-type ## -0,0 +1 ## +application/octet-stream \ No newline at end of property Index: vendor/dialog/1.3-20180621/po/dialog.pot =================================================================== Cannot display: file marked as a binary type. svn:mime-type = application/octet-stream Property changes on: vendor/dialog/1.3-20180621/po/dialog.pot ___________________________________________________________________ Added: svn:mime-type ## -0,0 +1 ## +application/octet-stream \ No newline at end of property Index: vendor/dialog/1.3-20180621/po/es.po =================================================================== Cannot display: file marked as a binary type. svn:mime-type = application/octet-stream Property changes on: vendor/dialog/1.3-20180621/po/es.po ___________________________________________________________________ Added: svn:mime-type ## -0,0 +1 ## +application/octet-stream \ No newline at end of property Index: vendor/dialog/1.3-20180621/po/fur.po =================================================================== --- vendor/dialog/1.3-20180621/po/fur.po (nonexistent) +++ vendor/dialog/1.3-20180621/po/fur.po (revision 339483) @@ -0,0 +1,113 @@ +# Dialog +# Copyright 2003-2007,2008 # Thomas Dickey +# This file is distributed under the same license as the dialog package. +# Fabio Tomat <f.t.public@gmail.com>, 2016. +msgid "" +msgstr "" +"Project-Id-Version: dialog 1.1.20080819\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2008-06-18 18:26-0400\n" +"PO-Revision-Date: 2016-11-20 07:14+0100\n" +"Last-Translator: Fabio Tomat <f.t.public@gmail.com>\n" +"Language-Team: Friulian <f.t.public@gmail.com>\n" +"Language: fur\n" +"X-Bugs: Report translation errors to the Language-Team address.\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Poedit 1.8.8\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#: buttons.c:385 +msgid "Yes" +msgstr "Sì" + +#: buttons.c:393 +msgid "No" +msgstr "No" + +#: buttons.c:401 +msgid "OK" +msgstr "OK" + +#: buttons.c:409 +msgid "Cancel" +msgstr "Anule" + +#: buttons.c:417 +msgid "EXIT" +msgstr "JES" + +#: buttons.c:425 +msgid "Extra" +msgstr "Adizionâl" + +#: buttons.c:433 +msgid "Help" +msgstr "Jutori" + +#. Headline "Month" +#: calendar.c:273 +msgid "Month" +msgstr "Mês" + +#. Headline "Year" +#: calendar.c:293 +msgid "Year" +msgstr "An" + +#: dialog.c:741 +msgid "Rename" +msgstr "Cambie non" + +#: fselect.c:550 +msgid "Directories" +msgstr "Cartelis" + +#: fselect.c:551 +msgid "Files" +msgstr "File" + +#: mixedgauge.c:58 +msgid "Succeeded" +msgstr "Riessût" + +#: mixedgauge.c:61 +msgid "Failed" +msgstr "Falît" + +#: mixedgauge.c:64 +msgid "Passed" +msgstr "Superât" + +#: mixedgauge.c:67 +msgid "Completed" +msgstr "Completât" + +#: mixedgauge.c:70 +msgid "Checked" +msgstr "Controlât" + +#: mixedgauge.c:73 +msgid "Done" +msgstr "Fat" + +#: mixedgauge.c:76 +msgid "Skipped" +msgstr "Saltât" + +#: mixedgauge.c:79 +msgid "In Progress" +msgstr "In cors" + +#: mixedgauge.c:85 +msgid "N/A" +msgstr "N/D" + +#: mixedgauge.c:193 +msgid "Overall Progress" +msgstr "Progrès gjenerâl" + +#: textbox.c:489 +msgid "Search" +msgstr "Cîr" Property changes on: vendor/dialog/1.3-20180621/po/fur.po ___________________________________________________________________ Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:keywords ## -0,0 +1 ## +FreeBSD=%H \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/plain \ No newline at end of property Index: vendor/dialog/1.3-20180621/po/gd.po =================================================================== --- vendor/dialog/1.3-20180621/po/gd.po (nonexistent) +++ vendor/dialog/1.3-20180621/po/gd.po (revision 339483) @@ -0,0 +1,111 @@ +# Scottish Gaelic translation of Dialog. +# Copyright 2003-2007,2008 # Thomas Dickey +# This file is distributed under the same license as the dialog package. +# GunChleoc <fios@foramnagaidhlig.net>, 2014. +msgid "" +msgstr "" +"Project-Id-Version: dialog 1.1.20080819\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2008-06-18 18:26-0400\n" +"PO-Revision-Date: 2014-02-11 11:19-0000\n" +"Last-Translator: GunChleoc <fios@foramnagaidhlig.net>\n" +"Language-Team: Scottish Gaelic <fios@foramnagaidhlig.net>\n" +"Language: gd\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=4; plural=(n==1 || n==11) ? 0 : (n==2 || n==12) ? 1 : (n > 2 && n < 20) ? 2 : 3;\n" + +#: buttons.c:385 +msgid "Yes" +msgstr "Tha" + +#: buttons.c:393 +msgid "No" +msgstr "Chan eil" + +#: buttons.c:401 +msgid "OK" +msgstr "Ceart ma-thà" + +#: buttons.c:409 +msgid "Cancel" +msgstr "Sguir dheth" + +#: buttons.c:417 +msgid "EXIT" +msgstr "FÀG AN-SEO" + +#: buttons.c:425 +msgid "Extra" +msgstr "Barrachd" + +#: buttons.c:433 +msgid "Help" +msgstr "Cobhair" + +#. Headline "Month" +#: calendar.c:273 +msgid "Month" +msgstr "Mìos" + +#. Headline "Year" +#: calendar.c:293 +msgid "Year" +msgstr "Bliadhna" + +#: dialog.c:741 +msgid "Rename" +msgstr "Cuir ainm ùr air" + +#: fselect.c:550 +msgid "Directories" +msgstr "Pasganan" + +#: fselect.c:551 +msgid "Files" +msgstr "Faidhlichean" + +#: mixedgauge.c:58 +msgid "Succeeded" +msgstr "Soirbheachail" + +#: mixedgauge.c:61 +msgid "Failed" +msgstr "Dh'fhàillig leis" + +#: mixedgauge.c:64 +msgid "Passed" +msgstr "Soirbheachail" + +#: mixedgauge.c:67 +msgid "Completed" +msgstr "Coileanta" + +#: mixedgauge.c:70 +msgid "Checked" +msgstr "Air a dhearbhadh" + +#: mixedgauge.c:73 +msgid "Done" +msgstr "Dèanta" + +#: mixedgauge.c:76 +msgid "Skipped" +msgstr "Air a leigeil seachad" + +#: mixedgauge.c:79 +msgid "In Progress" +msgstr "A' dol air adhart" + +#: mixedgauge.c:85 +msgid "N/A" +msgstr "Chan eil seo iomchaidh" + +#: mixedgauge.c:193 +msgid "Overall Progress" +msgstr "Adhartas san fharsaingeachd" + +#: textbox.c:489 +msgid "Search" +msgstr "Lorg" Property changes on: vendor/dialog/1.3-20180621/po/gd.po ___________________________________________________________________ Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:keywords ## -0,0 +1 ## +FreeBSD=%H \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/plain \ No newline at end of property Index: vendor/dialog/1.3-20180621/po/hr.po =================================================================== Cannot display: file marked as a binary type. svn:mime-type = application/octet-stream Property changes on: vendor/dialog/1.3-20180621/po/hr.po ___________________________________________________________________ Added: svn:mime-type ## -0,0 +1 ## +application/octet-stream \ No newline at end of property Index: vendor/dialog/1.3-20180621/po/hu.po =================================================================== Cannot display: file marked as a binary type. svn:mime-type = application/octet-stream Property changes on: vendor/dialog/1.3-20180621/po/hu.po ___________________________________________________________________ Added: svn:mime-type ## -0,0 +1 ## +application/octet-stream \ No newline at end of property Index: vendor/dialog/1.3-20180621/po/lv.po =================================================================== Cannot display: file marked as a binary type. svn:mime-type = application/octet-stream Property changes on: vendor/dialog/1.3-20180621/po/lv.po ___________________________________________________________________ Added: svn:mime-type ## -0,0 +1 ## +application/octet-stream \ No newline at end of property Index: vendor/dialog/1.3-20180621/po/ro.po =================================================================== Cannot display: file marked as a binary type. svn:mime-type = application/octet-stream Property changes on: vendor/dialog/1.3-20180621/po/ro.po ___________________________________________________________________ Added: svn:mime-type ## -0,0 +1 ## +application/octet-stream \ No newline at end of property Index: vendor/dialog/1.3-20180621/po/tr.po =================================================================== Cannot display: file marked as a binary type. svn:mime-type = application/octet-stream Property changes on: vendor/dialog/1.3-20180621/po/tr.po ___________________________________________________________________ Added: svn:mime-type ## -0,0 +1 ## +application/octet-stream \ No newline at end of property Index: vendor/dialog/1.3-20180621/po/fa.po =================================================================== --- vendor/dialog/1.3-20180621/po/fa.po (nonexistent) +++ vendor/dialog/1.3-20180621/po/fa.po (revision 339483) @@ -0,0 +1,113 @@ +# Dialog +# Copyright 2003-2007,2008 # Thomas Dickey +# This file is distributed under the same license as the dialog package. +# +# Seyed Ali Akbar Najafian <s.ali.najafian@chmail.ir>, 2012. +msgid "" +msgstr "" +"Project-Id-Version: dialog 1.1.20080819\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2008-06-18 18:26-0400\n" +"PO-Revision-Date: 2013-08-03 17:04+0330\n" +"Last-Translator: سید‌علی‌اکبر نجÙیان <s.ali.najafian@chmail.ir>\n" +"Language-Team: Persian <translation-team-fa@lists.sourceforge.net>\n" +"Language: persian\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Poedit 1.5.4\n" + +#: buttons.c:385 +#, fuzzy +msgid "Yes" +msgstr "بله" + +#: buttons.c:393 +msgid "No" +msgstr "خیر" + +#: buttons.c:401 +msgid "OK" +msgstr "باشه" + +#: buttons.c:409 +msgid "Cancel" +msgstr "لغو" + +#: buttons.c:417 +msgid "EXIT" +msgstr "خروج" + +#: buttons.c:425 +msgid "Extra" +msgstr "اضاÙس" + +#: buttons.c:433 +msgid "Help" +msgstr "راهنما" + +#. Headline "Month" +#: calendar.c:273 +msgid "Month" +msgstr "ماه" + +#. Headline "Year" +#: calendar.c:293 +msgid "Year" +msgstr "سال" + +#: dialog.c:741 +msgid "Rename" +msgstr "تغییر نام" + +#: fselect.c:550 +msgid "Directories" +msgstr "مسیرها" + +#: fselect.c:551 +msgid "Files" +msgstr "پرونده‌ها" + +#: mixedgauge.c:58 +msgid "Succeeded" +msgstr "موÙقیت آمیز" + +#: mixedgauge.c:61 +msgid "Failed" +msgstr "شکست خورد" + +#: mixedgauge.c:64 +msgid "Passed" +msgstr "متوق٠شد" + +#: mixedgauge.c:67 +msgid "Completed" +msgstr "کامل شد" + +#: mixedgauge.c:70 +msgid "Checked" +msgstr "بررسی شد" + +#: mixedgauge.c:73 +msgid "Done" +msgstr "انجام شد" + +#: mixedgauge.c:76 +msgid "Skipped" +msgstr "رها شد" + +#: mixedgauge.c:79 +msgid "In Progress" +msgstr "در حال پیشرÙت" + +#: mixedgauge.c:85 +msgid "N/A" +msgstr "N/A" + +#: mixedgauge.c:193 +msgid "Overall Progress" +msgstr "پیشرÙت جاری" + +#: textbox.c:489 +msgid "Search" +msgstr "جستجو" Index: vendor/dialog/1.3-20180621/po/lt.po =================================================================== Cannot display: file marked as a binary type. svn:mime-type = application/octet-stream Property changes on: vendor/dialog/1.3-20180621/po/lt.po ___________________________________________________________________ Added: svn:mime-type ## -0,0 +1 ## +application/octet-stream \ No newline at end of property Index: vendor/dialog/1.3-20180621/po/an.po =================================================================== --- vendor/dialog/1.3-20180621/po/an.po (nonexistent) +++ vendor/dialog/1.3-20180621/po/an.po (revision 339483) @@ -0,0 +1,111 @@ +# Dialog +# Copyright 2003-2007,2008 # Thomas Dickey +# This file is distributed under the same license as the dialog package. +# Daniel Martinez <entaltoaragon@gmail.com>, 2013. +msgid "" +msgstr "" +"Project-Id-Version: dialog 1.1.20080819\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2008-06-18 18:26-0400\n" +"PO-Revision-Date: 2013-02-19 17:50+0100\n" +"Last-Translator: Daniel Martinez <entaltoaragon@gmail.com>\n" +"Language-Team: Aragonese <softaragones@googlegroups.com>\n" +"Language: an\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#: buttons.c:385 +msgid "Yes" +msgstr "Sí" + +#: buttons.c:393 +msgid "No" +msgstr "No" + +#: buttons.c:401 +msgid "OK" +msgstr "Acceptar" + +#: buttons.c:409 +msgid "Cancel" +msgstr "Cancelar" + +#: buttons.c:417 +msgid "EXIT" +msgstr "Salir" + +#: buttons.c:425 +msgid "Extra" +msgstr "Extra" + +#: buttons.c:433 +msgid "Help" +msgstr "Aduya" + +#. Headline "Month" +#: calendar.c:273 +msgid "Month" +msgstr "Mes" + +#. Headline "Year" +#: calendar.c:293 +msgid "Year" +msgstr "Anyo" + +#: dialog.c:741 +msgid "Rename" +msgstr "Renombrar" + +#: fselect.c:550 +msgid "Directories" +msgstr "Directorios" + +#: fselect.c:551 +msgid "Files" +msgstr "Fichers" + +#: mixedgauge.c:58 +msgid "Succeeded" +msgstr "Finalizau con exito" + +#: mixedgauge.c:61 +msgid "Failed" +msgstr "Falló" + +#: mixedgauge.c:64 +msgid "Passed" +msgstr "Pasau" + +#: mixedgauge.c:67 +msgid "Completed" +msgstr "Completau" + +#: mixedgauge.c:70 +msgid "Checked" +msgstr "Comprebau" + +#: mixedgauge.c:73 +msgid "Done" +msgstr "Feito" + +#: mixedgauge.c:76 +msgid "Skipped" +msgstr "Blincau" + +#: mixedgauge.c:79 +msgid "In Progress" +msgstr "En progreso" + +#: mixedgauge.c:85 +msgid "N/A" +msgstr "N/A" + +#: mixedgauge.c:193 +msgid "Overall Progress" +msgstr "Progreso total" + +#: textbox.c:489 +msgid "Search" +msgstr "Buscar" Property changes on: vendor/dialog/1.3-20180621/po/an.po ___________________________________________________________________ Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Index: vendor/dialog/1.3-20180621/po/gl.po =================================================================== Cannot display: file marked as a binary type. svn:mime-type = application/octet-stream Property changes on: vendor/dialog/1.3-20180621/po/gl.po ___________________________________________________________________ Added: svn:mime-type ## -0,0 +1 ## +application/octet-stream \ No newline at end of property Index: vendor/dialog/1.3-20180621/po/ia.po =================================================================== --- vendor/dialog/1.3-20180621/po/ia.po (nonexistent) +++ vendor/dialog/1.3-20180621/po/ia.po (revision 339483) @@ -0,0 +1,111 @@ +# Interlingua translation of Dialog +# Copyright (C) 2012 Free Software Foundation, Inc. +# This file is distributed under the same license as the dialog package. +# Nik Kalach <nik.kalach@inbox.ru>, 2012. +# +msgid "" +msgstr "" +"Project-Id-Version: dialog 1.1.20080819\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2008-06-18 18:26-0400\n" +"PO-Revision-Date: 2012-12-04 00:56+0400\n" +"Last-Translator: Nik Kalach <nik.kalach@inbox.ru>\n" +"Language-Team: Interlingua <translation-team-ia@lists.sourceforge.net>\n" +"Language: ia\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: buttons.c:385 +msgid "Yes" +msgstr "Si" + +#: buttons.c:393 +msgid "No" +msgstr "No" + +#: buttons.c:401 +msgid "OK" +msgstr "OK" + +#: buttons.c:409 +msgid "Cancel" +msgstr "Annullar" + +#: buttons.c:417 +msgid "EXIT" +msgstr "SORTIR" + +#: buttons.c:425 +msgid "Extra" +msgstr "Extra" + +#: buttons.c:433 +msgid "Help" +msgstr "Adjuta" + +#. Headline "Month" +#: calendar.c:273 +msgid "Month" +msgstr "Mense" + +#. Headline "Year" +#: calendar.c:293 +msgid "Year" +msgstr "Anno" + +#: dialog.c:741 +msgid "Rename" +msgstr "Renominar" + +#: fselect.c:550 +msgid "Directories" +msgstr "Directorios" + +#: fselect.c:551 +msgid "Files" +msgstr "Files" + +#: mixedgauge.c:58 +msgid "Succeeded" +msgstr "Succedite" + +#: mixedgauge.c:61 +msgid "Failed" +msgstr "Fallite" + +#: mixedgauge.c:64 +msgid "Passed" +msgstr "Passate" + +#: mixedgauge.c:67 +msgid "Completed" +msgstr "Completate" + +#: mixedgauge.c:70 +msgid "Checked" +msgstr "Controlate" + +#: mixedgauge.c:73 +msgid "Done" +msgstr "Facite" + +#: mixedgauge.c:76 +msgid "Skipped" +msgstr "Saltate" + +#: mixedgauge.c:79 +msgid "In Progress" +msgstr "In curso" + +#: mixedgauge.c:85 +msgid "N/A" +msgstr "N/A" + +#: mixedgauge.c:193 +msgid "Overall Progress" +msgstr "Progresso general" + +#: textbox.c:489 +msgid "Search" +msgstr "Cerca" Property changes on: vendor/dialog/1.3-20180621/po/ia.po ___________________________________________________________________ Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Index: vendor/dialog/1.3-20180621/po/zh_TW.po =================================================================== Cannot display: file marked as a binary type. svn:mime-type = application/octet-stream Property changes on: vendor/dialog/1.3-20180621/po/zh_TW.po ___________________________________________________________________ Added: svn:mime-type ## -0,0 +1 ## +application/octet-stream \ No newline at end of property Index: vendor/dialog/1.3-20180621/po/cs.po =================================================================== Cannot display: file marked as a binary type. svn:mime-type = application/octet-stream Property changes on: vendor/dialog/1.3-20180621/po/cs.po ___________________________________________________________________ Added: svn:mime-type ## -0,0 +1 ## +application/octet-stream \ No newline at end of property Index: vendor/dialog/1.3-20180621/po/el.po =================================================================== Cannot display: file marked as a binary type. svn:mime-type = application/octet-stream Property changes on: vendor/dialog/1.3-20180621/po/el.po ___________________________________________________________________ Added: svn:mime-type ## -0,0 +1 ## +application/octet-stream \ No newline at end of property Index: vendor/dialog/1.3-20180621/po/sr.po =================================================================== Cannot display: file marked as a binary type. svn:mime-type = application/octet-stream Property changes on: vendor/dialog/1.3-20180621/po/sr.po ___________________________________________________________________ Added: svn:mime-type ## -0,0 +1 ## +application/octet-stream \ No newline at end of property Index: vendor/dialog/1.3-20180621/po/sk.po =================================================================== --- vendor/dialog/1.3-20180621/po/sk.po (nonexistent) +++ vendor/dialog/1.3-20180621/po/sk.po (revision 339483) @@ -0,0 +1,111 @@ +# Dialog +# Copyright 2003-2007,2008 # Thomas Dickey +# This file is distributed under the same license as the dialog package. +# Marián ÄŒavojský <preklad@cavo.sk>, 2011 +# +msgid "" +msgstr "" +"Project-Id-Version: dialog 1.1.20080819\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2008-06-18 18:26-0400\n" +"PO-Revision-Date: 2011-03-09 09:50+0100\n" +"Last-Translator: Marián ÄŒavojský <preklad@cavo.sk>\n" +"Language-Team: Slovak <sk-i18n@lists.linux.sk>\n" +"Language: sk\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: buttons.c:385 +msgid "Yes" +msgstr "Ãno" + +#: buttons.c:393 +msgid "No" +msgstr "Nie" + +#: buttons.c:401 +msgid "OK" +msgstr "OK" + +#: buttons.c:409 +msgid "Cancel" +msgstr "ZruÅ¡iÅ¥" + +#: buttons.c:417 +msgid "EXIT" +msgstr "VÃCHOD" + +#: buttons.c:425 +msgid "Extra" +msgstr "Extra" + +#: buttons.c:433 +msgid "Help" +msgstr "Pomoc" + +#. Headline "Month" +#: calendar.c:273 +msgid "Month" +msgstr "Mesiac" + +#. Headline "Year" +#: calendar.c:293 +msgid "Year" +msgstr "Rok" + +#: dialog.c:741 +msgid "Rename" +msgstr "PremenovaÅ¥" + +#: fselect.c:550 +msgid "Directories" +msgstr "Adresáre" + +#: fselect.c:551 +msgid "Files" +msgstr "Súbory" + +#: mixedgauge.c:58 +msgid "Succeeded" +msgstr "Vporiadku" + +#: mixedgauge.c:61 +msgid "Failed" +msgstr "S chybou" + +#: mixedgauge.c:64 +msgid "Passed" +msgstr "PreÅ¡lo" + +#: mixedgauge.c:67 +msgid "Completed" +msgstr "Skompletované" + +#: mixedgauge.c:70 +msgid "Checked" +msgstr "Skontrolované" + +#: mixedgauge.c:73 +msgid "Done" +msgstr "DokonÄené" + +#: mixedgauge.c:76 +msgid "Skipped" +msgstr "PreskoÄené" + +#: mixedgauge.c:79 +msgid "In Progress" +msgstr "Spracováva" + +#: mixedgauge.c:85 +msgid "N/A" +msgstr "N/A" + +#: mixedgauge.c:193 +msgid "Overall Progress" +msgstr "Celkový pokrok" + +#: textbox.c:489 +msgid "Search" +msgstr "VyhľadaÅ¥" Index: vendor/dialog/1.3-20180621/po/ar.po =================================================================== Cannot display: file marked as a binary type. svn:mime-type = application/octet-stream Property changes on: vendor/dialog/1.3-20180621/po/ar.po ___________________________________________________________________ Added: svn:mime-type ## -0,0 +1 ## +application/octet-stream \ No newline at end of property Index: vendor/dialog/1.3-20180621/po/bg.po =================================================================== Cannot display: file marked as a binary type. svn:mime-type = application/octet-stream Property changes on: vendor/dialog/1.3-20180621/po/bg.po ___________________________________________________________________ Added: svn:mime-type ## -0,0 +1 ## +application/octet-stream \ No newline at end of property Index: vendor/dialog/1.3-20180621/po/ca.po =================================================================== Cannot display: file marked as a binary type. svn:mime-type = application/octet-stream Property changes on: vendor/dialog/1.3-20180621/po/ca.po ___________________________________________________________________ Added: svn:mime-type ## -0,0 +1 ## +application/octet-stream \ No newline at end of property Index: vendor/dialog/1.3-20180621/po/cy.po =================================================================== Cannot display: file marked as a binary type. svn:mime-type = application/octet-stream Property changes on: vendor/dialog/1.3-20180621/po/cy.po ___________________________________________________________________ Added: svn:mime-type ## -0,0 +1 ## +application/octet-stream \ No newline at end of property Index: vendor/dialog/1.3-20180621/po/da.po =================================================================== Cannot display: file marked as a binary type. svn:mime-type = application/octet-stream Property changes on: vendor/dialog/1.3-20180621/po/da.po ___________________________________________________________________ Added: svn:mime-type ## -0,0 +1 ## +application/octet-stream \ No newline at end of property Index: vendor/dialog/1.3-20180621/po/eo.po =================================================================== Cannot display: file marked as a binary type. svn:mime-type = application/octet-stream Property changes on: vendor/dialog/1.3-20180621/po/eo.po ___________________________________________________________________ Added: svn:mime-type ## -0,0 +1 ## +application/octet-stream \ No newline at end of property Index: vendor/dialog/1.3-20180621/po/eu.po =================================================================== Cannot display: file marked as a binary type. svn:mime-type = application/octet-stream Property changes on: vendor/dialog/1.3-20180621/po/eu.po ___________________________________________________________________ Added: svn:mime-type ## -0,0 +1 ## +application/octet-stream \ No newline at end of property Index: vendor/dialog/1.3-20180621/po/fi.po =================================================================== Cannot display: file marked as a binary type. svn:mime-type = application/octet-stream Property changes on: vendor/dialog/1.3-20180621/po/fi.po ___________________________________________________________________ Added: svn:mime-type ## -0,0 +1 ## +application/octet-stream \ No newline at end of property Index: vendor/dialog/1.3-20180621/po/fr.po =================================================================== Cannot display: file marked as a binary type. svn:mime-type = application/octet-stream Property changes on: vendor/dialog/1.3-20180621/po/fr.po ___________________________________________________________________ Added: svn:mime-type ## -0,0 +1 ## +application/octet-stream \ No newline at end of property Index: vendor/dialog/1.3-20180621/po/ga.po =================================================================== Cannot display: file marked as a binary type. svn:mime-type = application/octet-stream Property changes on: vendor/dialog/1.3-20180621/po/ga.po ___________________________________________________________________ Added: svn:mime-type ## -0,0 +1 ## +application/octet-stream \ No newline at end of property Index: vendor/dialog/1.3-20180621/po/id.po =================================================================== Cannot display: file marked as a binary type. svn:mime-type = application/octet-stream Property changes on: vendor/dialog/1.3-20180621/po/id.po ___________________________________________________________________ Added: svn:mime-type ## -0,0 +1 ## +application/octet-stream \ No newline at end of property Index: vendor/dialog/1.3-20180621/po/is.po =================================================================== Cannot display: file marked as a binary type. svn:mime-type = application/octet-stream Property changes on: vendor/dialog/1.3-20180621/po/is.po ___________________________________________________________________ Added: svn:mime-type ## -0,0 +1 ## +application/octet-stream \ No newline at end of property Index: vendor/dialog/1.3-20180621/po/it.po =================================================================== Cannot display: file marked as a binary type. svn:mime-type = application/octet-stream Property changes on: vendor/dialog/1.3-20180621/po/it.po ___________________________________________________________________ Added: svn:mime-type ## -0,0 +1 ## +application/octet-stream \ No newline at end of property Index: vendor/dialog/1.3-20180621/po/ja.po =================================================================== Cannot display: file marked as a binary type. svn:mime-type = application/octet-stream Property changes on: vendor/dialog/1.3-20180621/po/ja.po ___________________________________________________________________ Added: svn:mime-type ## -0,0 +1 ## +application/octet-stream \ No newline at end of property Index: vendor/dialog/1.3-20180621/po/ku.po =================================================================== Cannot display: file marked as a binary type. svn:mime-type = application/octet-stream Property changes on: vendor/dialog/1.3-20180621/po/ku.po ___________________________________________________________________ Added: svn:mime-type ## -0,0 +1 ## +application/octet-stream \ No newline at end of property Index: vendor/dialog/1.3-20180621/po/makefile.inn =================================================================== Cannot display: file marked as a binary type. svn:mime-type = application/octet-stream Property changes on: vendor/dialog/1.3-20180621/po/makefile.inn ___________________________________________________________________ Added: svn:mime-type ## -0,0 +1 ## +application/octet-stream \ No newline at end of property Index: vendor/dialog/1.3-20180621/po/ms.po =================================================================== Cannot display: file marked as a binary type. svn:mime-type = application/octet-stream Property changes on: vendor/dialog/1.3-20180621/po/ms.po ___________________________________________________________________ Added: svn:mime-type ## -0,0 +1 ## +application/octet-stream \ No newline at end of property Index: vendor/dialog/1.3-20180621/po/nl.po =================================================================== Cannot display: file marked as a binary type. svn:mime-type = application/octet-stream Property changes on: vendor/dialog/1.3-20180621/po/nl.po ___________________________________________________________________ Added: svn:mime-type ## -0,0 +1 ## +application/octet-stream \ No newline at end of property Index: vendor/dialog/1.3-20180621/po/pl.po =================================================================== Cannot display: file marked as a binary type. svn:mime-type = application/octet-stream Property changes on: vendor/dialog/1.3-20180621/po/pl.po ___________________________________________________________________ Added: svn:mime-type ## -0,0 +1 ## +application/octet-stream \ No newline at end of property Index: vendor/dialog/1.3-20180621/po/pt_BR.po =================================================================== Cannot display: file marked as a binary type. svn:mime-type = application/octet-stream Property changes on: vendor/dialog/1.3-20180621/po/pt_BR.po ___________________________________________________________________ Added: svn:mime-type ## -0,0 +1 ## +application/octet-stream \ No newline at end of property Index: vendor/dialog/1.3-20180621/po/ru.po =================================================================== Cannot display: file marked as a binary type. svn:mime-type = application/octet-stream Property changes on: vendor/dialog/1.3-20180621/po/ru.po ___________________________________________________________________ Added: svn:mime-type ## -0,0 +1 ## +application/octet-stream \ No newline at end of property Index: vendor/dialog/1.3-20180621/po/sl.po =================================================================== --- vendor/dialog/1.3-20180621/po/sl.po (nonexistent) +++ vendor/dialog/1.3-20180621/po/sl.po (revision 339483) @@ -0,0 +1,112 @@ +# Slovenian translation for dialog. +# Copyright (C) 2003-2007, 2008 Thomas Dickey +# This file is distributed under the same license as the dialog package. +# Klemen KoÅ¡ir <klemen.kosir@gmx.com>, 2011. +msgid "" +msgstr "" +"Project-Id-Version: dialog 1.1.20080819\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2008-06-18 18:26-0400\n" +"PO-Revision-Date: 2011-02-12 20:17+0100\n" +"Last-Translator: Klemen KoÅ¡ir <klemen.kosir@gmx.com>\n" +"Language-Team: Slovenian <translation-team-sl@lists.sourceforge.net>\n" +"Language: sl\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=utf-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Poedit-Language: Slovenian\n" +"X-Poedit-Country: SLOVENIA\n" + +#: buttons.c:385 +msgid "Yes" +msgstr "Da" + +#: buttons.c:393 +msgid "No" +msgstr "Ne" + +#: buttons.c:401 +msgid "OK" +msgstr "V redu" + +#: buttons.c:409 +msgid "Cancel" +msgstr "PrekliÄi" + +#: buttons.c:417 +msgid "EXIT" +msgstr "IZHOD" + +#: buttons.c:425 +msgid "Extra" +msgstr "Dodatno" + +#: buttons.c:433 +msgid "Help" +msgstr "PomoÄ" + +#. Headline "Month" +#: calendar.c:273 +msgid "Month" +msgstr "Mesec" + +#. Headline "Year" +#: calendar.c:293 +msgid "Year" +msgstr "Leto" + +#: dialog.c:741 +msgid "Rename" +msgstr "Preimenuj" + +#: fselect.c:550 +msgid "Directories" +msgstr "Imeniki" + +#: fselect.c:551 +msgid "Files" +msgstr "Datoteke" + +#: mixedgauge.c:58 +msgid "Succeeded" +msgstr "Uspelo" + +#: mixedgauge.c:61 +msgid "Failed" +msgstr "Spodletelo" + +#: mixedgauge.c:64 +msgid "Passed" +msgstr "Prestalo" + +#: mixedgauge.c:67 +msgid "Completed" +msgstr "KonÄano" + +#: mixedgauge.c:70 +msgid "Checked" +msgstr "Preverjeno" + +#: mixedgauge.c:73 +msgid "Done" +msgstr "Opravljeno" + +#: mixedgauge.c:76 +msgid "Skipped" +msgstr "PreskoÄeno" + +#: mixedgauge.c:79 +msgid "In Progress" +msgstr "V teku" + +#: mixedgauge.c:85 +msgid "N/A" +msgstr "N/A" + +#: mixedgauge.c:193 +msgid "Overall Progress" +msgstr "Skupni napredek" + +#: textbox.c:489 +msgid "Search" +msgstr "Iskanje" Index: vendor/dialog/1.3-20180621/po/sq.po =================================================================== Cannot display: file marked as a binary type. svn:mime-type = application/octet-stream Property changes on: vendor/dialog/1.3-20180621/po/sq.po ___________________________________________________________________ Added: svn:mime-type ## -0,0 +1 ## +application/octet-stream \ No newline at end of property Index: vendor/dialog/1.3-20180621/po/sv.po =================================================================== Cannot display: file marked as a binary type. svn:mime-type = application/octet-stream Property changes on: vendor/dialog/1.3-20180621/po/sv.po ___________________________________________________________________ Added: svn:mime-type ## -0,0 +1 ## +application/octet-stream \ No newline at end of property Index: vendor/dialog/1.3-20180621/po/sw.po =================================================================== Cannot display: file marked as a binary type. svn:mime-type = application/octet-stream Property changes on: vendor/dialog/1.3-20180621/po/sw.po ___________________________________________________________________ Added: svn:mime-type ## -0,0 +1 ## +application/octet-stream \ No newline at end of property Index: vendor/dialog/1.3-20180621/po/th.po =================================================================== Cannot display: file marked as a binary type. svn:mime-type = application/octet-stream Property changes on: vendor/dialog/1.3-20180621/po/th.po ___________________________________________________________________ Added: svn:mime-type ## -0,0 +1 ## +application/octet-stream \ No newline at end of property Index: vendor/dialog/1.3-20180621/po/zh_CN.po =================================================================== Cannot display: file marked as a binary type. svn:mime-type = application/octet-stream Property changes on: vendor/dialog/1.3-20180621/po/zh_CN.po ___________________________________________________________________ Added: svn:mime-type ## -0,0 +1 ## +application/octet-stream \ No newline at end of property Index: vendor/dialog/1.3-20180621/po/POTFILES.in =================================================================== Cannot display: file marked as a binary type. svn:mime-type = application/octet-stream Property changes on: vendor/dialog/1.3-20180621/po/POTFILES.in ___________________________________________________________________ Added: svn:mime-type ## -0,0 +1 ## +application/octet-stream \ No newline at end of property Index: vendor/dialog/1.3-20180621/po/be@latin.po =================================================================== --- vendor/dialog/1.3-20180621/po/be@latin.po (nonexistent) +++ vendor/dialog/1.3-20180621/po/be@latin.po (revision 339483) @@ -0,0 +1,109 @@ +# Dialog +# Copyright 2003-2006,2007 # Thomas Dickey +# Ihar Hrachyshka <ihar.hrachyshka@gmail.com>, 2007. +# +msgid "" +msgstr "" +"Project-Id-Version: dialog 1.1.20070704\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2008-06-18 18:26-0400\n" +"PO-Revision-Date: 2007-12-03 01:13+0200\n" +"Last-Translator: Ihar Hrachyshka <ihar.hrachyshka@gmail.com>\n" +"Language-Team: Belarusian (Latin script) <translation-team-be-latin@lists.sourceforge.net>\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: buttons.c:385 +msgid "Yes" +msgstr "Tak" + +#: buttons.c:393 +msgid "No" +msgstr "Nie" + +#: buttons.c:401 +msgid "OK" +msgstr "OK" + +#: buttons.c:409 +msgid "Cancel" +msgstr "Anuluj" + +#: buttons.c:417 +msgid "EXIT" +msgstr "VYCHAD" + +#: buttons.c:425 +msgid "Extra" +msgstr "Dadatkova" + +#: buttons.c:433 +msgid "Help" +msgstr "Dapamoha" + +#. Headline "Month" +#: calendar.c:273 +msgid "Month" +msgstr "Miesiac" + +#. Headline "Year" +#: calendar.c:293 +msgid "Year" +msgstr "Hod" + +#: dialog.c:741 +msgid "Rename" +msgstr "Źmiani nazvu" + +#: fselect.c:550 +msgid "Directories" +msgstr "Katalohi" + +#: fselect.c:551 +msgid "Files" +msgstr "FajÅ‚y" + +#: mixedgauge.c:58 +msgid "Succeeded" +msgstr "PaÅ›piachova" + +#: mixedgauge.c:61 +msgid "Failed" +msgstr "NiaÅ­daÅ‚a" + +#: mixedgauge.c:64 +msgid "Passed" +msgstr "Projdziena" + +#: mixedgauge.c:67 +msgid "Completed" +msgstr "SkonÄana" + +#: mixedgauge.c:70 +msgid "Checked" +msgstr "Pravierana" + +#: mixedgauge.c:73 +msgid "Done" +msgstr "Zroblena" + +#: mixedgauge.c:76 +msgid "Skipped" +msgstr "Abminuta" + +#: mixedgauge.c:79 +msgid "In Progress" +msgstr "DziejniÄaje" + +#: mixedgauge.c:85 +msgid "N/A" +msgstr "Niama" + +#: mixedgauge.c:193 +msgid "Overall Progress" +msgstr "Ahulny prahres" + +#: textbox.c:489 +msgid "Search" +msgstr "Å ukaj" Index: vendor/dialog/1.3-20180621/po/et.po =================================================================== Cannot display: file marked as a binary type. svn:mime-type = application/octet-stream Property changes on: vendor/dialog/1.3-20180621/po/et.po ___________________________________________________________________ Added: svn:mime-type ## -0,0 +1 ## +application/octet-stream \ No newline at end of property Index: vendor/dialog/1.3-20180621/po/hi.po =================================================================== Cannot display: file marked as a binary type. svn:mime-type = application/octet-stream Property changes on: vendor/dialog/1.3-20180621/po/hi.po ___________________________________________________________________ Added: svn:mime-type ## -0,0 +1 ## +application/octet-stream \ No newline at end of property Index: vendor/dialog/1.3-20180621/po/mg.po =================================================================== Cannot display: file marked as a binary type. svn:mime-type = application/octet-stream Property changes on: vendor/dialog/1.3-20180621/po/mg.po ___________________________________________________________________ Added: svn:mime-type ## -0,0 +1 ## +application/octet-stream \ No newline at end of property Index: vendor/dialog/1.3-20180621/po/mk.po =================================================================== Cannot display: file marked as a binary type. svn:mime-type = application/octet-stream Property changes on: vendor/dialog/1.3-20180621/po/mk.po ___________________________________________________________________ Added: svn:mime-type ## -0,0 +1 ## +application/octet-stream \ No newline at end of property Index: vendor/dialog/1.3-20180621/po/nb.po =================================================================== Cannot display: file marked as a binary type. svn:mime-type = application/octet-stream Property changes on: vendor/dialog/1.3-20180621/po/nb.po ___________________________________________________________________ Added: svn:mime-type ## -0,0 +1 ## +application/octet-stream \ No newline at end of property Index: vendor/dialog/1.3-20180621/po/pt.po =================================================================== Cannot display: file marked as a binary type. svn:mime-type = application/octet-stream Property changes on: vendor/dialog/1.3-20180621/po/pt.po ___________________________________________________________________ Added: svn:mime-type ## -0,0 +1 ## +application/octet-stream \ No newline at end of property Index: vendor/dialog/1.3-20180621/po/rm.po =================================================================== Cannot display: file marked as a binary type. svn:mime-type = application/octet-stream Property changes on: vendor/dialog/1.3-20180621/po/rm.po ___________________________________________________________________ Added: svn:mime-type ## -0,0 +1 ## +application/octet-stream \ No newline at end of property Index: vendor/dialog/1.3-20180621/po/rw.po =================================================================== Cannot display: file marked as a binary type. svn:mime-type = application/octet-stream Property changes on: vendor/dialog/1.3-20180621/po/rw.po ___________________________________________________________________ Added: svn:mime-type ## -0,0 +1 ## +application/octet-stream \ No newline at end of property Index: vendor/dialog/1.3-20180621/po/uk.po =================================================================== Cannot display: file marked as a binary type. svn:mime-type = application/octet-stream Property changes on: vendor/dialog/1.3-20180621/po/uk.po ___________________________________________________________________ Added: svn:mime-type ## -0,0 +1 ## +application/octet-stream \ No newline at end of property Index: vendor/dialog/1.3-20180621/po/vi.po =================================================================== Cannot display: file marked as a binary type. svn:mime-type = application/octet-stream Property changes on: vendor/dialog/1.3-20180621/po/vi.po ___________________________________________________________________ Added: svn:mime-type ## -0,0 +1 ## +application/octet-stream \ No newline at end of property Index: vendor/dialog/1.3-20180621/po/wa.po =================================================================== Cannot display: file marked as a binary type. svn:mime-type = application/octet-stream Property changes on: vendor/dialog/1.3-20180621/po/wa.po ___________________________________________________________________ Added: svn:mime-type ## -0,0 +1 ## +application/octet-stream \ No newline at end of property Index: vendor/dialog/1.3-20180621/prgbox.c =================================================================== --- vendor/dialog/1.3-20180621/prgbox.c (nonexistent) +++ vendor/dialog/1.3-20180621/prgbox.c (revision 339483) @@ -0,0 +1,117 @@ +/* + * $Id: prgbox.c,v 1.13 2016/01/27 01:37:26 tom Exp $ + * + * prgbox.c -- implements the prg box + * + * Copyright 2011-2014,2016 Thomas E. Dickey + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License, version 2.1 + * as published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this program; if not, write to + * Free Software Foundation, Inc. + * 51 Franklin St., Fifth Floor + * Boston, MA 02110, USA. + */ + +#include <dialog.h> + +static void +reapchild(int sig) +{ + (void) sig; +} + +/* + * Open a pipe which ties stderr and stdout together. + */ +FILE * +dlg_popen(const char *command, const char *type) +{ + FILE *result = 0; + int fd[2]; + char *blob; + char **argv; + + if ((*type == 'r' || *type != 'w') && pipe(fd) == 0) { + switch (fork()) { + case -1: /* Error. */ + (void) close(fd[0]); + (void) close(fd[1]); + break; + case 0: /* child. */ + if (*type == 'r') { + if (fd[1] != STDOUT_FILENO) { + (void) dup2(fd[1], STDOUT_FILENO); + (void) close(fd[1]); + } + (void) dup2(STDOUT_FILENO, STDERR_FILENO); + (void) close(fd[0]); + } else { + if (fd[0] != STDIN_FILENO) { + (void) dup2(fd[0], STDIN_FILENO); + (void) close(fd[0]); + } + (void) close(fd[1]); + (void) close(STDERR_FILENO); + } + /* + * Bourne shell needs "-c" option to force it to use only the + * given command. Also, it needs the command to be parsed into + * tokens. + */ + if ((blob = malloc(10 + strlen(command))) != 0) { + sprintf(blob, "sh -c \"%s\"", command); + argv = dlg_string_to_argv(blob); + execvp("sh", argv); + } + _exit(127); + /* NOTREACHED */ + default: /* parent */ + if (*type == 'r') { + result = fdopen(fd[0], type); + (void) close(fd[1]); + } else { + result = fdopen(fd[1], type); + (void) close(fd[0]); + } + break; + } + } + + return result; +} + +/* + * Display text from a pipe in a scrolling window. + */ +int +dialog_prgbox(const char *title, + const char *cprompt, + const char *command, + int height, + int width, + int pauseopt) +{ + int code; + FILE *fp; + void (*oldreaper) (int) = signal(SIGCHLD, reapchild); + + fp = dlg_popen(command, "r"); + if (fp == NULL) + dlg_exiterr("pipe open failed: %s", command); + + code = dlg_progressbox(title, cprompt, height, width, pauseopt, fp); + + pclose(fp); + signal(SIGCHLD, oldreaper); + + return code; +} Index: vendor/dialog/1.3-20180621/progressbox.c =================================================================== --- vendor/dialog/1.3-20180621/progressbox.c (nonexistent) +++ vendor/dialog/1.3-20180621/progressbox.c (revision 339483) @@ -0,0 +1,477 @@ +/* + * $Id: progressbox.c,v 1.47 2018/06/21 09:14:47 tom Exp $ + * + * progressbox.c -- implements the progress box + * + * Copyright 2006-2014,2018 Thomas E. Dickey + * Copyright 2005 Valery Reznic + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as + * published by the Free Software Foundation; either version 2.1 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this program; if not, write to + * Free Software Foundation, Inc. + * 51 Franklin St., Fifth Floor + * Boston, MA 02110, USA. + */ + +#include <dialog.h> +#include <dlg_keys.h> + +#ifdef KEY_RESIZE +#include <errno.h> +#endif + +#define MIN_HIGH (4) +#define MIN_WIDE (10 + 2 * (2 + MARGIN)) + +#ifdef KEY_RESIZE +typedef struct _wrote { + struct _wrote *link; + char *text; +} WROTE; +#endif + +typedef struct { + DIALOG_CALLBACK obj; + WINDOW *text; + char *prompt; + int high, wide; + int old_high, old_wide; + char line[MAX_LEN + 1]; + int is_eof; +#ifdef KEY_RESIZE + WROTE *wrote; +#endif +} MY_OBJ; + +static void +free_obj(MY_OBJ * obj) +{ + dlg_del_window(obj->obj.win); + free(obj->prompt); +#ifdef KEY_RESIZE + while (obj->wrote) { + WROTE *wrote = obj->wrote; + obj->wrote = wrote->link; + free(wrote->text); + free(wrote); + } +#endif + free(obj); +} + +static void +restart_obj(MY_OBJ * obj) +{ + free(obj->prompt); + obj->high = obj->old_high; + obj->wide = obj->old_wide; + dlg_clear(); + dlg_del_window(obj->obj.win); +} + +static void +start_obj(MY_OBJ * obj, const char *title, const char *cprompt) +{ + int y, x, thigh; + int i; + + obj->prompt = dlg_strclone(cprompt); + dlg_tab_correct_str(obj->prompt); + dlg_auto_size(title, obj->prompt, &obj->high, &obj->wide, MIN_HIGH, MIN_WIDE); + + dlg_print_size(obj->high, obj->wide); + dlg_ctl_size(obj->high, obj->wide); + + x = dlg_box_x_ordinate(obj->wide); + y = dlg_box_y_ordinate(obj->high); + thigh = obj->high - (2 * MARGIN); + + obj->obj.win = dlg_new_window(obj->high, obj->wide, y, x); + + dlg_draw_box2(obj->obj.win, + 0, 0, + obj->high, obj->wide, + dialog_attr, + border_attr, + border2_attr); + dlg_draw_title(obj->obj.win, title); + dlg_draw_helpline(obj->obj.win, FALSE); + + if (obj->prompt[0] != '\0') { + int y2, x2; + + dlg_attrset(obj->obj.win, dialog_attr); + dlg_print_autowrap(obj->obj.win, obj->prompt, obj->high, obj->wide); + getyx(obj->obj.win, y2, x2); + (void) x2; + ++y2; + wmove(obj->obj.win, y2, MARGIN); + for (i = 0; i < getmaxx(obj->obj.win) - 2 * MARGIN; i++) + (void) waddch(obj->obj.win, dlg_boxchar(ACS_HLINE)); + y += y2; + thigh -= y2; + } + + /* Create window for text region, used for scrolling text */ + obj->text = dlg_sub_window(obj->obj.win, + thigh, + obj->wide - (2 * MARGIN), + y + MARGIN, + x + MARGIN); + + (void) wrefresh(obj->obj.win); + + (void) wmove(obj->obj.win, getmaxy(obj->text), (MARGIN + 1)); + (void) wnoutrefresh(obj->obj.win); + + dlg_attr_clear(obj->text, getmaxy(obj->text), getmaxx(obj->text), dialog_attr); +} + +/* + * Return current line of text. + */ +static char * +get_line(MY_OBJ * obj, int *restart) +{ + FILE *fp = obj->obj.input; + int col = 0; + int j, tmpint, ch; + char *result = obj->line; + + *restart = 0; + for (;;) { + ch = getc(fp); +#ifdef KEY_RESIZE + /* SIGWINCH may have interrupted this - try to ignore if resizable */ + if (ferror(fp)) { + switch (errno) { + case EINTR: + clearerr(fp); + continue; + default: + break; + } + } +#endif + if (feof(fp) || ferror(fp)) { + obj->is_eof = 1; + if (!col) { + result = NULL; + } + break; + } + if (ch == '\n') + break; + if (ch == '\r') + break; + if (col >= MAX_LEN) + continue; + if ((ch == TAB) && (dialog_vars.tab_correct)) { + tmpint = dialog_state.tab_len + - (col % dialog_state.tab_len); + for (j = 0; j < tmpint; j++) { + if (col < MAX_LEN) { + obj->line[col] = ' '; + ++col; + } else { + break; + } + } + } else { + obj->line[col] = (char) ch; + ++col; + } + } + + obj->line[col] = '\0'; + +#ifdef KEY_RESIZE + if (result != NULL) { + WINDOW *win = obj->text; + WROTE *wrote = dlg_calloc(WROTE, 1); + + if (wrote != 0) { + wrote->text = dlg_strclone(obj->line); + wrote->link = obj->wrote; + obj->wrote = wrote; + } + + nodelay(win, TRUE); + if ((ch = wgetch(win)) == KEY_RESIZE) { + *restart = 1; + } + nodelay(win, FALSE); + } +#endif + return result; +} + +/* + * Print a new line of text. + */ +static void +print_line(MY_OBJ * obj, const char *line, int row) +{ + int width = obj->wide - (2 * MARGIN); + int limit = MIN((int) strlen(line), width - 2); + + (void) wmove(obj->text, row, 0); /* move cursor to correct line */ + wprintw(obj->text, " %.*s", limit, line); + wclrtoeol(obj->text); +} + +#ifdef KEY_RESIZE +static int +wrote_size(MY_OBJ * obj, int want) +{ + int result = 0; + WROTE *wrote = obj->wrote; + while (wrote != NULL && want > 0) { + wrote = wrote->link; + want--; + result++; + } + return result; +} + +static const char * +wrote_data(MY_OBJ * obj, int want) +{ + const char *result = NULL; + WROTE *wrote = obj->wrote; + while (wrote != NULL && want > 0) { + result = wrote->text; + wrote = wrote->link; + want--; + } + return result; +} + +static int +reprint_lines(MY_OBJ * obj, int buttons) +{ + int want = getmaxy(obj->text) - (buttons ? 2 : 0); + int have = wrote_size(obj, want); + int n; + for (n = 0; n < have; ++n) { + print_line(obj, wrote_data(obj, have - n), n); + } + (void) wrefresh(obj->text); + return have; +} +#endif + +static int +pause_for_ok(MY_OBJ * obj, const char *title, const char *cprompt) +{ + /* *INDENT-OFF* */ + static DLG_KEYS_BINDING binding[] = { + HELPKEY_BINDINGS, + ENTERKEY_BINDINGS, + TRAVERSE_BINDINGS, + END_KEYS_BINDING + }; + /* *INDENT-ON* */ + + int button; + int key = 0, fkey; + int result = DLG_EXIT_UNKNOWN; + const char **buttons = dlg_ok_label(); + int check; + bool save_nocancel = dialog_vars.nocancel; + bool redraw = TRUE; + + dialog_vars.nocancel = TRUE; + button = dlg_default_button(); + +#ifdef KEY_RESIZE + restart: +#endif + + dlg_register_window(obj->obj.win, "progressbox", binding); + dlg_register_buttons(obj->obj.win, "progressbox", buttons); + + dlg_draw_bottom_box2(obj->obj.win, border_attr, border2_attr, dialog_attr); + + while (result == DLG_EXIT_UNKNOWN) { + if (redraw) { + redraw = FALSE; + if (button < 0) + button = 0; + dlg_draw_buttons(obj->obj.win, + obj->high - 2, 0, + buttons, button, + FALSE, obj->wide); + } + + key = dlg_mouse_wgetch(obj->obj.win, &fkey); + if (dlg_result_key(key, fkey, &result)) + break; + + if (!fkey && (check = dlg_char_to_button(key, buttons)) >= 0) { + result = dlg_ok_buttoncode(check); + break; + } + + if (fkey) { + switch (key) { + case DLGK_FIELD_NEXT: + button = dlg_next_button(buttons, button); + redraw = TRUE; + break; + case DLGK_FIELD_PREV: + button = dlg_prev_button(buttons, button); + redraw = TRUE; + break; + case DLGK_ENTER: + result = dlg_ok_buttoncode(button); + break; +#ifdef KEY_RESIZE + case KEY_RESIZE: + dlg_will_resize(obj->obj.win); + restart_obj(obj); + start_obj(obj, title, cprompt); + reprint_lines(obj, TRUE); + redraw = TRUE; + goto restart; +#endif + default: + if (is_DLGK_MOUSE(key)) { + result = dlg_ok_buttoncode(key - M_EVENT); + if (result < 0) + result = DLG_EXIT_OK; + } else { + beep(); + } + break; + } + + } else { + beep(); + } + } + dlg_mouse_free_regions(); + dlg_unregister_window(obj->obj.win); + + dialog_vars.nocancel = save_nocancel; + return result; +} + +int +dlg_progressbox(const char *title, + const char *cprompt, + int height, + int width, + int pauseopt, + FILE *fp) +{ + int i; + MY_OBJ *obj; + int again = 0; + int toprow = 0; + int result; + + DLG_TRACE(("# progressbox args:\n")); + DLG_TRACE2S("title", title); + DLG_TRACE2S("message", cprompt); + DLG_TRACE2N("height", height); + DLG_TRACE2N("width", width); + DLG_TRACE2N("pause", pauseopt); + DLG_TRACE2N("fp", fp ? fileno(fp) : -1); + + obj = dlg_calloc(MY_OBJ, 1); + assert_ptr(obj, "dlg_progressbox"); + obj->obj.input = fp; + + obj->high = height; + obj->wide = width; + +#ifdef KEY_RESIZE + obj->old_high = height; + obj->old_wide = width; + + curs_set(0); + restart: +#endif + + start_obj(obj, title, cprompt); +#ifdef KEY_RESIZE + if (again) { + toprow = reprint_lines(obj, FALSE); + } +#endif + + for (i = toprow; get_line(obj, &again); i++) { +#ifdef KEY_RESIZE + if (again) { + dlg_will_resize(obj->obj.win); + restart_obj(obj); + goto restart; + } +#endif + if (i < getmaxy(obj->text)) { + print_line(obj, obj->line, i); + } else { + scrollok(obj->text, TRUE); + scroll(obj->text); + scrollok(obj->text, FALSE); + print_line(obj, obj->line, getmaxy(obj->text) - 1); + } + (void) wrefresh(obj->text); + if (obj->is_eof) + break; + } + + dlg_trace_win(obj->obj.win); + curs_set(1); + + if (pauseopt) { + int need = 1 + MARGIN; + int base = getmaxy(obj->text) - need; + if (i >= base) { + i -= base; + if (i > need) + i = need; + if (i > 0) { + scrollok(obj->text, TRUE); + } + wscrl(obj->text, i); + } + (void) wrefresh(obj->text); + result = pause_for_ok(obj, title, cprompt); + } else { + wrefresh(obj->obj.win); + result = DLG_EXIT_OK; + } + + free_obj(obj); + + return result; +} + +/* + * Display text from a stdin in a scrolling window. + */ +int +dialog_progressbox(const char *title, const char *cprompt, int height, int width) +{ + int result; + result = dlg_progressbox(title, + cprompt, + height, + width, + FALSE, + dialog_state.pipe_input); + dialog_state.pipe_input = 0; + return result; +} Index: vendor/dialog/1.3-20180621/rangebox.c =================================================================== --- vendor/dialog/1.3-20180621/rangebox.c (nonexistent) +++ vendor/dialog/1.3-20180621/rangebox.c (revision 339483) @@ -0,0 +1,432 @@ +/* + * $Id: rangebox.c,v 1.24 2018/06/19 22:57:01 tom Exp $ + * + * rangebox.c -- implements the rangebox dialog + * + * Copyright 2012-2017,2018 Thomas E. Dickey + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License, version 2.1 + * as published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this program; if not, write to + * Free Software Foundation, Inc. + * 51 Franklin St., Fifth Floor + * Boston, MA 02110, USA. + */ + +#include <dialog.h> +#include <dlg_keys.h> + +#define ONE_HIGH 1 + +#define MIN_HIGH (ONE_HIGH + 1 + (4 * MARGIN)) +#define MIN_WIDE (10 + 2 + (2 * MARGIN)) + +struct _box; + +typedef struct _box { + WINDOW *parent; + WINDOW *window; + int x; + int y; + int width; + int height; + int period; + int value; +} BOX; + +typedef struct { + /* window in which the value and slider are drawn */ + WINDOW *window; + int min_value; + int max_value; + /* position and width of the numeric field */ + int value_x; + int value_len; + int value_col; + /* position and width of the slider field */ + int slide_x; + int slide_y; + int slide_len; + /* current value drawn */ + int current; + /* value to add to make slider move by one cell */ + int slide_inc; +} VALUE; + +static int +digits_of(int value) +{ + char temp[80]; + sprintf(temp, "%d", value); + return (int) strlen(temp); +} + +static int +digit_of(VALUE * data) +{ + int col = data->value_col; + int result = 1; + + while (++col < data->value_len) { + result *= 10; + } + return result; +} + +static bool +set_digit(VALUE * data, int chr) +{ + bool result = FALSE; + char buffer[80]; + long check; + char *next = 0; + + sprintf(buffer, "%*d", data->value_len, data->current); + buffer[data->value_col] = (char) chr; + check = strtol(buffer, &next, 10); + if (next == 0 || *next == '\0') { + if ((check <= (long) data->max_value) && + (check >= (long) data->min_value)) { + result = TRUE; + data->current = (int) check; + } + } + + return result; +} + +/* + * This is similar to the gauge code, but differs in the way the number + * is displayed, etc. + */ +static void +draw_value(VALUE * data, int value) +{ + if (value != data->current) { + WINDOW *win = data->window; + int y, x; + int n; + int ranges = (data->max_value + 1 - data->min_value); + int offset = (value - data->min_value); + int scaled; + + getyx(win, y, x); + + if (ranges > data->slide_len) { + scaled = (offset + data->slide_inc) / data->slide_inc; + } else if (ranges < data->slide_len) { + scaled = (offset + 1) * data->slide_inc; + } else { + scaled = offset; + } + + dlg_attrset(win, gauge_attr); + wmove(win, data->slide_y, data->slide_x); + for (n = 0; n < data->slide_len; ++n) { + (void) waddch(win, ' '); + } + wmove(win, data->slide_y, data->value_x); + wprintw(win, "%*d", data->value_len, value); + if ((gauge_attr & A_REVERSE) != 0) { + dlg_attroff(win, A_REVERSE); + } else { + dlg_attrset(win, A_REVERSE); + } + wmove(win, data->slide_y, data->slide_x); + for (n = 0; n < scaled; ++n) { + chtype ch2 = winch(win); + if (gauge_attr & A_REVERSE) { + ch2 &= ~A_REVERSE; + } + (void) waddch(win, ch2); + } + dlg_attrset(win, dialog_attr); + + wmove(win, y, x); + data->current = value; + + DLG_TRACE(("# drew %d offset %d scaled %d limit %d inc %d\n", + value, + offset, + scaled, + data->slide_len, + data->slide_inc)); + + dlg_trace_win(win); + } +} + +/* + * Allow the user to select from a range of values, e.g., using a slider. + */ +int +dialog_rangebox(const char *title, + const char *cprompt, + int height, + int width, + int min_value, + int max_value, + int default_value) +{ + /* *INDENT-OFF* */ + static DLG_KEYS_BINDING binding[] = { + DLG_KEYS_DATA( DLGK_DELETE_RIGHT,KEY_DC ), + HELPKEY_BINDINGS, + ENTERKEY_BINDINGS, + TOGGLEKEY_BINDINGS, + DLG_KEYS_DATA( DLGK_FIELD_NEXT, CHR_NEXT ), + DLG_KEYS_DATA( DLGK_FIELD_NEXT, KEY_RIGHT ), + DLG_KEYS_DATA( DLGK_FIELD_NEXT, TAB ), + DLG_KEYS_DATA( DLGK_FIELD_PREV, CHR_BACKSPACE ), + DLG_KEYS_DATA( DLGK_FIELD_PREV, CHR_PREVIOUS ), + DLG_KEYS_DATA( DLGK_FIELD_PREV, KEY_BTAB ), + DLG_KEYS_DATA( DLGK_FIELD_PREV, KEY_LEFT ), + DLG_KEYS_DATA( DLGK_ITEM_FIRST, KEY_HOME), + DLG_KEYS_DATA( DLGK_ITEM_LAST, KEY_END), + DLG_KEYS_DATA( DLGK_ITEM_LAST, KEY_LL ), + DLG_KEYS_DATA( DLGK_ITEM_NEXT, '+'), + DLG_KEYS_DATA( DLGK_ITEM_NEXT, KEY_DOWN), + DLG_KEYS_DATA( DLGK_ITEM_PREV, '-' ), + DLG_KEYS_DATA( DLGK_ITEM_PREV, KEY_UP ), + DLG_KEYS_DATA( DLGK_PAGE_NEXT, KEY_NEXT), + DLG_KEYS_DATA( DLGK_PAGE_NEXT, KEY_NPAGE), + DLG_KEYS_DATA( DLGK_PAGE_PREV, KEY_PPAGE ), + DLG_KEYS_DATA( DLGK_PAGE_PREV, KEY_PREVIOUS ), + END_KEYS_BINDING + }; + /* *INDENT-ON* */ + +#ifdef KEY_RESIZE + int old_height = height; + int old_width = width; +#endif + VALUE data; + int key = 0, key2, fkey; + int button; + int result = DLG_EXIT_UNKNOWN; + WINDOW *dialog; + int state = dlg_default_button(); + const char **buttons = dlg_ok_labels(); + char *prompt; + char buffer[MAX_LEN]; + int cur_value = default_value; + int usable; + int ranges; + int yorg, xorg; + + DLG_TRACE(("# tailbox args:\n")); + DLG_TRACE2S("title", title); + DLG_TRACE2S("message", cprompt); + DLG_TRACE2N("height", height); + DLG_TRACE2N("width", width); + DLG_TRACE2N("minval", min_value); + DLG_TRACE2N("maxval", max_value); + DLG_TRACE2N("default", default_value); + + if (max_value < min_value) + max_value = min_value; + if (cur_value > max_value) + cur_value = max_value; + if (cur_value < min_value) + cur_value = min_value; + + dlg_does_output(); + +#ifdef KEY_RESIZE + retry: +#endif + + prompt = dlg_strclone(cprompt); + dlg_auto_size(title, prompt, &height, &width, 0, 0); + + height += MIN_HIGH; + if (width < MIN_WIDE) + width = MIN_WIDE; + dlg_button_layout(buttons, &width); + dlg_print_size(height, width); + dlg_ctl_size(height, width); + + dialog = dlg_new_window(height, width, + yorg = dlg_box_y_ordinate(height), + xorg = dlg_box_x_ordinate(width)); + + data.window = dialog; + + data.min_value = min_value; + data.max_value = max_value; + + usable = (width - 2 - 4 * MARGIN); + ranges = max_value - min_value + 1; + + /* + * Center the number after allowing for its maximum number of digits. + */ + data.value_len = digits_of(max_value); + if (digits_of(min_value) > data.value_len) + data.value_len = digits_of(min_value); + data.value_x = (usable - data.value_len) / 2 + MARGIN; + data.value_col = data.value_len - 1; + + /* + * The slider is scaled, to try to use the width of the dialog. + */ + if (ranges > usable) { + data.slide_inc = (ranges + usable - 1) / usable; + data.slide_len = 1 + ranges / data.slide_inc; + } else if (ranges < usable) { + data.slide_inc = usable / ranges; + data.slide_len = ranges * data.slide_inc; + } else { + data.slide_inc = 1; + data.slide_len = usable; + } + data.slide_x = (usable - data.slide_len) / 2 + MARGIN + 2; + data.slide_y = height - 5; + + data.current = cur_value - 1; + + dlg_register_window(dialog, "rangebox", binding); + dlg_register_buttons(dialog, "rangebox", buttons); + + dlg_draw_box2(dialog, 0, 0, height, width, dialog_attr, border_attr, border2_attr); + dlg_mouse_setbase(xorg, yorg); + dlg_mouse_mkregion(data.slide_y - 1, data.slide_x - 1, 3, usable + 2, 'i'); + dlg_draw_box2(dialog, + height - 6, data.slide_x - MARGIN, + 2 + MARGIN, data.slide_len + 2 * MARGIN, + dialog_attr, + border_attr, + border2_attr); + dlg_draw_bottom_box2(dialog, border_attr, border2_attr, dialog_attr); + dlg_draw_title(dialog, title); + dlg_draw_helpline(dialog, FALSE); + + dlg_attrset(dialog, dialog_attr); + dlg_print_autowrap(dialog, prompt, height, width); + + dlg_trace_win(dialog); + while (result == DLG_EXIT_UNKNOWN) { + draw_value(&data, cur_value); + button = (state < 0) ? 0 : state; + dlg_draw_buttons(dialog, height - 2, 0, buttons, button, FALSE, width); + if (state < 0) { + data.value_col = data.value_len + state; + wmove(dialog, data.slide_y, data.value_x + data.value_col); + } + + key = dlg_mouse_wgetch(dialog, &fkey); + if (dlg_result_key(key, fkey, &result)) + break; + + if ((key2 = dlg_char_to_button(key, buttons)) >= 0) { + result = key2; + } else { + /* handle function-keys */ + if (fkey) { + switch (key) { + case DLGK_TOGGLE: + case DLGK_ENTER: + result = dlg_ok_buttoncode(button); + break; + case DLGK_FIELD_PREV: + if (state < 0 && state > -data.value_len) { + --state; + } else { + state = dlg_prev_ok_buttonindex(state, -data.value_len); + } + break; + case DLGK_FIELD_NEXT: + if (state < 0) { + ++state; + } else { + state = dlg_next_ok_buttonindex(state, -data.value_len); + } + break; + case DLGK_ITEM_FIRST: + cur_value = min_value; + break; + case DLGK_ITEM_LAST: + cur_value = max_value; + break; + case DLGK_ITEM_PREV: + if (state < 0) { + cur_value -= digit_of(&data); + } else { + cur_value -= 1; + } + if (cur_value < min_value) + cur_value = min_value; + break; + case DLGK_ITEM_NEXT: + if (state < 0) { + cur_value += digit_of(&data); + } else { + cur_value += 1; + } + if (cur_value > max_value) + cur_value = max_value; + break; + case DLGK_PAGE_PREV: + cur_value -= data.slide_inc; + if (cur_value < min_value) + cur_value = min_value; + break; + case DLGK_PAGE_NEXT: + cur_value += data.slide_inc; + if (cur_value > max_value) + cur_value = max_value; + break; +#ifdef KEY_RESIZE + case KEY_RESIZE: + dlg_will_resize(dialog); + /* reset data */ + height = old_height; + width = old_width; + /* repaint */ + free(prompt); + dlg_clear(); + dlg_del_window(dialog); + dlg_mouse_free_regions(); + goto retry; +#endif + case DLGK_MOUSE('i'): + state = -data.value_len; + break; + default: + if (is_DLGK_MOUSE(key)) { + result = dlg_ok_buttoncode(key - M_EVENT); + if (result < 0) + result = DLG_EXIT_OK; + } + break; + } + } else if (isdigit(key) && state < 0) { + if (set_digit(&data, key)) { + cur_value = data.current; + data.current--; + } + } else { + beep(); + } + } + } + + sprintf(buffer, "%d", cur_value); + dlg_add_result(buffer); + dlg_add_separator(); + dlg_add_last_key(-1); + + dlg_del_window(dialog); + dlg_mouse_free_regions(); + free(prompt); + + return result; +} Property changes on: vendor/dialog/1.3-20180621/rangebox.c ___________________________________________________________________ Added: fbsd:nokeywords ## -0,0 +1 ## +yes \ No newline at end of property Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Index: vendor/dialog/1.3-20180621/rc.c =================================================================== --- vendor/dialog/1.3-20180621/rc.c (nonexistent) +++ vendor/dialog/1.3-20180621/rc.c (revision 339483) @@ -0,0 +1,616 @@ +/* + * $Id: rc.c,v 1.53 2018/05/31 20:32:15 tom Exp $ + * + * rc.c -- routines for processing the configuration file + * + * Copyright 2000-2012,2018 Thomas E. Dickey + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License, version 2.1 + * as published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this program; if not, write to + * Free Software Foundation, Inc. + * 51 Franklin St., Fifth Floor + * Boston, MA 02110, USA. + * + * An earlier version of this program lists as authors + * Savio Lam (lam836@cs.cuhk.hk) + */ + +#include <dialog.h> + +#include <dlg_keys.h> + +#ifdef HAVE_COLOR +#include <dlg_colors.h> + +/* + * For matching color names with color values + */ +static const color_names_st color_names[] = +{ +#ifdef HAVE_USE_DEFAULT_COLORS + {"DEFAULT", -1}, +#endif + {"BLACK", COLOR_BLACK}, + {"RED", COLOR_RED}, + {"GREEN", COLOR_GREEN}, + {"YELLOW", COLOR_YELLOW}, + {"BLUE", COLOR_BLUE}, + {"MAGENTA", COLOR_MAGENTA}, + {"CYAN", COLOR_CYAN}, + {"WHITE", COLOR_WHITE}, +}; /* color names */ +#define COLOR_COUNT (sizeof(color_names) / sizeof(color_names[0])) +#endif /* HAVE_COLOR */ + +#define GLOBALRC "/etc/dialogrc" +#define DIALOGRC ".dialogrc" + +/* Types of values */ +#define VAL_INT 0 +#define VAL_STR 1 +#define VAL_BOOL 2 + +/* Type of line in configuration file */ +typedef enum { + LINE_ERROR = -1, + LINE_EQUALS, + LINE_EMPTY +} PARSE_LINE; + +/* number of configuration variables */ +#define VAR_COUNT (sizeof(vars) / sizeof(vars_st)) + +/* check if character is string quoting characters */ +#define isquote(c) ((c) == '"' || (c) == '\'') + +/* get last character of string */ +#define lastch(str) str[strlen(str)-1] + +/* + * Configuration variables + */ +typedef struct { + const char *name; /* name of configuration variable as in DIALOGRC */ + void *var; /* address of actual variable to change */ + int type; /* type of value */ + const char *comment; /* comment to put in "rc" file */ +} vars_st; + +/* + * This table should contain only references to dialog_state, since dialog_vars + * is reset specially in dialog.c before each widget. + */ +static const vars_st vars[] = +{ + {"aspect", + &dialog_state.aspect_ratio, + VAL_INT, + "Set aspect-ration."}, + + {"separate_widget", + &dialog_state.separate_str, + VAL_STR, + "Set separator (for multiple widgets output)."}, + + {"tab_len", + &dialog_state.tab_len, + VAL_INT, + "Set tab-length (for textbox tab-conversion)."}, + + {"visit_items", + &dialog_state.visit_items, + VAL_BOOL, + "Make tab-traversal for checklist, etc., include the list."}, + +#ifdef HAVE_COLOR + {"use_shadow", + &dialog_state.use_shadow, + VAL_BOOL, + "Shadow dialog boxes? This also turns on color."}, + + {"use_colors", + &dialog_state.use_colors, + VAL_BOOL, + "Turn color support ON or OFF"}, +#endif /* HAVE_COLOR */ +}; /* vars */ + +static int +skip_whitespace(char *str, int n) +{ + while (isblank(UCH(str[n])) && str[n] != '\0') + n++; + return n; +} + +static int +skip_keyword(char *str, int n) +{ + while (isalnum(UCH(str[n])) && str[n] != '\0') + n++; + return n; +} + +static int +find_vars(char *name) +{ + int result = -1; + unsigned i; + + for (i = 0; i < VAR_COUNT; i++) { + if (dlg_strcmp(vars[i].name, name) == 0) { + result = (int) i; + break; + } + } + return result; +} + +#ifdef HAVE_COLOR +static int +find_color(char *name) +{ + int result = -1; + int i; + int limit = dlg_color_count(); + + for (i = 0; i < limit; i++) { + if (dlg_strcmp(dlg_color_table[i].name, name) == 0) { + result = i; + break; + } + } + return result; +} + +/* + * Convert an attribute to a string representation like this: + * + * "(foreground,background,highlight)" + */ +static char * +attr_to_str(char *str, int fg, int bg, int hl) +{ + int i; + + strcpy(str, "("); + /* foreground */ + for (i = 0; fg != color_names[i].value; i++) ; + strcat(str, color_names[i].name); + strcat(str, ","); + + /* background */ + for (i = 0; bg != color_names[i].value; i++) ; + strcat(str, color_names[i].name); + + /* highlight */ + strcat(str, hl ? ",ON)" : ",OFF)"); + + return str; +} + +/* + * Extract the foreground, background and highlight values from an attribute + * represented as a string in one of two forms: + * + * "(foreground,background,highlight)" + " "xxxx_color" + */ +static int +str_to_attr(char *str, int *fg, int *bg, int *hl) +{ + int i = 0, get_fg = 1; + unsigned j; + char tempstr[MAX_LEN + 1], *part; + size_t have; + + if (str[0] != '(' || lastch(str) != ')') { + if ((i = find_color(str)) >= 0) { + *fg = dlg_color_table[i].fg; + *bg = dlg_color_table[i].bg; + *hl = dlg_color_table[i].hilite; + return 0; + } + return -1; /* invalid representation */ + } + + /* remove the parenthesis */ + have = strlen(str); + if (have > MAX_LEN) { + have = MAX_LEN - 1; + } else { + have -= 2; + } + memcpy(tempstr, str + 1, have); + tempstr[have] = '\0'; + + /* get foreground and background */ + + while (1) { + /* skip white space before fg/bg string */ + i = skip_whitespace(tempstr, i); + if (tempstr[i] == '\0') + return -1; /* invalid representation */ + part = tempstr + i; /* set 'part' to start of fg/bg string */ + + /* find end of fg/bg string */ + while (!isblank(UCH(tempstr[i])) && tempstr[i] != ',' + && tempstr[i] != '\0') + i++; + + if (tempstr[i] == '\0') + return -1; /* invalid representation */ + else if (isblank(UCH(tempstr[i]))) { /* not yet ',' */ + tempstr[i++] = '\0'; + + /* skip white space before ',' */ + i = skip_whitespace(tempstr, i); + if (tempstr[i] != ',') + return -1; /* invalid representation */ + } + tempstr[i++] = '\0'; /* skip the ',' */ + for (j = 0; j < COLOR_COUNT && dlg_strcmp(part, color_names[j].name); + j++) ; + if (j == COLOR_COUNT) /* invalid color name */ + return -1; + if (get_fg) { + *fg = color_names[j].value; + get_fg = 0; /* next we have to get the background */ + } else { + *bg = color_names[j].value; + break; + } + } /* got foreground and background */ + + /* get highlight */ + + /* skip white space before highlight string */ + i = skip_whitespace(tempstr, i); + if (tempstr[i] == '\0') + return -1; /* invalid representation */ + part = tempstr + i; /* set 'part' to start of highlight string */ + + /* trim trailing white space from highlight string */ + i = (int) strlen(part) - 1; + while (isblank(UCH(part[i])) && i > 0) + i--; + part[i + 1] = '\0'; + + if (!dlg_strcmp(part, "ON")) + *hl = TRUE; + else if (!dlg_strcmp(part, "OFF")) + *hl = FALSE; + else + return -1; /* invalid highlight value */ + + return 0; +} +#endif /* HAVE_COLOR */ + +/* + * Check if the line begins with a special keyword; if so, return true while + * pointing params to its parameters. + */ +static int +begins_with(char *line, const char *keyword, char **params) +{ + int i = skip_whitespace(line, 0); + int j = skip_keyword(line, i); + + if ((j - i) == (int) strlen(keyword)) { + char save = line[j]; + line[j] = 0; + if (!dlg_strcmp(keyword, line + i)) { + *params = line + skip_whitespace(line, j + 1); + return 1; + } + line[j] = save; + } + + return 0; +} + +/* + * Parse a line in the configuration file + * + * Each line is of the form: "variable = value". On exit, 'var' will contain + * the variable name, and 'value' will contain the value string. + * + * Return values: + * + * LINE_EMPTY - line is blank or comment + * LINE_EQUALS - line contains "variable = value" + * LINE_ERROR - syntax error in line + */ +static PARSE_LINE +parse_line(char *line, char **var, char **value) +{ + int i = 0; + + /* ignore white space at beginning of line */ + i = skip_whitespace(line, i); + + if (line[i] == '\0') /* line is blank */ + return LINE_EMPTY; + else if (line[i] == '#') /* line is comment */ + return LINE_EMPTY; + else if (line[i] == '=') /* variable names cannot start with a '=' */ + return LINE_ERROR; + + /* set 'var' to variable name */ + *var = line + i++; /* skip to next character */ + + /* find end of variable name */ + while (!isblank(UCH(line[i])) && line[i] != '=' && line[i] != '\0') + i++; + + if (line[i] == '\0') /* syntax error */ + return LINE_ERROR; + else if (line[i] == '=') + line[i++] = '\0'; + else { + line[i++] = '\0'; + + /* skip white space before '=' */ + i = skip_whitespace(line, i); + + if (line[i] != '=') /* syntax error */ + return LINE_ERROR; + else + i++; /* skip the '=' */ + } + + /* skip white space after '=' */ + i = skip_whitespace(line, i); + + if (line[i] == '\0') + return LINE_ERROR; + else + *value = line + i; /* set 'value' to value string */ + + /* trim trailing white space from 'value' */ + i = (int) strlen(*value) - 1; + while (isblank(UCH((*value)[i])) && i > 0) + i--; + (*value)[i + 1] = '\0'; + + return LINE_EQUALS; /* no syntax error in line */ +} + +/* + * Create the configuration file + */ +void +dlg_create_rc(const char *filename) +{ + unsigned i; + FILE *rc_file; + + if ((rc_file = fopen(filename, "wt")) == NULL) + dlg_exiterr("Error opening file for writing in dlg_create_rc()."); + + fprintf(rc_file, "#\n\ +# Run-time configuration file for dialog\n\ +#\n\ +# Automatically generated by \"dialog --create-rc <file>\"\n\ +#\n\ +#\n\ +# Types of values:\n\ +#\n\ +# Number - <number>\n\ +# String - \"string\"\n\ +# Boolean - <ON|OFF>\n" +#ifdef HAVE_COLOR + "\ +# Attribute - (foreground,background,highlight?)\n" +#endif + ); + + /* Print an entry for each configuration variable */ + for (i = 0; i < VAR_COUNT; i++) { + fprintf(rc_file, "\n# %s\n", vars[i].comment); + switch (vars[i].type) { + case VAL_INT: + fprintf(rc_file, "%s = %d\n", vars[i].name, + *((int *) vars[i].var)); + break; + case VAL_STR: + fprintf(rc_file, "%s = \"%s\"\n", vars[i].name, + (char *) vars[i].var); + break; + case VAL_BOOL: + fprintf(rc_file, "%s = %s\n", vars[i].name, + *((bool *) vars[i].var) ? "ON" : "OFF"); + break; + } + } +#ifdef HAVE_COLOR + for (i = 0; i < (unsigned) dlg_color_count(); ++i) { + char buffer[MAX_LEN + 1]; + unsigned j; + bool repeat = FALSE; + + fprintf(rc_file, "\n# %s\n", dlg_color_table[i].comment); + for (j = 0; j != i; ++j) { + if (dlg_color_table[i].fg == dlg_color_table[j].fg + && dlg_color_table[i].bg == dlg_color_table[j].bg + && dlg_color_table[i].hilite == dlg_color_table[j].hilite) { + fprintf(rc_file, "%s = %s\n", + dlg_color_table[i].name, + dlg_color_table[j].name); + repeat = TRUE; + break; + } + } + + if (!repeat) { + fprintf(rc_file, "%s = %s\n", dlg_color_table[i].name, + attr_to_str(buffer, + dlg_color_table[i].fg, + dlg_color_table[i].bg, + dlg_color_table[i].hilite)); + } + } +#endif /* HAVE_COLOR */ + dlg_dump_keys(rc_file); + + (void) fclose(rc_file); +} + +/* + * Parse the configuration file and set up variables + */ +int +dlg_parse_rc(void) +{ + int i; + int l = 1; + PARSE_LINE parse; + char str[MAX_LEN + 1]; + char *var; + char *value; + char *tempptr; + int result = 0; + FILE *rc_file = 0; + char *params; + + /* + * At startup, dialog determines the settings to use as follows: + * + * a) if the environment variable $DIALOGRC is set, its value determines + * the name of the configuration file. + * + * b) if the file in (a) can't be found, use the file $HOME/.dialogrc + * as the configuration file. + * + * c) if the file in (b) can't be found, try using the GLOBALRC file. + * Usually this will be /etc/dialogrc. + * + * d) if the file in (c) cannot be found, use the compiled-in defaults. + */ + + /* try step (a) */ + if ((tempptr = getenv("DIALOGRC")) != NULL) + rc_file = fopen(tempptr, "rt"); + + if (rc_file == NULL) { /* step (a) failed? */ + /* try step (b) */ + if ((tempptr = getenv("HOME")) != NULL + && strlen(tempptr) < MAX_LEN - (sizeof(DIALOGRC) + 3)) { + if (tempptr[0] == '\0' || lastch(tempptr) == '/') + sprintf(str, "%s%s", tempptr, DIALOGRC); + else + sprintf(str, "%s/%s", tempptr, DIALOGRC); + rc_file = fopen(tempptr = str, "rt"); + } + } + + if (rc_file == NULL) { /* step (b) failed? */ + /* try step (c) */ + strcpy(str, GLOBALRC); + if ((rc_file = fopen(tempptr = str, "rt")) == NULL) + return 0; /* step (c) failed, use default values */ + } + + DLG_TRACE(("# opened rc file \"%s\"\n", tempptr)); + /* Scan each line and set variables */ + while ((result == 0) && (fgets(str, MAX_LEN, rc_file) != NULL)) { + DLG_TRACE(("#\t%s", str)); + if (*str == '\0' || lastch(str) != '\n') { + /* ignore rest of file if line too long */ + fprintf(stderr, "\nParse error: line %d of configuration" + " file too long.\n", l); + result = -1; /* parse aborted */ + break; + } + + lastch(str) = '\0'; + if (begins_with(str, "bindkey", ¶ms)) { + if (!dlg_parse_bindkey(params)) { + fprintf(stderr, "\nParse error: line %d of configuration\n", l); + result = -1; + } + continue; + } + parse = parse_line(str, &var, &value); /* parse current line */ + + switch (parse) { + case LINE_EMPTY: /* ignore blank lines and comments */ + break; + case LINE_EQUALS: + /* search table for matching config variable name */ + if ((i = find_vars(var)) >= 0) { + switch (vars[i].type) { + case VAL_INT: + *((int *) vars[i].var) = atoi(value); + break; + case VAL_STR: + if (!isquote(value[0]) || !isquote(lastch(value)) + || strlen(value) < 2) { + fprintf(stderr, "\nParse error: string value " + "expected at line %d of configuration " + "file.\n", l); + result = -1; /* parse aborted */ + } else { + /* remove the (") quotes */ + value++; + lastch(value) = '\0'; + strcpy((char *) vars[i].var, value); + } + break; + case VAL_BOOL: + if (!dlg_strcmp(value, "ON")) + *((bool *) vars[i].var) = TRUE; + else if (!dlg_strcmp(value, "OFF")) + *((bool *) vars[i].var) = FALSE; + else { + fprintf(stderr, "\nParse error: boolean value " + "expected at line %d of configuration " + "file (found %s).\n", l, value); + result = -1; /* parse aborted */ + } + break; + } +#ifdef HAVE_COLOR + } else if ((i = find_color(var)) >= 0) { + int fg = 0; + int bg = 0; + int hl = 0; + if (str_to_attr(value, &fg, &bg, &hl) == -1) { + fprintf(stderr, "\nParse error: attribute " + "value expected at line %d of configuration " + "file.\n", l); + result = -1; /* parse aborted */ + } else { + dlg_color_table[i].fg = fg; + dlg_color_table[i].bg = bg; + dlg_color_table[i].hilite = hl; + } + } else { +#endif /* HAVE_COLOR */ + fprintf(stderr, "\nParse error: unknown variable " + "at line %d of configuration file:\n\t%s\n", l, var); + result = -1; /* parse aborted */ + } + break; + case LINE_ERROR: + fprintf(stderr, "\nParse error: syntax error at line %d of " + "configuration file.\n", l); + result = -1; /* parse aborted */ + break; + } + l++; /* next line */ + } + + (void) fclose(rc_file); + return result; +} Index: vendor/dialog/1.3-20180621/samples/copifuncs/copi.ifman1 =================================================================== --- vendor/dialog/1.3-20180621/samples/copifuncs/copi.ifman1 (nonexistent) +++ vendor/dialog/1.3-20180621/samples/copifuncs/copi.ifman1 (revision 339483) @@ -0,0 +1,29 @@ +#! /usr/bin/perl +# +# This is a utility script to manipulate Fidonet-related issues +# using Eugene Crosser's ifmail package +# +# Version 0.1 +# +# (C) Michael Bravo and The Communication Tube, 1994 +# +# You can do whatever you want with this script. I take no responsibility +# whatsoever in anything related to this script. If you make some useful +# additions to this, please think of sending them to me so I could partake +# of your wisdom. +# +# This script was written to help attaching and requesting files from the +# commandline, much like you do with Squish under DOS or OS/2. It is certainly +# not perfect - I used it as an exercise in Perl. It also probably lacks +# some other useful features, like ability to specify trunc/sent or kill/sent +# attributes etc etc. If you really want this or some other features +# implemented, write me at mbravo@tctube.spb.su or mbravo@octopus.spb.su +# and I will try to do what I can. +# +# Note - files don't get copied to any spool dir, so if you move attached +# files somewhere, they won't get sent. +# +# This script is supposed to read ifmail's config to determine where outbound +# directory and logfile are. The only two parameters to modify in most cases +# are below. + Property changes on: vendor/dialog/1.3-20180621/samples/copifuncs/copi.ifman1 ___________________________________________________________________ Added: svn:executable ## -0,0 +1 ## +* \ No newline at end of property Index: vendor/dialog/1.3-20180621/samples/copifuncs/copi.ifmcfg2 =================================================================== --- vendor/dialog/1.3-20180621/samples/copifuncs/copi.ifmcfg2 (nonexistent) +++ vendor/dialog/1.3-20180621/samples/copifuncs/copi.ifmcfg2 (revision 339483) @@ -0,0 +1,68 @@ +# Transport programs for mail and news, used by iftoss +sendmail /usr/lib/sendmail -f $F $T +rnews /usr/lib/news/rnews + +# Unpackers, used by ifunpack. +# $F expands to archieve file name +unzip /usr/bin/unzip -oq $F +unarj /usr/bin/unarj e $F +#unarc /usr/bin/unpack $F +unzoo /usr/bin/zoo -extract $F +unlzh /usr/bin/lharc -x $F + +# Packer program, used by ifpack +# $F expands to archieve file name, $P - to list of packet names +packer /usr/bin/zip $F $P + +# Maximum arcmail file size, will start new arcmail file if exceeds +maxfsize 65000 + +# Maximum packet size, ifmail/ifnews will start new packet if exeeds. +# .out files are NOT created if nonzero specified, you must run ifpack +# to make packets out. (unimplemented) +maxpsize 65000 + +# cnews log file and (temporary) database for seen-bys +newslog /usr/lib/news/log +msgidbm /tmp/ifmsgids + +# From this line on, values may be prefixed by a logical expression in +# round brackets. Operators are: '!', '&', '|', 'Xor'. +# Possible elements are: +# - Nodelist flags (like "CM", "MNP", "V32" etc.) +# - speed <operator> <numeric> +# where <operator> is '=', '!=', '<', '>', '<=', '>=' +# - address <wildcard> +# where <wildcard> is an (possibly incomplete) fidonet address, +# e.g. "5020/*" +# - time <interval>[,<interval>,...] +# where <interval> is a day spec. with optional time spec., e.g. +# Wk2000-0900,Sat1800-0000,Sun +# - phone <prefix> +# e.g. "phone 7-095-" + +# Dialing parameters +# of multiple "ModemPort", "ModemReset", "ModemDial", "ModemHangup" lines, +# first matching is used. +# of multiple "PhoneTrans", "ModemConnect", "ModemError" lines, all matching +# are used. +# In send and expect strings, following substitutions are made: +# \\ '\' character +# \r carriage return (0x0d) +# \n new line (0x0a) +# \t tab (0x09) +# \b backspace (0x08) +# \s space (0x20) +# \NNN (where N is an octal digit) - character with octal code NNN +# \d 1 second delay (send strings only) +# \p 1/4 second pause (send strings only) +# \T translated telephone no. (send strings only) +# \D untranslated telephone no. (send strings only) + +# ModemPort present a blank-separated list of ports with possible speed +# extention (separated by colon); if speed is prefixed with 'L', it is +# a "locked" port speed, otherwise it is a maximum speed to be set, while +# actual speed is taken from the nodelist. If speed is omitted (or set +# to zero), previous port speed is not changed. +#ModemPort (time Any0000-0900,Sat,Sun) ttyS0 +#ModemPort cua0:L38400 Property changes on: vendor/dialog/1.3-20180621/samples/copifuncs/copi.ifmcfg2 ___________________________________________________________________ Added: svn:executable ## -0,0 +1 ## +* \ No newline at end of property Index: vendor/dialog/1.3-20180621/samples/copifuncs/copi.ifmcfg4 =================================================================== --- vendor/dialog/1.3-20180621/samples/copifuncs/copi.ifmcfg4 (nonexistent) +++ vendor/dialog/1.3-20180621/samples/copifuncs/copi.ifmcfg4 (revision 339483) @@ -0,0 +1,30 @@ +ModemHangup +++ATH\r +ModemOK OK +ModemConnect CONNECT +ModemError BUSY +ModemError NO\sCARRIER +ModemError NO\sDIAL +ModemError RING\r +ModemError ERROR + +# Call options (time, address and nodelist flag dependant) +# All matching are applied in the order they are specified. +# Possible options are "[No]Call", "[No]Hold", "[No]PUA", "[No]EMSI", +# "[No]WaZOO", "[No]Freqs", "[No]Zmodem", "[No]ZedZap", "[No]Janus", +# "[No]Hydra". Here, WaZOO stands for YooHoo/2U2 handshake, not for +# the transfer scheme. FTS-0001 handshake and DietIFNA scheme cannot +# be disallowed (because they are mandatory by standart). "Hold" +# means really hold "hold" type packets and files: do not send them +# if our system initiated the session, "NoHold" means send "hold" +# packets when our system initiated the session. "NoPUA" stands for +# "No PickUp All", i.e. PUP ("Pick Up Primary"). NoCall means do not +# perform outbound call. This flag has no effect on the nodes +# explicitly specified in the command line. +# Default options are "everything allowed". +# options ((!CM) & time Any0700-0200) Nocall +#options (time Any0900-2100 & ! address 2:5020/*) Nocall + +# EMSI data for this node +# From this line on values CANNOT be prefixed with logical expression +# For now, escaping of '}' and ']' unimplemented, try to avoid these +# characters please! Property changes on: vendor/dialog/1.3-20180621/samples/copifuncs/copi.ifmcfg4 ___________________________________________________________________ Added: svn:executable ## -0,0 +1 ## +* \ No newline at end of property Index: vendor/dialog/1.3-20180621/samples/copifuncs/copi.ifmcfg5 =================================================================== --- vendor/dialog/1.3-20180621/samples/copifuncs/copi.ifmcfg5 (nonexistent) +++ vendor/dialog/1.3-20180621/samples/copifuncs/copi.ifmcfg5 (revision 339483) @@ -0,0 +1,14 @@ + +# PhoneTrans lines provide rules to change phone prefixes to make local +# or long-distance calls. In the example below, my country code is 7, +# and local dialing area is 095. From the numbers starting with "7-095-" +# the prefix is stripped and the 7-digit remainder is dialed. For +# the numbers starting with "7-" but not with "7-095-", the country prefix +# "7-" is stripped and the long-distance dialing prefix "8W" substituted. +# For the numbers not matching any of the above, international +# call is performed: international dialing prefix "8W10" is prepended +# to the unmodified 11-digit number. Generally, the syntax is: +# "PhoneTrans <what-to-strip> / <what-to-substitute-instead>" +#PhoneTrans 7-095- / +#PhoneTrans 7- / 8W +#PhoneTrans / 8W10 Property changes on: vendor/dialog/1.3-20180621/samples/copifuncs/copi.ifmcfg5 ___________________________________________________________________ Added: svn:executable ## -0,0 +1 ## +* \ No newline at end of property Index: vendor/dialog/1.3-20180621/samples/copifuncs/copi.ifpoll1 =================================================================== --- vendor/dialog/1.3-20180621/samples/copifuncs/copi.ifpoll1 (nonexistent) +++ vendor/dialog/1.3-20180621/samples/copifuncs/copi.ifpoll1 (revision 339483) @@ -0,0 +1,9 @@ +#!/bin/sh +# ver 0.7 +# ifpoll, poll my boss node or the node given as argument 1 +# +# i start this shell script every day by crond, but you can +# start it also by hand :) start it as the owner of ifcico. +# rasca, berlin 1993 (Rasca Gmelch, 2:2410/305.4) +# +# where "ifcico" and "ifpack" reside Property changes on: vendor/dialog/1.3-20180621/samples/copifuncs/copi.ifpoll1 ___________________________________________________________________ Added: svn:executable ## -0,0 +1 ## +* \ No newline at end of property Index: vendor/dialog/1.3-20180621/samples/copifuncs/copi.ifreq1 =================================================================== --- vendor/dialog/1.3-20180621/samples/copifuncs/copi.ifreq1 (nonexistent) +++ vendor/dialog/1.3-20180621/samples/copifuncs/copi.ifreq1 (revision 339483) @@ -0,0 +1,20 @@ +#!/usr/bin/perl +$ver = "0.4"; +# +# this perl script is designed for the ifmail package by eugene grosser. +# +# request a file (first argument) from a fido-node (second argument), +# don't forget to quote if you use wildcards, e.g.: + +# ifreq 'files*' 2:2410/305 +# or +# ifreq 'files newfile' 2:2410/305 +# +# this perl script does only add an entry to the corresponding flo-file, +# the mailer ifcico is not started! +# +# rasca, berlin 1994 (rasca@marie.physik.tu-berlin.de, 2:2410/305.4) +# +# multi-zone support added by +# Roland Rosenfeld 15.05.1994 (roland@p13.flokiste.fido.de, 2:2450/300.13) + Property changes on: vendor/dialog/1.3-20180621/samples/copifuncs/copi.ifreq1 ___________________________________________________________________ Added: svn:executable ## -0,0 +1 ## +* \ No newline at end of property Index: vendor/dialog/1.3-20180621/samples/copifuncs/copi.rcnews =================================================================== --- vendor/dialog/1.3-20180621/samples/copifuncs/copi.rcnews (nonexistent) +++ vendor/dialog/1.3-20180621/samples/copifuncs/copi.rcnews (revision 339483) @@ -0,0 +1,79 @@ +#! /bin/sh +## $Revision: 1.1 $ +## News boot script. + +## =()<. @<_PATH_SHELLVARS>@>()= +. /usr/lib/news/innshellvars + +## Pick ${INND} or ${INNDSTART} +WHAT=${INNDSTART} +## Set to true or false +DOINNWATCH=false +MAIL="${MAILCMD} -s 'Boot-time Usenet warning on `hostname`' ${NEWSMASTER}" + +## RFLAG is set below; set FLAGS as appropriate. +RFLAG="" +FLAGS="-i0 -c0" + +## Clean shutdown? +if [ -f ${SERVERPID} ] ; then + ( echo 'INND: PID file exists -- unclean shutdown!' >/dev/console ) + RFLAG="-r" +fi + +if [ ! -f ${NEWSLIB}/.news.daily ] ; then + echo 'No .news.daily file; need to run news.daily?' | eval ${MAIL} +else + case `find ${NEWSLIB} -name .news.daily -mtime +1 -print 2>/dev/null` in + "") + ;; + *) + echo 'Old .news.daily file; need to run news.daily?' | eval ${MAIL} + ;; + esac +fi + +## Active file recovery. +if [ ! -s ${ACTIVE} ] ; then + if [ -s ${NEWACTIVE} ] ; then + mv ${NEWACTIVE} ${ACTIVE} + else + if [ -s ${OLDACTIVE} ] ; then + cp ${OLDACTIVE} ${ACTIVE} + else + ( echo 'INND: No active file!' >/dev/console ) + exit 1 + fi + fi + RFLAG="-r" + # You might want to rebuild the DBZ database, too: + #echo "cd ${NEWSLIB} \ + # && makehistory -r \ + # && mv history.n.dir history.dir \ + # && mv history.n.pag history.pag" | su ${NEWSUSER} +fi + +## Remove temporary batchfiles and lock files. +( cd ${BATCH} && rm -f bch* ) +( cd ${LOCKS} && rm -f LOCK* ) +( cd ${TEMPSOCKDIR} && rm -f ${TEMPSOCK} ) +rm -f ${NEWSCONTROL} ${NNTPCONNECT} ${SERVERPID} + +## Start the show. +( echo 'Starting innd.' >/dev/console ) +eval ${WHAT} ${RFLAG} ${FLAGS} + +# Gee, looks like lisp, doesn't it? +${DOINNWATCH} && { + echo "( ( sleep 60 ; ${INNWATCH} ) & )" | su ${NEWSUSER} +} + +RMFILE=${MOST_LOGS}/expire.rm +if [ -s ${MOST_LOGS}/expire.rm ] ; then + ( echo "Removing articles from pre-downtime expire run." >/dev/console ) + ( + echo 'System shut down during expire. Unlinking articles listed in' + echo ${RMFILE} + ) | eval ${MAIL} + echo "${NEWSBIN}/expirerm ${RMFILE}" | su ${NEWSUSER} & +fi Property changes on: vendor/dialog/1.3-20180621/samples/copifuncs/copi.rcnews ___________________________________________________________________ Added: svn:executable ## -0,0 +1 ## +* \ No newline at end of property Index: vendor/dialog/1.3-20180621/samples/copifuncs/copi.sendifm2 =================================================================== --- vendor/dialog/1.3-20180621/samples/copifuncs/copi.sendifm2 (nonexistent) +++ vendor/dialog/1.3-20180621/samples/copifuncs/copi.sendifm2 (revision 339483) @@ -0,0 +1,15 @@ + ${SITE} ${BATCHFILE} + + echo "${PROGNAME}: [$$] end ${SITE}" +done + +case ${HAVE_UUSTAT} in +DONT) + rm -f ${TEMP} + ;; +esac + +## Remove the lock file. +rm -f ${LOCK} + +echo "${PROGNAME}: [$$] end `date`" Property changes on: vendor/dialog/1.3-20180621/samples/copifuncs/copi.sendifm2 ___________________________________________________________________ Added: svn:executable ## -0,0 +1 ## +* \ No newline at end of property Index: vendor/dialog/1.3-20180621/samples/copifuncs/copi.trnrc =================================================================== --- vendor/dialog/1.3-20180621/samples/copifuncs/copi.trnrc (nonexistent) +++ vendor/dialog/1.3-20180621/samples/copifuncs/copi.trnrc (revision 339483) @@ -0,0 +1,13 @@ +TRNINIT="-x -e -X -F\" :> \"" +HIDELINE="^X-FTN" +NEWSHEADER="Newsgroups: %(%F=^\$?%C:%F) +Subject: %(%S=^\$?%\"\n\nSubject: \":%S) +%(%R=^\$?:References: %R +)Sender: +Distribution: %(%i=^\$?%\"\nDistribution: \":%D) +Organization: %o +X-Comment-To: %f\n\n" +ATTRIBUTION="%f writes:\n" +YOUSAID="In article %i \n of newsgroup %C you write about \"%s\":\n" +MAILCALL="(New Mail)" +export NEWSHEADER HIDELINE TRNINIT ATTRIBUTION MAILCALL YOUSAID EDITOR Index: vendor/dialog/1.3-20180621/samples/copifuncs/ifpatch =================================================================== --- vendor/dialog/1.3-20180621/samples/copifuncs/ifpatch (nonexistent) +++ vendor/dialog/1.3-20180621/samples/copifuncs/ifpatch (revision 339483) @@ -0,0 +1,101 @@ +--- ifgate/message.c.orig Mon Jul 24 15:17:47 1995 ++++ ifgate/message.c Mon Jul 24 15:18:00 1995 +@@ -48,12 +48,26 @@ + if (!strcasecmp(msg->key,"X-UUCP-From")) return 0; + if (!strcasecmp(msg->key,"X-Body-Start")) return 0; + if (!strncasecmp(msg->key,"X-FTN-",6)) return 0; +- if (!strcasecmp(msg->key,"Path")) return isftnpath(msg->val)?0:1; ++ if (!strcasecmp(msg->key,"Path")) ++ ++#ifdef LESS_RFC_KLUDGES ++ return 0; ++#else ++ return isftnpath(msg->val)?0:1; ++#endif ++ + if (!strcasecmp(msg->key,"Newsgroups")) return newsmode?0:2; + if (!strcasecmp(msg->key,"Xref")) return 0; + if (!strcasecmp(msg->key,"Return-Receipt-To")) return 1; + if (!strcasecmp(msg->key,"Received")) return newsmode?0:2; +- if (!strcasecmp(msg->key,"From")) return ftnorigin?0:2; ++ if (!strcasecmp(msg->key,"From")) ++ ++#ifdef LESS_RFC_KLUDGES ++ return 0; ++#else ++ return ftnorigin?0:2; ++#endif ++ + if (!strcasecmp(msg->key,"To")) + { + if (newsmode) return 0; +@@ -66,7 +80,14 @@ + } + if (!strcasecmp(msg->key,"Cc")) return 2; + if (!strcasecmp(msg->key,"Bcc")) return 2; +- if (!strcasecmp(msg->key,"Reply-To")) return 2; ++ if (!strcasecmp(msg->key,"Reply-To")) ++ ++#ifdef LESS_RFC_KLUDGES ++ return 0; ++#else ++ return 2; ++#endif ++ + if (!strcasecmp(msg->key,"Lines")) return 0; + if (!strcasecmp(msg->key,"Date")) return 0; + if (!strcasecmp(msg->key,"Subject")) +@@ -77,8 +98,22 @@ + if (!strcasecmp(msg->key,"Organization")) return removeorg?0:1; + if (!strcasecmp(msg->key,"Comment-To")) return 0; + if (!strcasecmp(msg->key,"X-Comment-To")) return 0; +- if (!strcasecmp(msg->key,"Keywords")) return 2; +- if (!strcasecmp(msg->key,"Summary")) return 2; ++ if (!strcasecmp(msg->key,"Keywords")) ++ ++#ifdef LESS_RFC_KLUDGES ++ return 0; ++#else ++ return 2; ++#endif ++ ++ if (!strcasecmp(msg->key,"Summary")) ++ ++#ifdef LESS_RFC_KLUDGES ++ return 0; ++#else ++ return 2; ++#endif ++ + if (!strcasecmp(msg->key,"MIME-Version")) return removemime?0:1; + if (!strcasecmp(msg->key,"Content-Type")) return removemime?0:1; + if (!strcasecmp(msg->key,"Content-Length")) return removemime?0:1; +@@ -86,8 +121,26 @@ + if (!strcasecmp(msg->key,"Content-Name")) return 2; + if (!strcasecmp(msg->key,"Content-Description")) return 2; + if (!strcasecmp(msg->key,"Message-ID")) return ftnorigin?0:1; +- if (!strcasecmp(msg->key,"References")) return removeref?0:1; +- if (!strcasecmp(msg->key,"Distribution")) return ftnorigin?0:1; ++ if (!strcasecmp(msg->key,"References")) ++ ++#ifdef LESS_RFC_KLUDGES ++ return 0; ++#else ++ return removeref?0:1; ++#endif ++ ++ if (!strcasecmp(msg->key,"Distribution")) ++ ++#ifdef LESS_RFC_KLUDGES ++ return 0; ++#else ++ return ftnorigin?0:1; ++#endif ++ ++#ifdef LESS_RFC_KLUDGES ++ if (!strcasecmp(msg->key,"NNTP-Posting-Host")) return 0; ++#endif ++ + /*if (!strcasecmp(msg->key,"")) return ;*/ + return 1; + } Index: vendor/dialog/1.3-20180621/samples/dselect =================================================================== --- vendor/dialog/1.3-20180621/samples/dselect (nonexistent) +++ vendor/dialog/1.3-20180621/samples/dselect (revision 339483) @@ -0,0 +1,11 @@ +#!/bin/sh +# $Id: dselect,v 1.7 2016/01/26 22:52:53 tom Exp $ + +. ./setup-vars + +exec 3>&1 +RESULT=`$DIALOG --title "Please choose a file" "$@" --dselect $HOME/ 14 48 2>&1 1>&3` +retval=$? +exec 3>&- + +. ./report-string Property changes on: vendor/dialog/1.3-20180621/samples/dselect ___________________________________________________________________ Added: svn:executable ## -0,0 +1 ## +* \ No newline at end of property Index: vendor/dialog/1.3-20180621/samples/install/FDISK.TEST =================================================================== --- vendor/dialog/1.3-20180621/samples/install/FDISK.TEST (nonexistent) +++ vendor/dialog/1.3-20180621/samples/install/FDISK.TEST (revision 339483) @@ -0,0 +1,28 @@ + +Disk /dev/hda: 14 heads, 62 sectors, 1018 cylinders +Units = cylinders of 868 * 512 bytes + + Device Boot Begin Start End Blocks Id System +/dev/hda1 1 1 3 1271 a OS/2 Boot Manager +/dev/hda2 4 4 287 123256 6 DOS 16-bit >=32M +/dev/hda3 * 288 288 649 157108 83 Linux native +/dev/hda4 650 650 1018 160146 83 Linux native + +Disk /dev/sda: 64 heads, 32 sectors, 511 cylinders +Units = cylinders of 2048 * 512 bytes + + Device Boot Begin Start End Blocks Id System +/dev/sda1 1 1 21 21488 82 Linux swap +/dev/sda2 22 22 511 501760 83 Linux native + +Disk /dev/sdb: 64 heads, 32 sectors, 4106 cylinders +Units = cylinders of 2048 * 512 bytes + + Device Boot Begin Start End Blocks Id System +/dev/sdb1 1 1 201 205808 83 Linux native +/dev/sdb2 202 202 402 205824 83 Linux native +/dev/sdb3 403 403 603 205824 83 Linux native +/dev/sdb4 604 604 4106 3587072 5 Extended +/dev/sdb5 604 604 1803 1228784 83 Linux native +/dev/sdb6 1024 1804 3003 1228784 83 Linux native +/dev/sdb7 2048 3004 4106 1129456 83 Linux native Index: vendor/dialog/1.3-20180621/samples/install/makefile.in =================================================================== --- vendor/dialog/1.3-20180621/samples/install/makefile.in (nonexistent) +++ vendor/dialog/1.3-20180621/samples/install/makefile.in (revision 339483) @@ -0,0 +1,35 @@ +# $Id: makefile.in,v 1.1 2000/10/08 17:22:53 tom Exp $ +# template makefile for DIALOG sample 'install' +# +SHELL = /bin/sh + +prefix = @prefix@ +exec_prefix = @exec_prefix@ + +srcdir = @srcdir@ +top_builddir = ../.. + +DESTDIR = +bindir = $(DESTDIR)@bindir@ + +CFLAGS = @CFLAGS@ +CPPFLAGS = @CPPFLAGS@ @DEFS@ -I$(top_builddir) -I$(srcdir)/../.. -I. -I$(srcdir) +EXTRA_CFLAGS = @EXTRA_CFLAGS@ +CC = @CC@ +LDFLAGS = @LDFLAGS@ +LIBS = -L../.. -ldialog @LIBS@ +RANLIB = @RANLIB@ + +RM = rm -f + +all: setup + +setup: setup.o + $(CC) -o $@ setup.o $(LIBS) + +clean: + rm -f *.o setup + +test: setup + ./setup + Property changes on: vendor/dialog/1.3-20180621/samples/install/makefile.in ___________________________________________________________________ Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:keywords ## -0,0 +1 ## +FreeBSD=%H \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/plain \ No newline at end of property Index: vendor/dialog/1.3-20180621/samples/install/setup.c =================================================================== --- vendor/dialog/1.3-20180621/samples/install/setup.c (nonexistent) +++ vendor/dialog/1.3-20180621/samples/install/setup.c (revision 339483) @@ -0,0 +1,371 @@ +/* Copyright (C) 1995 Florian La Roche */ +/* Who wants to help coding? I don't like doing this... */ + +/* You can just start setup as normal user and see how far it is coded + right now. This will do a fake installation and won't actually chnage + any data on your computer. */ + +/* TODO: write a good package selection code + change functions to return better error code + */ + +/* Show an extra text-box with the contents of all external commands, + before they are executed. So you can abort the installation, if any + wrong commands are to be executed. (So don't format wrong partition.) */ +#define VERBOSE 1 + +/* If defined, don't actually execute any comands and don't actually modify + any files. So you can test any possible installation without doing any + damage to your computer. + The file FDISK.TEST is used instead of real "fdisk -l" output, so that + it can be started as normal user. */ +#define DEBUG_THIS 1 + +#include <dialog.h> + +/* max length of a partition name like e.g. '/dev/hda1' */ +#define MAX_DEV_NAME 25 + +/* max number of possible Linux/Swap/MsDos partitions */ +#define MAX_PARTS 20 + +char *progname = NULL; + +static void +error(const char *s) +{ + fprintf(stderr, "%s: %s\n", progname, s); + exit(1); +} + +static int +my_system(const char *s,...) +{ + int ret, i; + va_list ap; + char sh[200]; + + va_start(ap, s); + vsprintf(sh, s, ap); + va_end(ap); + +#ifdef VERBOSE + i = dialog_msgbox("I will run the following command:", sh, 10, 65, 1); + dialog_clear(); +#ifdef DEBUG_THIS + return 0; +#endif +#endif + ret = system(sh); + if (!(ret >> 8)) + return 0; + i = dialog_msgbox("Error-Exit on the following command:", + sh, 12, 73, 1); + dialog_clear(); + return 1; +} + +/* We support to install from DOS/Linux-partitions. */ +enum partition_type { + MsDos, + Linux, + Swap +}; + +struct partition { + enum partition_type type; + char name[MAX_DEV_NAME]; + int blocks; + int flag; +} partitions[MAX_PARTS]; +int num_partition = 0; +int num_linux = 0; +int num_swap = 0; +int num_msdos = 0; + +static int +get_line(char *line, int size, FILE * f) +{ + char *ptr = line; + int c; + + if (feof(f)) + return -1; + while (size-- && ((c = getc(f)) != EOF) && (c != '\n')) + *ptr++ = c; + *ptr++ = '\0'; + return (int) (ptr - line); +} + +static void +read_partitions(void) +{ + FILE *f; + char line[200]; + int length; +#ifndef DEBUG_THIS + int ret = system("fdisk -l 2>/dev/null 1>/tmp/fdisk.output"); + if ((ret >> 8) != 0) { + error("fdisk didn't run"); + } + if ((f = fopen("/tmp/fdisk.output", "r")) == NULL) +#else + if ((f = fopen("FDISK.TEST", "r")) == NULL) +#endif + error("cannot read fdisk output"); + + while (num_partition <= MAX_PARTS + && (length = get_line(line, 200, f)) >= 0) { + if (strncmp(line, "/dev/", 5) == 0) { + int n = 0; + char *s = line + 5; + char *t = partitions[num_partition].name; + strcpy(t, "/dev/"); + t += 5; + while (n < MAX_DEV_NAME && *s != '\0' + && !isspace((unsigned char) *s)) { + *t++ = *s++; + n++; + } + *t = '\0'; + /* Read the size of the partition. */ + t = line + 37; + while (isspace((unsigned char) *t)) + t++; + partitions[num_partition].blocks = atoi(t); + if (strstr(line, "Linux native")) { + partitions[num_partition].type = Linux; + num_partition++; + num_linux++; + } else if (strstr(line, "Linux swap")) { + partitions[num_partition].type = Swap; + num_partition++; + num_swap++; + } else if (strstr(line, "DOS")) { + partitions[num_partition].type = MsDos; + num_partition++; + num_msdos++; + } + } + } + fclose(f); +#ifndef DEBUG_THIS + unlink("/tmp/fdisk.output"); +#endif +} + +static int +select_partition(const char *title, const char *prompt, int y, int x) +{ + int i, num, ret; + char info[MAX_PARTS][40]; + char *items[MAX_PARTS * 2]; + int num_pa[MAX_PARTS]; + + num = 0; + for (i = 0; i < num_partition; i++) { + if (partitions[i].type == Linux) { + items[num * 2] = partitions[i].name; + sprintf(info[num], "Linux partition with %d blocks", + partitions[i].blocks); + items[num * 2 + 1] = info[num]; + num_pa[num] = i; + num++; + } + } + ret = dialog_menu(title, prompt, y + num, x, num, num, items); + dialog_clear(); + if (ret >= 0) /* item selected */ + ret = num_pa[ret]; + return ret; +} + +static int +select_install_partition(void) +{ + return select_partition("Select Install Partition", + "\\nWhere do you want to install Linux?\\n", 9, 60); +} + +static int +select_source_partition(void) +{ + return select_partition("Select Source Partition", + "\\nOn which partition is the source?\\n", 9, 60); +} + +const char *null = ">/dev/null 2>/dev/null"; +const char *install_partition = NULL; + +static void +extract_packages(const char *source_path) +{ +#ifndef DEBUG_THIS + FILE *f; +#endif + + if (my_system("mkdir -p /install/var/installed/packages %s", null)) + return; + if (my_system("cd /install; for i in /source%s/*.tgz; do " + "tar xzplvvkf $i >> var/installed/packages/base " + "2>>var/installed/packages/ERROR; done", source_path)) + return; +#ifndef DEBUG_THIS + if ((f = fopen("/install/etc/fstab", "w")) == NULL) { + /* i = */ dialog_msgbox("Error", "Cannot write /etc/fstab", + 12, 40, 1); + return; + } + fprintf(f, "%s / ext2 defaults 1 1\n", install_partition); + fprintf(f, "none /proc proc defaults 0 2\n"); + /* XXX write swap-partitions */ + fclose(f); +#endif +} + +static void +install_premounted(void) +{ + extract_packages(""); +} + +static void +install_harddisk(void) +{ + const char *name; + int part, ret; + + if ((part = select_source_partition()) <= -1) + return; + name = partitions[part].name; + + if (my_system("mount -t ext2 %s /source %s", name, null)) + return; + ret = dialog_inputbox("Path in partition", + "Please enter the directory in which the " + "source files are.", 13, 50, "", FALSE); + dialog_clear(); + if (ret != 0) + return; + /* XXX strdup */ + extract_packages(strdup(dialog_input_result)); + if (my_system("umount /source %s", null)) + return; +} + +static void +install_nfs(void) +{ + if (my_system("ifconfig eth0 134.96.81.36 netmask 255.255.255.224 " + "broadcast 134.96.81.63 %s", null)) + return; + if (my_system("route add -net 134.96.81.32 %s", null)) + return; + if (my_system("mount -t nfs 134.96.81.38:" + "/local/ftp/pub/linux/ELF.binary/tar /source %s", null)) + return; + extract_packages("/base"); + if (my_system("umount /source %s", null)) + return; + if (my_system("ifconfig eth0 down %s", null)) + return; +} + +static void +main_install(void) +{ + int part, ret; + const char *name; + char *items1[] = + { + "1", "Harddisk Install", + "2", "Network Install(NFS)", + "3", "Premounted on /source" + }; + + if (num_linux == 0) { + /* XXX */ + return; + } + if ((part = select_install_partition()) <= -1) + return; + install_partition = name = partitions[part].name; + if (my_system("mke2fs %s %s", name, null)) + return; + if (my_system("mount -t ext2 %s /install %s", name, null)) + return; + ret = dialog_menu("Choose install medium", + "\\nPlease say from where you want to install.\\n", + 12, 62, 3, 3, items1); + dialog_clear(); + switch (ret) { + case 0: + install_harddisk(); + break; + case 1: + install_nfs(); + break; + case 2: + install_premounted(); + break; + case -2: /* cancel */ + case -1: + break; /* esc */ + } + if (my_system("umount /install %s", null)) + return; +} + +int +main(int argc, char **argv) +{ + int stop = 0; + int ret; + char *items1[] = + { + "1", "Display a help text", + "2", "Start an installation", + "3", "Exit to the shell" + }; + + progname = argv[0]; + + read_partitions(); + if (num_linux == 0) { + printf("\n\nPlease start \"fdisk\" or \"cfdisk\" and create a" + "\nnative Linux-partition to install Linux on.\n\n"); + exit(1); + } + + init_dialog(); + + while (!stop) { + ret = dialog_menu("Linux Install Utility", + "\\nCopyright (C) 1995 Florian La Roche\\n" + "\\nPre-Alpha version, be careful, read the doc!!!" + "\\nemail: florian@jurix.jura.uni-sb.de, " + "flla@stud.uni-sb.de\\n", + 15, 64, 3, 3, items1); + dialog_clear(); + switch (ret) { + case 0: + ret = dialog_textbox("Help Text", + "setup.help", 20, 70); + dialog_clear(); + break; + case 1: + main_install(); + break; + case 2: + stop = 1; + break; + case -2: /* cancel */ + case -1: + stop = 1; /* esc */ + } + } + end_dialog(); + printf("\nExecute \"reboot\" to restart your computer...\n"); + + exit(0); +} Property changes on: vendor/dialog/1.3-20180621/samples/install/setup.c ___________________________________________________________________ Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:keywords ## -0,0 +1 ## +FreeBSD=%H \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/plain \ No newline at end of property Index: vendor/dialog/1.3-20180621/samples/install/setup.help =================================================================== --- vendor/dialog/1.3-20180621/samples/install/setup.help (nonexistent) +++ vendor/dialog/1.3-20180621/samples/install/setup.help (revision 339483) @@ -0,0 +1,49 @@ +At the moment, only installation from a harddisk +is supported. All commands are shown to you on +the screen before executing. This is just to make +sure that nothing bad is done to your harddisk :-) + +You can also select to install from a premounted dir. +Then the "tar/base" directory must be mounted on +"/install", so that all tar-packages from the basic +stuff are in "/install/*.tgz". (So you could be able +to install via NFS...) + +Good luck..., +anyone wants to help programming this tool?, + +Florian La Roche + +Contents: +========= +- overview about what "setup" does. +- creating a Linux-partition before starting "setup" +- about lilo +- how to use "setup", what keys are supported + +What does "setup" do on my computer? +==================================== +Setup will ask you for a partition on your harddisk, +where you would like to have Linux installed. +You can then choose to install this distribution from +your local harddisk or via network (NFS). +setup will install a very basic system. +At the end, you can install lilo, the Linux Loader. +Rebooting your computer with this little linux system +and then runing the setup-program on it, will give +the possibility to install more packages. + +Creating a Linux-partition: +=========================== +To install this Linux distribution, you need to +create an extra partition on your harddisk for +Linux. + +What is lilo and how should I install it? +========================================= +Read the lilo-documentation for this... + + + +Florian La Roche + Index: vendor/dialog/1.3-20180621/samples/menubox11 =================================================================== --- vendor/dialog/1.3-20180621/samples/menubox11 (nonexistent) +++ vendor/dialog/1.3-20180621/samples/menubox11 (revision 339483) @@ -0,0 +1,31 @@ +#!/bin/sh +# $Id: menubox11,v 1.2 2018/06/13 21:59:21 tom Exp $ +# zero-width column + +. ./setup-vars + +exec 3>&1 +RESULT=`$DIALOG --backtitle "Debian Configuration" \ + --title "Configuring debconf" \ + --default-item Dialog "$@" \ + --menu "Packages that use debconf for configuration share a common look and feel. You can +select the type of user interface they use. +\n\n\ +The dialog frontend is a full-screen, character based interface, while the readline +frontend uses a more traditional plain text interface, and both the gnome and kde +frontends are modern X interfaces, fitting the respective desktops (but may be used +in any X environment). The editor frontend lets you configure things using your +favorite text editor. The noninteractive frontend never asks you any questions. +\n\n\ +Interface to use:" 0 0 6 \ + Dialog "" \ + Readline "" \ + Gnome "" \ + Kde "" \ + Editor "" \ + Noninteractive "" \ +2>&1 1>&3` +retval=$? +exec 3>&- + +. ./report-string Property changes on: vendor/dialog/1.3-20180621/samples/menubox11 ___________________________________________________________________ Added: svn:executable ## -0,0 +1 ## +* \ No newline at end of property Index: vendor/dialog/1.3-20180621/samples/programbox =================================================================== --- vendor/dialog/1.3-20180621/samples/programbox (nonexistent) +++ vendor/dialog/1.3-20180621/samples/programbox (revision 339483) @@ -0,0 +1,22 @@ +#!/bin/sh +# $Id: programbox,v 1.3 2018/06/17 20:45:25 tom Exp $ + +. ./setup-vars + +. ./setup-tempfile + +ls -1 >$tempfile +( +while true +do +read text +test -z "$text" && break +ls -ld "$text" || break +sleep 0.1 +done <$tempfile +) | + +$DIALOG --title "PROGRAMBOX" "$@" --programbox 20 70 + +retval=$? +. ./report-button Property changes on: vendor/dialog/1.3-20180621/samples/programbox ___________________________________________________________________ Added: svn:executable ## -0,0 +1 ## +* \ No newline at end of property Index: vendor/dialog/1.3-20180621/samples/programbox2 =================================================================== --- vendor/dialog/1.3-20180621/samples/programbox2 (nonexistent) +++ vendor/dialog/1.3-20180621/samples/programbox2 (revision 339483) @@ -0,0 +1,22 @@ +#!/bin/sh +# $Id: programbox2,v 1.3 2018/06/17 20:45:25 tom Exp $ + +. ./setup-vars + +. ./setup-tempfile + +ls -1 >$tempfile +( +while true +do +read text +test -z "$text" && break +ls -ld "$text" || break +sleep 0.1 +done <$tempfile +) | + +$DIALOG --title "PROGRAMBOX" "$@" --programbox "ProgramBox" 20 70 + +retval=$? +. ./report-button Property changes on: vendor/dialog/1.3-20180621/samples/programbox2 ___________________________________________________________________ Added: svn:executable ## -0,0 +1 ## +* \ No newline at end of property Index: vendor/dialog/1.3-20180621/samples/progress =================================================================== --- vendor/dialog/1.3-20180621/samples/progress (nonexistent) +++ vendor/dialog/1.3-20180621/samples/progress (revision 339483) @@ -0,0 +1,22 @@ +#!/bin/sh +# $Id: progress,v 1.7 2018/06/17 20:45:25 tom Exp $ + +. ./setup-vars + +. ./setup-tempfile + +ls -1 >$tempfile +( +while true +do +read text +test -z "$text" && break +ls -ld "$text" || break +sleep 1 +done <$tempfile +) | + +$DIALOG --title "PROGRESS" "$@" --progressbox 20 70 + +retval=$? +. ./report-button Property changes on: vendor/dialog/1.3-20180621/samples/progress ___________________________________________________________________ Added: svn:executable ## -0,0 +1 ## +* \ No newline at end of property Index: vendor/dialog/1.3-20180621/samples/progress2 =================================================================== --- vendor/dialog/1.3-20180621/samples/progress2 (nonexistent) +++ vendor/dialog/1.3-20180621/samples/progress2 (revision 339483) @@ -0,0 +1,22 @@ +#!/bin/sh +# $Id: progress2,v 1.7 2018/06/17 20:45:25 tom Exp $ + +. ./setup-vars + +. ./setup-tempfile + +ls -1 >$tempfile +( +while true +do +read text +test -z "$text" && break +ls -ld "$text" || break +sleep 1 +done <$tempfile +) | + +$DIALOG --title "PROGRESS" "$@" --progressbox "This is a detailed description\nof the progress-box." 20 70 + +retval=$? +. ./report-button Property changes on: vendor/dialog/1.3-20180621/samples/progress2 ___________________________________________________________________ Added: svn:executable ## -0,0 +1 ## +* \ No newline at end of property Index: vendor/dialog/1.3-20180621/samples/run_test.sh =================================================================== --- vendor/dialog/1.3-20180621/samples/run_test.sh (nonexistent) +++ vendor/dialog/1.3-20180621/samples/run_test.sh (revision 339483) @@ -0,0 +1,56 @@ +#!/bin/sh +# $Id: run_test.sh,v 1.4 2017/02/01 01:50:09 tom Exp $ +# vile:ts=4 sw=4 +THIS=`basename $0` + +if [ -z "$DIALOG" ] +then + have= + want=dialog + for p in . .. ../bin + do + prog=$p/$want + [ -f $prog ] || continue + if [ -x $prog ] + then + have=$prog + break + fi + done + + if [ -z "$have" ] + then + echo "? did not find $want" >&2 + exit + fi + + DIALOG=$have + export DIALOG +fi + +want=`basename $DIALOG` + +DIALOGOPTS="$DIALOGOPTS --trace $want.log" +export DIALOGOPTS + +mylog=run_test.log +cat >$mylog <<EOF +** `date` +EOF + +for name in "$@" +do + [ -f "$name" ] || continue + [ -x "$name" ] || continue + # skip this script and known utility-scripts + case `basename $name` in + $THIS|dft-*|killall|listing|rotated-data|shortlist|with-*) + echo "** skipping $name" >>$mylog + continue + ;; + esac + rm -f trace $want.log $name.log + echo "** running $name" >>$mylog + $name + [ -f $want.log ] && cp $want.log $name.log +done Property changes on: vendor/dialog/1.3-20180621/samples/run_test.sh ___________________________________________________________________ Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:executable ## -0,0 +1 ## +* \ No newline at end of property Added: svn:keywords ## -0,0 +1 ## +FreeBSD=%H \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/plain \ No newline at end of property Index: vendor/dialog/1.3-20180621/samples/setup-edit =================================================================== --- vendor/dialog/1.3-20180621/samples/setup-edit (nonexistent) +++ vendor/dialog/1.3-20180621/samples/setup-edit (revision 339483) @@ -0,0 +1,7 @@ +#!/bin/sh +# $Id: setup-edit,v 1.3 2016/01/26 22:42:44 tom Exp $ +# vile:shmode + +input=`tempfile 2>/dev/null` || input=/tmp/input$$ +output=`tempfile 2>/dev/null` || output=/tmp/test$$ +trap "rm -f $input $output" $SIG_NONE $SIG_HUP $SIG_INT $SIG_QUIT $SIG_TERM Index: vendor/dialog/1.3-20180621/samples/setup-tempfile =================================================================== --- vendor/dialog/1.3-20180621/samples/setup-tempfile (nonexistent) +++ vendor/dialog/1.3-20180621/samples/setup-tempfile (revision 339483) @@ -0,0 +1,6 @@ +#!/bin/sh +# $Id: setup-tempfile,v 1.4 2016/01/26 22:42:47 tom Exp $ +# vile:shmode + +tempfile=`(tempfile) 2>/dev/null` || tempfile=/tmp/test$$ +trap "rm -f $tempfile" 0 $SIG_NONE $SIG_HUP $SIG_INT $SIG_QUIT $SIG_TERM Index: vendor/dialog/1.3-20180621/samples/inputbox6-utf8 =================================================================== --- vendor/dialog/1.3-20180621/samples/inputbox6-utf8 (nonexistent) +++ vendor/dialog/1.3-20180621/samples/inputbox6-utf8 (revision 339483) @@ -0,0 +1,18 @@ +#!/bin/sh +# $Id: inputbox6-utf8,v 1.9 2013/09/24 00:06:02 tom Exp $ + +. ./setup-vars + +. ./setup-tempfile + +. ./setup-utf8 + +TITLE="ã‚ã„ã†ãˆãŠ" + +$DIALOG \ +--title "$TITLE" "$@" \ +--inputbox "$TITLE" 10 20 "D.O.G" 2>$tempfile + +retval=$? + +. ./report-tempfile Property changes on: vendor/dialog/1.3-20180621/samples/inputbox6-utf8 ___________________________________________________________________ Added: svn:executable ## -0,0 +1 ## +* \ No newline at end of property Index: vendor/dialog/1.3-20180621/samples/report-tempfile =================================================================== --- vendor/dialog/1.3-20180621/samples/report-tempfile (nonexistent) +++ vendor/dialog/1.3-20180621/samples/report-tempfile (revision 339483) @@ -0,0 +1,24 @@ +#!/bin/sh +# $Id: report-tempfile,v 1.5 2013/09/02 18:03:13 tom Exp $ +# Report results in a temporary-file. +# vile:shmode + +case $retval in + $DIALOG_OK) + echo "Result: `cat $tempfile`";; + $DIALOG_CANCEL) + echo "Cancel pressed.";; + $DIALOG_HELP) + echo "Help pressed: `cat $tempfile`";; + $DIALOG_EXTRA) + echo "Extra button pressed.";; + $DIALOG_ITEM_HELP) + echo "Item-help button pressed: `cat $tempfile`";; + $DIALOG_ESC) + if test -s $tempfile ; then + cat $tempfile + else + echo "ESC pressed." + fi + ;; +esac Index: vendor/dialog/1.3-20180621/samples/README =================================================================== --- vendor/dialog/1.3-20180621/samples/README (nonexistent) +++ vendor/dialog/1.3-20180621/samples/README (revision 339483) @@ -0,0 +1,7 @@ +-- $Id: README,v 1.4 2012/12/02 18:52:52 tom Exp $ + +You can set the environment-variable DIALOG to whatever program you +want to check. Default is "dialog". + +Use "export DIALOG=/usr/bin/dialog" for sh or "setenv DIALOG ../dialog" for csh +to test the /usr/bin/dialog program. Index: vendor/dialog/1.3-20180621/samples/buildlist =================================================================== --- vendor/dialog/1.3-20180621/samples/buildlist (nonexistent) +++ vendor/dialog/1.3-20180621/samples/buildlist (revision 339483) @@ -0,0 +1,20 @@ +#!/bin/sh +# $Id: buildlist,v 1.2 2012/12/04 11:45:21 tom Exp $ + +. ./setup-vars + +. ./setup-tempfile + +$DIALOG --title "BUILDLIST DEMO" --backtitle "A user-built list" \ + --separator "|" \ + --buildlist "hello, this is a --buildlist..." 0 0 0 \ + "1" "Item number 1" "on" \ + "2" "Item number 2" "off" \ + "3" "Item number 3" "on" \ + "4" "Item number 4" "on" \ + "5" "Item number 5" "off" \ + "6" "Item number 6" "on" 2> $tempfile + +retval=$? + +. ./report-tempfile Property changes on: vendor/dialog/1.3-20180621/samples/buildlist ___________________________________________________________________ Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:executable ## -0,0 +1 ## +* \ No newline at end of property Index: vendor/dialog/1.3-20180621/samples/buildlist2 =================================================================== --- vendor/dialog/1.3-20180621/samples/buildlist2 (nonexistent) +++ vendor/dialog/1.3-20180621/samples/buildlist2 (revision 339483) @@ -0,0 +1,42 @@ +#!/bin/sh +# $Id: buildlist2,v 1.6 2012/12/23 22:28:12 tom Exp $ + +. ./setup-vars + +. ./setup-edit + +count=0 +ls -1 | while true +do + read filename + test -z "$filename" && break + case $filename in + *.*) + state=off + ;; + *-*) + state=on + ;; + *) + continue + ;; + esac + case "x$DIALOGOPTS" in + *--no-items*|*--noitem*) + echo $filename $state >>$input + ;; + *) + echo $count $filename $state >>$input + ;; + esac + count=`expr $count + 1` +done + +$DIALOG --title "BUILDLIST DEMO" --backtitle "A user-built list" \ + --visit-items --scrollbar --separator "|" \ + --buildlist "hello, this is a --buildlist..." 0 0 10 `cat $input` 2> $output + +retval=$? + +tempfile=$output +. ./report-tempfile Property changes on: vendor/dialog/1.3-20180621/samples/buildlist2 ___________________________________________________________________ Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:executable ## -0,0 +1 ## +* \ No newline at end of property Index: vendor/dialog/1.3-20180621/samples/checklist12 =================================================================== --- vendor/dialog/1.3-20180621/samples/checklist12 (nonexistent) +++ vendor/dialog/1.3-20180621/samples/checklist12 (revision 339483) @@ -0,0 +1,44 @@ +#! /bin/sh +# $Id: checklist12,v 1.3 2012/12/23 22:27:51 tom Exp $ + +. ./setup-vars + +. ./setup-edit + +case "x$DIALOGOPTS" in +*--no-items*|*--noitem*) + CUT="cut -d: -f1,3" + ;; +*) + CUT="cat" + ;; +esac + +$CUT >$input <<-EOF + Apple:It's an apple.:off + Dog:No, that's not my dog.:ON + Orange:Yeah, that's juicy.:off + Chicken:Normally not a pet.:off + Cat:No, never put a dog and a cat together!:oN + Fish:Cats like fish.:On + Lemon:You know how it tastes.:on +EOF +cat $input | sed -e 's/^/"/' -e 's/:/" "/g' -e 's/$/"/' >$output +cat $output >$input + +$DIALOG --backtitle "No Such Organization" \ + --title "CHECKLIST BOX" "$@" \ + --checklist "Hi, this is a checklist box. You can use this to \n\ +present a list of choices which can be turned on or \n\ +off. If there are more items than can fit on the \n\ +screen, the list will be scrolled. You can use the \n\ +UP/DOWN arrow keys, the first letter of the choice as a \n\ +hot key, or the number keys 1-9 to choose an option. \n\ +Press SPACE to toggle an option on/off. \n\n\ + Which of the following are fruits?" 20 61 5 \ + --file $input 2> $output + +retval=$? + +tempfile=$output +. ./report-tempfile Property changes on: vendor/dialog/1.3-20180621/samples/checklist12 ___________________________________________________________________ Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:executable ## -0,0 +1 ## +* \ No newline at end of property Index: vendor/dialog/1.3-20180621/samples/menubox12 =================================================================== --- vendor/dialog/1.3-20180621/samples/menubox12 (nonexistent) +++ vendor/dialog/1.3-20180621/samples/menubox12 (revision 339483) @@ -0,0 +1,43 @@ +#!/bin/sh +# $Id: menubox12,v 1.3 2012/12/23 22:28:26 tom Exp $ + +. ./setup-vars + +. ./setup-edit + +case "x$DIALOGOPTS" in +*--no-items*|*--noitem*) + CUT="cut -d: -f1,3" + ;; +*) + CUT="cat" + ;; +esac + +$CUT >$input <<-EOF + Linux:The Great Unix Clone for 386/486 + NetBSD:Another free Unix Clone for 386/486 + OS/2:IBM OS/2 + WIN NT:Microsoft Windows NT + PCDOS:IBM PC DOS + MSDOS:Microsoft DOS +EOF +cat $input | sed -e 's/^/"/' -e 's/:/" "/g' -e 's/$/"/' >$output +cat $output >$input + +$DIALOG --clear --title "MENU BOX" "$@" \ + --menu "Hi, this is a menu box. You can use this to \n\ +present a list of choices for the user to \n\ +choose. If there are more items than can fit \n\ +on the screen, the menu will be scrolled. \n\ +You can use the UP/DOWN arrow keys, the first \n\ +letter of the choice as a hot key, or the \n\ +number keys 1-9 to choose an option.\n\ +Try it now!\n\n\ + Choose the OS you like:" 20 51 4 \ + --file $input 2> $output + +retval=$? + +tempfile=$output +. ./report-tempfile Property changes on: vendor/dialog/1.3-20180621/samples/menubox12 ___________________________________________________________________ Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:executable ## -0,0 +1 ## +* \ No newline at end of property Index: vendor/dialog/1.3-20180621/samples/rangebox =================================================================== --- vendor/dialog/1.3-20180621/samples/rangebox (nonexistent) +++ vendor/dialog/1.3-20180621/samples/rangebox (revision 339483) @@ -0,0 +1,11 @@ +#!/bin/sh +# $Id: rangebox,v 1.3 2012/12/05 10:07:54 tom Exp $ + +. ./setup-vars + +exec 3>&1 +RESULT=`$DIALOG --title "RANGE BOX" --rangebox "Please set the volume..." 0 60 0 123 5 2>&1 1>&3` +retval=$? +exec 3>&- + +. ./report-string Property changes on: vendor/dialog/1.3-20180621/samples/rangebox ___________________________________________________________________ Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:executable ## -0,0 +1 ## +* \ No newline at end of property Index: vendor/dialog/1.3-20180621/samples/rangebox2 =================================================================== --- vendor/dialog/1.3-20180621/samples/rangebox2 (nonexistent) +++ vendor/dialog/1.3-20180621/samples/rangebox2 (revision 339483) @@ -0,0 +1,11 @@ +#!/bin/sh +# $Id: rangebox2,v 1.1 2012/12/05 10:28:58 tom Exp $ + +. ./setup-vars + +exec 3>&1 +RESULT=`$DIALOG --title "RANGE BOX" --rangebox "Please set the volume..." 0 60 0 6 5 2>&1 1>&3` +retval=$? +exec 3>&- + +. ./report-string Property changes on: vendor/dialog/1.3-20180621/samples/rangebox2 ___________________________________________________________________ Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:executable ## -0,0 +1 ## +* \ No newline at end of property Index: vendor/dialog/1.3-20180621/samples/rangebox3 =================================================================== --- vendor/dialog/1.3-20180621/samples/rangebox3 (nonexistent) +++ vendor/dialog/1.3-20180621/samples/rangebox3 (revision 339483) @@ -0,0 +1,11 @@ +#!/bin/sh +# $Id: rangebox3,v 1.1 2012/12/05 10:19:42 tom Exp $ + +. ./setup-vars + +exec 3>&1 +RESULT=`$DIALOG --title "RANGE BOX" --rangebox "Please set the volume..." 0 60 -48 55 5 2>&1 1>&3` +retval=$? +exec 3>&- + +. ./report-string Property changes on: vendor/dialog/1.3-20180621/samples/rangebox3 ___________________________________________________________________ Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:executable ## -0,0 +1 ## +* \ No newline at end of property Index: vendor/dialog/1.3-20180621/samples/rangebox4 =================================================================== --- vendor/dialog/1.3-20180621/samples/rangebox4 (nonexistent) +++ vendor/dialog/1.3-20180621/samples/rangebox4 (revision 339483) @@ -0,0 +1,11 @@ +#!/bin/sh +# $Id: rangebox4,v 1.1 2012/12/05 11:54:04 tom Exp $ + +. ./setup-vars + +exec 3>&1 +RESULT=`$DIALOG --title "RANGE BOX" --rangebox "Please set the volume..." 0 60 10 100 5 2>&1 1>&3` +retval=$? +exec 3>&- + +. ./report-string Property changes on: vendor/dialog/1.3-20180621/samples/rangebox4 ___________________________________________________________________ Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:executable ## -0,0 +1 ## +* \ No newline at end of property Index: vendor/dialog/1.3-20180621/samples/slackware.rc =================================================================== --- vendor/dialog/1.3-20180621/samples/slackware.rc (nonexistent) +++ vendor/dialog/1.3-20180621/samples/slackware.rc (revision 339483) @@ -0,0 +1,142 @@ +# $Id: slackware.rc,v 1.10 2012/12/01 00:36:55 tom Exp $ +# vile:confmode +# Run-time configuration file for dialog, matches Slackware color scheme. +# +# Types of values: +# +# Number - <number> +# String - "string" +# Boolean - <ON|OFF> +# Attribute - (foreground,background,highlight?) + +# Set aspect-ration. +aspect = 0 + +# Set separator (for multiple widgets output). +separate_widget = "" + +# Set tab-length (for textbox tab-conversion). +tab_len = 0 + +# Make tab-traversal for checklist, etc., include the list. +visit_items = OFF + +# Shadow dialog boxes? This also turns on color. +use_shadow = ON + +# Turn color support ON or OFF +use_colors = ON + +# Screen color +screen_color = (WHITE,BLUE,OFF) + +# Shadow color +shadow_color = (WHITE,BLACK,OFF) + +# Dialog box color +dialog_color = (BLACK,CYAN,OFF) + +# Dialog box title color +title_color = (YELLOW,CYAN,ON) + +# Dialog box border color +border_color = (CYAN,CYAN,ON) + +# Active button color +button_active_color = (WHITE,BLUE,ON) + +# Inactive button color +button_inactive_color = dialog_color + +# Active button key color +button_key_active_color = button_active_color + +# Inactive button key color +button_key_inactive_color = (RED,CYAN,OFF) + +# Active button label color +button_label_active_color = button_active_color + +# Inactive button label color +button_label_inactive_color = (BLACK,CYAN,ON) + +# Input box color +inputbox_color = (BLUE,WHITE,OFF) + +# Input box border color +inputbox_border_color = border_color + +# Search box color +searchbox_color = (YELLOW,WHITE,ON) + +# Search box title color +searchbox_title_color = (WHITE,WHITE,ON) + +# Search box border color +searchbox_border_color = (RED,WHITE,OFF) + +# File position indicator color +position_indicator_color = button_key_inactive_color + +# Menu box color +menubox_color = dialog_color + +# Menu box border color +menubox_border_color = border_color + +# Item color +item_color = dialog_color + +# Selected item color +item_selected_color = screen_color + +# Tag color +tag_color = title_color + +# Selected tag color +tag_selected_color = screen_color + +# Tag key color +tag_key_color = button_key_inactive_color + +# Selected tag key color +tag_key_selected_color = (RED,BLUE,ON) + +# Check box color +check_color = dialog_color + +# Selected check box color +check_selected_color = (WHITE,CYAN,ON) + +# Up arrow color +uarrow_color = (GREEN,CYAN,ON) + +# Down arrow color +darrow_color = uarrow_color + +# Item help-text color +itemhelp_color = shadow_color + +# Active form text color +form_active_text_color = inputbox_color + +# Form text color +form_text_color = (CYAN,BLUE,ON) + +# Readonly form item color +form_item_readonly_color = (CYAN,WHITE,ON) + +# Dialog box gauge color +gauge_color = (BLUE,WHITE,ON) + +# Dialog box border2 color +border2_color = dialog_color + +# Input box border2 color +inputbox_border2_color = border2_color + +# Search box border2 color +searchbox_border2_color = border2_color + +# Menu box border2 color +menubox_border2_color = border2_color Index: vendor/dialog/1.3-20180621/samples/treeview =================================================================== --- vendor/dialog/1.3-20180621/samples/treeview (nonexistent) +++ vendor/dialog/1.3-20180621/samples/treeview (revision 339483) @@ -0,0 +1,22 @@ +#!/bin/sh +# $Id: treeview,v 1.2 2012/12/04 10:53:09 tom Exp $ + +. ./setup-vars + +. ./setup-tempfile + +$DIALOG --title "TREE VIEW DIALOG" \ + --treeview "TreeView demo" 0 0 0 \ + tag1 one off 0 \ + tag2 two off 1 \ + tag3 three on 2 \ + tag4 four off 1 \ + tag5 five off 2 \ + tag6 six off 3 \ + tag7 seven off 3 \ + tag8 eight off 4 \ + tag9 nine off 1 2> $tempfile + +retval=$? + +. ./report-tempfile Property changes on: vendor/dialog/1.3-20180621/samples/treeview ___________________________________________________________________ Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:executable ## -0,0 +1 ## +* \ No newline at end of property Index: vendor/dialog/1.3-20180621/samples/treeview2 =================================================================== --- vendor/dialog/1.3-20180621/samples/treeview2 (nonexistent) +++ vendor/dialog/1.3-20180621/samples/treeview2 (revision 339483) @@ -0,0 +1,52 @@ +#!/bin/sh +# $Id: treeview2,v 1.3 2012/12/23 22:28:00 tom Exp $ + +. ./setup-vars + +. ./setup-edit + +case "x$DIALOGOPTS" in +*--no-items*|*--noitem*) + CUT="cut -d: -f1,3,4" + ;; +*) + CUT="cat" + ;; +esac + +$CUT >$input <<-EOF + tag1:one:off:0 + tag2:two:off:1 + tag3:three:on:2 + tag4:four:off:1 + tag5:five:off:2 + tag6:six:off:3 + tag7:seven:off:3 + tag8:eight:off:4 + tag11:1one:off:0 + tag12:1two:off:1 + tag13:1three:on:2 + tag14:1four:off:1 + tag15:1five:off:2 + tag16:1six:off:3 + tag17:1seven:off:3 + tag18:1eight:off:4 + tag21:2one:off:0 + tag22:2two:off:1 + tag23:2three:on:2 + tag24:2four:off:1 + tag25:2five:off:2 + tag26:2six:off:3 + tag27:2seven:off:3 + tag28:2eight:off:4 + tag9:nine:off:1 +EOF + +$DIALOG --title "TREE VIEW DIALOG" \ + --scrollbar \ + --treeview "TreeView demo" 0 0 10 `cat $input | sed -e 's/:/ /g'` 2> $output + +retval=$? + +tempfile=$output +. ./report-tempfile Property changes on: vendor/dialog/1.3-20180621/samples/treeview2 ___________________________________________________________________ Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:executable ## -0,0 +1 ## +* \ No newline at end of property Index: vendor/dialog/1.3-20180621/samples/whiptail.rc =================================================================== --- vendor/dialog/1.3-20180621/samples/whiptail.rc (nonexistent) +++ vendor/dialog/1.3-20180621/samples/whiptail.rc (revision 339483) @@ -0,0 +1,142 @@ +# $Id: whiptail.rc,v 1.6 2012/12/01 01:15:04 tom Exp $ +# vile:confmode +# Run-time configuration file for dialog, matches whiptail's color scheme. +# +# Types of values: +# +# Number - <number> +# String - "string" +# Boolean - <ON|OFF> +# Attribute - (foreground,background,highlight?) + +# Set aspect-ration. +aspect = 0 + +# Set separator (for multiple widgets output). +separate_widget = "" + +# Set tab-length (for textbox tab-conversion). +tab_len = 0 + +# Make tab-traversal for checklist, etc., include the list. +visit_items = ON + +# Shadow dialog boxes? This also turns on color. +use_shadow = ON + +# Turn color support ON or OFF +use_colors = ON + +# Screen color +screen_color = (YELLOW,BLUE,ON) + +# Shadow color +shadow_color = (BLACK,BLACK,ON) + +# Dialog box color +dialog_color = (BLACK,WHITE,OFF) + +# Dialog box title color +title_color = (RED,WHITE,ON) + +# Dialog box border color +border_color = (WHITE,WHITE,ON) + +# Active button color +button_active_color = (WHITE,RED,ON) + +# Inactive button color +button_inactive_color = dialog_color + +# Active button key color +button_key_active_color = button_active_color + +# Inactive button key color +button_key_inactive_color = dialog_color + +# Active button label color +button_label_active_color = button_active_color + +# Inactive button label color +button_label_inactive_color = (BLACK,WHITE,ON) + +# Input box color +inputbox_color = dialog_color + +# Input box border color +inputbox_border_color = dialog_color + +# Search box color +searchbox_color = dialog_color + +# Search box title color +searchbox_title_color = title_color + +# Search box border color +searchbox_border_color = border_color + +# File position indicator color +position_indicator_color = title_color + +# Menu box color +menubox_color = (YELLOW,BLUE,OFF) + +# Menu box border color +menubox_border_color = screen_color + +# Item color +item_color = menubox_color + +# Selected item color +item_selected_color = screen_color + +# Tag color +tag_color = screen_color + +# Selected tag color +tag_selected_color = screen_color + +# Tag key color +tag_key_color = menubox_color + +# Selected tag key color +tag_key_selected_color = (WHITE,BLUE,ON) + +# Check box color +check_color = menubox_color + +# Selected check box color +check_selected_color = screen_color + +# Up arrow color +uarrow_color = screen_color + +# Down arrow color +darrow_color = screen_color + +# Item help-text color +itemhelp_color = (WHITE,BLACK,OFF) + +# Active form text color +form_active_text_color = tag_key_selected_color + +# Form text color +form_text_color = (WHITE,CYAN,ON) + +# Readonly form item color +form_item_readonly_color = (CYAN,WHITE,ON) + +# Dialog box gauge color +gauge_color = (BLUE,WHITE,ON) + +# Dialog box border2 color +border2_color = dialog_color + +# Input box border2 color +inputbox_border2_color = dialog_color + +# Search box border2 color +searchbox_border2_color = dialog_color + +# Menu box border2 color +menubox_border2_color = screen_color Index: vendor/dialog/1.3-20180621/samples/debian.rc =================================================================== --- vendor/dialog/1.3-20180621/samples/debian.rc (nonexistent) +++ vendor/dialog/1.3-20180621/samples/debian.rc (revision 339483) @@ -0,0 +1,143 @@ +# $Id: debian.rc,v 1.7 2011/10/15 01:00:09 tom Exp $ +# vile:confmode +# Run-time configuration file for dialog, matches Debian color scheme. +# (these are the default values for dialog) +# +# Types of values: +# +# Number - <number> +# String - "string" +# Boolean - <ON|OFF> +# Attribute - (foreground,background,highlight?) + +# Set aspect-ration. +aspect = 0 + +# Set separator (for multiple widgets output). +separate_widget = "" + +# Set tab-length (for textbox tab-conversion). +tab_len = 0 + +# Make tab-traversal for checklist, etc., include the list. +visit_items = OFF + +# Shadow dialog boxes? This also turns on color. +use_shadow = ON + +# Turn color support ON or OFF +use_colors = ON + +# Screen color +screen_color = (CYAN,BLUE,ON) + +# Shadow color +shadow_color = (BLACK,BLACK,ON) + +# Dialog box color +dialog_color = (BLACK,WHITE,OFF) + +# Dialog box title color +title_color = (BLUE,WHITE,ON) + +# Dialog box border color +border_color = (WHITE,WHITE,ON) + +# Active button color +button_active_color = (WHITE,BLUE,ON) + +# Inactive button color +button_inactive_color = dialog_color + +# Active button key color +button_key_active_color = button_active_color + +# Inactive button key color +button_key_inactive_color = (RED,WHITE,OFF) + +# Active button label color +button_label_active_color = (YELLOW,BLUE,ON) + +# Inactive button label color +button_label_inactive_color = (BLACK,WHITE,ON) + +# Input box color +inputbox_color = dialog_color + +# Input box border color +inputbox_border_color = dialog_color + +# Search box color +searchbox_color = dialog_color + +# Search box title color +searchbox_title_color = title_color + +# Search box border color +searchbox_border_color = border_color + +# File position indicator color +position_indicator_color = title_color + +# Menu box color +menubox_color = dialog_color + +# Menu box border color +menubox_border_color = border_color + +# Item color +item_color = dialog_color + +# Selected item color +item_selected_color = button_active_color + +# Tag color +tag_color = title_color + +# Selected tag color +tag_selected_color = button_label_active_color + +# Tag key color +tag_key_color = button_key_inactive_color + +# Selected tag key color +tag_key_selected_color = (RED,BLUE,ON) + +# Check box color +check_color = dialog_color + +# Selected check box color +check_selected_color = button_active_color + +# Up arrow color +uarrow_color = (GREEN,WHITE,ON) + +# Down arrow color +darrow_color = uarrow_color + +# Item help-text color +itemhelp_color = (WHITE,BLACK,OFF) + +# Active form text color +form_active_text_color = button_active_color + +# Form text color +form_text_color = (WHITE,CYAN,ON) + +# Readonly form item color +form_item_readonly_color = (CYAN,WHITE,ON) + +# Dialog box gauge color +gauge_color = title_color + +# Dialog box border2 color +border2_color = dialog_color + +# Input box border2 color +inputbox_border2_color = dialog_color + +# Search box border2 color +searchbox_border2_color = dialog_color + +# Menu box border2 color +menubox_border2_color = dialog_color Index: vendor/dialog/1.3-20180621/samples/dft-cancel =================================================================== --- vendor/dialog/1.3-20180621/samples/dft-cancel (nonexistent) +++ vendor/dialog/1.3-20180621/samples/dft-cancel (revision 339483) @@ -0,0 +1,3 @@ +#!/bin/sh +# $Id: dft-cancel,v 1.2 2012/07/03 09:44:02 tom Exp $ +DIALOGOPTS="$DIALOGOPTS --extra-button --help-button --default-button cancel" "$@" Property changes on: vendor/dialog/1.3-20180621/samples/dft-cancel ___________________________________________________________________ Added: svn:executable ## -0,0 +1 ## +* \ No newline at end of property Index: vendor/dialog/1.3-20180621/samples/dft-extra =================================================================== --- vendor/dialog/1.3-20180621/samples/dft-extra (nonexistent) +++ vendor/dialog/1.3-20180621/samples/dft-extra (revision 339483) @@ -0,0 +1,3 @@ +#!/bin/sh +# $Id: dft-extra,v 1.2 2012/07/03 09:44:02 tom Exp $ +DIALOGOPTS="$DIALOGOPTS --extra-button --help-button --default-button extra" "$@" Property changes on: vendor/dialog/1.3-20180621/samples/dft-extra ___________________________________________________________________ Added: svn:executable ## -0,0 +1 ## +* \ No newline at end of property Index: vendor/dialog/1.3-20180621/samples/dft-help =================================================================== --- vendor/dialog/1.3-20180621/samples/dft-help (nonexistent) +++ vendor/dialog/1.3-20180621/samples/dft-help (revision 339483) @@ -0,0 +1,3 @@ +#!/bin/sh +# $Id: dft-help,v 1.2 2012/07/03 09:44:02 tom Exp $ +DIALOGOPTS="$DIALOGOPTS --extra-button --help-button --default-button help" "$@" Property changes on: vendor/dialog/1.3-20180621/samples/dft-help ___________________________________________________________________ Added: svn:executable ## -0,0 +1 ## +* \ No newline at end of property Index: vendor/dialog/1.3-20180621/samples/dft-no =================================================================== --- vendor/dialog/1.3-20180621/samples/dft-no (nonexistent) +++ vendor/dialog/1.3-20180621/samples/dft-no (revision 339483) @@ -0,0 +1,3 @@ +#!/bin/sh +# $Id: dft-no,v 1.2 2012/07/03 09:44:02 tom Exp $ +DIALOGOPTS="$DIALOGOPTS --extra-button --help-button --defaultno" "$@" Property changes on: vendor/dialog/1.3-20180621/samples/dft-no ___________________________________________________________________ Added: svn:executable ## -0,0 +1 ## +* \ No newline at end of property Index: vendor/dialog/1.3-20180621/samples/dialog.py =================================================================== --- vendor/dialog/1.3-20180621/samples/dialog.py (nonexistent) +++ vendor/dialog/1.3-20180621/samples/dialog.py (revision 339483) @@ -0,0 +1,354 @@ +#!/usr/bin/python +# $Id: dialog.py,v 1.4 2012/06/29 09:33:18 tom Exp $ +# Module: dialog.py +# Copyright (c) 2000 Robb Shecter <robb@acm.org> +# All rights reserved. +# This source is covered by the GNU GPL. +# +# This module is a Python wrapper around the Linux "dialog" utility +# by Savio Lam and Stuart Herbert. My goals were to make dialog as +# easy to use from Python as possible. The demo code at the end of +# the module is a good example of how to use it. To run the demo, +# execute: +# +# python dialog.py +# +# This module has one class in it, "Dialog". An application typically +# creates an instance of it, and possibly sets the background title option. +# Then, methods can be called on it for interacting with the user. +# +# I wrote this because I want to use my 486-33 laptop as my main +# development computer (!), and I wanted a way to nicely interact with the +# user in console mode. There are apparently other modules out there +# with similar functionality, but they require the Python curses library. +# Writing this module from scratch was easier than figuring out how to +# recompile Python with curses enabled. :) +# +# One interesting feature is that the menu and selection windows allow +# *any* objects to be displayed and selected, not just strings. +# +# TO DO: +# Add code so that the input buffer is flushed before a dialog box is +# shown. This would make the UI more predictable for users. This +# feature could be turned on and off through an instance method. +# Drop using temporary files when interacting with 'dialog' +# (it's possible -- I've already tried :-). +# Try detecting the terminal window size in order to make reasonable +# height and width defaults. Hmmm - should also then check for +# terminal resizing... +# Put into a package name to make more reusable - reduce the possibility +# of name collisions. +# +# NOTES: +# there is a bug in (at least) Linux-Mandrake 7.0 Russian Edition +# running on AMD K6-2 3D that causes core dump when 'dialog' +# is running with --gauge option; +# in this case you'll have to recompile 'dialog' program. +# +# Modifications: +# Jul 2000, Sultanbek Tezadov (http://sultan.da.ru) +# Added: +# - 'gauge' widget *) +# - 'title' option to some widgets +# - 'checked' option to checklist dialog; clicking "Cancel" is now +# recognizable +# - 'selected' option to radiolist dialog; clicking "Cancel" is now +# recognizable +# - some other cosmetic changes and improvements +# + +import os +from tempfile import mktemp +from string import split +from time import sleep + +# +# Path of the dialog executable +# +DIALOG = os.getenv("DIALOG"); +if DIALOG is None: + DIALOG="../dialog"; + +class Dialog: + def __init__(self): + self.__bgTitle = '' # Default is no background title + + + def setBackgroundTitle(self, text): + self.__bgTitle = '--backtitle "%s"' % text + + + def __perform(self, cmd): + """Do the actual work of invoking dialog and getting the output.""" + fName = mktemp() + rv = os.system('%s %s %s 2> %s' % (DIALOG, self.__bgTitle, cmd, fName)) + f = open(fName) + output = f.readlines() + f.close() + os.unlink(fName) + return (rv, output) + + + def __perform_no_options(self, cmd): + """Call dialog w/out passing any more options. Needed by --clear.""" + return os.system(DIALOG + ' ' + cmd) + + + def __handleTitle(self, title): + if len(title) == 0: + return '' + else: + return '--title "%s" ' % title + + + def yesno(self, text, height=10, width=30, title=''): + """ + Put a Yes/No question to the user. + Uses the dialog --yesno option. + Returns a 1 or a 0. + """ + (code, output) = self.__perform(self.__handleTitle(title) +\ + '--yesno "%s" %d %d' % (text, height, width)) + return code == 0 + + + def msgbox(self, text, height=10, width=30, title=''): + """ + Pop up a message to the user which has to be clicked + away with "ok". + """ + self.__perform(self.__handleTitle(title) +\ + '--msgbox "%s" %d %d' % (text, height, width)) + + + def infobox(self, text, height=10, width=30): + """Make a message to the user, and return immediately.""" + self.__perform('--infobox "%s" %d %d' % (text, height, width)) + + + def inputbox(self, text, height=10, width=30, init='', title=''): + """ + Request a line of input from the user. + Returns the user's input or None if cancel was chosen. + """ + (c, o) = self.__perform(self.__handleTitle(title) +\ + '--inputbox "%s" %d %d "%s"' % (text, height, width, init)) + try: + return o[0] + except IndexError: + if c == 0: # empty string entered + return '' + else: # canceled + return None + + + def textbox(self, filename, height=20, width=60, title=None): + """Display a file in a scrolling text box.""" + if title is None: + title = filename + self.__perform(self.__handleTitle(title) +\ + ' --textbox "%s" %d %d' % (filename, height, width)) + + + def menu(self, text, height=15, width=54, list=[]): + """ + Display a menu of options to the user. This method simplifies the + --menu option of dialog, which allows for complex arguments. This + method receives a simple list of objects, and each one is assigned + a choice number. + The selected object is returned, or None if the dialog was canceled. + """ + menuheight = height - 8 + pairs = map(lambda i, item: (i + 1, item), range(len(list)), list) + choices = reduce(lambda res, pair: res + '%d "%s" ' % pair, pairs, '') + (code, output) = self.__perform('--menu "%s" %d %d %d %s' %\ + (text, height, width, menuheight, choices)) + try: + return list[int(output[0]) - 1] + except IndexError: + return None + + + def checklist(self, text, height=15, width=54, list=[], checked=None): + """ + Returns a list of the selected objects. + Returns an empty list if nothing was selected. + Returns None if the window was canceled. + checked -- a list of boolean (0/1) values; len(checked) must equal + len(list). + """ + if checked is None: + checked = [0]*len(list) + menuheight = height - 8 + triples = map( + lambda i, item, onoff, fs=('off', 'on'): (i + 1, item, fs[onoff]), + range(len(list)), list, checked) + choices = reduce(lambda res, triple: res + '%d "%s" %s ' % triple, + triples, '') + (c, o) = self.__perform('--checklist "%s" %d %d %d %s' %\ + (text, height, width, menuheight, choices)) + try: + output = o[0] + indexList = map(lambda x: int(x[1:-1]), split(output)) + objectList = filter(lambda item, list=list, indexList=indexList: + list.index(item) + 1 in indexList, + list) + return objectList + except IndexError: + if c == 0: # Nothing was selected + return [] + return None # Was canceled + + + def radiolist(self, text, height=15, width=54, list=[], selected=0): + """ + Return the selected object. + Returns empty string if no choice was selected. + Returns None if window was canceled. + selected -- the selected item (must be between 1 and len(list) + or 0, meaning no selection). + """ + menuheight = height - 8 + triples = map(lambda i, item: (i + 1, item, 'off'), + range(len(list)), list) + if selected: + i, item, tmp = triples[selected - 1] + triples[selected - 1] = (i, item, 'on') + choices = reduce(lambda res, triple: res + '%d "%s" %s ' % triple, + triples, '') + (c, o) = self.__perform('--radiolist "%s" %d %d %d %s' %\ + (text, height, width, menuheight, choices)) + try: + return list[int(o[0]) - 1] + except IndexError: + if c == 0: + return '' + return None + + + def clear(self): + """ + Clear the screen. Equivalent to the dialog --clear option. + """ + self.__perform_no_options('--clear') + + + def scrollbox(self, text, height=20, width=60, title=''): + """ + This is a bonus method. The dialog package only has a function to + display a file in a scrolling text field. This method allows any + string to be displayed by first saving it in a temp file, and calling + --textbox. + """ + fName = mktemp() + f = open(fName, 'w') + f.write(text) + f.close() + self.__perform(self.__handleTitle(title) +\ + '--textbox "%s" %d %d' % (fName, height, width)) + os.unlink(fName) + + + def gauge_start(self, perc=0, text='', height=8, width=54, title=''): + """ + Display gauge output window. + Gauge normal usage (assuming that there is an instace of 'Dialog' + class named 'd'): + d.gauge_start() + # do something + d.gauge_iterate(10) # passed throgh 10% + # ... + d.gauge_iterate(100, 'any text here') # work is done + d.stop_gauge() # clean-up actions + """ + cmd = self.__handleTitle(title) +\ + '--gauge "%s" %d %d %d' % (text, height, width, perc) + cmd = '%s %s %s 2> /dev/null' % (DIALOG, self.__bgTitle, cmd) + self.pipe = os.popen(cmd, 'w') + #/gauge_start() + + + def gauge_iterate(self, perc, text=''): + """ + Update percentage point value. + + See gauge_start() function above for the usage. + """ + if text: + text = 'XXX\n%d\n%s\nXXX\n' % (perc, text) + else: + text = '%d\n' % perc + self.pipe.write(text) + self.pipe.flush() + #/gauge_iterate() + + + def gauge_stop(self): + """ + Finish previously started gauge. + + See gauge_start() function above for the usage. + """ + self.pipe.close() + #/gauge_stop() + + + +# +# DEMO APPLICATION +# +if __name__ == '__main__': + """ + This demo tests all the features of the class. + """ + d = Dialog() + d.setBackgroundTitle('dialog.py demo') + + d.infobox( + "One moment... Just wasting some time here to test the infobox...") + sleep(3) + + if d.yesno("Do you like this demo?"): + d.msgbox("Excellent! Here's the source code:") + else: + d.msgbox("Send your complaints to /dev/null") + + d.textbox("dialog.py") + + name = d.inputbox("What's your name?", init="Snow White") + fday = d.menu("What's your favorite day of the week?", + list=["Monday", "Tuesday", "Wednesday", "Thursday", + "Friday (The best day of all)", "Saturday", "Sunday"]) + food = d.checklist("What sandwich toppings do you like?", + list=["Catsup", "Mustard", "Pesto", "Mayonaise", "Horse radish", + "Sun-dried tomatoes"], checked=[0,0,0,1,1,1]) + sand = d.radiolist("What's your favorite kind of sandwich?", + list=["Hamburger", "Hotdog", "Burrito", "Doener", "Falafel", + "Bagel", "Big Mac", "Whopper", "Quarter Pounder", + "Peanut Butter and Jelly", "Grilled cheese"], selected=4) + + # Prepare the message for the final window + bigMessage = "Here are some vital statistics about you:\n\nName: " + name +\ + "\nFavorite day of the week: " + fday +\ + "\nFavorite sandwich toppings:\n" + for topping in food: + bigMessage = bigMessage + " " + topping + "\n" + bigMessage = bigMessage + "Favorite sandwich: " + str(sand) + + d.scrollbox(bigMessage) + + #<># Gauge Demo + d.gauge_start(0, 'percentage: 0', title='Gauge Demo') + for i in range(1, 101): + if i < 50: + msg = 'percentage: %d' % i + elif i == 50: + msg = 'Over 50%' + else: + msg = '' + d.gauge_iterate(i, msg) + sleep(0.1) + d.gauge_stop() + #<># + + d.clear() Index: vendor/dialog/1.3-20180621/samples/form1 =================================================================== --- vendor/dialog/1.3-20180621/samples/form1 (nonexistent) +++ vendor/dialog/1.3-20180621/samples/form1 (revision 339483) @@ -0,0 +1,79 @@ +#! /bin/sh +# $Id: form1,v 1.15 2011/10/04 23:36:53 tom Exp $ + +. ./setup-vars + +DIALOG_ERROR=254 +export DIALOG_ERROR + +backtitle="An Example for the use of --form:" + +ids=`id|sed -e 's/([^)]*)//g'` +uid=`echo "$ids" | sed -e 's/^uid=//' -e 's/ .*//'` +gid=`echo "$ids" | sed -e 's/^.* gid=//' -e 's/ .*//'` + +user="$USER" +home="$HOME" + +returncode=0 +while test $returncode != 1 && test $returncode != 250 +do +exec 3>&1 +value=`$DIALOG --ok-label "Submit" \ + --backtitle "$backtitle" "$@" \ + --form "Here is a possible piece of a configuration program." \ +20 50 0 \ + "Username:" 1 1 "$user" 1 10 10 0 \ + "UID:" 2 1 "$uid" 2 10 8 0 \ + "GID:" 3 1 "$gid" 3 10 8 0 \ + "HOME:" 4 1 "$home" 4 10 40 0 \ +2>&1 1>&3` +returncode=$? +exec 3>&- + +show=`echo "$value" |sed -e 's/^/ /'` + + case $returncode in + $DIALOG_CANCEL) + "$DIALOG" \ + --clear \ + --backtitle "$backtitle" \ + --yesno "Really quit?" 10 30 + case $? in + $DIALOG_OK) + break + ;; + $DIALOG_CANCEL) + returncode=99 + ;; + esac + ;; + $DIALOG_OK) + "$DIALOG" \ + --clear \ + --backtitle "$backtitle" --no-collapse --cr-wrap \ + --msgbox "Resulting data:\n\ +$show" 10 40 + ;; + $DIALOG_HELP) + echo "Button 2 (Help) pressed." + exit + ;; + $DIALOG_EXTRA) + echo "Button 3 (Extra) pressed." + exit + ;; + $DIALOG_ERROR) + echo "ERROR!$value" + exit + ;; + $DIALOG_ESC) + echo "ESC pressed." + exit + ;; + *) + echo "Return code was $returncode" + exit + ;; + esac +done Property changes on: vendor/dialog/1.3-20180621/samples/form1 ___________________________________________________________________ Added: svn:executable ## -0,0 +1 ## +* \ No newline at end of property Index: vendor/dialog/1.3-20180621/samples/fselect0 =================================================================== --- vendor/dialog/1.3-20180621/samples/fselect0 (nonexistent) +++ vendor/dialog/1.3-20180621/samples/fselect0 (revision 339483) @@ -0,0 +1,11 @@ +#!/bin/sh +# $Id: fselect0,v 1.1 2011/10/14 08:32:48 tom Exp $ + +. ./setup-vars + +exec 3>&1 +RESULT=`$DIALOG --title "Please choose a file" "$@" --fselect '' 14 48 2>&1 1>&3` +retval=$? +exec 3>&- + +. ./report-string Property changes on: vendor/dialog/1.3-20180621/samples/fselect0 ___________________________________________________________________ Added: svn:executable ## -0,0 +1 ## +* \ No newline at end of property Index: vendor/dialog/1.3-20180621/samples/inputmenu =================================================================== --- vendor/dialog/1.3-20180621/samples/inputmenu (nonexistent) +++ vendor/dialog/1.3-20180621/samples/inputmenu (revision 339483) @@ -0,0 +1,65 @@ +#! /bin/sh +# $Id: inputmenu,v 1.15 2012/07/06 18:11:21 tom Exp $ +# 2002 - written by Tobias Rittweiler <tobrit@freebits.de> + +. ./setup-vars + +user="$USER" +uid=`id|sed -e 's/^uid=//' -e 's/(.*//'` +gid=`id|sed -e 's/^.*gid=//' -e 's/(.*//'` +home="$HOME" + +while [ ${returncode:-99} -ne 1 -a ${returncode:-99} -ne 250 ]; do + exec 3>&1 + value=`$DIALOG \ + --clear --ok-label "Create" \ + --backtitle "An Example for the use of --inputmenu:" "$@" \ + --inputmenu "Originally I designed --inputmenu for a \ +configuration purpose. Here is a possible piece of a configuration program. \ +" 20 50 10 \ +"Username:" "$user" \ +"UID:" "$uid" \ +"GID:" "$gid" \ +"HOME:" "$home" \ +2>&1 1>&3 ` + returncode=$? + exec 3>&- + case $returncode in + $DIALOG_CANCEL) + "$DIALOG" \ + --clear --backtitle "An Example for the use of --inputmenu:" \ + --yesno "Really quit?" 10 30 + case $? in + $DIALOG_OK) break;; + $DIALOG_CANCEL) returncode=99;; + esac + ;; + $DIALOG_OK) + "$DIALOG" \ + --clear --backtitle "An Example for the use of --inputmenu:" \ + --msgbox "useradd \n\ + -d $home \n\ + -u $uid \n\ + -g $gid \n\ + $user" 10 40 + ;; + $DIALOG_EXTRA) + value=`echo "$value" | sed -e 's/^RENAMED //'` + tag=`echo "$value" | sed -e 's/:.*//'` + item=`echo "$value" | sed -e 's/^[^:]*:[ ][ ]*//'` + + case "$tag" in + Username) user="$item" ;; + UID) uid="$item" ;; + GID) gid="$item" ;; + HOME) home="$item" ;; + esac + ;; + + $DIALOG_ESC) + echo "ESC pressed." + break + ;; + + esac +done Property changes on: vendor/dialog/1.3-20180621/samples/inputmenu ___________________________________________________________________ Added: svn:executable ## -0,0 +1 ## +* \ No newline at end of property Index: vendor/dialog/1.3-20180621/samples/inputmenu-stdout =================================================================== --- vendor/dialog/1.3-20180621/samples/inputmenu-stdout (nonexistent) +++ vendor/dialog/1.3-20180621/samples/inputmenu-stdout (revision 339483) @@ -0,0 +1,63 @@ +#! /bin/sh +# $Id: inputmenu-stdout,v 1.13 2012/07/06 18:11:12 tom Exp $ +# 2002 - written by Tobias Rittweiler <tobrit@freebits.de> + +. ./setup-vars + +user="$USER" +uid=`id|sed -e 's/^uid=//' -e 's/(.*//'` +gid=`id|sed -e 's/^.*gid=//' -e 's/(.*//'` +home="$HOME" + +while [ ${returncode:-99} -ne 1 -a ${returncode:-99} -ne 250 ]; do + value=`$DIALOG \ + --stdout --clear --ok-label "Create" \ + --backtitle "An Example for the use of --inputmenu:" "$@" \ + --inputmenu "Originally I designed --inputmenu for a \ +configuration purpose. Here is a possible piece of a configuration program. \ +" 20 50 10 \ +"Username:" "$user" \ +"UID:" "$uid" \ +"GID:" "$gid" \ +"HOME:" "$home" \ +` + returncode=$? + case $returncode in + $DIALOG_CANCEL) + "$DIALOG" \ + --clear --backtitle "An Example for the use of --inputmenu:" \ + --yesno "Really quit?" 10 30 + case $? in + $DIALOG_OK) break;; + $DIALOG_CANCEL) returncode=99;; + esac + ;; + $DIALOG_OK) + "$DIALOG" \ + --clear --backtitle "An Example for the use of --inputmenu:" \ + --msgbox "useradd \n\ + -d $home \n\ + -u $uid \n\ + -g $gid \n\ + $user" 10 40 + ;; + $DIALOG_EXTRA) + value=`echo "$value" | sed -e 's/^RENAMED //'` + tag=`echo "$value" | sed -e 's/:.*//'` + item=`echo "$value" | sed -e 's/^[^:]*:[ ][ ]*//'` + + case "$tag" in + Username) user="$item" ;; + UID) uid="$item" ;; + GID) gid="$item" ;; + HOME) home="$item" ;; + esac + ;; + + $DIALOG_ESC) + echo "ESC pressed." + break + ;; + + esac +done Property changes on: vendor/dialog/1.3-20180621/samples/inputmenu-stdout ___________________________________________________________________ Added: svn:executable ## -0,0 +1 ## +* \ No newline at end of property Index: vendor/dialog/1.3-20180621/samples/inputmenu1 =================================================================== --- vendor/dialog/1.3-20180621/samples/inputmenu1 (nonexistent) +++ vendor/dialog/1.3-20180621/samples/inputmenu1 (revision 339483) @@ -0,0 +1,85 @@ +#! /bin/sh +# $Id: inputmenu1,v 1.9 2012/07/01 00:59:54 tom Exp $ +# +# "inputmenu" rewritten into Bourne shell. + +. ./setup-vars + +backtitle="An Example for the use of --inputmenu:" + +ids=`id|sed -e 's/([^)]*)//g'` +uid=`echo "$ids" | sed -e 's/^uid=//' -e 's/ .*//'` +gid=`echo "$ids" | sed -e 's/^.* gid=//' -e 's/ .*//'` + +user="$USER" +home="$HOME" + +returncode=0 +while test $returncode != 1 && test $returncode != 250 +do +exec 3>&1 +value=`$DIALOG --clear --ok-label "Create" \ + --backtitle "$backtitle" "$@" \ + --inputmenu "Originally I designed --inputmenu for a \ +configuration purpose. Here is a possible piece of a configuration program." \ +20 50 10 \ + "Username:" "$user" \ + "UID:" "$uid" \ + "GID:" "$gid" \ + "HOME:" "$home" \ +2>&1 1>&3` +returncode=$? +exec 3>&- + + case $returncode in + $DIALOG_CANCEL) + "$DIALOG" \ + --clear \ + --backtitle "$backtitle" \ + --yesno "Really quit?" 10 30 + case $? in + $DIALOG_OK) + break + ;; + $DIALOG_CANCEL) + returncode=99 + ;; + esac + ;; + $DIALOG_OK) + "$DIALOG" \ + --clear \ + --backtitle "$backtitle" \ + --msgbox "useradd \n\ + -d $home \n\ + -u $uid \n\ + -g $gid \n\ + $user" 10 40 + ;; + $DIALOG_EXTRA) + tag=`echo "$value" |sed -e 's/^RENAMED //' -e 's/:.*//'` + item=`echo "$value" |sed -e 's/^[^:]*:[ ]*//' -e 's/[ ]*$//'` + + case "$tag" in + Username) + user="$item" + ;; + UID) + uid="$item" + ;; + GID) + gid="$item" + ;; + HOME) + home="$item" + ;; + esac + ;; + + $DIALOG_ESC) + echo "ESC pressed." + break + ;; + + esac +done Property changes on: vendor/dialog/1.3-20180621/samples/inputmenu1 ___________________________________________________________________ Added: svn:executable ## -0,0 +1 ## +* \ No newline at end of property Index: vendor/dialog/1.3-20180621/samples/inputmenu2 =================================================================== --- vendor/dialog/1.3-20180621/samples/inputmenu2 (nonexistent) +++ vendor/dialog/1.3-20180621/samples/inputmenu2 (revision 339483) @@ -0,0 +1,97 @@ +#! /bin/sh +# $Id: inputmenu2,v 1.9 2012/07/01 01:00:34 tom Exp $ +# +# "inputmenu1" with defaultitem, help-button. + +. ./setup-vars + +backtitle="An Example for the use of --inputmenu:" + +ids=`id|sed -e 's/([^)]*)//g'` +uid=`echo "$ids" | sed -e 's/^uid=//' -e 's/ .*//'` +gid=`echo "$ids" | sed -e 's/^.* gid=//' -e 's/ .*//'` + +user="$USER" +home="$HOME" + +returncode=0 +defaultitem="Username:" +while test $returncode != 1 && test $returncode != 250 +do +exec 3>&1 +value=`$DIALOG --clear --ok-label "Create" \ + --backtitle "$backtitle" \ + --help-button \ + --help-label "Script" \ + --default-item "$defaultitem" "$@" \ + --inputmenu "Originally I designed --inputmenu for a \ +configuration purpose. Here is a possible piece of a configuration program." \ +20 60 10 \ + "Username:" "$user" \ + "UID:" "$uid" \ + "GID:" "$gid" \ + "HOME:" "$home" \ +2>&1 1>&3` +returncode=$? +exec 3>&- + + case $returncode in + $DIALOG_HELP) + "$DIALOG" \ + --textbox "$0" 0 0 + ;; + $DIALOG_CANCEL) + "$DIALOG" \ + --clear \ + --backtitle "$backtitle" \ + --yesno "Really quit?" 10 30 + case $? in + $DIALOG_OK) + break + ;; + $DIALOG_CANCEL) + returncode=99 + ;; + esac + ;; + $DIALOG_OK) + "$DIALOG" \ + --clear \ + --backtitle "$backtitle" \ + --msgbox "useradd \n\ + -d $home \n\ + -u $uid \n\ + -g $gid \n\ + $user" 10 40 + ;; + $DIALOG_EXTRA) + tag=`echo "$value" |sed -e 's/^RENAMED //' -e 's/:.*/:/'` + item=`echo "$value" |sed -e 's/^[^:]*:[ ]*//' -e 's/[ ]*$//'` + + case "$tag" in + Username:) + user="$item" + ;; + UID:) + uid="$item" + ;; + GID:) + gid="$item" + ;; + HOME:) + home="$item" + ;; + *) + tag= + ;; + esac + test -n "$tag" && defaultitem="$tag" + ;; + + $DIALOG_ESC) + echo "ESC pressed." + break + ;; + + esac +done Property changes on: vendor/dialog/1.3-20180621/samples/inputmenu2 ___________________________________________________________________ Added: svn:executable ## -0,0 +1 ## +* \ No newline at end of property Index: vendor/dialog/1.3-20180621/samples/inputmenu3 =================================================================== --- vendor/dialog/1.3-20180621/samples/inputmenu3 (nonexistent) +++ vendor/dialog/1.3-20180621/samples/inputmenu3 (revision 339483) @@ -0,0 +1,106 @@ +#! /bin/sh +# $Id: inputmenu3,v 1.11 2012/07/01 01:00:34 tom Exp $ +# +# "inputmenu1" with defaultitem, help-button and item-help. + +. ./setup-vars + +backtitle="An Example for the use of --inputmenu:" + +ids=`id|sed -e 's/([^)]*)//g'` +uid=`echo "$ids" | sed -e 's/^uid=//' -e 's/ .*//'` +gid=`echo "$ids" | sed -e 's/^.* gid=//' -e 's/ .*//'` + +user="$USER" +home="$HOME" + +returncode=0 +defaultitem="Username:" +while test $returncode != 1 && test $returncode != 250 +do +exec 3>&1 +value=`$DIALOG --clear --ok-label "Create" \ + --backtitle "$backtitle" \ + --help-button \ + --help-label "Script" \ + --default-item "$defaultitem" \ + --item-help "$@" \ + --inputmenu "Originally I designed --inputmenu for a \ +configuration purpose. Here is a possible piece of a configuration program." \ +20 60 10 \ + "Username:" "$user" "User login-name" \ + "UID:" "$uid" "User-ID (number)" \ + "GID:" "$gid" "Group-ID (number)" \ + "HOME:" "$home" "User's home-directory" \ +2>&1 1>&3` +returncode=$? +exec 3>&- + + case $returncode in + $DIALOG_CANCEL) + "$DIALOG" \ + --clear \ + --backtitle "$backtitle" \ + --yesno "Really quit?" 10 30 + case $? in + $DIALOG_OK) + break + ;; + $DIALOG_CANCEL) + returncode=99 + ;; + esac + ;; + $DIALOG_OK) + case $value in + HELP*) + "$DIALOG" \ + --textbox "$0" 0 0 + ;; + *) + "$DIALOG" \ + --clear \ + --backtitle "$backtitle" \ + --msgbox "useradd \n\ + -d $home \n\ + -u $uid \n\ + -g $gid \n\ + $user" 10 40 + ;; + esac + ;; + $DIALOG_HELP) + "$DIALOG" \ + --textbox "$0" 0 0 + ;; + $DIALOG_EXTRA) + tag=`echo "$value" |sed -e 's/^RENAMED //' -e 's/:.*/:/'` + item=`echo "$value" |sed -e 's/^[^:]*:[ ]*//' -e 's/[ ]*$//'` + + case "$tag" in + Username:) + user="$item" + ;; + UID:) + uid="$item" + ;; + GID:) + gid="$item" + ;; + HOME:) + home="$item" + ;; + *) + tag= + ;; + esac + test -n "$tag" && defaultitem="$tag" + ;; + + $DIALOG_ESC) + echo "ESC pressed." + break + ;; + + esac +done Property changes on: vendor/dialog/1.3-20180621/samples/inputmenu3 ___________________________________________________________________ Added: svn:executable ## -0,0 +1 ## +* \ No newline at end of property Index: vendor/dialog/1.3-20180621/samples/inputmenu4 =================================================================== --- vendor/dialog/1.3-20180621/samples/inputmenu4 (nonexistent) +++ vendor/dialog/1.3-20180621/samples/inputmenu4 (revision 339483) @@ -0,0 +1,86 @@ +#! /bin/sh +# $Id: inputmenu4,v 1.9 2012/07/01 01:00:34 tom Exp $ +# +# "inputmenu1" with a different label for the extra-button + +. ./setup-vars + +backtitle="An Example for the use of --inputmenu:" + +ids=`id|sed -e 's/([^)]*)//g'` +uid=`echo "$ids" | sed -e 's/^uid=//' -e 's/ .*//'` +gid=`echo "$ids" | sed -e 's/^.* gid=//' -e 's/ .*//'` + +user="$USER" +home="$HOME" + +returncode=0 +while test $returncode != 1 && test $returncode != 250 +do +exec 3>&1 +value=`$DIALOG --clear --ok-label "Create" \ + --extra-label "Edit" \ + --backtitle "$backtitle" "$@" \ + --inputmenu "Originally I designed --inputmenu for a \ +configuration purpose. Here is a possible piece of a configuration program." \ +20 50 10 \ + "Username:" "$user" \ + "UID:" "$uid" \ + "GID:" "$gid" \ + "HOME:" "$home" \ +2>&1 1>&3` +returncode=$? +exec 3>&- + + case $returncode in + $DIALOG_CANCEL) + "$DIALOG" \ + --clear \ + --backtitle "$backtitle" \ + --yesno "Really quit?" 10 30 + case $? in + $DIALOG_OK) + break + ;; + $DIALOG_CANCEL) + returncode=99 + ;; + esac + ;; + $DIALOG_OK) + "$DIALOG" \ + --clear \ + --backtitle "$backtitle" \ + --msgbox "useradd \n\ + -d $home \n\ + -u $uid \n\ + -g $gid \n\ + $user" 10 40 + ;; + $DIALOG_EXTRA) + tag=`echo "$value" |sed -e 's/^RENAMED //' -e 's/:.*//'` + item=`echo "$value" |sed -e 's/^[^:]*:[ ]*//' -e 's/[ ]*$//'` + + case "$tag" in + Username) + user="$item" + ;; + UID) + uid="$item" + ;; + GID) + gid="$item" + ;; + HOME) + home="$item" + ;; + esac + ;; + + $DIALOG_ESC) + echo "ESC pressed." + break + ;; + + esac +done Property changes on: vendor/dialog/1.3-20180621/samples/inputmenu4 ___________________________________________________________________ Added: svn:executable ## -0,0 +1 ## +* \ No newline at end of property Index: vendor/dialog/1.3-20180621/samples/killall =================================================================== --- vendor/dialog/1.3-20180621/samples/killall (nonexistent) +++ vendor/dialog/1.3-20180621/samples/killall (revision 339483) @@ -0,0 +1,16 @@ +#! /bin/sh +# $Id: killall,v 1.3 2012/06/29 09:39:19 tom Exp $ +# Linux has a program that does this correctly. + +. ./setup-vars + +for prog in $* +do + pid=`ps -a |fgrep $prog |fgrep -v fgrep|sed -e 's/^[ ]*//' -e 's/ .*//' ` + if test -n "$pid" ; then + echo killing pid=$pid, $prog + kill -$SIG_HUP $pid || \ + kill -$SIG_TERM $pid || \ + kill -$SIG_KILL $pid + fi +done Property changes on: vendor/dialog/1.3-20180621/samples/killall ___________________________________________________________________ Added: svn:executable ## -0,0 +1 ## +* \ No newline at end of property Index: vendor/dialog/1.3-20180621/samples/prgbox =================================================================== --- vendor/dialog/1.3-20180621/samples/prgbox (nonexistent) +++ vendor/dialog/1.3-20180621/samples/prgbox (revision 339483) @@ -0,0 +1,9 @@ +#!/bin/sh +# $Id: prgbox,v 1.2 2012/07/02 09:46:24 tom Exp $ + +. ./setup-vars + +$DIALOG --title "PRGBOX" "$@" --prgbox "./shortlist" 20 70 + +retval=$? +. ./report-button Property changes on: vendor/dialog/1.3-20180621/samples/prgbox ___________________________________________________________________ Added: svn:executable ## -0,0 +1 ## +* \ No newline at end of property Index: vendor/dialog/1.3-20180621/samples/prgbox2 =================================================================== --- vendor/dialog/1.3-20180621/samples/prgbox2 (nonexistent) +++ vendor/dialog/1.3-20180621/samples/prgbox2 (revision 339483) @@ -0,0 +1,9 @@ +#!/bin/sh +# $Id: prgbox2,v 1.2 2012/07/02 09:46:24 tom Exp $ + +. ./setup-vars + +$DIALOG --title "PRGBOX" "$@" --prgbox "./shortlist 3" 20 70 + +retval=$? +. ./report-button Property changes on: vendor/dialog/1.3-20180621/samples/prgbox2 ___________________________________________________________________ Added: svn:executable ## -0,0 +1 ## +* \ No newline at end of property Index: vendor/dialog/1.3-20180621/samples/report-button =================================================================== --- vendor/dialog/1.3-20180621/samples/report-button (nonexistent) +++ vendor/dialog/1.3-20180621/samples/report-button (revision 339483) @@ -0,0 +1,21 @@ +#!/bin/sh +# $Id: report-button,v 1.3 2012/06/29 09:29:36 tom Exp $ +# Report button-only, no $RESULT +# vile:shmode + +case $retval in + $DIALOG_OK) + echo "OK";; + $DIALOG_CANCEL) + echo "Cancel pressed.";; + $DIALOG_HELP) + echo "Help pressed.";; + $DIALOG_EXTRA) + echo "Extra button pressed.";; + $DIALOG_ITEM_HELP) + echo "Item-help button pressed.";; + $DIALOG_ERROR) + echo "ERROR!";; + $DIALOG_ESC) + echo "ESC pressed.";; +esac Index: vendor/dialog/1.3-20180621/samples/report-edit =================================================================== --- vendor/dialog/1.3-20180621/samples/report-edit (nonexistent) +++ vendor/dialog/1.3-20180621/samples/report-edit (revision 339483) @@ -0,0 +1,23 @@ +#!/bin/sh +# $Id: report-edit,v 1.4 2012/06/29 09:29:41 tom Exp $ +# Report results from editing. +# vile:shmode + +case $retval in + $DIALOG_OK) + diff -c $input $output + echo "OK" + ;; + $DIALOG_CANCEL) + echo "Cancel pressed";; + $DIALOG_HELP) + echo "Help pressed";; + $DIALOG_EXTRA) + echo "Extra pressed";; + $DIALOG_ITEM_HELP) + echo "Item-help button pressed.";; + $DIALOG_ERROR) + echo "ERROR!";; + $DIALOG_ESC) + echo "ESC pressed.";; +esac Index: vendor/dialog/1.3-20180621/samples/report-string =================================================================== --- vendor/dialog/1.3-20180621/samples/report-string (nonexistent) +++ vendor/dialog/1.3-20180621/samples/report-string (revision 339483) @@ -0,0 +1,24 @@ +#!/bin/sh +# $Id: report-string,v 1.3 2012/06/29 09:32:17 tom Exp $ +# Report result passed in a string $RESULT +# vile:shmode + +case $retval in + $DIALOG_OK) + echo "Result is $RESULT";; + $DIALOG_CANCEL) + echo "Cancel pressed.";; + $DIALOG_HELP) + echo "Help pressed ($RESULT).";; + $DIALOG_EXTRA) + echo "Extra button pressed.";; + $DIALOG_ITEM_HELP) + echo "Item-help button pressed.";; + $DIALOG_ESC) + if test -n "$RESULT" ; then + echo "$RESULT" + else + echo "ESC pressed." + fi + ;; +esac Index: vendor/dialog/1.3-20180621/samples/report-yesno =================================================================== --- vendor/dialog/1.3-20180621/samples/report-yesno (nonexistent) +++ vendor/dialog/1.3-20180621/samples/report-yesno (revision 339483) @@ -0,0 +1,21 @@ +#!/bin/sh +# $Id: report-yesno,v 1.2 2012/06/29 09:32:12 tom Exp $ +# Report button-only, no $RESULT +# vile:shmode + +case $retval in + $DIALOG_OK) + echo "YES";; + $DIALOG_CANCEL) + echo "NO";; + $DIALOG_HELP) + echo "Help pressed.";; + $DIALOG_EXTRA) + echo "Extra button pressed.";; + $DIALOG_ITEM_HELP) + echo "Item-help button pressed.";; + $DIALOG_ERROR) + echo "ERROR!";; + $DIALOG_ESC) + echo "ESC pressed.";; +esac Index: vendor/dialog/1.3-20180621/samples/setup-utf8 =================================================================== --- vendor/dialog/1.3-20180621/samples/setup-utf8 (nonexistent) +++ vendor/dialog/1.3-20180621/samples/setup-utf8 (revision 339483) @@ -0,0 +1,12 @@ +#!/bin/sh +# $Id: setup-utf8,v 1.2 2012/06/29 09:50:32 tom Exp $ +# vile:shmode + +case none"$LANG$LC_ALL$LC_CTYPE" in +*UTF-8*) + ;; +*) + echo "This script must be run in a UTF-8 locale" + exit 1 + ;; +esac Index: vendor/dialog/1.3-20180621/samples/setup-vars =================================================================== --- vendor/dialog/1.3-20180621/samples/setup-vars (nonexistent) +++ vendor/dialog/1.3-20180621/samples/setup-vars (revision 339483) @@ -0,0 +1,23 @@ +#!/bin/sh +# $Id: setup-vars,v 1.3 2012/06/29 09:52:26 tom Exp $ +# vile:shmode + +# These symbols are defined to use in the sample shell scripts to make them +# more readable. But they are (intentionally) not exported. If they were +# exported, they would also be visible in the dialog program (a subprocess). + +: ${DIALOG=dialog} + +: ${DIALOG_OK=0} +: ${DIALOG_CANCEL=1} +: ${DIALOG_HELP=2} +: ${DIALOG_EXTRA=3} +: ${DIALOG_ITEM_HELP=4} +: ${DIALOG_ESC=255} + +: ${SIG_NONE=0} +: ${SIG_HUP=1} +: ${SIG_INT=2} +: ${SIG_QUIT=3} +: ${SIG_KILL=9} +: ${SIG_TERM=15} Index: vendor/dialog/1.3-20180621/samples/sourcemage.rc =================================================================== --- vendor/dialog/1.3-20180621/samples/sourcemage.rc (nonexistent) +++ vendor/dialog/1.3-20180621/samples/sourcemage.rc (revision 339483) @@ -0,0 +1,142 @@ +# $Id: sourcemage.rc,v 1.6 2011/10/15 01:00:41 tom Exp $ +# vile:confmode +# Run-time configuration file for dialog, matches SourceMage color scheme. +# +# Types of values: +# +# Number - <number> +# String - "string" +# Boolean - <ON|OFF> +# Attribute - (foreground,background,highlight?) + +# Set aspect-ration. +aspect = 0 + +# Set separator (for multiple widgets output). +separate_widget = "" + +# Set tab-length (for textbox tab-conversion). +tab_len = 0 + +# Make tab-traversal for checklist, etc., include the list. +visit_items = OFF + +# Shadow dialog boxes? This also turns on color. +use_shadow = ON + +# Turn color support ON or OFF +use_colors = ON + +# Screen color +screen_color = (RED,BLACK,ON) + +# Shadow color +shadow_color = (BLACK,BLACK,ON) + +# Dialog box color +dialog_color = (BLACK,WHITE,OFF) + +# Dialog box title color +title_color = (RED,WHITE,ON) + +# Dialog box border color +border_color = (WHITE,WHITE,ON) + +# Active button color +button_active_color = (WHITE,RED,ON) + +# Inactive button color +button_inactive_color = dialog_color + +# Active button key color +button_key_active_color = button_active_color + +# Inactive button key color +button_key_inactive_color = (RED,WHITE,OFF) + +# Active button label color +button_label_active_color = (RED,RED,ON) + +# Inactive button label color +button_label_inactive_color = (BLACK,WHITE,ON) + +# Input box color +inputbox_color = dialog_color + +# Input box border color +inputbox_border_color = dialog_color + +# Search box color +searchbox_color = dialog_color + +# Search box title color +searchbox_title_color = title_color + +# Search box border color +searchbox_border_color = border_color + +# File position indicator color +position_indicator_color = title_color + +# Menu box color +menubox_color = dialog_color + +# Menu box border color +menubox_border_color = border_color + +# Item color +item_color = dialog_color + +# Selected item color +item_selected_color = button_active_color + +# Tag color +tag_color = title_color + +# Selected tag color +tag_selected_color = button_label_active_color + +# Tag key color +tag_key_color = title_color + +# Selected tag key color +tag_key_selected_color = button_active_color + +# Check box color +check_color = dialog_color + +# Selected check box color +check_selected_color = button_active_color + +# Up arrow color +uarrow_color = title_color + +# Down arrow color +darrow_color = title_color + +# Item help-text color +itemhelp_color = (WHITE,BLACK,OFF) + +# Active form text color +form_active_text_color = dialog_color + +# Form text color +form_text_color = screen_color + +# Readonly form item color +form_item_readonly_color = (CYAN,WHITE,ON) + +# Dialog box gauge color +gauge_color = (BLUE,WHITE,ON) + +# Dialog box border2 color +border2_color = dialog_color + +# Input box border2 color +inputbox_border2_color = dialog_color + +# Search box border2 color +searchbox_border2_color = dialog_color + +# Menu box border2 color +menubox_border2_color = dialog_color Index: vendor/dialog/1.3-20180621/samples/suse.rc =================================================================== --- vendor/dialog/1.3-20180621/samples/suse.rc (nonexistent) +++ vendor/dialog/1.3-20180621/samples/suse.rc (revision 339483) @@ -0,0 +1,142 @@ +# $Id: suse.rc,v 1.5 2011/10/15 01:01:00 tom Exp $ +# vile:confmode +# Run-time configuration file for dialog, matches SuSE color scheme. +# +# Types of values: +# +# Number - <number> +# String - "string" +# Boolean - <ON|OFF> +# Attribute - (foreground,background,highlight?) + +# Set aspect-ration. +aspect = 0 + +# Set separator (for multiple widgets output). +separate_widget = "" + +# Set tab-length (for textbox tab-conversion). +tab_len = 0 + +# Make tab-traversal for checklist, etc., include the list. +visit_items = OFF + +# Shadow dialog boxes? This also turns on color. +use_shadow = OFF + +# Turn color support ON or OFF +use_colors = OFF + +# Screen color +screen_color = (CYAN,BLUE,ON) + +# Shadow color +shadow_color = (BLACK,BLACK,OFF) + +# Dialog box color +dialog_color = (BLACK,WHITE,OFF) + +# Dialog box title color +title_color = (YELLOW,WHITE,ON) + +# Dialog box border color +border_color = (WHITE,WHITE,ON) + +# Active button color +button_active_color = (WHITE,BLUE,ON) + +# Inactive button color +button_inactive_color = dialog_color + +# Active button key color +button_key_active_color = button_active_color + +# Inactive button key color +button_key_inactive_color = (RED,WHITE,OFF) + +# Active button label color +button_label_active_color = (YELLOW,BLUE,ON) + +# Inactive button label color +button_label_inactive_color = (BLACK,WHITE,ON) + +# Input box color +inputbox_color = dialog_color + +# Input box border color +inputbox_border_color = dialog_color + +# Search box color +searchbox_color = dialog_color + +# Search box title color +searchbox_title_color = title_color + +# Search box border color +searchbox_border_color = border_color + +# File position indicator color +position_indicator_color = title_color + +# Menu box color +menubox_color = dialog_color + +# Menu box border color +menubox_border_color = border_color + +# Item color +item_color = dialog_color + +# Selected item color +item_selected_color = button_active_color + +# Tag color +tag_color = title_color + +# Selected tag color +tag_selected_color = button_label_active_color + +# Tag key color +tag_key_color = button_key_inactive_color + +# Selected tag key color +tag_key_selected_color = (RED,BLUE,ON) + +# Check box color +check_color = dialog_color + +# Selected check box color +check_selected_color = button_active_color + +# Up arrow color +uarrow_color = (GREEN,WHITE,ON) + +# Down arrow color +darrow_color = uarrow_color + +# Item help-text color +itemhelp_color = (WHITE,BLACK,OFF) + +# Active form text color +form_active_text_color = button_active_color + +# Form text color +form_text_color = (WHITE,CYAN,ON) + +# Readonly form item color +form_item_readonly_color = (CYAN,WHITE,ON) + +# Dialog box gauge color +gauge_color = (BLUE,WHITE,ON) + +# Dialog box border2 color +border2_color = dialog_color + +# Input box border2 color +inputbox_border2_color = dialog_color + +# Search box border2 color +searchbox_border2_color = dialog_color + +# Menu box border2 color +menubox_border2_color = dialog_color Index: vendor/dialog/1.3-20180621/samples/tailboxbg =================================================================== --- vendor/dialog/1.3-20180621/samples/tailboxbg (nonexistent) +++ vendor/dialog/1.3-20180621/samples/tailboxbg (revision 339483) @@ -0,0 +1,22 @@ +#!/bin/sh +# $Id: tailboxbg,v 1.10 2012/06/29 09:48:28 tom Exp $ + +. ./setup-vars + +. ./setup-tempfile + +./killall listing +./listing >listing.out & + +$DIALOG --title "TAIL BOX" \ + --no-kill "$@" \ + --tailboxbg listing.out 24 70 2>$tempfile + +# wait a while for the background process to run +sleep 10 + +# now kill it +kill -$SIG_QUIT `cat $tempfile` 2>&1 >/dev/null 2>/dev/null + +# ...and the process that is making the listing +./killall listing Property changes on: vendor/dialog/1.3-20180621/samples/tailboxbg ___________________________________________________________________ Added: svn:executable ## -0,0 +1 ## +* \ No newline at end of property Index: vendor/dialog/1.3-20180621/samples/tailboxbg1 =================================================================== --- vendor/dialog/1.3-20180621/samples/tailboxbg1 (nonexistent) +++ vendor/dialog/1.3-20180621/samples/tailboxbg1 (revision 339483) @@ -0,0 +1,32 @@ +#!/bin/sh +# $Id: tailboxbg1,v 1.10 2012/06/29 09:51:46 tom Exp $ + +. ./setup-vars + +. ./setup-tempfile + +./killall listing +./listing >listing.out & + +$DIALOG --title "TAIL BOXES" \ + --begin 10 10 "$@" --tailboxbg listing.out 8 58 \ + --and-widget \ + --begin 15 15 "$@" --tailboxbg listing.out 8 58 \ + --and-widget \ + --begin 3 10 "$@" --msgbox "Press OK " 5 30 \ + 2>$tempfile + +# The --and-widget causes a tab to be emitted, but our example will only +# write one number to stderr. +pid=`cat $tempfile |sed -e 's/ //g'` +if test -n "$pid" ; then +# wait a while for the background process to run +sleep 10 + +# now kill it +kill -$SIG_QUIT $pid 2>&1 >/dev/null 2>/dev/null +echo "killed [$pid]" +fi + +# ...and the process that is making the listing +./killall listing Property changes on: vendor/dialog/1.3-20180621/samples/tailboxbg1 ___________________________________________________________________ Added: svn:executable ## -0,0 +1 ## +* \ No newline at end of property Index: vendor/dialog/1.3-20180621/samples/tailboxbg2 =================================================================== --- vendor/dialog/1.3-20180621/samples/tailboxbg2 (nonexistent) +++ vendor/dialog/1.3-20180621/samples/tailboxbg2 (revision 339483) @@ -0,0 +1,33 @@ +#!/bin/sh +# $Id: tailboxbg2,v 1.10 2012/06/29 09:51:11 tom Exp $ + +. ./setup-vars + +. ./setup-tempfile + +./killall listing +./listing >listing.out & + +$DIALOG --title "TAIL BOXES" \ + --no-kill \ + --begin 10 10 "$@" --tailboxbg listing.out 8 58 \ + --and-widget \ + --begin 15 15 "$@" --tailboxbg listing.out 8 58 \ + --and-widget \ + --begin 3 10 "$@" --msgbox "Press OK " 5 30 \ + 2>$tempfile + +# The --and-widget causes a tab to be emitted, but our example will only +# write one number to stderr. +pid=`cat $tempfile |sed -e 's/ //g'` +if test -n "$pid" ; then +# wait a while for the background process to run +sleep 10 + +# now kill it +kill -$SIG_QUIT $pid 2>&1 >/dev/null 2>/dev/null +echo "killed [$pid]" +fi + +# ...and the process that is making the listing +./killall listing Property changes on: vendor/dialog/1.3-20180621/samples/tailboxbg2 ___________________________________________________________________ Added: svn:executable ## -0,0 +1 ## +* \ No newline at end of property Index: vendor/dialog/1.3-20180621/samples/testdata-8bit =================================================================== --- vendor/dialog/1.3-20180621/samples/testdata-8bit (nonexistent) +++ vendor/dialog/1.3-20180621/samples/testdata-8bit (revision 339483) @@ -0,0 +1,48 @@ +#!/bin/sh +# $Id: testdata-8bit,v 1.2 2011/10/16 23:26:32 tom Exp $ + +# Select one of the "SAMPLE=" lines, to test handling of characters which +# are nonprinting in a POSIX locale: + +case .$1 in + # C1 controls +.8) + SAMPLE="€‚ƒ„…†‡ˆ‰Š‹ŒŽ" + ;; +.9) + SAMPLE="‘’“”•–—˜™š›œžŸ" + ;; + +# Latin-1 +.[aA]) + SAMPLE=" ¡¢£¤¥¦§¨©ª«¬­®¯" + ;; +.[bB]) + SAMPLE="°±²³´µ¶·¸¹º»¼½¾¿" + ;; +.[cC]) + SAMPLE="ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏ" + ;; +.[dD]) + SAMPLE="ÐÑÒÓÔÕÖ×ØÙÚÛÜÝÞß" + ;; +.[eE]) + SAMPLE="àáâãäåæçèéêëìíîï" + ;; +.[fF]) + SAMPLE="ðñòóôõö÷øùúûüýþÿ" + ;; +*) + # C0 controls (except a few which are always treated specially by curses): + SAMPLE=" " + ;; +esac + +# This script is source'd from other scripts, and uses the parameter list from +# those explicitly. But they may use the parameter list later, to set options +# specially for dialog. Work around the conflicting uses by removing the +# parameter which we just used to select a set of data. +if test $# != 0 +then + shift 1 +fi Property changes on: vendor/dialog/1.3-20180621/samples/testdata-8bit ___________________________________________________________________ Added: svn:executable ## -0,0 +1 ## +* \ No newline at end of property Index: vendor/dialog/1.3-20180621/samples/wheel =================================================================== --- vendor/dialog/1.3-20180621/samples/wheel (nonexistent) +++ vendor/dialog/1.3-20180621/samples/wheel (revision 339483) @@ -0,0 +1,64 @@ +#!/bin/sh +# $Id: wheel,v 1.8 2012/06/29 09:59:40 tom Exp $ + +. ./setup-vars + +. ./setup-tempfile + +TITLE="This screen was taken from ComeOn Point Installer! v0.9 by ComeOn Linux!" + +$DIALOG --print-maxsize 2>$tempfile +ROWS="`cut $tempfile -f1 -d, | cut -f2 -d:`" +COLS="`cut $tempfile -f2 -d,`" +rm $tempfile + +# account for widest labels +COLS=`expr $COLS - 30` + +# Takes an integer, multiplies it for COLS, divides for 132 +scalex() { + expr $1 \* $COLS / 132 +} +scaley() { + expr $1 \* $ROWS / 60 +} + +$DIALOG --backtitle "$TITLE" --no-shadow \ +--begin `scaley 27` `scalex 98` --infobox "pushd /var/log >/dev/null" 0 0 --and-widget \ +--begin `scaley 35` `scalex 95` --infobox "mkdir -p news -m 755" 0 0 --and-widget \ +--begin `scaley 45` `scalex 86` --infobox "chown news.news news" 0 0 --and-widget \ +--begin `scaley 48` `scalex 78` --infobox "cd /var/log/news" 0 0 --and-widget \ +--begin `scaley 51` `scalex 61` --infobox "mkdir -p OLD -m 755" 0 0 --and-widget \ +--begin `scaley 52` `scalex 47` --infobox "chown news.news OLD" 0 0 --and-widget \ +--begin `scaley 51` `scalex 40` --infobox "cd /var/spool" 0 0 --and-widget \ +--begin `scaley 48` `scalex 25` --infobox "mkdir -p news -m 775" 0 0 --and-widget \ +--begin `scaley 42` `scalex 13` --infobox "chown news.news news" 0 0 --and-widget \ +--begin `scaley 35` `scalex 4` --infobox "cd /var/spool/news" 0 0 --and-widget \ +--begin `scaley 27` `scalex 2` --infobox "CURMASK=`umask`" 0 0 --and-widget \ +--begin `scaley 19` `scalex 4` --infobox "umask 02" 0 0 --and-widget \ +--begin `scaley 11` `scalex 13` --infobox "mkdir -p out.going control junk in.coming" 0 0 --and-widget \ +--begin `scaley 5` `scalex 25` --infobox "chown news.news out.going control junk in.coming" 0 0 --and-widget \ +--begin `scaley 2` `scalex 37` --infobox "cd in.coming" 0 0 --and-widget \ +--begin `scaley 1` `scalex 46` --infobox "mkdir -p bad tmp" 0 0 --and-widget \ +--begin `scaley 2` `scalex 61` --infobox "chown news.news bad tmp" 0 0 --and-widget \ +--begin `scaley 5` `scalex 76` --infobox "umask $CURMASK" 0 0 --and-widget \ +--begin `scaley 11` `scalex 87` --infobox "ln -sf ~news /usr/local/lib/" 0 0 --and-widget \ +--begin `scaley 18` `scalex 95` --infobox "ln -sf ~news/inews /usr/bin/" 0 0 --and-widget \ +--begin `scaley 26` `scalex 97` --infobox "chmod 1777 /var/tmp" 0 0 --and-widget \ +--begin `scaley 34` `scalex 95` --infobox "cd ~news" 0 0 --and-widget \ +--begin `scaley 42` `scalex 87` --infobox "touch history history.dir history.pag errlog log" 0 0 --and-widget \ +--begin `scaley 47` `scalex 76` --infobox "chown news.news history* log errlog" 0 0 --and-widget \ +--infobox "Creating spooling and logging directories and files..." 0 0 --and-widget \ +--begin `scaley 51` `scalex 78` --infobox "chmod 664 history* log errlog" 0 0 --and-widget \ +--begin `scaley 52` `scalex 60` --infobox "echo \"control 0000000000 0000000001 y\" > active" 0 0 --and-widget \ +--begin `scaley 51` `scalex 42` --infobox "echo \"junk 0000000000 0000000001 y\" >> active" 0 0 --and-widget \ +--begin `scaley 48` `scalex 26` --infobox "chown news.news active" 0 0 --and-widget \ +--begin `scaley 42` `scalex 13` --infobox "echo \"control 814573260 usenet\" > active.times" 0 0 --and-widget \ +--begin `scaley 35` `scalex 4` --infobox "echo \"junk 814573260 usenet\" >> active.times" 0 0 --and-widget \ +--begin `scaley 27` `scalex 2` --infobox "chown news.news active.times" 0 0 --and-widget \ +--begin `scaley 19` `scalex 4` --infobox ":>newsgroups" 0 0 --and-widget \ +--begin `scaley 11` `scalex 12` --infobox "chown news.news newsgroups" 0 0 --and-widget \ +--sleep 2 --begin `scaley 6` `scalex 25` --infobox "popd >/dev/null" 0 0 --and-widget \ +--beep --msgbox "ComeOn Linux! :-)" 0 0 --and-widget \ +--begin 2 0 --title "/var/adm/debug. This is running while that down runs also" --tailboxbg /var/adm/debug 6 80 --and-widget \ +--begin 8 0 --title "/var/adm/messages. It tails the file in multitasking with /var/adm/debug" --tailbox /var/adm/messages -1 -1 Property changes on: vendor/dialog/1.3-20180621/samples/wheel ___________________________________________________________________ Added: svn:executable ## -0,0 +1 ## +* \ No newline at end of property Index: vendor/dialog/1.3-20180621/samples/with-dquotes =================================================================== --- vendor/dialog/1.3-20180621/samples/with-dquotes (nonexistent) +++ vendor/dialog/1.3-20180621/samples/with-dquotes (revision 339483) @@ -0,0 +1,3 @@ +#!/bin/sh +# $Id: with-dquotes,v 1.1 2012/07/03 09:40:19 tom Exp $ +DIALOGOPTS="$DIALOGOPTS --quoted" "$@" Property changes on: vendor/dialog/1.3-20180621/samples/with-dquotes ___________________________________________________________________ Added: svn:executable ## -0,0 +1 ## +* \ No newline at end of property Index: vendor/dialog/1.3-20180621/samples/with-squotes =================================================================== --- vendor/dialog/1.3-20180621/samples/with-squotes (nonexistent) +++ vendor/dialog/1.3-20180621/samples/with-squotes (revision 339483) @@ -0,0 +1,3 @@ +#!/bin/sh +# $Id: with-squotes,v 1.1 2012/07/03 09:40:29 tom Exp $ +DIALOGOPTS="$DIALOGOPTS --single-quoted" "$@" Property changes on: vendor/dialog/1.3-20180621/samples/with-squotes ___________________________________________________________________ Added: svn:executable ## -0,0 +1 ## +* \ No newline at end of property Index: vendor/dialog/1.3-20180621/samples/infobox5 =================================================================== --- vendor/dialog/1.3-20180621/samples/infobox5 (nonexistent) +++ vendor/dialog/1.3-20180621/samples/infobox5 (revision 339483) @@ -0,0 +1,39 @@ +#! /bin/sh +# $Id: infobox5,v 1.7 2011/01/18 09:19:09 tom Exp $ +# get rid of all flickering by constructing a script unroll the loop, leaving +# us in curses-mode until we're done counting. + +. ./setup-vars + +. ./setup-tempfile + +left=10 +unit="seconds" +last='\' + +cat >>$tempfile <<EOF +$DIALOG $last +EOF + +while test $left != 0 +do + +cat >>$tempfile <<EOF + --sleep 1 \ + --begin 0 5 \ + --title "INFO BOX" $* \ + --infobox "Hi, this is an information box. It is +different from a message box: it will +not pause waiting for input after displaying +the message. The pause here is only introduced +by the sleep command within dialog. +You have $left $unit to read this..." 0 0 $last +EOF + +left=`expr $left - 1` +test $left = 1 && unit="second" +done + +echo >>$tempfile + +. $tempfile Property changes on: vendor/dialog/1.3-20180621/samples/infobox5 ___________________________________________________________________ Added: svn:executable ## -0,0 +1 ## +* \ No newline at end of property Index: vendor/dialog/1.3-20180621/samples/infobox6 =================================================================== --- vendor/dialog/1.3-20180621/samples/infobox6 (nonexistent) +++ vendor/dialog/1.3-20180621/samples/infobox6 (revision 339483) @@ -0,0 +1,41 @@ +#! /bin/sh +# $Id: infobox6,v 1.7 2011/01/18 09:20:59 tom Exp $ +# get rid of all flickering by constructing a script unroll the loop, leaving +# us in curses-mode until we're done counting. +# +# a little fancier than infobox5, this moves the widget at each step. + +. ./setup-vars + +. ./setup-tempfile + +left=10 +unit="seconds" +last='\' + +cat >>$tempfile <<EOF +$DIALOG $last +EOF + +while test $left != 0 +do + +cat >>$tempfile <<EOF + --sleep 1 \ + --begin $left `expr $left + 5` \ + --title "INFO BOX" $* $last + --infobox "Hi, this is an information box. It is +different from a message box: it will +not pause waiting for input after displaying +the message. The pause here is only introduced +by the sleep command within dialog. +You have $left $unit to read this..." 0 0 $last +EOF + +left=`expr $left - 1` +test $left = 1 && unit="second" +done + +echo >>$tempfile + +. $tempfile Property changes on: vendor/dialog/1.3-20180621/samples/infobox6 ___________________________________________________________________ Added: svn:executable ## -0,0 +1 ## +* \ No newline at end of property Index: vendor/dialog/1.3-20180621/samples/msgbox-utf8 =================================================================== Cannot display: file marked as a binary type. svn:mime-type = application/octet-stream Property changes on: vendor/dialog/1.3-20180621/samples/msgbox-utf8 ___________________________________________________________________ Added: svn:executable ## -0,0 +1 ## +* \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +application/octet-stream \ No newline at end of property Index: vendor/dialog/1.3-20180621/samples/pause-both =================================================================== --- vendor/dialog/1.3-20180621/samples/pause-both (nonexistent) +++ vendor/dialog/1.3-20180621/samples/pause-both (revision 339483) @@ -0,0 +1,14 @@ +#!/bin/sh +# $Id: pause-both,v 1.1 2011/01/18 09:49:24 tom Exp $ + +. ./setup-vars + +$DIALOG --title "PAUSE" \ + --help-button \ + --extra-button "$@" \ + --pause "Hi, this is a pause widget" 20 70 10 + +retval=$? +echo return $retval + +. ./report-button Property changes on: vendor/dialog/1.3-20180621/samples/pause-both ___________________________________________________________________ Added: svn:executable ## -0,0 +1 ## +* \ No newline at end of property Index: vendor/dialog/1.3-20180621/samples/pause-extra =================================================================== --- vendor/dialog/1.3-20180621/samples/pause-extra (nonexistent) +++ vendor/dialog/1.3-20180621/samples/pause-extra (revision 339483) @@ -0,0 +1,13 @@ +#!/bin/sh +# $Id: pause-extra,v 1.1 2011/01/18 09:49:07 tom Exp $ + +. ./setup-vars + +$DIALOG --title "PAUSE" \ + --extra-button "$@" \ + --pause "Hi, this is a pause widget" 20 70 10 + +retval=$? +echo return $retval + +. ./report-button Property changes on: vendor/dialog/1.3-20180621/samples/pause-extra ___________________________________________________________________ Added: svn:executable ## -0,0 +1 ## +* \ No newline at end of property Index: vendor/dialog/1.3-20180621/samples/shortlist =================================================================== --- vendor/dialog/1.3-20180621/samples/shortlist (nonexistent) +++ vendor/dialog/1.3-20180621/samples/shortlist (revision 339483) @@ -0,0 +1,19 @@ +#!/bin/sh +# $Id: shortlist,v 1.2 2011/03/02 00:11:50 tom Exp $ +# make a short listing, which writes to both stdout and stderr. + +if test $# != 0 +then + count=$1 +else + count=10 +fi + +while test $count != 0 +do + echo "** $count -- `date`" + w >&2 + sleep 1 + count=`expr $count - 1 2>/dev/null` + test -z "$count" && count=0 +done Property changes on: vendor/dialog/1.3-20180621/samples/shortlist ___________________________________________________________________ Added: svn:executable ## -0,0 +1 ## +* \ No newline at end of property Index: vendor/dialog/1.3-20180621/samples/textbox-both =================================================================== --- vendor/dialog/1.3-20180621/samples/textbox-both (nonexistent) +++ vendor/dialog/1.3-20180621/samples/textbox-both (revision 339483) @@ -0,0 +1,21 @@ +#!/bin/sh +# $Id: textbox-both,v 1.1 2011/01/18 09:59:47 tom Exp $ + +. ./setup-vars + +. ./setup-tempfile + +TEXT=/usr/share/common-licenses/GPL +test -f $TEXT || TEXT=../COPYING + +cat textbox.txt | expand > $tempfile +cat $TEXT | expand >> $tempfile + +$DIALOG --clear --title "TEXT BOX" \ + --help-button \ + --extra-button "$@" \ + --textbox "$tempfile" 22 77 + +retval=$? + +. ./report-button Property changes on: vendor/dialog/1.3-20180621/samples/textbox-both ___________________________________________________________________ Added: svn:executable ## -0,0 +1 ## +* \ No newline at end of property Index: vendor/dialog/1.3-20180621/samples/textbox-help =================================================================== --- vendor/dialog/1.3-20180621/samples/textbox-help (nonexistent) +++ vendor/dialog/1.3-20180621/samples/textbox-help (revision 339483) @@ -0,0 +1,20 @@ +#!/bin/sh +# $Id: textbox-help,v 1.1 2011/01/18 09:59:20 tom Exp $ + +. ./setup-vars + +. ./setup-tempfile + +TEXT=/usr/share/common-licenses/GPL +test -f $TEXT || TEXT=../COPYING + +cat textbox.txt | expand > $tempfile +cat $TEXT | expand >> $tempfile + +$DIALOG --clear --title "TEXT BOX" \ + --help-button "$@" \ + --textbox "$tempfile" 22 77 + +retval=$? + +. ./report-button Property changes on: vendor/dialog/1.3-20180621/samples/textbox-help ___________________________________________________________________ Added: svn:executable ## -0,0 +1 ## +* \ No newline at end of property Index: vendor/dialog/1.3-20180621/samples/calendar =================================================================== --- vendor/dialog/1.3-20180621/samples/calendar (nonexistent) +++ vendor/dialog/1.3-20180621/samples/calendar (revision 339483) @@ -0,0 +1,11 @@ +#!/bin/sh +# $Id: calendar,v 1.9 2010/01/13 10:20:33 tom Exp $ + +. ./setup-vars + +exec 3>&1 +RESULT=`$DIALOG --title "CALENDAR" "$@" --calendar "Please choose a date..." 0 0 7 7 1981 2>&1 1>&3` +retval=$? +exec 3>&- + +. ./report-string Property changes on: vendor/dialog/1.3-20180621/samples/calendar ___________________________________________________________________ Added: svn:executable ## -0,0 +1 ## +* \ No newline at end of property Index: vendor/dialog/1.3-20180621/samples/calendar-stdout =================================================================== --- vendor/dialog/1.3-20180621/samples/calendar-stdout (nonexistent) +++ vendor/dialog/1.3-20180621/samples/calendar-stdout (revision 339483) @@ -0,0 +1,9 @@ +#!/bin/sh +# $Id: calendar-stdout,v 1.6 2010/01/13 10:20:03 tom Exp $ + +. ./setup-vars + +RESULT=`$DIALOG --stdout --title "CALENDAR" "$@" --calendar "Please choose a date..." 0 0 7 7 1981` +retval=$? + +. ./report-string Property changes on: vendor/dialog/1.3-20180621/samples/calendar-stdout ___________________________________________________________________ Added: svn:executable ## -0,0 +1 ## +* \ No newline at end of property Index: vendor/dialog/1.3-20180621/samples/calendar2 =================================================================== --- vendor/dialog/1.3-20180621/samples/calendar2 (nonexistent) +++ vendor/dialog/1.3-20180621/samples/calendar2 (revision 339483) @@ -0,0 +1,11 @@ +#!/bin/sh +# $Id: calendar2,v 1.8 2010/01/13 10:20:03 tom Exp $ + +. ./setup-vars + +exec 3>&1 +RESULT=`$DIALOG --title "CALENDAR" "$@" --calendar "Please choose a date..." 0 0 2>&1 1>&3` +retval=$? +exec 3>&- + +. ./report-string Property changes on: vendor/dialog/1.3-20180621/samples/calendar2 ___________________________________________________________________ Added: svn:executable ## -0,0 +1 ## +* \ No newline at end of property Index: vendor/dialog/1.3-20180621/samples/calendar2-stdout =================================================================== --- vendor/dialog/1.3-20180621/samples/calendar2-stdout (nonexistent) +++ vendor/dialog/1.3-20180621/samples/calendar2-stdout (revision 339483) @@ -0,0 +1,9 @@ +#!/bin/sh +# $Id: calendar2-stdout,v 1.6 2010/01/13 10:20:03 tom Exp $ + +. ./setup-vars + +RESULT=`$DIALOG --stdout --title "CALENDAR" "$@" --calendar "Please choose a date..." 0 0` +retval=$? + +. ./report-string Property changes on: vendor/dialog/1.3-20180621/samples/calendar2-stdout ___________________________________________________________________ Added: svn:executable ## -0,0 +1 ## +* \ No newline at end of property Index: vendor/dialog/1.3-20180621/samples/calendar3 =================================================================== --- vendor/dialog/1.3-20180621/samples/calendar3 (nonexistent) +++ vendor/dialog/1.3-20180621/samples/calendar3 (revision 339483) @@ -0,0 +1,11 @@ +#!/bin/sh +# $Id: calendar3,v 1.9 2010/01/13 10:20:03 tom Exp $ + +. ./setup-vars + +exec 3>&1 +RESULT=`$DIALOG --extra-button --extra-label "Hold" --help-button --title "CALENDAR" "$@" --calendar "Please choose a date..." 0 0 7 7 1981 2>&1 1>&3` +retval=$? +exec 3>&- + +. ./report-string Property changes on: vendor/dialog/1.3-20180621/samples/calendar3 ___________________________________________________________________ Added: svn:executable ## -0,0 +1 ## +* \ No newline at end of property Index: vendor/dialog/1.3-20180621/samples/calendar3-stdout =================================================================== --- vendor/dialog/1.3-20180621/samples/calendar3-stdout (nonexistent) +++ vendor/dialog/1.3-20180621/samples/calendar3-stdout (revision 339483) @@ -0,0 +1,9 @@ +#!/bin/sh +# $Id: calendar3-stdout,v 1.6 2010/01/13 10:20:03 tom Exp $ + +. ./setup-vars + +RESULT=`$DIALOG --extra-button --extra-label "Hold" --help-button --stdout --title "CALENDAR" "$@" --calendar "Please choose a date..." 0 0 7 7 1981` +retval=$? + +. ./report-string Property changes on: vendor/dialog/1.3-20180621/samples/calendar3-stdout ___________________________________________________________________ Added: svn:executable ## -0,0 +1 ## +* \ No newline at end of property Index: vendor/dialog/1.3-20180621/samples/checklist =================================================================== --- vendor/dialog/1.3-20180621/samples/checklist (nonexistent) +++ vendor/dialog/1.3-20180621/samples/checklist (revision 339483) @@ -0,0 +1,28 @@ +#! /bin/sh +# $Id: checklist,v 1.14 2010/01/13 10:20:03 tom Exp $ + +. ./setup-vars + +. ./setup-tempfile + +$DIALOG --backtitle "No Such Organization" \ + --title "CHECKLIST BOX" "$@" \ + --checklist "Hi, this is a checklist box. You can use this to \n\ +present a list of choices which can be turned on or \n\ +off. If there are more items than can fit on the \n\ +screen, the list will be scrolled. You can use the \n\ +UP/DOWN arrow keys, the first letter of the choice as a \n\ +hot key, or the number keys 1-9 to choose an option. \n\ +Press SPACE to toggle an option on/off. \n\n\ + Which of the following are fruits?" 20 61 5 \ + "Apple" "It's an apple." off \ + "Dog" "No, that's not my dog." ON \ + "Orange" "Yeah, that's juicy." off \ + "Chicken" "Normally not a pet." off \ + "Cat" "No, never put a dog and a cat together!" oN \ + "Fish" "Cats like fish." On \ + "Lemon" "You know how it tastes." on 2> $tempfile + +retval=$? + +. ./report-tempfile Property changes on: vendor/dialog/1.3-20180621/samples/checklist ___________________________________________________________________ Added: svn:executable ## -0,0 +1 ## +* \ No newline at end of property Index: vendor/dialog/1.3-20180621/samples/checklist-8bit =================================================================== --- vendor/dialog/1.3-20180621/samples/checklist-8bit (nonexistent) +++ vendor/dialog/1.3-20180621/samples/checklist-8bit (revision 339483) @@ -0,0 +1,30 @@ +#! /bin/sh +# $Id: checklist-8bit,v 1.8 2010/01/13 10:20:03 tom Exp $ + +. ./setup-vars + +. ./setup-tempfile + +. ./testdata-8bit + +$DIALOG --backtitle "No Such Organization" \ + --title "CHECKLIST BOX" "$@" \ + --checklist "Hi, this is a checklist box. You can use this to \n\ +present a list of choices which can be turned on or \n\ +off. If there are more items than can fit on the \n\ +screen, the list will be scrolled. You can use the \n\ +UP/DOWN arrow keys, the first letter of the choice as a \n\ +hot key, or the number keys 1-9 to choose an option. \n\ +Press SPACE to toggle an option on/off. \n\n\ + Which of the following are fruits?" 20 61 5 \ + "`./rotated-data 0 $SAMPLE`" "It's an `./rotated-data 0 $SAMPLE`." off \ + "`./rotated-data 1 $SAMPLE`" "No, that's not my `./rotated-data 1 $SAMPLE`." ON \ + "`./rotated-data 2 $SAMPLE`" "Yeah, that's `./rotated-data 2 $SAMPLE`." off \ + "`./rotated-data 3 $SAMPLE`" "Normally not a `./rotated-data 3 $SAMPLE`." off \ + "`./rotated-data 4 $SAMPLE`" "No, never put a `./rotated-data 4 $SAMPLE` there!" oN \ + "`./rotated-data 5 $SAMPLE`" "Cats like `./rotated-data 5 $SAMPLE`." On \ + "`./rotated-data 6 $SAMPLE`" "You `./rotated-data 6 $SAMPLE` how it is." on 2> $tempfile + +retval=$? + +. ./report-tempfile Property changes on: vendor/dialog/1.3-20180621/samples/checklist-8bit ___________________________________________________________________ Added: svn:executable ## -0,0 +1 ## +* \ No newline at end of property Index: vendor/dialog/1.3-20180621/samples/checklist-utf8 =================================================================== --- vendor/dialog/1.3-20180621/samples/checklist-utf8 (nonexistent) +++ vendor/dialog/1.3-20180621/samples/checklist-utf8 (revision 339483) @@ -0,0 +1,30 @@ +#! /bin/sh +# $Id: checklist-utf8,v 1.12 2010/01/13 10:20:03 tom Exp $ + +. ./setup-vars + +. ./setup-tempfile + +. ./setup-utf8 + +$DIALOG --backtitle "No Such Organization" \ + --title "CHECKLIST BOX" "$@" \ + --checklist "Hi, this is a checklist box. You can use this to \n\ +present a list of choices which can be turned on or \n\ +off. If there are more items than can fit on the \n\ +screen, the list will be scrolled. You can use the \n\ +UP/DOWN arrow keys, the first letter of the choice as a \n\ +hot key, or the number keys 1-9 to choose an option. \n\ +Press SPACE to toggle an option on/off. \n\n\ + Which of the following are fruits?" 20 61 5 \ + "APPLE" "It's an APPLE." off \ + "DOG" "No, that's not my DOG." ON \ + "ORANGE" "Yeah, that's JUICY." off \ + "CHICKEN" "Normally not a PET." off \ + "CAT" "No, never put a DOG and a CAT together!" oN \ + "FISH" "Cats like FISH." On \ + "LEMON" "You KNOW how it TASTES." on 2> $tempfile + +retval=$? + +. ./report-tempfile Property changes on: vendor/dialog/1.3-20180621/samples/checklist-utf8 ___________________________________________________________________ Added: svn:executable ## -0,0 +1 ## +* \ No newline at end of property Index: vendor/dialog/1.3-20180621/samples/checklist1 =================================================================== --- vendor/dialog/1.3-20180621/samples/checklist1 (nonexistent) +++ vendor/dialog/1.3-20180621/samples/checklist1 (revision 339483) @@ -0,0 +1,28 @@ +#! /bin/sh +# $Id: checklist1,v 1.10 2010/01/13 10:20:03 tom Exp $ + +. ./setup-vars + +. ./setup-tempfile + +$DIALOG --backtitle "No Such Organization" \ + --title "CHECKLIST BOX" "$@" \ + --checklist "Hi, this is a checklist box. You can use this to \n\ +present a list of choices which can be turned on or \n\ +off. If there are more items than can fit on the \n\ +screen, the list will be scrolled. You can use the \n\ +UP/DOWN arrow keys, the first letter of the choice as a \n\ +hot key, or the number keys 1-9 to choose an option. \n\ +Press SPACE to toggle an option on/off. \n\n\ + Which of the following are fruits?" 20 61 5 \ + "" "It's an apple." off \ + "Dog" "No, that's not my dog." ON \ + "Orange" "Yeah, that's juicy." off \ + "Chicken" "" off \ + "Cat" "No, never put a dog and a cat together!" oN \ + "Fish" "Cats like fish." On \ + "Lemon" "You know how it tastes." on 2> $tempfile + +retval=$? + +. ./report-tempfile Property changes on: vendor/dialog/1.3-20180621/samples/checklist1 ___________________________________________________________________ Added: svn:executable ## -0,0 +1 ## +* \ No newline at end of property Index: vendor/dialog/1.3-20180621/samples/checklist10 =================================================================== --- vendor/dialog/1.3-20180621/samples/checklist10 (nonexistent) +++ vendor/dialog/1.3-20180621/samples/checklist10 (revision 339483) @@ -0,0 +1,30 @@ +#! /bin/sh +# $Id: checklist10,v 1.9 2010/01/13 10:20:03 tom Exp $ +# zero-width column + +. ./setup-vars + +. ./setup-tempfile + +$DIALOG \ + --backtitle "No such organization" \ + --title "CHECKLIST BOX" "$@" \ + --checklist "Hi, this is a checklist box. You can use this to \n\ +present a list of choices which can be turned on or \n\ +off. If there are more items than can fit on the \n\ +screen, the list will be scrolled. You can use the \n\ +UP/DOWN arrow keys, the first letter of the choice as a \n\ +hot key, or the number keys 1-9 to choose an option. \n\ +Press SPACE to toggle an option on/off. \n\n\ + Which of the following are fruits?" 20 61 5 \ + Dialog "" on \ + Readline "" off \ + Gnome "" off \ + Kde "" off \ + Editor "" off \ + Noninteractive "" on \ + 2> $tempfile + +retval=$? + +. ./report-tempfile Property changes on: vendor/dialog/1.3-20180621/samples/checklist10 ___________________________________________________________________ Added: svn:executable ## -0,0 +1 ## +* \ No newline at end of property Index: vendor/dialog/1.3-20180621/samples/checklist11 =================================================================== --- vendor/dialog/1.3-20180621/samples/checklist11 (nonexistent) +++ vendor/dialog/1.3-20180621/samples/checklist11 (revision 339483) @@ -0,0 +1,33 @@ +#! /bin/sh +# $Id: checklist11,v 1.1 2010/01/17 23:04:01 tom Exp $ + +. ./setup-vars + +. ./setup-tempfile + +$DIALOG --backtitle "No Such Organization" \ + --title "CHECKLIST BOX" "$@" \ + --checklist "Hi, this is a checklist box. You can use this to \n\ +present a list of choices which can be turned on or \n\ +off. If there are more items than can fit on the \n\ +screen, the list will be scrolled. You can use the \n\ +UP/DOWN arrow keys, the first letter of the choice as a \n\ +hot key, or the number keys 1-9 to choose an option. \n\ +Press SPACE to toggle an option on/off. \n\n\ + Which of the following are fruits?" 20 61 5 \ + "" "It's an apple." off \ + "Dog" "No1, that's not my dog." ON \ + "Dog2" "No2, that's not my dog." OFF \ + "Dog3" "No3, that's not my dog." OFF \ + "Dog4" "No4, that's not my dog." OFF \ + "Dog5" "No5, that's not my dog." OFF \ + "Dog6" "No6, that's not my dog." OFF \ + "Orange" "Yeah, that's juicy." off \ + "Chicken" "" off \ + "Cat" "No, never put a dog and a cat together!" oN \ + "Fish" "Cats like fish." On \ + "Lemon" "You know how it tastes." on 2> $tempfile + +retval=$? + +. ./report-tempfile Property changes on: vendor/dialog/1.3-20180621/samples/checklist11 ___________________________________________________________________ Added: svn:executable ## -0,0 +1 ## +* \ No newline at end of property Index: vendor/dialog/1.3-20180621/samples/checklist2 =================================================================== --- vendor/dialog/1.3-20180621/samples/checklist2 (nonexistent) +++ vendor/dialog/1.3-20180621/samples/checklist2 (revision 339483) @@ -0,0 +1,28 @@ +#! /bin/sh +# $Id: checklist2,v 1.11 2010/01/13 10:20:03 tom Exp $ + +. ./setup-vars + +. ./setup-tempfile + +$DIALOG --item-help --backtitle "No Such Organization" \ + --title "CHECKLIST BOX" "$@" \ + --checklist "Hi, this is a checklist box. You can use this to \n\ +present a list of choices which can be turned on or \n\ +off. If there are more items than can fit on the \n\ +screen, the list will be scrolled. You can use the \n\ +UP/DOWN arrow keys, the first letter of the choice as a \n\ +hot key, or the number keys 1-9 to choose an option. \n\ +Press SPACE to toggle an option on/off. \n\n\ + Which of the following are fruits?" 20 61 5 \ + "Apple" "It's an apple." off "fruit" \ + "Dog" "No, that's not my dog." ON "not a fruit" \ + "Orange" "Yeah, that's juicy." off "fruit" \ + "Chicken" "Normally not a pet." off "not a fruit" \ + "Cat" "No, never put a dog and a cat together!" oN "not a fruit" \ + "Fish" "Cats like fish." On "not a fruit" \ + "Lemon" "You know how it tastes." on "the only one you wouldn't eat" 2> $tempfile + +retval=$? + +. ./report-tempfile Property changes on: vendor/dialog/1.3-20180621/samples/checklist2 ___________________________________________________________________ Added: svn:executable ## -0,0 +1 ## +* \ No newline at end of property Index: vendor/dialog/1.3-20180621/samples/checklist3 =================================================================== --- vendor/dialog/1.3-20180621/samples/checklist3 (nonexistent) +++ vendor/dialog/1.3-20180621/samples/checklist3 (revision 339483) @@ -0,0 +1,28 @@ +#! /bin/sh +# $Id: checklist3,v 1.11 2010/01/13 10:20:03 tom Exp $ + +. ./setup-vars + +. ./setup-tempfile + +$DIALOG --item-help --backtitle "No Such Organization" \ + --title "CHECKLIST BOX" "$@" \ + --checklist "Hi, this is a checklist box. You can use this to \n\ +present a list of choices which can be turned on or \n\ +off. If there are more items than can fit on the \n\ +screen, the list will be scrolled. You can use the \n\ +UP/DOWN arrow keys, the first letter of the choice as a \n\ +hot key, or the number keys 1-9 to choose an option. \n\ +Press SPACE to toggle an option on/off. \n\n\ + Which of the following are fruits?" 20 61 5 \ + "Apple" "It's an apple. xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" off "fruit" \ + "Dog" "No, that's not my dog. xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" ON "not a fruit" \ + "Orange" "Yeah, that's juicy. xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" off "fruit" \ + "Chicken" "Normally not a pet. xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" off "not a fruit" \ + "Cat" "No, never put a dog and a cat together! xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" oN "not a fruit" \ + "Fish" "Cats like fish. xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" On "not a fruit" \ + "Lemon" "You know how it tastes. xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" on "the only one you wouldn't eat" 2> $tempfile + +retval=$? + +. ./report-tempfile Property changes on: vendor/dialog/1.3-20180621/samples/checklist3 ___________________________________________________________________ Added: svn:executable ## -0,0 +1 ## +* \ No newline at end of property Index: vendor/dialog/1.3-20180621/samples/checklist4 =================================================================== --- vendor/dialog/1.3-20180621/samples/checklist4 (nonexistent) +++ vendor/dialog/1.3-20180621/samples/checklist4 (revision 339483) @@ -0,0 +1,28 @@ +#! /bin/sh +# $Id: checklist4,v 1.12 2010/01/13 10:20:03 tom Exp $ + +. ./setup-vars + +. ./setup-tempfile + +$DIALOG --help-button --item-help --backtitle "No Such Organization" \ + --title "CHECKLIST BOX" "$@" \ + --checklist "Hi, this is a checklist box. You can use this to \n\ +present a list of choices which can be turned on or \n\ +off. If there are more items than can fit on the \n\ +screen, the list will be scrolled. You can use the \n\ +UP/DOWN arrow keys, the first letter of the choice as a \n\ +hot key, or the number keys 1-9 to choose an option. \n\ +Press SPACE to toggle an option on/off. \n\n\ + Which of the following are fruits?" 20 61 5 \ + "Apple" "It's an apple. xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" off "fruit" \ + "Dog" "No, that's not my dog. xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" ON "not a fruit" \ + "Orange" "Yeah, that's juicy. xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" off "fruit" \ + "Chicken" "Normally not a pet. xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" off "not a fruit" \ + "Cat" "No, never put a dog and a cat together! xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" oN "not a fruit" \ + "Fish" "Cats like fish. xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" On "not a fruit" \ + "Lemon" "You know how it tastes. xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" on "the only one you wouldn't eat" 2> $tempfile + +retval=$? + +. ./report-tempfile Property changes on: vendor/dialog/1.3-20180621/samples/checklist4 ___________________________________________________________________ Added: svn:executable ## -0,0 +1 ## +* \ No newline at end of property Index: vendor/dialog/1.3-20180621/samples/checklist5 =================================================================== --- vendor/dialog/1.3-20180621/samples/checklist5 (nonexistent) +++ vendor/dialog/1.3-20180621/samples/checklist5 (revision 339483) @@ -0,0 +1,29 @@ +#! /bin/sh +# $Id: checklist5,v 1.11 2010/01/13 10:20:03 tom Exp $ + +. ./setup-vars + +. ./setup-tempfile + +$DIALOG --help-button --item-help --backtitle "No Such Organization" \ + --title "CHECKLIST BOX" "$@" \ + --checklist "Hi, this is a checklist box. You can use this to \n\ +present a list of choices which can be turned on or \n\ +off. If there are more items than can fit on the \n\ +screen, the list will be scrolled. You can use the \n\ +UP/DOWN arrow keys, the first letter of the choice as a \n\ +hot key, or the number keys 1-9 to choose an option. \n\ +Press SPACE to toggle an option on/off. \n\n\ + Which of the following are fruits?" 20 61 5 \ + "Apple" "It's an apple. xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" off "fruit" \ + "Dog" "No, that's not my dog. xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" ON "not a fruit" \ + "Orange" "Yeah, that's juicy. xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" off "fruit" \ + "Chicken" "Normally not a pet. xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" off "not a fruit" \ + "" "No such pet. xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" off "not anything" \ + "Cat" "No, never put a dog and a cat together! xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" oN "not a fruit" \ + "Fish" "Cats like fish. xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" On "not a fruit" \ + "Lemon" "You know how it tastes. xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" on "the only one you wouldn't eat" 2> $tempfile + +retval=$? + +. ./report-tempfile Property changes on: vendor/dialog/1.3-20180621/samples/checklist5 ___________________________________________________________________ Added: svn:executable ## -0,0 +1 ## +* \ No newline at end of property Index: vendor/dialog/1.3-20180621/samples/checklist6 =================================================================== --- vendor/dialog/1.3-20180621/samples/checklist6 (nonexistent) +++ vendor/dialog/1.3-20180621/samples/checklist6 (revision 339483) @@ -0,0 +1,30 @@ +#! /bin/sh +# $Id: checklist6,v 1.11 2010/01/13 10:20:03 tom Exp $ +# example showing the --colors option + +. ./setup-vars + +. ./setup-tempfile + +$DIALOG --help-button --item-help --colors --backtitle "\Z1No Such\Zn Organization" \ + --title "CHECKLIST BOX" "$@" \ + --checklist "Hi, this is a checklist box. You can use this to \n\ +present a list of choices which can be turned on or \n\ +off. If there are more items than can fit on the \n\ +screen, the list will be scrolled. You can use the \n\ +\Z4UP/DOWN\Zn arrow keys, the first letter of the choice as a \n\ +hot key, or the number keys 1-9 to choose an option. \n\ +Press \Zb\ZrSPACE\Zn to toggle an option on/off. \n\n\ + Which of the following are fruits?" 20 61 5 \ + "Apple" "It's an \Z1apple\Zn. xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" off "fruit" \ + "Dog" "No, that's not my dog. xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" ON "not a fruit" \ + "Orange" "Yeah, that's juicy. xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" off "fruit" \ + "Chicken" "Normally not a pet. xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" off "not a fruit" \ + "" "No such pet. xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" off "not anything" \ + "Cat" "No, never put a dog and a cat together! xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" oN "not a fruit" \ + "Fish" "Cats like \Z4fish\Zn. xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" On "not a fruit" \ + "Lemon" "You know how it \Zr\Zb\Z3tastes\Zn. xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" on "the only one you wouldn't eat" 2> $tempfile + +retval=$? + +. ./report-tempfile Property changes on: vendor/dialog/1.3-20180621/samples/checklist6 ___________________________________________________________________ Added: svn:executable ## -0,0 +1 ## +* \ No newline at end of property Index: vendor/dialog/1.3-20180621/samples/checklist7 =================================================================== --- vendor/dialog/1.3-20180621/samples/checklist7 (nonexistent) +++ vendor/dialog/1.3-20180621/samples/checklist7 (revision 339483) @@ -0,0 +1,34 @@ +#! /bin/sh +# $Id: checklist7,v 1.11 2010/01/13 10:20:03 tom Exp $ +# "checklist6" with --separate-output + +. ./setup-vars + +. ./setup-tempfile + +$DIALOG --help-button \ + --item-help \ + --colors \ + --backtitle "\Z1No Such\Zn Organization" \ + --separate-output \ + --title "CHECKLIST BOX" "$@" \ + --checklist "Hi, this is a checklist box. You can use this to \n\ +present a list of choices which can be turned on or \n\ +off. If there are more items than can fit on the \n\ +screen, the list will be scrolled. You can use the \n\ +\Z4UP/DOWN\Zn arrow keys, the first letter of the choice as a \n\ +hot key, or the number keys 1-9 to choose an option. \n\ +Press \Zb\ZrSPACE\Zn to toggle an option on/off. \n\n\ + Which of the following are fruits?" 20 61 5 \ + "Apple" "It's an \Z1apple\Zn. xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" off "fruit" \ + "Dog" "No, that's not my dog. xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" ON "not a fruit" \ + "Orange" "Yeah, that's juicy. xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" off "fruit" \ + "Chicken" "Normally not a pet. xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" off "not a fruit" \ + "" "No such pet. xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" off "not anything" \ + "Cat" "No, never put a dog and a cat together! xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" oN "not a fruit" \ + "Fish" "Cats like \Z4fish\Zn. xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" On "not a fruit" \ + "Lemon" "You know how it \Zr\Zb\Z3tastes\Zn. xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" on "the only one you wouldn't eat" 2> $tempfile + +retval=$? + +. ./report-tempfile Property changes on: vendor/dialog/1.3-20180621/samples/checklist7 ___________________________________________________________________ Added: svn:executable ## -0,0 +1 ## +* \ No newline at end of property Index: vendor/dialog/1.3-20180621/samples/checklist8 =================================================================== --- vendor/dialog/1.3-20180621/samples/checklist8 (nonexistent) +++ vendor/dialog/1.3-20180621/samples/checklist8 (revision 339483) @@ -0,0 +1,33 @@ +#! /bin/sh +# $Id: checklist8,v 1.10 2010/01/13 10:20:03 tom Exp $ +# "checklist7" without --item-help + +. ./setup-vars + +. ./setup-tempfile + +$DIALOG --help-button \ + --colors \ + --backtitle "\Z1No Such\Zn Organization" \ + --separate-output \ + --title "CHECKLIST BOX" "$@" \ + --checklist "Hi, this is a checklist box. You can use this to \n\ +present a list of choices which can be turned on or \n\ +off. If there are more items than can fit on the \n\ +screen, the list will be scrolled. You can use the \n\ +\Z4UP/DOWN\Zn arrow keys, the first letter of the choice as a \n\ +hot key, or the number keys 1-9 to choose an option. \n\ +Press \Zb\ZrSPACE\Zn to toggle an option on/off. \n\n\ + Which of the following are fruits?" 20 61 5 \ + "Apple" "It's an \Z1apple\Zn. xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" off \ + "Dog" "No, that's not my dog. xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" ON \ + "Orange" "Yeah, that's juicy. xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" off \ + "Chicken" "Normally not a pet. xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" off \ + "" "No such pet. xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" off \ + "Cat" "No, never put a dog and a cat together! xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" oN \ + "Fish" "Cats like \Z4fish\Zn. xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" On \ + "Lemon" "You know how it \Zr\Zb\Z3tastes\Zn. xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" on 2> $tempfile + +retval=$? + +. ./report-tempfile Property changes on: vendor/dialog/1.3-20180621/samples/checklist8 ___________________________________________________________________ Added: svn:executable ## -0,0 +1 ## +* \ No newline at end of property Index: vendor/dialog/1.3-20180621/samples/checklist9 =================================================================== --- vendor/dialog/1.3-20180621/samples/checklist9 (nonexistent) +++ vendor/dialog/1.3-20180621/samples/checklist9 (revision 339483) @@ -0,0 +1,13 @@ +#! /bin/sh +# $Id: checklist9,v 1.8 2010/01/13 10:20:03 tom Exp $ +# "checklist8" using --file + +. ./setup-vars + +. ./setup-tempfile + +$DIALOG "$@" --file checklist9.txt 2>$tempfile + +retval=$? + +. ./report-tempfile Property changes on: vendor/dialog/1.3-20180621/samples/checklist9 ___________________________________________________________________ Added: svn:executable ## -0,0 +1 ## +* \ No newline at end of property Index: vendor/dialog/1.3-20180621/samples/checklist9.txt =================================================================== --- vendor/dialog/1.3-20180621/samples/checklist9.txt (nonexistent) +++ vendor/dialog/1.3-20180621/samples/checklist9.txt (revision 339483) @@ -0,0 +1,21 @@ +--help-button \ + --colors \ + --backtitle "\Z1No Such\Zn Organization" \ + --separate-output \ + --title "CHECKLIST BOX" \ + --checklist "Hi, this is a checklist box. You can use this to \n\ +present a list of choices which can be turned on or \n\ +off. If there are more items than can fit on the \n\ +screen, the list will be scrolled. You can use the \n\ +\Z4UP/DOWN\Zn arrow keys, the first letter of the choice as a \n\ +hot key, or the number keys 1-9 to choose an option. \n\ +Press \Zb\ZrSPACE\Zn to toggle an option on/off. \n\n\ + Which of the following are fruits?" 20 61 5 \ + "Apple" "It's an \Z1apple\Zn. xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" off \ + "Dog" "No, that's not my dog. xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" ON \ + "Orange" "Yeah, that's juicy. xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" off \ + "Chicken" "Normally not a pet. xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" off \ + "" "No such pet. xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" off \ + "Cat" "No, never put a dog and a cat together! xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" oN \ + "Fish" "Cats like \Z4fish\Zn. xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" On \ + "Lemon" "You know how it \Zr\Zb\Z3tastes\Zn. xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" on Index: vendor/dialog/1.3-20180621/samples/editbox =================================================================== --- vendor/dialog/1.3-20180621/samples/editbox (nonexistent) +++ vendor/dialog/1.3-20180621/samples/editbox (revision 339483) @@ -0,0 +1,45 @@ +#!/bin/sh +# $Id: editbox,v 1.13 2010/01/13 10:20:03 tom Exp $ + +. ./setup-vars + +DIALOG_ERROR=254 +export DIALOG_ERROR + +. ./setup-edit + +cat << EOF > $input +Hi, this is an edit box. It can be used to edit text from a file. + +It's like a simple text editor, with these keys implemented: + +PGDN - Move down one page +PGUP - Move up one page +DOWN - Move down one line +UP - Move up one line +DELETE - Delete the current character +BACKSPC - Delete the previous character + +Unlike Xdialog, it does not do these: + +CTRL C - Copy text +CTRL V - Paste text + +Because dialog normally uses TAB for moving between fields, +this editbox uses CTRL/V as a literal-next character. You +can enter TAB characters by first pressing CTRL/V. This +example contains a few tab characters. + +It supports the mouse - but only for positioning in the editbox, +or for clicking on buttons. Your terminal (emulator) may support +cut/paste. + +Try to input some text below: + +EOF + +$DIALOG --title "EDIT BOX" \ + --fixed-font "$@" --editbox $input 0 0 2>$output +retval=$? + +. ./report-edit Property changes on: vendor/dialog/1.3-20180621/samples/editbox ___________________________________________________________________ Added: svn:executable ## -0,0 +1 ## +* \ No newline at end of property Index: vendor/dialog/1.3-20180621/samples/editbox-utf8 =================================================================== --- vendor/dialog/1.3-20180621/samples/editbox-utf8 (nonexistent) +++ vendor/dialog/1.3-20180621/samples/editbox-utf8 (revision 339483) @@ -0,0 +1,35 @@ +#!/bin/sh +# $Id: editbox-utf8,v 1.9 2010/01/13 10:20:03 tom Exp $ + +. ./setup-vars + +. ./setup-tempfile + +. ./setup-utf8 + +. ./setup-edit + +cat << EOF > $input +Hi, this is a edit box. You can use this to +allow the user to enter or modify free-form text. + +Try it now! + + ----------- -------------------------------- + Choose Description of the OS you like + ----------- -------------------------------- + Linux The Great Unix Clone for 386/486 + NetBSD Another free Unix Clone for 386/486 + OS/ï¼’ IBM OS/2 + WIN NT Microsoft Windows NT + PCDOS IBM PC DOS + MSDOS Microsoft DOS + ----------- -------------------------------- + ----------- -------------------------------- +EOF + +$DIALOG --title "EDIT BOX" \ + --fixed-font "$@" --editbox $input 0 0 2>$output +retval=$? + +. ./report-edit Property changes on: vendor/dialog/1.3-20180621/samples/editbox-utf8 ___________________________________________________________________ Added: svn:executable ## -0,0 +1 ## +* \ No newline at end of property Index: vendor/dialog/1.3-20180621/samples/editbox2 =================================================================== --- vendor/dialog/1.3-20180621/samples/editbox2 (nonexistent) +++ vendor/dialog/1.3-20180621/samples/editbox2 (revision 339483) @@ -0,0 +1,45 @@ +#!/bin/sh +# $Id: editbox2,v 1.7 2010/01/13 10:20:03 tom Exp $ +# example with extra- and help-buttons + +. ./setup-vars + +. ./setup-edit + +cat << EOF > $input +Hi, this is an edit box. It can be used to edit text from a file. + +It's like a simple text editor, with these keys implemented: + +PGDN - Move down one page +PGUP - Move up one page +DOWN - Move down one line +UP - Move up one line +DELETE - Delete the current character +BACKSPC - Delete the previous character + +Unlike Xdialog, it does not do these: + +CTRL C - Copy text +CTRL V - Paste text + +Because dialog normally uses TAB for moving between fields, +this editbox uses CTRL/V as a literal-next character. You +can enter TAB characters by first pressing CTRL/V. This +example contains a few tab characters. + +It supports the mouse - but only for positioning in the editbox, +or for clicking on buttons. Your terminal (emulator) may support +cut/paste. + +Try to input some text below: + +EOF + +$DIALOG --title "EDIT BOX" \ + --extra-button \ + --help-button \ + --fixed-font "$@" --editbox $input 0 0 2>$output +retval=$? + +. ./report-edit Property changes on: vendor/dialog/1.3-20180621/samples/editbox2 ___________________________________________________________________ Added: svn:executable ## -0,0 +1 ## +* \ No newline at end of property Index: vendor/dialog/1.3-20180621/samples/editbox3 =================================================================== --- vendor/dialog/1.3-20180621/samples/editbox3 (nonexistent) +++ vendor/dialog/1.3-20180621/samples/editbox3 (revision 339483) @@ -0,0 +1,18 @@ +#!/bin/sh +# $Id: editbox3,v 1.7 2010/01/13 10:20:03 tom Exp $ +# example with extra- and help-buttons + +. ./setup-vars + +. ./setup-edit + +cat << EOF > $input +EOF + +$DIALOG --title "EDIT BOX" \ + --extra-button \ + --help-button \ + --fixed-font "$@" --editbox $input 0 0 2>$output +retval=$? + +. ./report-edit Property changes on: vendor/dialog/1.3-20180621/samples/editbox3 ___________________________________________________________________ Added: svn:executable ## -0,0 +1 ## +* \ No newline at end of property Index: vendor/dialog/1.3-20180621/samples/editbox4 =================================================================== --- vendor/dialog/1.3-20180621/samples/editbox4 (nonexistent) +++ vendor/dialog/1.3-20180621/samples/editbox4 (revision 339483) @@ -0,0 +1,45 @@ +#!/bin/sh +# $Id: editbox4,v 1.1 2010/01/17 22:29:50 tom Exp $ + +. ./setup-vars + +DIALOG_ERROR=254 +export DIALOG_ERROR + +. ./setup-edit + +cat << EOF > $input +Hi, this is an edit box. It can be used to edit text from a file. + +It's like a simple text editor, with these keys implemented: + +PGDN - Move down one page +PGUP - Move up one page +DOWN - Move down one line +UP - Move up one line +DELETE - Delete the current character +BACKSPC - Delete the previous character + +Unlike Xdialog, it does not do these: + +CTRL C - Copy text +CTRL V - Paste text + +Because dialog normally uses TAB for moving between fields, +this editbox uses CTRL/V as a literal-next character. You +can enter TAB characters by first pressing CTRL/V. This +example contains a few tab characters. + +It supports the mouse - but only for positioning in the editbox, +or for clicking on buttons. Your terminal (emulator) may support +cut/paste. + +Try to input some text below: + +EOF + +$DIALOG --title "EDIT BOX" \ + --fixed-font "$@" --editbox $input 20 40 2>$output +retval=$? + +. ./report-edit Property changes on: vendor/dialog/1.3-20180621/samples/editbox4 ___________________________________________________________________ Added: svn:executable ## -0,0 +1 ## +* \ No newline at end of property Index: vendor/dialog/1.3-20180621/samples/form1-both =================================================================== --- vendor/dialog/1.3-20180621/samples/form1-both (nonexistent) +++ vendor/dialog/1.3-20180621/samples/form1-both (revision 339483) @@ -0,0 +1,69 @@ +#! /bin/sh +# $Id: form1-both,v 1.5 2010/01/13 10:47:35 tom Exp $ + +. ./setup-vars + +backtitle="An Example for the use of --form:" + +ids=`id|sed -e 's/([^)]*)//g'` +uid=`echo "$ids" | sed -e 's/^uid=//' -e 's/ .*//'` +gid=`echo "$ids" | sed -e 's/^.* gid=//' -e 's/ .*//'` + +user="$USER" +home="$HOME" + +returncode=0 +while test $returncode != 1 && test $returncode != 250 +do +exec 3>&1 +value=`$DIALOG --ok-label "Submit" \ + --extra-button --help-button \ + --backtitle "$backtitle" "$@" \ + --form "Here is a possible piece of a configuration program." \ +20 50 0 \ + "Username:" 1 1 "$user" 1 10 10 0 \ + "UID:" 2 1 "$uid" 2 10 8 0 \ + "GID:" 3 1 "$gid" 3 10 8 0 \ + "HOME:" 4 1 "$home" 4 10 40 0 \ +2>&1 1>&3` +returncode=$? +exec 3>&- + +show=`echo "$value" |sed -e 's/^/ /'` + + case $returncode in + $DIALOG_CANCEL) + "$DIALOG" \ + --clear \ + --backtitle "$backtitle" \ + --yesno "Really quit?" 10 30 + case $? in + $DIALOG_OK) + break + ;; + $DIALOG_CANCEL) + returncode=99 + ;; + esac + ;; + $DIALOG_OK) + "$DIALOG" \ + --clear \ + --backtitle "$backtitle" --no-collapse --cr-wrap \ + --msgbox "Resulting data:\n\ +$show" 10 40 + ;; + $DIALOG_HELP) + echo "Button 2 (Help) pressed." + exit + ;; + $DIALOG_EXTRA) + echo "Button 3 (Extra) pressed." + exit + ;; + *) + echo "Return code was $returncode" + exit + ;; + esac +done Property changes on: vendor/dialog/1.3-20180621/samples/form1-both ___________________________________________________________________ Added: svn:executable ## -0,0 +1 ## +* \ No newline at end of property Index: vendor/dialog/1.3-20180621/samples/form1-extra =================================================================== --- vendor/dialog/1.3-20180621/samples/form1-extra (nonexistent) +++ vendor/dialog/1.3-20180621/samples/form1-extra (revision 339483) @@ -0,0 +1,69 @@ +#! /bin/sh +# $Id: form1-extra,v 1.5 2010/01/13 10:47:35 tom Exp $ + +. ./setup-vars + +backtitle="An Example for the use of --form:" + +ids=`id|sed -e 's/([^)]*)//g'` +uid=`echo "$ids" | sed -e 's/^uid=//' -e 's/ .*//'` +gid=`echo "$ids" | sed -e 's/^.* gid=//' -e 's/ .*//'` + +user="$USER" +home="$HOME" + +returncode=0 +while test $returncode != 1 && test $returncode != 250 +do +exec 3>&1 +value=`$DIALOG --ok-label "Submit" \ + --extra-button \ + --backtitle "$backtitle" "$@" \ + --form "Here is a possible piece of a configuration program." \ +20 50 0 \ + "Username:" 1 1 "$user" 1 10 10 0 \ + "UID:" 2 1 "$uid" 2 10 8 0 \ + "GID:" 3 1 "$gid" 3 10 8 0 \ + "HOME:" 4 1 "$home" 4 10 40 0 \ +2>&1 1>&3` +returncode=$? +exec 3>&- + +show=`echo "$value" |sed -e 's/^/ /'` + + case $returncode in + $DIALOG_CANCEL) + "$DIALOG" \ + --clear \ + --backtitle "$backtitle" \ + --yesno "Really quit?" 10 30 + case $? in + $DIALOG_OK) + break + ;; + $DIALOG_CANCEL) + returncode=99 + ;; + esac + ;; + $DIALOG_OK) + "$DIALOG" \ + --clear \ + --backtitle "$backtitle" --no-collapse --cr-wrap \ + --msgbox "Resulting data:\n\ +$show" 10 40 + ;; + $DIALOG_HELP) + echo "Button 2 (Help) pressed." + exit + ;; + $DIALOG_EXTRA) + echo "Button 3 (Extra) pressed." + exit + ;; + *) + echo "Return code was $returncode" + exit + ;; + esac +done Property changes on: vendor/dialog/1.3-20180621/samples/form1-extra ___________________________________________________________________ Added: svn:executable ## -0,0 +1 ## +* \ No newline at end of property Index: vendor/dialog/1.3-20180621/samples/form1-help =================================================================== --- vendor/dialog/1.3-20180621/samples/form1-help (nonexistent) +++ vendor/dialog/1.3-20180621/samples/form1-help (revision 339483) @@ -0,0 +1,69 @@ +#! /bin/sh +# $Id: form1-help,v 1.5 2010/01/13 10:47:35 tom Exp $ + +. ./setup-vars + +backtitle="An Example for the use of --form:" + +ids=`id|sed -e 's/([^)]*)//g'` +uid=`echo "$ids" | sed -e 's/^uid=//' -e 's/ .*//'` +gid=`echo "$ids" | sed -e 's/^.* gid=//' -e 's/ .*//'` + +user="$USER" +home="$HOME" + +returncode=0 +while test $returncode != 1 && test $returncode != 250 +do +exec 3>&1 +value=`$DIALOG --ok-label "Submit" \ + --help-button \ + --backtitle "$backtitle" "$@" \ + --form "Here is a possible piece of a configuration program." \ +20 50 0 \ + "Username:" 1 1 "$user" 1 10 10 0 \ + "UID:" 2 1 "$uid" 2 10 8 0 \ + "GID:" 3 1 "$gid" 3 10 8 0 \ + "HOME:" 4 1 "$home" 4 10 40 0 \ +2>&1 1>&3` +returncode=$? +exec 3>&- + +show=`echo "$value" |sed -e 's/^/ /'` + + case $returncode in + $DIALOG_CANCEL) + "$DIALOG" \ + --clear \ + --backtitle "$backtitle" \ + --yesno "Really quit?" 10 30 + case $? in + $DIALOG_OK) + break + ;; + $DIALOG_CANCEL) + returncode=99 + ;; + esac + ;; + $DIALOG_OK) + "$DIALOG" \ + --clear \ + --backtitle "$backtitle" --no-collapse --cr-wrap \ + --msgbox "Resulting data:\n\ +$show" 10 40 + ;; + $DIALOG_HELP) + echo "Button 2 (Help) pressed." + exit + ;; + $DIALOG_EXTRA) + echo "Button 3 (Extra) pressed." + exit + ;; + *) + echo "Return code was $returncode" + exit + ;; + esac +done Property changes on: vendor/dialog/1.3-20180621/samples/form1-help ___________________________________________________________________ Added: svn:executable ## -0,0 +1 ## +* \ No newline at end of property Index: vendor/dialog/1.3-20180621/samples/form1-utf8 =================================================================== --- vendor/dialog/1.3-20180621/samples/form1-utf8 (nonexistent) +++ vendor/dialog/1.3-20180621/samples/form1-utf8 (revision 339483) @@ -0,0 +1,71 @@ +#! /bin/sh +# $Id: form1-utf8,v 1.7 2010/01/13 10:47:35 tom Exp $ + +. ./setup-vars + +. ./setup-utf8 + +backtitle="An Example for the use of --form:" + +ids=`id|sed -e 's/([^)]*)//g'` +uid=`echo "$ids" | sed -e 's/^uid=//' -e 's/ .*//'` +gid=`echo "$ids" | sed -e 's/^.* gid=//' -e 's/ .*//'` + +user="DOG" +home=/usr/home/$user + +returncode=0 +while test $returncode != 1 && test $returncode != 250 +do +exec 3>&1 +value=`$DIALOG --ok-label "Submit" \ + --backtitle "$backtitle" \ + --insecure "$@" \ + --form "Here is a possible piece of a configuration program." \ +20 50 0 \ + "Username:" 1 1 "$user" 1 10 10 0 \ + "UID:" 2 1 "$uid" 2 10 8 0 \ + "GID:" 3 1 "$gid" 3 10 8 0 \ + "HOME:" 4 1 "$home" 4 10 40 0 \ +2>&1 1>&3` +returncode=$? +exec 3>&- + +show=`echo "$value" |sed -e 's/^/ /'` + + case $returncode in + $DIALOG_CANCEL) + "$DIALOG" \ + --clear \ + --backtitle "$backtitle" \ + --yesno "Really quit?" 10 30 + case $? in + $DIALOG_OK) + break + ;; + $DIALOG_CANCEL) + returncode=99 + ;; + esac + ;; + $DIALOG_OK) + "$DIALOG" \ + --clear \ + --backtitle "$backtitle" --no-collapse --cr-wrap \ + --msgbox "Resulting data:\n\ +$show" 10 40 + ;; + $DIALOG_HELP) + echo "Button 2 (Help) pressed." + exit + ;; + $DIALOG_EXTRA) + echo "Button 3 (Extra) pressed." + exit + ;; + *) + echo "Return code was $returncode" + exit + ;; + esac +done Property changes on: vendor/dialog/1.3-20180621/samples/form1-utf8 ___________________________________________________________________ Added: svn:executable ## -0,0 +1 ## +* \ No newline at end of property Index: vendor/dialog/1.3-20180621/samples/form2 =================================================================== --- vendor/dialog/1.3-20180621/samples/form2 (nonexistent) +++ vendor/dialog/1.3-20180621/samples/form2 (revision 339483) @@ -0,0 +1,84 @@ +#! /bin/sh +# $Id: form2,v 1.9 2010/01/13 10:53:11 tom Exp $ + +. ./setup-vars + +backtitle="An Example for the use of --form:" + +ids=`id|sed -e 's/([^)]*)//g'` +uid=`echo "$ids" | sed -e 's/^uid=//' -e 's/ .*//'` +gid=`echo "$ids" | sed -e 's/^.* gid=//' -e 's/ .*//'` + +user="$USER" +home="$HOME" + +returncode=0 +while test $returncode != 1 && test $returncode != 250 +do +exec 3>&1 +value=`$DIALOG --ok-label "Submit" \ + --backtitle "$backtitle" "$@" \ + --form "Here is a possible piece of a configuration program." \ +0 0 10 \ + "1 Username:" 1 1 "$user" 1 12 10 10 \ + "1 UID:" 2 1 "$uid" 2 12 10 10 \ + "1 GID:" 3 1 "$gid" 3 12 10 10 \ + "1 HOME:" 4 1 "$home" 4 12 10 10 \ + "2 Username:" 5 1 "$user" 5 12 10 10 \ + "2 UID:" 6 1 "$uid" 6 12 10 10 \ + "2 GID:" 7 1 "$gid" 7 12 10 10 \ + "2 HOME:" 8 1 "$home" 8 12 10 10 \ + "3 Username:" 9 1 "$user" 9 12 10 10 \ + "3 UID:" 10 1 "$uid" 10 12 10 10 \ + "3 GID:" 11 1 "$gid" 11 12 10 10 \ + "3 HOME:" 12 1 "$home" 12 12 10 10 \ + "4 Username:" 13 1 "$user" 13 12 10 10 \ + "4 UID:" 14 1 "$uid" 14 12 10 10 \ + "4 GID:" 15 1 "$gid" 15 12 10 10 \ + "4 HOME:" 16 1 "$home" 16 12 10 10 \ + "5 Username:" 17 1 "$user" 17 12 10 10 \ + "5 UID:" 18 1 "$uid" 18 12 10 10 \ + "5 GID:" 19 1 "$gid" 19 12 10 10 \ + "5 HOME:" 20 1 "$home" 20 12 10 10 \ + "6 Username:" 21 1 "$user" 21 12 10 10 \ + "6 UID:" 22 1 "$uid" 22 12 10 10 \ + "6 GID:" 23 1 "$gid" 23 12 10 10 \ + "6 HOME:" 24 1 "$home" 24 12 10 10 \ + "7 Username:" 25 1 "$user" 25 12 10 10 \ + "7 UID:" 26 1 "$uid" 26 12 10 10 \ + "7 GID:" 27 1 "$gid" 27 12 10 10 \ + "7 HOME:" 28 1 "$home" 28 12 10 10 \ +2>&1 1>&3` +returncode=$? +exec 3>&- + +show=`echo "$value" |sed -e 's/^/ /'` + + case $returncode in + $DIALOG_CANCEL) + "$DIALOG" \ + --clear \ + --backtitle "$backtitle" \ + --yesno "Really quit?" 10 30 + case $? in + $DIALOG_OK) + break + ;; + $DIALOG_CANCEL) + returncode=99 + ;; + esac + ;; + $DIALOG_OK) + "$DIALOG" \ + --clear \ + --backtitle "$backtitle" --no-collapse --cr-wrap \ + --msgbox "Resulting data:\n\ +$show" 0 0 + ;; + *) + echo "Return code was $returncode" + exit + ;; + esac +done Property changes on: vendor/dialog/1.3-20180621/samples/form2 ___________________________________________________________________ Added: svn:executable ## -0,0 +1 ## +* \ No newline at end of property Index: vendor/dialog/1.3-20180621/samples/form3 =================================================================== --- vendor/dialog/1.3-20180621/samples/form3 (nonexistent) +++ vendor/dialog/1.3-20180621/samples/form3 (revision 339483) @@ -0,0 +1,69 @@ +#! /bin/sh +# $Id: form3,v 1.6 2010/01/13 10:49:52 tom Exp $ +# form1 with --help-button + +. ./setup-vars + +backtitle="An Example for the use of --form:" + +ids=`id|sed -e 's/([^)]*)//g'` +uid=`echo "$ids" | sed -e 's/^uid=//' -e 's/ .*//'` +gid=`echo "$ids" | sed -e 's/^.* gid=//' -e 's/ .*//'` + +user="$USER" +home="$HOME" + +returncode=0 +while test $returncode != 1 && test $returncode != 250 +do +exec 3>&1 +value=`$DIALOG --ok-label "Submit" \ + --help-button \ + --backtitle "$backtitle" "$@" \ + --form "Here is a possible piece of a configuration program." \ +20 50 0 \ + "Username:" 1 1 "$user" 1 10 10 0 \ + "UID:" 2 1 "$uid" 2 10 8 0 \ + "GID:" 3 1 "$gid" 3 10 8 0 \ + "HOME:" 4 1 "$home" 4 10 40 0 \ +2>&1 1>&3` +returncode=$? +exec 3>&- + +show=`echo "$value" |sed -e 's/^/ /'` + + case $returncode in + $DIALOG_CANCEL) + "$DIALOG" \ + --clear \ + --backtitle "$backtitle" \ + --yesno "Really quit?" 10 30 + case $? in + $DIALOG_OK) + break + ;; + $DIALOG_CANCEL) + returncode=99 + ;; + esac + ;; + $DIALOG_OK) + "$DIALOG" \ + --clear \ + --backtitle "$backtitle" --no-collapse --cr-wrap \ + --msgbox "Resulting data:\n\ +$show" 10 40 + ;; + $DIALOG_HELP) + "$DIALOG" \ + --clear \ + --backtitle "$backtitle" --no-collapse --cr-wrap \ + --msgbox "Help data:\n\ +$show" 10 40 + ;; + *) + echo "Return code was $returncode" + exit + ;; + esac +done Property changes on: vendor/dialog/1.3-20180621/samples/form3 ___________________________________________________________________ Added: svn:executable ## -0,0 +1 ## +* \ No newline at end of property Index: vendor/dialog/1.3-20180621/samples/form4 =================================================================== --- vendor/dialog/1.3-20180621/samples/form4 (nonexistent) +++ vendor/dialog/1.3-20180621/samples/form4 (revision 339483) @@ -0,0 +1,70 @@ +#! /bin/sh +# $Id: form4,v 1.6 2010/01/13 10:49:52 tom Exp $ +# form3 with --item-help + +. ./setup-vars + +backtitle="An Example for the use of --form:" + +ids=`id|sed -e 's/([^)]*)//g'` +uid=`echo "$ids" | sed -e 's/^uid=//' -e 's/ .*//'` +gid=`echo "$ids" | sed -e 's/^.* gid=//' -e 's/ .*//'` + +user="$USER" +home="$HOME" + +returncode=0 +while test $returncode != 1 && test $returncode != 250 +do +exec 3>&1 +value=`$DIALOG --ok-label "Submit" \ + --help-button \ + --item-help \ + --backtitle "$backtitle" "$@" \ + --form "Here is a possible piece of a configuration program." \ +20 50 0 \ + "Username:" 1 1 "$user" 1 10 10 0 "Login name" \ + "UID:" 2 1 "$uid" 2 10 8 0 "User ID" \ + "GID:" 3 1 "$gid" 3 10 8 0 "Group ID" \ + "HOME:" 4 1 "$home" 4 10 40 0 "User's home-directory" \ +2>&1 1>&3` +returncode=$? +exec 3>&- + +show=`echo "$value" |sed -e 's/^/ /'` + + case $returncode in + $DIALOG_CANCEL) + "$DIALOG" \ + --clear \ + --backtitle "$backtitle" \ + --yesno "Really quit?" 10 30 + case $? in + $DIALOG_OK) + break + ;; + $DIALOG_CANCEL) + returncode=99 + ;; + esac + ;; + $DIALOG_OK) + "$DIALOG" \ + --clear \ + --backtitle "$backtitle" --no-collapse --cr-wrap \ + --msgbox "Resulting data:\n\ +$show" 10 40 + ;; + $DIALOG_HELP) + "$DIALOG" \ + --clear \ + --backtitle "$backtitle" --no-collapse --cr-wrap \ + --msgbox "Help data:\n\ +$show" 10 40 + ;; + *) + echo "Return code was $returncode" + exit + ;; + esac +done Property changes on: vendor/dialog/1.3-20180621/samples/form4 ___________________________________________________________________ Added: svn:executable ## -0,0 +1 ## +* \ No newline at end of property Index: vendor/dialog/1.3-20180621/samples/form5 =================================================================== --- vendor/dialog/1.3-20180621/samples/form5 (nonexistent) +++ vendor/dialog/1.3-20180621/samples/form5 (revision 339483) @@ -0,0 +1,71 @@ +#! /bin/sh +# $Id: form5,v 1.6 2010/01/13 10:49:52 tom Exp $ +# form4 with --help-status + +. ./setup-vars + +backtitle="An Example for the use of --form:" + +ids=`id|sed -e 's/([^)]*)//g'` +uid=`echo "$ids" | sed -e 's/^uid=//' -e 's/ .*//'` +gid=`echo "$ids" | sed -e 's/^.* gid=//' -e 's/ .*//'` + +user="$USER" +home="$HOME" + +returncode=0 +while test $returncode != 1 && test $returncode != 250 +do +exec 3>&1 +value=`$DIALOG --ok-label "Submit" \ + --help-status \ + --help-button \ + --item-help \ + --backtitle "$backtitle" "$@" \ + --form "Here is a possible piece of a configuration program." \ +20 50 0 \ + "Username:" 1 1 "$user" 1 10 10 0 "Login name" \ + "UID:" 2 1 "$uid" 2 10 8 0 "User ID" \ + "GID:" 3 1 "$gid" 3 10 8 0 "Group ID" \ + "HOME:" 4 1 "$home" 4 10 40 0 "User's home-directory" \ +2>&1 1>&3` +returncode=$? +exec 3>&- + +show=`echo "$value" |sed -e 's/^/ /'` + + case $returncode in + $DIALOG_CANCEL) + "$DIALOG" \ + --clear \ + --backtitle "$backtitle" \ + --yesno "Really quit?" 10 30 + case $? in + $DIALOG_OK) + break + ;; + $DIALOG_CANCEL) + returncode=99 + ;; + esac + ;; + $DIALOG_OK) + "$DIALOG" \ + --clear \ + --backtitle "$backtitle" --no-collapse --cr-wrap \ + --msgbox "Resulting data:\n\ +$show" 10 40 + ;; + $DIALOG_HELP) + "$DIALOG" \ + --clear \ + --backtitle "$backtitle" --no-collapse --cr-wrap \ + --msgbox "Help data:\n\ +$show" 10 40 + ;; + *) + echo "Return code was $returncode" + exit + ;; + esac +done Property changes on: vendor/dialog/1.3-20180621/samples/form5 ___________________________________________________________________ Added: svn:executable ## -0,0 +1 ## +* \ No newline at end of property Index: vendor/dialog/1.3-20180621/samples/form6 =================================================================== --- vendor/dialog/1.3-20180621/samples/form6 (nonexistent) +++ vendor/dialog/1.3-20180621/samples/form6 (revision 339483) @@ -0,0 +1,71 @@ +#! /bin/sh +# $Id: form6,v 1.5 2010/01/13 10:49:52 tom Exp $ +# form4 with --help-status + +. ./setup-vars + +backtitle="An Example for the use of --form:" + +ids=`id|sed -e 's/([^)]*)//g'` +uid=`echo "$ids" | sed -e 's/^uid=//' -e 's/ .*//'` +gid=`echo "$ids" | sed -e 's/^.* gid=//' -e 's/ .*//'` + +user="$USER" +home="$HOME" + +returncode=0 +while test $returncode != 1 && test $returncode != 250 +do +exec 3>&1 +value=`$DIALOG --ok-label "Submit" \ + --help-status \ + --help-button \ + --item-help \ + --backtitle "$backtitle" "$@" \ + --form "Here is a possible piece of a configuration program." \ +20 50 0 \ + "Username:" 1 1 "$user" 1 10 -9 9 "Login name" \ + "UID:" 2 1 "$uid" 2 10 8 0 "User ID" \ + "GID:" 3 1 "$gid" 3 10 8 0 "Group ID" \ + "HOME:" 4 1 "$home" 4 10 40 0 "User's home-directory" \ +2>&1 1>&3` +returncode=$? +exec 3>&- + +show=`echo "$value" |sed -e 's/^/ /'` + + case $returncode in + $DIALOG_CANCEL) + "$DIALOG" \ + --clear \ + --backtitle "$backtitle" \ + --yesno "Really quit?" 10 30 + case $? in + $DIALOG_OK) + break + ;; + $DIALOG_CANCEL) + returncode=99 + ;; + esac + ;; + $DIALOG_OK) + "$DIALOG" \ + --clear \ + --backtitle "$backtitle" --no-collapse --cr-wrap \ + --msgbox "Resulting data:\n\ +$show" 10 40 + ;; + $DIALOG_HELP) + "$DIALOG" \ + --clear \ + --backtitle "$backtitle" --no-collapse --cr-wrap \ + --msgbox "Help data:\n\ +$show" 10 40 + ;; + *) + echo "Return code was $returncode" + exit + ;; + esac +done Property changes on: vendor/dialog/1.3-20180621/samples/form6 ___________________________________________________________________ Added: svn:executable ## -0,0 +1 ## +* \ No newline at end of property Index: vendor/dialog/1.3-20180621/samples/fselect =================================================================== --- vendor/dialog/1.3-20180621/samples/fselect (nonexistent) +++ vendor/dialog/1.3-20180621/samples/fselect (revision 339483) @@ -0,0 +1,11 @@ +#!/bin/sh +# $Id: fselect,v 1.11 2010/01/13 10:20:03 tom Exp $ + +. ./setup-vars + +exec 3>&1 +RESULT=`$DIALOG --title "Please choose a file" "$@" --fselect $HOME/ 14 48 2>&1 1>&3` +retval=$? +exec 3>&- + +. ./report-string Property changes on: vendor/dialog/1.3-20180621/samples/fselect ___________________________________________________________________ Added: svn:executable ## -0,0 +1 ## +* \ No newline at end of property Index: vendor/dialog/1.3-20180621/samples/fselect-stdout =================================================================== --- vendor/dialog/1.3-20180621/samples/fselect-stdout (nonexistent) +++ vendor/dialog/1.3-20180621/samples/fselect-stdout (revision 339483) @@ -0,0 +1,9 @@ +#!/bin/sh +# $Id: fselect-stdout,v 1.6 2010/01/13 10:20:03 tom Exp $ + +. ./setup-vars + +RESULT=`$DIALOG --stdout --title "Please choose a file" "$@" --fselect $HOME/ 14 48` +retval=$? + +. ./report-string Property changes on: vendor/dialog/1.3-20180621/samples/fselect-stdout ___________________________________________________________________ Added: svn:executable ## -0,0 +1 ## +* \ No newline at end of property Index: vendor/dialog/1.3-20180621/samples/fselect1 =================================================================== --- vendor/dialog/1.3-20180621/samples/fselect1 (nonexistent) +++ vendor/dialog/1.3-20180621/samples/fselect1 (revision 339483) @@ -0,0 +1,20 @@ +#!/bin/sh +# $Id: fselect1,v 1.9 2010/01/13 10:20:03 tom Exp $ + +. ./setup-vars + +FILE=$HOME +for n in .cshrc .profile .bashrc +do + if test -f $HOME/$n ; then + FILE=$HOME/$n + break + fi +done + +exec 3>&1 +RESULT=`$DIALOG --title "Please choose a file" "$@" --fselect $FILE 14 48 2>&1 1>&3` +retval=$? +exec 3>&- + +. ./report-string Property changes on: vendor/dialog/1.3-20180621/samples/fselect1 ___________________________________________________________________ Added: svn:executable ## -0,0 +1 ## +* \ No newline at end of property Index: vendor/dialog/1.3-20180621/samples/fselect1-stdout =================================================================== --- vendor/dialog/1.3-20180621/samples/fselect1-stdout (nonexistent) +++ vendor/dialog/1.3-20180621/samples/fselect1-stdout (revision 339483) @@ -0,0 +1,18 @@ +#!/bin/sh +# $Id: fselect1-stdout,v 1.6 2010/01/13 10:20:03 tom Exp $ + +. ./setup-vars + +FILE=$HOME +for n in .cshrc .profile .bashrc +do + if test -f $HOME/$n ; then + FILE=$HOME/$n + break + fi +done + +RESULT=`$DIALOG --stdout --title "Please choose a file" "$@" --fselect $FILE 14 48` +retval=$? + +. ./report-string Property changes on: vendor/dialog/1.3-20180621/samples/fselect1-stdout ___________________________________________________________________ Added: svn:executable ## -0,0 +1 ## +* \ No newline at end of property Index: vendor/dialog/1.3-20180621/samples/fselect2 =================================================================== --- vendor/dialog/1.3-20180621/samples/fselect2 (nonexistent) +++ vendor/dialog/1.3-20180621/samples/fselect2 (revision 339483) @@ -0,0 +1,11 @@ +#!/bin/sh +# $Id: fselect2,v 1.8 2010/01/13 10:20:03 tom Exp $ + +. ./setup-vars + +exec 3>&1 +RESULT=`$DIALOG --title "Please choose a file" "$@" --fselect $HOME/ 0 0 2>&1 1>&3` +retval=$? +exec 3>&- + +. ./report-string Property changes on: vendor/dialog/1.3-20180621/samples/fselect2 ___________________________________________________________________ Added: svn:executable ## -0,0 +1 ## +* \ No newline at end of property Index: vendor/dialog/1.3-20180621/samples/fselect2-stdout =================================================================== --- vendor/dialog/1.3-20180621/samples/fselect2-stdout (nonexistent) +++ vendor/dialog/1.3-20180621/samples/fselect2-stdout (revision 339483) @@ -0,0 +1,9 @@ +#!/bin/sh +# $Id: fselect2-stdout,v 1.6 2010/01/13 10:20:03 tom Exp $ + +. ./setup-vars + +RESULT=`$DIALOG --stdout --title "Please choose a file" "$@" --fselect $HOME/ 0 0` +retval=$? + +. ./report-string Property changes on: vendor/dialog/1.3-20180621/samples/fselect2-stdout ___________________________________________________________________ Added: svn:executable ## -0,0 +1 ## +* \ No newline at end of property Index: vendor/dialog/1.3-20180621/samples/gauge =================================================================== --- vendor/dialog/1.3-20180621/samples/gauge (nonexistent) +++ vendor/dialog/1.3-20180621/samples/gauge (revision 339483) @@ -0,0 +1,22 @@ +#!/bin/sh +# $Id: gauge,v 1.7 2010/01/13 10:20:03 tom Exp $ + +. ./setup-vars + +PCT=10 +( +while test $PCT != 100 +do +cat <<EOF +XXX +$PCT +The new\n\ +message ($PCT percent) +XXX +EOF +PCT=`expr $PCT + 10` +sleep 1 +done +) | + +$DIALOG --title "GAUGE" "$@" --gauge "Hi, this is a gauge widget" 20 70 0 Property changes on: vendor/dialog/1.3-20180621/samples/gauge ___________________________________________________________________ Added: svn:executable ## -0,0 +1 ## +* \ No newline at end of property Index: vendor/dialog/1.3-20180621/samples/gauge0 =================================================================== --- vendor/dialog/1.3-20180621/samples/gauge0 (nonexistent) +++ vendor/dialog/1.3-20180621/samples/gauge0 (revision 339483) @@ -0,0 +1,23 @@ +#!/bin/sh +# $Id: gauge0,v 1.7 2010/01/13 10:20:03 tom Exp $ + +. ./setup-vars + +PCT=10 +( +sleep 1 +while test $PCT != 110 +do +cat <<EOF +XXX +$PCT +The new\n\ +message ($PCT percent) +XXX +EOF +PCT=`expr $PCT + 10` +sleep 1 +done +) | + +$DIALOG --title "GAUGE" "$@" --gauge "Hi, this is a gauge widget" 0 0 0 Property changes on: vendor/dialog/1.3-20180621/samples/gauge0 ___________________________________________________________________ Added: svn:executable ## -0,0 +1 ## +* \ No newline at end of property Index: vendor/dialog/1.3-20180621/samples/gauge0-input-fd =================================================================== --- vendor/dialog/1.3-20180621/samples/gauge0-input-fd (nonexistent) +++ vendor/dialog/1.3-20180621/samples/gauge0-input-fd (revision 339483) @@ -0,0 +1,27 @@ +#!/bin/sh +# $Id: gauge0-input-fd,v 1.5 2010/01/13 10:20:03 tom Exp $ +# modified "gauge0" script to use "--input-fd" option. + +. ./setup-vars + +exec 3<&0 +PCT=10 +( +sleep 1 +while test $PCT != 110 +do +cat <<EOF +XXX +$PCT +The new\n\ +message ($PCT percent) +XXX +EOF +PCT=`expr $PCT + 10` +sleep 1 +done +) | + +$DIALOG --title "GAUGE" --input-fd 3 "$@" --gauge "Hi, this is a gauge widget" 0 0 0 + +exec 3<&- Property changes on: vendor/dialog/1.3-20180621/samples/gauge0-input-fd ___________________________________________________________________ Added: svn:executable ## -0,0 +1 ## +* \ No newline at end of property Index: vendor/dialog/1.3-20180621/samples/gauge2 =================================================================== --- vendor/dialog/1.3-20180621/samples/gauge2 (nonexistent) +++ vendor/dialog/1.3-20180621/samples/gauge2 (revision 339483) @@ -0,0 +1,28 @@ +#!/bin/sh +# $Id: gauge2,v 1.8 2010/01/13 10:26:52 tom Exp $ +# The original dialog program assumed the first line after the first "XXX" +# was a percentage value (compare with "gauge" script). + +. ./setup-vars + +(echo "10" ; sleep 2 ; + +cat <<"EOF" +XXX +The new +\n +message +XXX +20 +EOF +sleep 2; + +echo "75" ; sleep 1 +echo "100") | \ + +$DIALOG --title "GAUGE" "$@" --gauge "Hi, this is a gauge widget" 10 40 0 + +if [ "$?" = $DIALOG_ESC ] ; then + echo "" + echo "Box closed !" +fi Property changes on: vendor/dialog/1.3-20180621/samples/gauge2 ___________________________________________________________________ Added: svn:executable ## -0,0 +1 ## +* \ No newline at end of property Index: vendor/dialog/1.3-20180621/samples/infobox =================================================================== --- vendor/dialog/1.3-20180621/samples/infobox (nonexistent) +++ vendor/dialog/1.3-20180621/samples/infobox (revision 339483) @@ -0,0 +1,21 @@ +#! /bin/sh +# $Id: infobox,v 1.8 2010/01/13 10:20:03 tom Exp $ + +. ./setup-vars + +left=10 +unit="seconds" +while test $left != 0 +do + +$DIALOG --sleep 1 \ + --title "INFO BOX" "$@" \ + --infobox "Hi, this is an information box. It is +different from a message box: it will +not pause waiting for input after displaying +the message. The pause here is only introduced +by the sleep command within dialog. +You have $left $unit to read this..." 10 52 +left=`expr $left - 1` +test $left = 1 && unit="second" +done Property changes on: vendor/dialog/1.3-20180621/samples/infobox ___________________________________________________________________ Added: svn:executable ## -0,0 +1 ## +* \ No newline at end of property Index: vendor/dialog/1.3-20180621/samples/infobox1 =================================================================== --- vendor/dialog/1.3-20180621/samples/infobox1 (nonexistent) +++ vendor/dialog/1.3-20180621/samples/infobox1 (revision 339483) @@ -0,0 +1,21 @@ +#! /bin/sh +# $Id: infobox1,v 1.4 2010/01/13 10:20:03 tom Exp $ + +. ./setup-vars + +left=10 +unit="seconds" +while test $left != 0 +do + +sleep 1 +$DIALOG --title "INFO BOX" "$@" \ + --infobox "Hi, this is an information box. It is +different from a message box: it will +not pause waiting for input after displaying +the message. The pause here is only introduced +by a sleep command in the shell script. +You have $left $unit to read this..." 10 52 +left=`expr $left - 1` +test $left = 1 && unit="second" +done Property changes on: vendor/dialog/1.3-20180621/samples/infobox1 ___________________________________________________________________ Added: svn:executable ## -0,0 +1 ## +* \ No newline at end of property Index: vendor/dialog/1.3-20180621/samples/infobox2 =================================================================== --- vendor/dialog/1.3-20180621/samples/infobox2 (nonexistent) +++ vendor/dialog/1.3-20180621/samples/infobox2 (revision 339483) @@ -0,0 +1,21 @@ +#! /bin/sh +# $Id: infobox2,v 1.5 2010/01/13 10:20:03 tom Exp $ + +. ./setup-vars + +left=10 +unit="seconds" +while test $left != 0 +do + +$DIALOG --sleep 1 \ + --title "INFO BOX" "$@" \ + --infobox "Hi, this is an information box. It is +different from a message box: it will +not pause waiting for input after displaying +the message. The pause here is only introduced +by the sleep command within dialog. +You have $left $unit to read this..." 0 0 +left=`expr $left - 1` +test $left = 1 && unit="second" +done Property changes on: vendor/dialog/1.3-20180621/samples/infobox2 ___________________________________________________________________ Added: svn:executable ## -0,0 +1 ## +* \ No newline at end of property Index: vendor/dialog/1.3-20180621/samples/infobox3 =================================================================== --- vendor/dialog/1.3-20180621/samples/infobox3 (nonexistent) +++ vendor/dialog/1.3-20180621/samples/infobox3 (revision 339483) @@ -0,0 +1,22 @@ +#! /bin/sh +# $Id: infobox3,v 1.5 2010/01/13 10:20:03 tom Exp $ + +. ./setup-vars + +left=10 +unit="seconds" +while test $left != 0 +do + +$DIALOG --sleep 1 \ + --begin 5 0 \ + --title "INFO BOX" "$@" \ + --infobox "Hi, this is an information box. It is +different from a message box: it will +not pause waiting for input after displaying +the message. The pause here is only introduced +by the sleep command within dialog. +You have $left $unit to read this..." 0 0 +left=`expr $left - 1` +test $left = 1 && unit="second" +done Property changes on: vendor/dialog/1.3-20180621/samples/infobox3 ___________________________________________________________________ Added: svn:executable ## -0,0 +1 ## +* \ No newline at end of property Index: vendor/dialog/1.3-20180621/samples/infobox4 =================================================================== --- vendor/dialog/1.3-20180621/samples/infobox4 (nonexistent) +++ vendor/dialog/1.3-20180621/samples/infobox4 (revision 339483) @@ -0,0 +1,22 @@ +#! /bin/sh +# $Id: infobox4,v 1.5 2010/01/13 10:20:03 tom Exp $ + +. ./setup-vars + +left=10 +unit="seconds" +while test $left != 0 +do + +$DIALOG --sleep 1 \ + --begin 0 5 \ + --title "INFO BOX" "$@" \ + --infobox "Hi, this is an information box. It is +different from a message box: it will +not pause waiting for input after displaying +the message. The pause here is only introduced +by the sleep command within dialog. +You have $left $unit to read this..." 0 0 +left=`expr $left - 1` +test $left = 1 && unit="second" +done Property changes on: vendor/dialog/1.3-20180621/samples/infobox4 ___________________________________________________________________ Added: svn:executable ## -0,0 +1 ## +* \ No newline at end of property Index: vendor/dialog/1.3-20180621/samples/inputbox =================================================================== --- vendor/dialog/1.3-20180621/samples/inputbox (nonexistent) +++ vendor/dialog/1.3-20180621/samples/inputbox (revision 339483) @@ -0,0 +1,20 @@ +#!/bin/sh +# $Id: inputbox,v 1.11 2010/01/13 10:06:01 tom Exp $ + +. ./setup-vars + +. ./setup-tempfile + +$DIALOG --title "INPUT BOX" --clear "$@" \ + --inputbox "Hi, this is an input dialog box. You can use \n +this to ask questions that require the user \n +to input a string as the answer. You can \n +input strings of length longer than the \n +width of the input box, in that case, the \n +input field will be automatically scrolled. \n +You can use BACKSPACE to correct errors. \n\n +Try entering your name below:" 16 51 2> $tempfile + +retval=$? + +. ./report-tempfile Property changes on: vendor/dialog/1.3-20180621/samples/inputbox ___________________________________________________________________ Added: svn:executable ## -0,0 +1 ## +* \ No newline at end of property Index: vendor/dialog/1.3-20180621/samples/inputbox-both =================================================================== --- vendor/dialog/1.3-20180621/samples/inputbox-both (nonexistent) +++ vendor/dialog/1.3-20180621/samples/inputbox-both (revision 339483) @@ -0,0 +1,22 @@ +#!/bin/sh +# $Id: inputbox-both,v 1.6 2010/01/13 10:20:03 tom Exp $ + +. ./setup-vars + +. ./setup-tempfile + +$DIALOG --title "INPUT BOX" --clear \ + --extra-button \ + --help-button "$@" \ + --inputbox "Hi, this is an input dialog box. You can use \n +this to ask questions that require the user \n +to input a string as the answer. You can \n +input strings of length longer than the \n +width of the input box, in that case, the \n +input field will be automatically scrolled. \n +You can use BACKSPACE to correct errors. \n\n +Try entering your name below:" 16 51 2> $tempfile + +retval=$? + +. ./report-tempfile Property changes on: vendor/dialog/1.3-20180621/samples/inputbox-both ___________________________________________________________________ Added: svn:executable ## -0,0 +1 ## +* \ No newline at end of property Index: vendor/dialog/1.3-20180621/samples/inputbox-extra =================================================================== --- vendor/dialog/1.3-20180621/samples/inputbox-extra (nonexistent) +++ vendor/dialog/1.3-20180621/samples/inputbox-extra (revision 339483) @@ -0,0 +1,21 @@ +#!/bin/sh +# $Id: inputbox-extra,v 1.6 2010/01/13 10:20:03 tom Exp $ + +. ./setup-vars + +. ./setup-tempfile + +$DIALOG --title "INPUT BOX" --clear \ + --extra-button "$@" \ + --inputbox "Hi, this is an input dialog box. You can use \n +this to ask questions that require the user \n +to input a string as the answer. You can \n +input strings of length longer than the \n +width of the input box, in that case, the \n +input field will be automatically scrolled. \n +You can use BACKSPACE to correct errors. \n\n +Try entering your name below:" 16 51 2> $tempfile + +retval=$? + +. ./report-tempfile Property changes on: vendor/dialog/1.3-20180621/samples/inputbox-extra ___________________________________________________________________ Added: svn:executable ## -0,0 +1 ## +* \ No newline at end of property Index: vendor/dialog/1.3-20180621/samples/inputbox-help =================================================================== --- vendor/dialog/1.3-20180621/samples/inputbox-help (nonexistent) +++ vendor/dialog/1.3-20180621/samples/inputbox-help (revision 339483) @@ -0,0 +1,21 @@ +#!/bin/sh +# $Id: inputbox-help,v 1.6 2010/01/13 10:20:03 tom Exp $ + +. ./setup-vars + +. ./setup-tempfile + +$DIALOG --title "INPUT BOX" --clear \ + --help-button "$@" \ + --inputbox "Hi, this is an input dialog box. You can use \n +this to ask questions that require the user \n +to input a string as the answer. You can \n +input strings of length longer than the \n +width of the input box, in that case, the \n +input field will be automatically scrolled. \n +You can use BACKSPACE to correct errors. \n\n +Try entering your name below:" 16 51 2> $tempfile + +retval=$? + +. ./report-tempfile Property changes on: vendor/dialog/1.3-20180621/samples/inputbox-help ___________________________________________________________________ Added: svn:executable ## -0,0 +1 ## +* \ No newline at end of property Index: vendor/dialog/1.3-20180621/samples/inputbox1 =================================================================== --- vendor/dialog/1.3-20180621/samples/inputbox1 (nonexistent) +++ vendor/dialog/1.3-20180621/samples/inputbox1 (revision 339483) @@ -0,0 +1,23 @@ +#!/bin/sh +# $Id: inputbox1,v 1.13 2010/01/13 10:20:03 tom Exp $ + +. ./setup-vars + +. ./setup-tempfile + +$DIALOG --cr-wrap \ + --title "INPUT BOX" --clear \ + --inputbox "$@" \ +"Hi, this is an input dialog box. You can use +this to ask questions that require the user +to input a string as the answer. You can +input strings of length longer than the +width of the input box, in that case, the +input field will be automatically scrolled. +You can use BACKSPACE to correct errors. + +Try entering your name below:" 0 0 2> $tempfile + +retval=$? + +. ./report-tempfile Property changes on: vendor/dialog/1.3-20180621/samples/inputbox1 ___________________________________________________________________ Added: svn:executable ## -0,0 +1 ## +* \ No newline at end of property Index: vendor/dialog/1.3-20180621/samples/inputbox2 =================================================================== --- vendor/dialog/1.3-20180621/samples/inputbox2 (nonexistent) +++ vendor/dialog/1.3-20180621/samples/inputbox2 (revision 339483) @@ -0,0 +1,20 @@ +#!/bin/sh +# $Id: inputbox2,v 1.9 2010/01/13 10:20:03 tom Exp $ + +. ./setup-vars + +. ./setup-tempfile + +$DIALOG --title "INPUT BOX" --clear "$@" \ + --inputbox "Hi, this is an input dialog box. You can use \n +this to ask questions that require the user \n +to input a string as the answer. You can \n +input strings of length longer than the \n +width of the input box, in that case, the \n +input field will be automatically scrolled. \n +You can use BACKSPACE to correct errors. \n\n +Try entering your name below:" 16 51 2> $tempfile + +retval=$? + +. ./report-tempfile Property changes on: vendor/dialog/1.3-20180621/samples/inputbox2 ___________________________________________________________________ Added: svn:executable ## -0,0 +1 ## +* \ No newline at end of property Index: vendor/dialog/1.3-20180621/samples/inputbox3 =================================================================== --- vendor/dialog/1.3-20180621/samples/inputbox3 (nonexistent) +++ vendor/dialog/1.3-20180621/samples/inputbox3 (revision 339483) @@ -0,0 +1,21 @@ +#!/bin/sh +# $Id: inputbox3,v 1.7 2010/01/13 10:20:03 tom Exp $ + +. ./setup-vars + +. ./setup-tempfile + +$DIALOG --nocancel \ + --title "INPUT BOX" --clear "$@" \ + --inputbox "Hi, this is an input dialog box. You can use \n\ +this to ask questions that require the user \n\ +to input a string as the answer. You can \n\ +input strings of length longer than the \n\ +width of the input box, in that case, the \n\ +input field will be automatically scrolled. \n\ +You can use BACKSPACE to correct errors. \n\n\ +Try entering your name below:" 16 51 2> $tempfile + +retval=$? + +. ./report-tempfile Property changes on: vendor/dialog/1.3-20180621/samples/inputbox3 ___________________________________________________________________ Added: svn:executable ## -0,0 +1 ## +* \ No newline at end of property Index: vendor/dialog/1.3-20180621/samples/inputbox4 =================================================================== --- vendor/dialog/1.3-20180621/samples/inputbox4 (nonexistent) +++ vendor/dialog/1.3-20180621/samples/inputbox4 (revision 339483) @@ -0,0 +1,20 @@ +#!/bin/sh +# $Id: inputbox4,v 1.7 2010/01/13 10:28:12 tom Exp $ +# An example which does not use temporary files, as suggested by Cary Evans: + +. ./setup-vars + +exec 3>&1 +RESULT=`$DIALOG --title "INPUT BOX" --clear "$@" \ + --inputbox "Hi, this is an input dialog box. You can use \n +this to ask questions that require the user \n +to input a string as the answer. You can \n +input strings of length longer than the \n +width of the input box, in that case, the \n +input field will be automatically scrolled. \n +You can use BACKSPACE to correct errors. \n\n +Try entering your name below:" 16 51 2>&1 1>&3` +retval=$? +exec 3>&- + +. ./report-string Property changes on: vendor/dialog/1.3-20180621/samples/inputbox4 ___________________________________________________________________ Added: svn:executable ## -0,0 +1 ## +* \ No newline at end of property Index: vendor/dialog/1.3-20180621/samples/inputbox5 =================================================================== --- vendor/dialog/1.3-20180621/samples/inputbox5 (nonexistent) +++ vendor/dialog/1.3-20180621/samples/inputbox5 (revision 339483) @@ -0,0 +1,21 @@ +#!/bin/sh +# $Id: inputbox5,v 1.7 2010/01/13 10:20:03 tom Exp $ +# use --output-fd to write to a different output than stderr + +. ./setup-vars + +. ./setup-tempfile + +$DIALOG --title "INPUT BOX" --clear --output-fd 4 "$@" \ + --inputbox "Hi, this is an input dialog box. You can use \n +this to ask questions that require the user \n +to input a string as the answer. You can \n +input strings of length longer than the \n +width of the input box, in that case, the \n +input field will be automatically scrolled. \n +You can use BACKSPACE to correct errors. \n\n +Try entering your name below:" 16 51 4> $tempfile + +retval=$? + +. ./report-tempfile Property changes on: vendor/dialog/1.3-20180621/samples/inputbox5 ___________________________________________________________________ Added: svn:executable ## -0,0 +1 ## +* \ No newline at end of property Index: vendor/dialog/1.3-20180621/samples/inputbox6-8bit =================================================================== --- vendor/dialog/1.3-20180621/samples/inputbox6-8bit (nonexistent) +++ vendor/dialog/1.3-20180621/samples/inputbox6-8bit (revision 339483) @@ -0,0 +1,17 @@ +#!/bin/sh +# $Id: inputbox6-8bit,v 1.6 2010/01/13 10:20:03 tom Exp $ + +. ./setup-vars + +. ./setup-tempfile + +. ./testdata-8bit + +$DIALOG \ +--title `printf "$SAMPLE"` "$@" \ +--inputbox `printf "$SAMPLE"` \ +10 40 `printf "$SAMPLE"` 2>$tempfile + +retval=$? + +. ./report-tempfile Property changes on: vendor/dialog/1.3-20180621/samples/inputbox6-8bit ___________________________________________________________________ Added: svn:executable ## -0,0 +1 ## +* \ No newline at end of property Index: vendor/dialog/1.3-20180621/samples/inputbox7 =================================================================== --- vendor/dialog/1.3-20180621/samples/inputbox7 (nonexistent) +++ vendor/dialog/1.3-20180621/samples/inputbox7 (revision 339483) @@ -0,0 +1,29 @@ +#!/bin/sh +# $Id: inputbox7,v 1.7 2010/01/13 10:20:03 tom Exp $ +# An example which produces two widget outputs. + +. ./setup-vars + +MSG='Hi, this is an input dialog box. You can use \n +this to ask questions that require the user \n +to input a string as the answer. You can \n +input strings of length longer than the \n +width of the input box, in that case, the \n +input field will be automatically scrolled. \n +You can use BACKSPACE to correct errors. \n\n +Try entering your name below:' + +# separate with a line-break (newline) +SEP=' +' + +exec 3>&1 +RESULT=`$DIALOG --title "INPUT BOX" --clear --separate-widget "$SEP" "$@" \ + --inputbox "$MSG" 16 51 \ + --title "ANOTHER INPUT BOX" \ + --inputbox "$MSG" 16 51 \ +2>&1 1>&3` +retval=$? +exec 3>&- + +. ./report-string Property changes on: vendor/dialog/1.3-20180621/samples/inputbox7 ___________________________________________________________________ Added: svn:executable ## -0,0 +1 ## +* \ No newline at end of property Index: vendor/dialog/1.3-20180621/samples/listing =================================================================== --- vendor/dialog/1.3-20180621/samples/listing (nonexistent) +++ vendor/dialog/1.3-20180621/samples/listing (revision 339483) @@ -0,0 +1,8 @@ +#!/bin/sh +# $Id: listing,v 1.2 2007/05/28 12:40:36 tom Exp $ +while true +do +ls -lrt +date +sleep 1 +done Property changes on: vendor/dialog/1.3-20180621/samples/listing ___________________________________________________________________ Added: svn:executable ## -0,0 +1 ## +* \ No newline at end of property Index: vendor/dialog/1.3-20180621/samples/menubox =================================================================== --- vendor/dialog/1.3-20180621/samples/menubox (nonexistent) +++ vendor/dialog/1.3-20180621/samples/menubox (revision 339483) @@ -0,0 +1,27 @@ +#!/bin/sh +# $Id: menubox,v 1.11 2010/01/13 10:20:03 tom Exp $ + +. ./setup-vars + +. ./setup-tempfile + +$DIALOG --clear --title "MENU BOX" "$@" \ + --menu "Hi, this is a menu box. You can use this to \n\ +present a list of choices for the user to \n\ +choose. If there are more items than can fit \n\ +on the screen, the menu will be scrolled. \n\ +You can use the UP/DOWN arrow keys, the first \n\ +letter of the choice as a hot key, or the \n\ +number keys 1-9 to choose an option.\n\ +Try it now!\n\n\ + Choose the OS you like:" 20 51 4 \ + "Linux" "The Great Unix Clone for 386/486" \ + "NetBSD" "Another free Unix Clone for 386/486" \ + "OS/2" "IBM OS/2" \ + "WIN NT" "Microsoft Windows NT" \ + "PCDOS" "IBM PC DOS" \ + "MSDOS" "Microsoft DOS" 2> $tempfile + +retval=$? + +. ./report-tempfile Property changes on: vendor/dialog/1.3-20180621/samples/menubox ___________________________________________________________________ Added: svn:executable ## -0,0 +1 ## +* \ No newline at end of property Index: vendor/dialog/1.3-20180621/samples/menubox-8bit =================================================================== --- vendor/dialog/1.3-20180621/samples/menubox-8bit (nonexistent) +++ vendor/dialog/1.3-20180621/samples/menubox-8bit (revision 339483) @@ -0,0 +1,29 @@ +#!/bin/sh +# $Id: menubox-8bit,v 1.6 2010/01/13 10:20:03 tom Exp $ + +. ./setup-vars + +. ./setup-tempfile + +. ./testdata-8bit + +$DIALOG --clear --title "MENU BOX" "$@" \ + --menu "Hi, this is a menu box. You can use this to \n\ +present a list of choices for the user to \n\ +choose. If there are more items than can fit \n\ +on the screen, the menu will be scrolled. \n\ +You can use the UP/DOWN arrow keys, the first \n\ +letter of the choice as a hot key, or the \n\ +number keys 1-9 to choose an option.\n\ +Try it now!\n\n\ + Choose the OS you like:" 20 51 4 \ + "`./rotated-data 0 $SAMPLE`" "The Great Unix Clone for 386/486" \ + "`./rotated-data 1 $SAMPLE`" "Another free Unix Clone for 386/486" \ + "`./rotated-data 2 $SAMPLE`" "IBM OS/2" \ + "`./rotated-data 3 $SAMPLE`" "Microsoft Windows NT" \ + "`./rotated-data 4 $SAMPLE`" "IBM PC DOS" \ + "`./rotated-data 5 $SAMPLE`" "Microsoft DOS" 2> $tempfile + +retval=$? + +. ./report-tempfile Property changes on: vendor/dialog/1.3-20180621/samples/menubox-8bit ___________________________________________________________________ Added: svn:executable ## -0,0 +1 ## +* \ No newline at end of property Index: vendor/dialog/1.3-20180621/samples/menubox-utf8 =================================================================== --- vendor/dialog/1.3-20180621/samples/menubox-utf8 (nonexistent) +++ vendor/dialog/1.3-20180621/samples/menubox-utf8 (revision 339483) @@ -0,0 +1,29 @@ +#!/bin/sh +# $Id: menubox-utf8,v 1.10 2010/01/13 10:20:03 tom Exp $ + +. ./setup-vars + +. ./setup-tempfile + +. ./setup-utf8 + +$DIALOG --clear --title "MENU BOX" "$@" \ + --menu "Hi, this is a menu box. You can use this to \n\ +present a list of choices for the user to \n\ +choose. If there are more items than can fit \n\ +on the screen, the menu will be scrolled. \n\ +You can use the UP/DOWN arrow keys, the first \n\ +letter of the choice as a hot key, or the \n\ +number keys 1-9 to choose an option.\n\ +Try it now!\n\n\ + Choose the OS you like:" 20 51 4 \ + "Linux" "The Great Unix Clone for 386/486" \ + "NetBSD" "Another free Unix Clone for 386/486" \ + "OS/ï¼’" "IBM OS/2" \ + "WIN NT" "Microsoft Windows NT" \ + "PCDOS" "IBM PC DOS" \ + "MSDOS" "Microsoft DOS" 2> $tempfile + +retval=$? + +. ./report-tempfile Property changes on: vendor/dialog/1.3-20180621/samples/menubox-utf8 ___________________________________________________________________ Added: svn:executable ## -0,0 +1 ## +* \ No newline at end of property Index: vendor/dialog/1.3-20180621/samples/menubox1 =================================================================== --- vendor/dialog/1.3-20180621/samples/menubox1 (nonexistent) +++ vendor/dialog/1.3-20180621/samples/menubox1 (revision 339483) @@ -0,0 +1,27 @@ +#!/bin/sh +# $Id: menubox1,v 1.7 2010/01/13 10:20:03 tom Exp $ + +. ./setup-vars + +. ./setup-tempfile + +$DIALOG --default-item "OS/2" --clear --title "MENU BOX" "$@" \ + --menu "Hi, this is a menu box. You can use this to \n\ +present a list of choices for the user to \n\ +choose. If there are more items than can fit \n\ +on the screen, the menu will be scrolled. \n\ +You can use the UP/DOWN arrow keys, the first \n\ +letter of the choice as a hot key, or the \n\ +number keys 1-9 to choose an option.\n\ +Try it now!\n\n\ + Choose the OS you like:" 20 51 4 \ + "Linux" "The Great Unix Clone for 386/486" \ + "NetBSD" "Another free Unix Clone for 386/486" \ + "OS/2" "IBM OS/2" \ + "WIN NT" "Microsoft Windows NT" \ + "PCDOS" "IBM PC DOS" \ + "MSDOS" "Microsoft DOS" 2> $tempfile + +retval=$? + +. ./report-tempfile Property changes on: vendor/dialog/1.3-20180621/samples/menubox1 ___________________________________________________________________ Added: svn:executable ## -0,0 +1 ## +* \ No newline at end of property Index: vendor/dialog/1.3-20180621/samples/menubox10 =================================================================== --- vendor/dialog/1.3-20180621/samples/menubox10 (nonexistent) +++ vendor/dialog/1.3-20180621/samples/menubox10 (revision 339483) @@ -0,0 +1,22 @@ +#!/bin/sh +# $Id: menubox10,v 1.5 2010/01/13 10:34:12 tom Exp $ +# zero-width column + +. ./setup-vars + +exec 3>&1 +RESULT=`$DIALOG --backtitle "Debian Configuration" \ + --title "Configuring debconf" \ + --default-item Dialog "$@" \ + --menu "Packages that use debconf for co" 19 50 6 \ + Dialog "" \ + Readline "" \ + Gnome "" \ + Kde "" \ + Editor "" \ + Noninteractive "" \ +2>&1 1>&3` +retval=$? +exec 3>&- + +. ./report-string Property changes on: vendor/dialog/1.3-20180621/samples/menubox10 ___________________________________________________________________ Added: svn:executable ## -0,0 +1 ## +* \ No newline at end of property Index: vendor/dialog/1.3-20180621/samples/menubox2 =================================================================== --- vendor/dialog/1.3-20180621/samples/menubox2 (nonexistent) +++ vendor/dialog/1.3-20180621/samples/menubox2 (revision 339483) @@ -0,0 +1,27 @@ +#!/bin/sh +# $Id: menubox2,v 1.7 2010/01/13 10:20:03 tom Exp $ + +. ./setup-vars + +. ./setup-tempfile + +$DIALOG --default-item "MSDOS" --clear --title "MENU BOX" "$@" \ + --menu "Hi, this is a menu box. You can use this to \n\ +present a list of choices for the user to \n\ +choose. If there are more items than can fit \n\ +on the screen, the menu will be scrolled. \n\ +You can use the UP/DOWN arrow keys, the first \n\ +letter of the choice as a hot key, or the \n\ +number keys 1-9 to choose an option.\n\ +Try it now!\n\n\ + Choose the OS you like:" 20 51 4 \ + "Linux" "The Great Unix Clone for 386/486" \ + "NetBSD" "Another free Unix Clone for 386/486" \ + "OS/2" "IBM OS/2" \ + "WIN NT" "Microsoft Windows NT" \ + "PCDOS" "IBM PC DOS" \ + "MSDOS" "Microsoft DOS" 2> $tempfile + +retval=$? + +. ./report-tempfile Property changes on: vendor/dialog/1.3-20180621/samples/menubox2 ___________________________________________________________________ Added: svn:executable ## -0,0 +1 ## +* \ No newline at end of property Index: vendor/dialog/1.3-20180621/samples/menubox3 =================================================================== --- vendor/dialog/1.3-20180621/samples/menubox3 (nonexistent) +++ vendor/dialog/1.3-20180621/samples/menubox3 (revision 339483) @@ -0,0 +1,27 @@ +#!/bin/sh +# $Id: menubox3,v 1.8 2010/01/13 10:20:03 tom Exp $ + +. ./setup-vars + +. ./setup-tempfile + +$DIALOG --clear --item-help --title "MENU BOX" "$@" \ + --menu "Hi, this is a menu box. You can use this to \n\ +present a list of choices for the user to \n\ +choose. If there are more items than can fit \n\ +on the screen, the menu will be scrolled. \n\ +You can use the UP/DOWN arrow keys, the first \n\ +letter of the choice as a hot key, or the \n\ +number keys 1-9 to choose an option.\n\ +Try it now!\n\n\ + Choose the OS you like:" 20 51 4 \ + "Linux" "The Great Unix Clone for 386/486" "Why use Linux?" \ + "NetBSD" "Another free Unix Clone for 386/486" "Or NetBSD?" \ + "OS/2" "IBM OS/2" "aka \"Warp\"" \ + "WIN NT" "Microsoft Windows NT" "hmm" \ + "PCDOS" "IBM PC DOS" "clone of a clone" \ + "MSDOS" "Microsoft DOS" "DOS: Disk Operating System, originally for an IBM contract, hence using the same jargon" 2> $tempfile + +retval=$? + +. ./report-tempfile Property changes on: vendor/dialog/1.3-20180621/samples/menubox3 ___________________________________________________________________ Added: svn:executable ## -0,0 +1 ## +* \ No newline at end of property Index: vendor/dialog/1.3-20180621/samples/menubox4 =================================================================== --- vendor/dialog/1.3-20180621/samples/menubox4 (nonexistent) +++ vendor/dialog/1.3-20180621/samples/menubox4 (revision 339483) @@ -0,0 +1,27 @@ +#!/bin/sh +# $Id: menubox4,v 1.8 2010/01/13 10:20:03 tom Exp $ + +. ./setup-vars + +. ./setup-tempfile + +$DIALOG --clear --item-help --title "MENU BOX" "$@" \ + --menu "Hi, this is a menu box. You can use this to \n\ +present a list of choices for the user to \n\ +choose. If there are more items than can fit \n\ +on the screen, the menu will be scrolled. \n\ +You can use the UP/DOWN arrow keys, the first \n\ +letter of the choice as a hot key, or the \n\ +number keys 1-9 to choose an option.\n\ +Try it now!\n\n\ + Choose the OS you like:" 20 51 4 \ + "Linux" "The Great Unix Clone for 386/486 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" "Why use Linux?" \ + "NetBSD" "Another free Unix Clone for 386/486 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" "Or NetBSD?" \ + "OS/2" "IBM OS/2 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" "aka \"Warp\"" \ + "WIN NT" "Microsoft Windows NT xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" "hmm" \ + "PCDOS" "IBM PC DOS xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" "clone of a clone" \ + "MSDOS" "Microsoft DOS xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" "DOS: Disk Operating System, originally for an IBM contract, hence using the same jargon" 2> $tempfile + +retval=$? + +. ./report-tempfile Property changes on: vendor/dialog/1.3-20180621/samples/menubox4 ___________________________________________________________________ Added: svn:executable ## -0,0 +1 ## +* \ No newline at end of property Index: vendor/dialog/1.3-20180621/samples/menubox5 =================================================================== --- vendor/dialog/1.3-20180621/samples/menubox5 (nonexistent) +++ vendor/dialog/1.3-20180621/samples/menubox5 (revision 339483) @@ -0,0 +1,30 @@ +#!/bin/sh +# $Id: menubox5,v 1.9 2010/01/13 10:20:03 tom Exp $ + +. ./setup-vars + +. ./setup-tempfile + +$DIALOG --clear --help-button --item-help --title "MENU BOX" "$@" \ + --menu "Hi, this is a menu box. You can use this to \n\ +present a list of choices for the user to \n\ +choose. If there are more items than can fit \n\ +on the screen, the menu will be scrolled. \n\ +You can use the UP/DOWN arrow keys, the first \n\ +letter of the choice as a hot key, or the \n\ +number keys 1-9 to choose an option.\n\ +Try it now!\n\n\ + Choose the OS you like:" 20 51 4 \ + "Linux" "The Great Unix Clone for 386/486 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" "Why use Linux?" \ + "NetBSD" "Another free Unix Clone for 386/486 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" "Or NetBSD?" \ + "OS/2" "IBM OS/2 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" "aka \"Warp\"" \ + "WIN NT" "Microsoft Windows NT xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" "hmm" \ + "WIN 2K" "Microsoft Windows 2000 xxxxxxxxxxxxxxxxxxxxxxxxxxxx" "hmm" \ + "WIN XP" "Microsoft Windows XP (son of Windows 95) xxxxxxxxxx" "hmm" \ + "WIN 95" "Microsoft Windows 95 (son of MSDOS) xxxxxxxxxxxxxxx" "hmm" \ + "PCDOS" "IBM PC DOS xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" "clone of a clone" \ + "MSDOS" "Microsoft DOS xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" "DOS: Disk Operating System, originally for an IBM contract, hence using the same jargon" 2> $tempfile + +retval=$? + +. ./report-tempfile Property changes on: vendor/dialog/1.3-20180621/samples/menubox5 ___________________________________________________________________ Added: svn:executable ## -0,0 +1 ## +* \ No newline at end of property Index: vendor/dialog/1.3-20180621/samples/menubox6 =================================================================== --- vendor/dialog/1.3-20180621/samples/menubox6 (nonexistent) +++ vendor/dialog/1.3-20180621/samples/menubox6 (revision 339483) @@ -0,0 +1,28 @@ +#!/bin/sh +# $Id: menubox6,v 1.8 2010/01/13 10:20:03 tom Exp $ +# example showing the --colors option + +. ./setup-vars + +. ./setup-tempfile + +$DIALOG --clear --item-help --title "MENU BOX" --colors "$@" \ + --menu "Hi, this is a \Zumenu\Zn box. You can use this to \n\ +present a list of choices for the user to \n\ +choose. If there are more items than can fit \n\ +on the screen, the menu will be scrolled. \n\ +You can use the \Z4UP/DOWN\Zn arrow keys, the first \n\ +letter of the choice as a hot key, or the \n\ +\Z2number\Zn keys 1-9 to choose an option.\n\ +Try it now!\n\n\ + Choose the OS you like:" 20 51 4 \ + "Linux" "The Great Unix Clone for \Zu386/486" "Why use \ZbLinux?" \ + "NetBSD" "Another free Unix Clone for \Zu386/486" "Or \ZbNetBSD?" \ + "OS/2" "IBM OS/2" "aka \"Warp\"" \ + "WIN NT" "Microsoft Windows NT" "hmm" \ + "PCDOS" "IBM PC \ZrDOS" "clone of a clone" \ + "MSDOS" "Microsoft \ZrDOS" "\ZbDOS\Zn: \Zb\Z3D\Znisk \Zb\Z3O\Znperating \Zb\Z3S\Znystem, originally for an IBM contract, hence using the same jargon" 2> $tempfile + +retval=$? + +. ./report-tempfile Property changes on: vendor/dialog/1.3-20180621/samples/menubox6 ___________________________________________________________________ Added: svn:executable ## -0,0 +1 ## +* \ No newline at end of property Index: vendor/dialog/1.3-20180621/samples/menubox7 =================================================================== --- vendor/dialog/1.3-20180621/samples/menubox7 (nonexistent) +++ vendor/dialog/1.3-20180621/samples/menubox7 (revision 339483) @@ -0,0 +1,29 @@ +#!/bin/sh +# $Id: menubox7,v 1.9 2010/01/13 10:20:03 tom Exp $ +# example with --extra-button + +. ./setup-vars + +. ./setup-tempfile + +$DIALOG --clear --item-help --extra-button --extra-label "Choice" \ + --title "MENU BOX" "$@" \ + --menu "Hi, this is a menu box. You can use this to \n\ +present a list of choices for the user to \n\ +choose. If there are more items than can fit \n\ +on the screen, the menu will be scrolled. \n\ +You can use the UP/DOWN arrow keys, the first \n\ +letter of the choice as a hot key, or the \n\ +number keys 1-9 to choose an option.\n\ +Try it now!\n\n\ + Choose the OS you like:" 20 51 4 \ + "Linux" "The Great Unix Clone for 386/486" "Why use Linux?" \ + "NetBSD" "Another free Unix Clone for 386/486" "Or NetBSD?" \ + "OS/2" "IBM OS/2" "aka \"Warp\"" \ + "WIN NT" "Microsoft Windows NT" "hmm" \ + "PCDOS" "IBM PC DOS" "clone of a clone" \ + "MSDOS" "Microsoft DOS" "DOS: Disk Operating System, originally for an IBM contract, hence using the same jargon" 2> $tempfile + +retval=$? + +. ./report-tempfile Property changes on: vendor/dialog/1.3-20180621/samples/menubox7 ___________________________________________________________________ Added: svn:executable ## -0,0 +1 ## +* \ No newline at end of property Index: vendor/dialog/1.3-20180621/samples/menubox8 =================================================================== --- vendor/dialog/1.3-20180621/samples/menubox8 (nonexistent) +++ vendor/dialog/1.3-20180621/samples/menubox8 (revision 339483) @@ -0,0 +1,30 @@ +#!/bin/sh +# $Id: menubox8,v 1.7 2010/01/13 10:34:32 tom Exp $ + +. ./setup-vars + +exec 3>&1 +RESULT=`$DIALOG --help-button \ + --default-item "MSDOS" \ + --clear \ + --title "MENU BOX" "$@" \ + --menu "Hi, this is a menu box. You can use this to \n\ +present a list of choices for the user to \n\ +choose. If there are more items than can fit \n\ +on the screen, the menu will be scrolled. \n\ +You can use the UP/DOWN arrow keys, the first \n\ +letter of the choice as a hot key, or the \n\ +number keys 1-9 to choose an option.\n\ +Try it now!\n\n\ + Choose the OS you like:" 20 51 4 \ + "Linux" "The Great Unix Clone for 386/486" \ + "NetBSD" "Another free Unix Clone for 386/486" \ + "OS/2" "IBM OS/2" \ + "WIN NT" "Microsoft Windows NT" \ + "PCDOS" "IBM PC DOS" \ + "MSDOS" "Microsoft DOS" \ +2>&1 1>&3` +retval=$? +exec 3>&- + +. ./report-string Property changes on: vendor/dialog/1.3-20180621/samples/menubox8 ___________________________________________________________________ Added: svn:executable ## -0,0 +1 ## +* \ No newline at end of property Index: vendor/dialog/1.3-20180621/samples/menubox9 =================================================================== --- vendor/dialog/1.3-20180621/samples/menubox9 (nonexistent) +++ vendor/dialog/1.3-20180621/samples/menubox9 (revision 339483) @@ -0,0 +1,26 @@ +#!/bin/sh +# $Id: menubox9,v 1.6 2010/01/13 10:20:03 tom Exp $ + +. ./setup-vars + +exec 3>&1 +RESULT=`$DIALOG --help-button \ + --clear \ + --title "Select Linux installation partition:" "$@" \ + --menu \ +"Please select a partition from the following list to use for your \ +root (/) Linux partition." 13 70 5 \ +"/dev/hda2" "Linux native 30724312K" \ +"/dev/hda4" "Linux native 506047K" \ +"/dev/hdb1" "Linux native 4096543K" \ +"/dev/hdb2" "Linux native 2586465K" \ +"---" "(add none, continue with setup)" \ +"---" "(add none, continue with setup)" \ +"---" "(add none, continue with setup)" \ +"---" "(add none, continue with setup)" \ +"---" "(add none, continue with setup)" \ +2>&1 1>&3` +retval=$? +exec 3>&- + +. ./report-string Property changes on: vendor/dialog/1.3-20180621/samples/menubox9 ___________________________________________________________________ Added: svn:executable ## -0,0 +1 ## +* \ No newline at end of property Index: vendor/dialog/1.3-20180621/samples/mixedform =================================================================== --- vendor/dialog/1.3-20180621/samples/mixedform (nonexistent) +++ vendor/dialog/1.3-20180621/samples/mixedform (revision 339483) @@ -0,0 +1,61 @@ +#! /bin/sh +# $Id: mixedform,v 1.6 2010/01/13 10:47:35 tom Exp $ + +. ./setup-vars + +backtitle="An Example for the use of --mixedform:" +returncode=0 +while test $returncode != 1 && test $returncode != 250 +do +returncode=$? +exec 3>&1 +value=`$DIALOG --title "Mixed form demonstration" --ok-label "Submit" \ + --backtitle "$backtitle" \ + --insecure "$@" \ + --mixedform "Here is a possible piece of a configuration program." \ +20 50 0 \ + "Username :" 1 1 "Kiran" 1 20 10 0 2 \ + "Password :" 2 1 "" 2 20 8 0 1 \ + "Retype Password :" 3 1 "" 3 20 8 0 1 \ + "HOME :" 4 1 "Cisco" 4 20 40 0 0 \ +2>&1 1>&3` +returncode=$? +exec 3>&- +show=`echo "$value" |sed -e 's/^/ /'` + + case $returncode in + $DIALOG_CANCEL) + "$DIALOG" \ + --clear \ + --backtitle "$backtitle" \ + --yesno "Really quit?" 10 30 + case $? in + $DIALOG_OK) + break + ;; + $DIALOG_CANCEL) + returncode=99 + ;; + esac + ;; + $DIALOG_OK) + "$DIALOG" \ + --clear \ + --backtitle "$backtitle" --no-collapse --cr-wrap \ + --msgbox "Resulting data:\n\ +$show" 10 40 + ;; + $DIALOG_HELP) + echo "Button 2 (Help) pressed." + exit + ;; + $DIALOG_EXTRA) + echo "Button 3 (Extra) pressed." + exit + ;; + *) + echo "Return code was $returncode" + exit + ;; + esac +done Property changes on: vendor/dialog/1.3-20180621/samples/mixedform ___________________________________________________________________ Added: svn:executable ## -0,0 +1 ## +* \ No newline at end of property Index: vendor/dialog/1.3-20180621/samples/mixedform2 =================================================================== --- vendor/dialog/1.3-20180621/samples/mixedform2 (nonexistent) +++ vendor/dialog/1.3-20180621/samples/mixedform2 (revision 339483) @@ -0,0 +1,61 @@ +#! /bin/sh +# $Id: mixedform2,v 1.5 2010/01/13 10:47:35 tom Exp $ + +. ./setup-vars + +backtitle="An Example for the use of --mixedform:" +returncode=0 +while test $returncode != 1 && test $returncode != 250 +do +returncode=$? +exec 3>&1 +value=`$DIALOG --title "Mixed form demonstration" --ok-label "Submit" \ + --backtitle "$backtitle" \ + --insecure "$@" \ + --mixedform "Here is a possible piece of a configuration program." \ +20 50 0 \ + "Username :" 1 1 "Kiran" 1 20 10 0 2 \ + "Password :" 2 1 "pass" 2 20 8 0 3 \ + "Retype Password :" 3 1 "pass" 3 20 8 0 3 \ + "HOME :" 4 1 "Cisco" 4 20 40 0 2 \ +2>&1 1>&3` +returncode=$? +exec 3>&- +show=`echo "$value" |sed -e 's/^/ /'` + + case $returncode in + $DIALOG_CANCEL) + "$DIALOG" \ + --clear \ + --backtitle "$backtitle" \ + --yesno "Really quit?" 10 30 + case $? in + $DIALOG_OK) + break + ;; + $DIALOG_CANCEL) + returncode=99 + ;; + esac + ;; + $DIALOG_OK) + "$DIALOG" \ + --clear \ + --backtitle "$backtitle" --no-collapse --cr-wrap \ + --msgbox "Resulting data:\n\ +$show" 10 40 + ;; + $DIALOG_HELP) + echo "Button 2 (Help) pressed." + exit + ;; + $DIALOG_EXTRA) + echo "Button 3 (Extra) pressed." + exit + ;; + *) + echo "Return code was $returncode" + exit + ;; + esac +done Property changes on: vendor/dialog/1.3-20180621/samples/mixedform2 ___________________________________________________________________ Added: svn:executable ## -0,0 +1 ## +* \ No newline at end of property Index: vendor/dialog/1.3-20180621/samples/mixedgauge =================================================================== --- vendor/dialog/1.3-20180621/samples/mixedgauge (nonexistent) +++ vendor/dialog/1.3-20180621/samples/mixedgauge (revision 339483) @@ -0,0 +1,26 @@ +#! /bin/sh +# $Id: mixedgauge,v 1.7 2010/01/13 10:20:03 tom Exp $ + +. ./setup-vars + +background="An Example of --mixedgauge usage" + +for i in 5 10 20 30 40 50 60 70 80 90 100 +do +$DIALOG --backtitle "$background" \ + --title "Mixed gauge demonstration" "$@" \ + --mixedgauge "This is a prompt message,\nand this is the second line." \ + 0 0 33 \ + "Process one" "0" \ + "Process two" "1" \ + "Process three" "2" \ + "Process four" "3" \ + "" "8" \ + "Process five" "5" \ + "Process six" "6" \ + "Process seven" "7" \ + "Process eight" "4" \ + "Process nine" "-$i" +# break +sleep 1 +done Property changes on: vendor/dialog/1.3-20180621/samples/mixedgauge ___________________________________________________________________ Added: svn:executable ## -0,0 +1 ## +* \ No newline at end of property Index: vendor/dialog/1.3-20180621/samples/msgbox =================================================================== --- vendor/dialog/1.3-20180621/samples/msgbox (nonexistent) +++ vendor/dialog/1.3-20180621/samples/msgbox (revision 339483) @@ -0,0 +1,13 @@ +#!/bin/sh +# $Id: msgbox,v 1.7 2010/01/13 10:35:13 tom Exp $ + +. ./setup-vars + +$DIALOG --title "MESSAGE BOX" --clear "$@" \ + --msgbox "Hi, this is a simple message box. You can use this to \ + display any message you like. The box will remain until \ + you press the ENTER key." 10 41 + +retval=$? + +. ./report-button Property changes on: vendor/dialog/1.3-20180621/samples/msgbox ___________________________________________________________________ Added: svn:executable ## -0,0 +1 ## +* \ No newline at end of property Index: vendor/dialog/1.3-20180621/samples/msgbox-help =================================================================== --- vendor/dialog/1.3-20180621/samples/msgbox-help (nonexistent) +++ vendor/dialog/1.3-20180621/samples/msgbox-help (revision 339483) @@ -0,0 +1,14 @@ +#!/bin/sh +# $Id: msgbox-help,v 1.6 2010/01/13 10:53:11 tom Exp $ + +. ./setup-vars + +$DIALOG --title "MESSAGE BOX" --clear \ + --help-button "$@" \ + --msgbox "Hi, this is a simple message box. You can use this to \ + display any message you like. The box will remain until \ + you press the ENTER key." 10 41 + +retval=$? + +. ./report-button Property changes on: vendor/dialog/1.3-20180621/samples/msgbox-help ___________________________________________________________________ Added: svn:executable ## -0,0 +1 ## +* \ No newline at end of property Index: vendor/dialog/1.3-20180621/samples/msgbox1 =================================================================== --- vendor/dialog/1.3-20180621/samples/msgbox1 (nonexistent) +++ vendor/dialog/1.3-20180621/samples/msgbox1 (revision 339483) @@ -0,0 +1,34 @@ +#!/bin/sh +# $Id: msgbox1,v 1.9 2010/01/13 10:26:52 tom Exp $ + +. ./setup-vars + +$DIALOG --title "MESSAGE BOX" --clear "$@" \ + --msgbox "Hi, this is a simple message box. You can use this to + display any message you like. The box will remain until + you press the ENTER key. This box is being displayed + with dialogs default aspect ratio of 9." 0 0 +test $? = $DIALOG_ESC && exit + +$DIALOG --aspect 12 --title "MESSAGE BOX aspect=12" --clear "$@" \ + --msgbox "Hi, this is a simple message box. You can use this to + display any message you like. The box will remain until + you press the ENTER key. This box is being displayed + with an aspect ratio of 12." 0 0 +test $? = $DIALOG_ESC && exit + +$DIALOG --aspect 6 --title "MESSAGE BOX aspect=6" --clear "$@" \ + --msgbox "Hi, this is a simple message box. You can use this to + display any message you like. The box will remain until + you press the ENTER key. This box is being displayed + with an aspect ratio of 6." 0 0 +test $? = $DIALOG_ESC && exit + +$DIALOG --aspect 6 --cr-wrap --title "MESSAGE BOX aspect=6 with --cr-wrap" \ + --clear --msgbox " "$@" \ + Hi, this is a simple + message box. You can + use this to display any + message you like. +The box will remain until you press the ENTER key. This box is being displayed with an aspect ratio of 6, and using --cr-wrap.\n" 0 0 +test $? = $DIALOG_ESC && exit Property changes on: vendor/dialog/1.3-20180621/samples/msgbox1 ___________________________________________________________________ Added: svn:executable ## -0,0 +1 ## +* \ No newline at end of property Index: vendor/dialog/1.3-20180621/samples/msgbox2 =================================================================== --- vendor/dialog/1.3-20180621/samples/msgbox2 (nonexistent) +++ vendor/dialog/1.3-20180621/samples/msgbox2 (revision 339483) @@ -0,0 +1,34 @@ +#!/bin/sh +# $Id: msgbox2,v 1.7 2010/01/13 10:26:52 tom Exp $ + +. ./setup-vars + +$DIALOG --title "MESSAGE BOX" --trim "$@" \ + --msgbox "Hi, this is a simple message box. You can use this to + display any message you like. The box will remain until + you press the ENTER key. This box is being displayed + with dialogs default aspect ratio of 9." 0 0 +test $? = $DIALOG_ESC && exit + +$DIALOG --aspect 12 --title "MESSAGE BOX aspect=12" --trim "$@" \ + --msgbox "Hi, this is a simple message box. You can use this to + display any message you like. The box will remain until + you press the ENTER key. This box is being displayed + with an aspect ratio of 12." 0 0 +test $? = $DIALOG_ESC && exit + +$DIALOG --aspect 6 --title "MESSAGE BOX aspect=6" --trim "$@" \ + --msgbox "Hi, this is a simple message box. You can use this to + display any message you like. The box will remain until + you press the ENTER key. This box is being displayed + with an aspect ratio of 6." 0 0 +test $? = $DIALOG_ESC && exit + +$DIALOG --aspect 6 --cr-wrap --title "MESSAGE BOX aspect=6 with --cr-wrap" \ + --trim --msgbox " "$@" \ + Hi, this is a simple + message box. You can + use this to display any + message you like. +The box will remain until you press the ENTER key. This box is being displayed with an aspect ratio of 6, and using --cr-wrap.\n" 0 0 +test $? = $DIALOG_ESC && exit Property changes on: vendor/dialog/1.3-20180621/samples/msgbox2 ___________________________________________________________________ Added: svn:executable ## -0,0 +1 ## +* \ No newline at end of property Index: vendor/dialog/1.3-20180621/samples/msgbox3 =================================================================== --- vendor/dialog/1.3-20180621/samples/msgbox3 (nonexistent) +++ vendor/dialog/1.3-20180621/samples/msgbox3 (revision 339483) @@ -0,0 +1,22 @@ +#!/bin/sh +# $Id: msgbox3,v 1.7 2010/01/13 10:26:52 tom Exp $ + +. ./setup-vars + +width=35 +while test $width != 61 +do +$DIALOG --title "MESSAGE BOX (width $width)" --clear --no-collapse "$@" \ + --msgbox "\ + H H EEEEE L L OOO + H H E L L O O + HHHHH EEEEE L L O O + H H E L L O O + H H EEEEE LLLLL LLLLL OOO + +Hi, this is a simple message box. You can use this to \ +display any message you like. The box will remain until \ +you press the ENTER key." 15 $width +test $? = $DIALOG_ESC && break +width=`expr $width + 1` +done Property changes on: vendor/dialog/1.3-20180621/samples/msgbox3 ___________________________________________________________________ Added: svn:executable ## -0,0 +1 ## +* \ No newline at end of property Index: vendor/dialog/1.3-20180621/samples/msgbox4-8bit =================================================================== --- vendor/dialog/1.3-20180621/samples/msgbox4-8bit (nonexistent) +++ vendor/dialog/1.3-20180621/samples/msgbox4-8bit (revision 339483) @@ -0,0 +1,31 @@ +#!/bin/sh +# $Id: msgbox4-8bit,v 1.4 2010/01/13 10:20:03 tom Exp $ + +. ./setup-vars + +. ./testdata-8bit + +width=30 +while test $width != 61 +do +$DIALOG --title "MESSAGE BOX (width $width)" --no-collapse --colors "$@" \ + --msgbox "\ +This sample uses characters which are non-printing in POSIX locale. + +\Z1`./rotated-data 0 $SAMPLE` \Z2`./rotated-data 1 $SAMPLE` \Z3`./rotated-data 2 $SAMPLE` \Z4`./rotated-data 3 $SAMPLE`\Zn + +Hi, this is a simple message box. You can use this to \ +display any message you like. The box will remain until \ +you press the ENTER key." 22 $width +retval=$? + +case $retval in + $DIALOG_CANCEL) + echo "Cancel pressed.";exit;; + $DIALOG_ESC) + echo "ESC pressed.";exit;; +esac + +width=`expr $width + 1` + +done Property changes on: vendor/dialog/1.3-20180621/samples/msgbox4-8bit ___________________________________________________________________ Added: svn:executable ## -0,0 +1 ## +* \ No newline at end of property Index: vendor/dialog/1.3-20180621/samples/msgbox4-eucjp =================================================================== --- vendor/dialog/1.3-20180621/samples/msgbox4-eucjp (nonexistent) +++ vendor/dialog/1.3-20180621/samples/msgbox4-eucjp (revision 339483) @@ -0,0 +1,25 @@ +#!/bin/sh +# $Id: msgbox4-eucjp,v 1.5 2010/01/13 10:20:03 tom Exp $ + +. ./setup-vars + +width=35 +while test $width != 61 +do +$DIALOG --title "MESSAGE BOX (width $width)" --clear --no-collapse "$@" \ + --msgbox "\ +This sample is written in EUC-JP. +There are several checking points: +(1) whether the fullwidth characters are displayed well or not, +(2) whether the width of characters are evaluated properly, and +(3) whether the character at line-folding is lost or not. + +¤¢¤¤¤¦¤¨¤ª¤«¤­¤¯¤±¤³¤µ¤·¤¹¤»¤½¤¿¤Á¤Ä¤Æ¤È¤Ê¤Ë¤Ì¤Í¤Î +£±£²£³£´£µ£¶£·£¸£¹£°£±£²£³£´£µ£¶£·£¸£¹£°£±£²£³£´£µ +£Á£Â£Ã£Ä£Å£Æ£Ç£È£É£Ê£Ë£Ì£Í£Î£Ï£Ð£Ñ£Ò£Ó£Ô£Õ£Ö£×£Ø£Ù + +Hi, this is a simple message box. You can use this to \ +display any message you like. The box will remain until \ +you press the ENTER key." 22 $width +width=`expr $width + 1` +done Property changes on: vendor/dialog/1.3-20180621/samples/msgbox4-eucjp ___________________________________________________________________ Added: svn:executable ## -0,0 +1 ## +* \ No newline at end of property Index: vendor/dialog/1.3-20180621/samples/msgbox4-utf8 =================================================================== --- vendor/dialog/1.3-20180621/samples/msgbox4-utf8 (nonexistent) +++ vendor/dialog/1.3-20180621/samples/msgbox4-utf8 (revision 339483) @@ -0,0 +1,37 @@ +#!/bin/sh +# $Id: msgbox4-utf8,v 1.10 2010/01/13 10:20:03 tom Exp $ + +. ./setup-vars + +. ./setup-utf8 + +width=30 +while test $width != 61 +do +$DIALOG --title "MESSAGE BOX (width $width)" --no-collapse "$@" \ + --msgbox "\ +This sample is written in UTF-8. +There are several checking points: +(1) whether the fullwidth characters are displayed well or not, +(2) whether the width of characters are evaluated properly, and +(3) whether the character at line-folding is lost or not. + +ã‚ã„ã†ãˆãŠã‹ããã‘ã“ã•ã—ã™ã›ããŸã¡ã¤ã¦ã¨ãªã«ã¬ã­ã® +123456789ï¼ï¼‘23456789ï¼ï¼‘2345 +ABCDEFGHIJKLMNOPQRSTUVWXY + +Hi, this is a simple message box. You can use this to \ +display any message you like. The box will remain until \ +you press the ENTER key." 22 $width +retval=$? + +case $retval in + $DIALOG_CANCEL) + echo "Cancel pressed.";exit;; + $DIALOG_ESC) + echo "ESC pressed.";exit;; +esac + +width=`expr $width + 1` + +done Property changes on: vendor/dialog/1.3-20180621/samples/msgbox4-utf8 ___________________________________________________________________ Added: svn:executable ## -0,0 +1 ## +* \ No newline at end of property Index: vendor/dialog/1.3-20180621/samples/msgbox5 =================================================================== --- vendor/dialog/1.3-20180621/samples/msgbox5 (nonexistent) +++ vendor/dialog/1.3-20180621/samples/msgbox5 (revision 339483) @@ -0,0 +1,23 @@ +#!/bin/sh +# $Id: msgbox5,v 1.5 2010/01/13 10:26:52 tom Exp $ +# this differs from msgbox3 by making a window small enough to force scrolling. + +. ./setup-vars + +width=35 +while test $width != 61 +do +$DIALOG --title "MESSAGE BOX (width $width)" --clear --no-collapse "$@" \ + --msgbox "\ + H H EEEEE L L OOO + H H E L L O O + HHHHH EEEEE L L O O + H H E L L O O + H H EEEEE LLLLL LLLLL OOO + +Hi, this is a simple message box. You can use this to \ +display any message you like. The box will remain until \ +you press the ENTER key." 10 $width +test $? = $DIALOG_ESC && break +width=`expr $width + 1` +done Property changes on: vendor/dialog/1.3-20180621/samples/msgbox5 ___________________________________________________________________ Added: svn:executable ## -0,0 +1 ## +* \ No newline at end of property Index: vendor/dialog/1.3-20180621/samples/msgbox6 =================================================================== --- vendor/dialog/1.3-20180621/samples/msgbox6 (nonexistent) +++ vendor/dialog/1.3-20180621/samples/msgbox6 (revision 339483) @@ -0,0 +1,17 @@ +#!/bin/sh +# $Id: msgbox6,v 1.5 2010/01/13 10:26:52 tom Exp $ +# this differs from msgbox3 by making a window small enough to force scrolling. + +. ./setup-vars + +width=35 +while test $width != 61 +do +$DIALOG --title "MESSAGE BOX (width $width)" --clear "$@" \ + --msgbox "\ + a b c d e f g h j 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 J I J K L M N O P Q R S T U V W X Y Z +" 10 $width +test $? = $DIALOG_ESC && break +width=`expr $width + 1` +done Property changes on: vendor/dialog/1.3-20180621/samples/msgbox6 ___________________________________________________________________ Added: svn:executable ## -0,0 +1 ## +* \ No newline at end of property Index: vendor/dialog/1.3-20180621/samples/msgbox6a =================================================================== --- vendor/dialog/1.3-20180621/samples/msgbox6a (nonexistent) +++ vendor/dialog/1.3-20180621/samples/msgbox6a (revision 339483) @@ -0,0 +1,17 @@ +#!/bin/sh +# $Id: msgbox6a,v 1.5 2010/01/13 10:26:52 tom Exp $ +# this differs from msgbox3 by making a window small enough to force scrolling. + +. ./setup-vars + +width=35 +while test $width != 61 +do +$DIALOG --title "MESSAGE BOX (width $width)" --clear "$@" \ + --msgbox "\ + .a .b .c .d .e .f .g .h .j .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 .J .I .J .K .L .M .N .O .P .Q .R .S .T .U .V .W .X .Y .Z +" 10 $width +test $? = $DIALOG_ESC && break +width=`expr $width + 1` +done Property changes on: vendor/dialog/1.3-20180621/samples/msgbox6a ___________________________________________________________________ Added: svn:executable ## -0,0 +1 ## +* \ No newline at end of property Index: vendor/dialog/1.3-20180621/samples/password =================================================================== --- vendor/dialog/1.3-20180621/samples/password (nonexistent) +++ vendor/dialog/1.3-20180621/samples/password (revision 339483) @@ -0,0 +1,20 @@ +#!/bin/sh +# $Id: password,v 1.7 2010/01/13 10:20:03 tom Exp $ + +. ./setup-vars + +. ./setup-tempfile + +$DIALOG --title "INPUT BOX" --clear "$@" \ + --passwordbox "Hi, this is an password dialog box. You can use \n +this to ask questions that require the user \n +to input a string as the answer. You can \n +input strings of length longer than the \n +width of the input box, in that case, the \n +input field will be automatically scrolled. \n +You can use BACKSPACE to correct errors. \n\n +Try entering your name below:" 16 51 2> $tempfile + +retval=$? + +. ./report-tempfile Property changes on: vendor/dialog/1.3-20180621/samples/password ___________________________________________________________________ Added: svn:executable ## -0,0 +1 ## +* \ No newline at end of property Index: vendor/dialog/1.3-20180621/samples/password1 =================================================================== --- vendor/dialog/1.3-20180621/samples/password1 (nonexistent) +++ vendor/dialog/1.3-20180621/samples/password1 (revision 339483) @@ -0,0 +1,21 @@ +#!/bin/sh +# $Id: password1,v 1.6 2010/01/13 10:20:03 tom Exp $ + +. ./setup-vars + +. ./setup-tempfile + +$DIALOG --title "INPUT BOX" --clear \ + --insecure "$@" \ + --passwordbox "Hi, this is an password dialog box. You can use \n +this to ask questions that require the user \n +to input a string as the answer. You can \n +input strings of length longer than the \n +width of the input box, in that case, the \n +input field will be automatically scrolled. \n +You can use BACKSPACE to correct errors. \n\n +Try entering your name below:" 16 51 2> $tempfile + +retval=$? + +. ./report-tempfile Property changes on: vendor/dialog/1.3-20180621/samples/password1 ___________________________________________________________________ Added: svn:executable ## -0,0 +1 ## +* \ No newline at end of property Index: vendor/dialog/1.3-20180621/samples/password2 =================================================================== --- vendor/dialog/1.3-20180621/samples/password2 (nonexistent) +++ vendor/dialog/1.3-20180621/samples/password2 (revision 339483) @@ -0,0 +1,21 @@ +#!/bin/sh +# $Id: password2,v 1.6 2010/01/13 10:20:03 tom Exp $ + +. ./setup-vars + +. ./setup-tempfile + +$DIALOG --title "INPUT BOX" --clear \ + --insecure "$@" \ + --passwordbox "Hi, this is an password dialog box. You can use \n +this to ask questions that require the user \n +to input a string as the answer. You can \n +input strings of length longer than the \n +width of the input box, in that case, the \n +input field will be automatically scrolled. \n +You can use BACKSPACE to correct errors. \n\n +Try entering your name below:" 16 51 stupid 2> $tempfile + +retval=$? + +. ./report-tempfile Property changes on: vendor/dialog/1.3-20180621/samples/password2 ___________________________________________________________________ Added: svn:executable ## -0,0 +1 ## +* \ No newline at end of property Index: vendor/dialog/1.3-20180621/samples/passwordform1 =================================================================== --- vendor/dialog/1.3-20180621/samples/passwordform1 (nonexistent) +++ vendor/dialog/1.3-20180621/samples/passwordform1 (revision 339483) @@ -0,0 +1,69 @@ +#! /bin/sh +# $Id: passwordform1,v 1.5 2010/01/13 10:47:35 tom Exp $ + +. ./setup-vars + +backtitle="An Example for the use of --form:" + +ids=`id|sed -e 's/([^)]*)//g'` +uid=`echo "$ids" | sed -e 's/^uid=//' -e 's/ .*//'` +gid=`echo "$ids" | sed -e 's/^.* gid=//' -e 's/ .*//'` + +user="$USER" +home="$HOME" + +returncode=0 +while test $returncode != 1 && test $returncode != 250 +do +exec 3>&1 +value=`$DIALOG --ok-label "Submit" \ + --backtitle "$backtitle" \ + --insecure "$@" \ + --passwordform "Here is a possible piece of a configuration program." \ +20 50 0 \ + "Username:" 1 1 "$user" 1 10 10 0 \ + "UID:" 2 1 "$uid" 2 10 8 0 \ + "GID:" 3 1 "$gid" 3 10 8 0 \ + "HOME:" 4 1 "$home" 4 10 40 0 \ +2>&1 1>&3` +returncode=$? +exec 3>&- + +show=`echo "$value" |sed -e 's/^/ /'` + + case $returncode in + $DIALOG_CANCEL) + "$DIALOG" \ + --clear \ + --backtitle "$backtitle" \ + --yesno "Really quit?" 10 30 + case $? in + $DIALOG_OK) + break + ;; + $DIALOG_CANCEL) + returncode=99 + ;; + esac + ;; + $DIALOG_OK) + "$DIALOG" \ + --clear \ + --backtitle "$backtitle" --no-collapse --cr-wrap \ + --msgbox "Resulting data:\n\ +$show" 10 40 + ;; + $DIALOG_HELP) + echo "Button 2 (Help) pressed." + exit + ;; + $DIALOG_EXTRA) + echo "Button 3 (Extra) pressed." + exit + ;; + *) + echo "Return code was $returncode" + exit + ;; + esac +done Property changes on: vendor/dialog/1.3-20180621/samples/passwordform1 ___________________________________________________________________ Added: svn:executable ## -0,0 +1 ## +* \ No newline at end of property Index: vendor/dialog/1.3-20180621/samples/passwordform1-utf8 =================================================================== --- vendor/dialog/1.3-20180621/samples/passwordform1-utf8 (nonexistent) +++ vendor/dialog/1.3-20180621/samples/passwordform1-utf8 (revision 339483) @@ -0,0 +1,71 @@ +#! /bin/sh +# $Id: passwordform1-utf8,v 1.7 2010/01/13 10:47:35 tom Exp $ + +. ./setup-vars + +. ./setup-utf8 + +backtitle="An Example for the use of --passwordform:" + +ids=`id|sed -e 's/([^)]*)//g'` +uid=`echo "$ids" | sed -e 's/^uid=//' -e 's/ .*//'` +gid=`echo "$ids" | sed -e 's/^.* gid=//' -e 's/ .*//'` + +user="DOG" +home=/usr/home/$user + +returncode=0 +while test $returncode != 1 && test $returncode != 250 +do +exec 3>&1 +value=`$DIALOG --ok-label "Submit" \ + --backtitle "$backtitle" \ + --insecure "$@" \ + --passwordform "Here is a possible piece of a configuration program." \ +20 50 0 \ + "Username:" 1 1 "$user" 1 10 10 0 \ + "UID:" 2 1 "$uid" 2 10 8 0 \ + "GID:" 3 1 "$gid" 3 10 8 0 \ + "HOME:" 4 1 "$home" 4 10 40 0 \ +2>&1 1>&3` +returncode=$? +exec 3>&- + +show=`echo "$value" |sed -e 's/^/ /'` + + case $returncode in + $DIALOG_CANCEL) + "$DIALOG" \ + --clear \ + --backtitle "$backtitle" \ + --yesno "Really quit?" 10 30 + case $? in + $DIALOG_OK) + break + ;; + $DIALOG_CANCEL) + returncode=99 + ;; + esac + ;; + $DIALOG_OK) + "$DIALOG" \ + --clear \ + --backtitle "$backtitle" --no-collapse --cr-wrap \ + --msgbox "Resulting data:\n\ +$show" 10 40 + ;; + $DIALOG_HELP) + echo "Button 2 (Help) pressed." + exit + ;; + $DIALOG_EXTRA) + echo "Button 3 (Extra) pressed." + exit + ;; + *) + echo "Return code was $returncode" + exit + ;; + esac +done Property changes on: vendor/dialog/1.3-20180621/samples/passwordform1-utf8 ___________________________________________________________________ Added: svn:executable ## -0,0 +1 ## +* \ No newline at end of property Index: vendor/dialog/1.3-20180621/samples/pause =================================================================== --- vendor/dialog/1.3-20180621/samples/pause (nonexistent) +++ vendor/dialog/1.3-20180621/samples/pause (revision 339483) @@ -0,0 +1,10 @@ +#!/bin/sh +# $Id: pause,v 1.5 2010/01/14 00:27:23 tom Exp $ + +. ./setup-vars + +$DIALOG --title "PAUSE" "$@" --pause "Hi, this is a pause widget" 20 70 10 + +retval=$? + +. ./report-button Property changes on: vendor/dialog/1.3-20180621/samples/pause ___________________________________________________________________ Added: svn:executable ## -0,0 +1 ## +* \ No newline at end of property Index: vendor/dialog/1.3-20180621/samples/pause-help =================================================================== --- vendor/dialog/1.3-20180621/samples/pause-help (nonexistent) +++ vendor/dialog/1.3-20180621/samples/pause-help (revision 339483) @@ -0,0 +1,12 @@ +#!/bin/sh +# $Id: pause-help,v 1.5 2010/01/13 10:36:00 tom Exp $ + +. ./setup-vars + +$DIALOG --title "PAUSE" \ + --help-button "$@" \ + --pause "Hi, this is a pause widget" 20 70 10 + +retval=$? + +. ./report-button Property changes on: vendor/dialog/1.3-20180621/samples/pause-help ___________________________________________________________________ Added: svn:executable ## -0,0 +1 ## +* \ No newline at end of property Index: vendor/dialog/1.3-20180621/samples/radiolist =================================================================== --- vendor/dialog/1.3-20180621/samples/radiolist (nonexistent) +++ vendor/dialog/1.3-20180621/samples/radiolist (revision 339483) @@ -0,0 +1,28 @@ +#! /bin/sh +# $Id: radiolist,v 1.13 2010/01/13 10:20:03 tom Exp $ + +. ./setup-vars + +. ./setup-tempfile + +$DIALOG --backtitle "No Such Organization" \ + --title "RADIOLIST BOX" --clear "$@" \ + --radiolist "Hi, this is a radiolist box. You can use this to \n\ +present a list of choices which can be turned on or \n\ +off. If there are more items than can fit on the \n\ +screen, the list will be scrolled. You can use the \n\ +UP/DOWN arrow keys, the first letter of the choice as a \n\ +hot key, or the number keys 1-9 to choose an option. \n\ +Press SPACE to toggle an option on/off. \n\n\ + Which of the following are fruits?" 20 61 5 \ + "Apple" "It's an apple." off \ + "Dog" "No, that's not my dog." ON \ + "Orange" "Yeah, that's juicy." off \ + "Chicken" "Normally not a pet." off \ + "Cat" "No, never put a dog and a cat together!" off \ + "Fish" "Cats like fish." off \ + "Lemon" "You know how it tastes." off 2> $tempfile + +retval=$? + +. ./report-tempfile Property changes on: vendor/dialog/1.3-20180621/samples/radiolist ___________________________________________________________________ Added: svn:executable ## -0,0 +1 ## +* \ No newline at end of property Index: vendor/dialog/1.3-20180621/samples/radiolist1 =================================================================== --- vendor/dialog/1.3-20180621/samples/radiolist1 (nonexistent) +++ vendor/dialog/1.3-20180621/samples/radiolist1 (revision 339483) @@ -0,0 +1,33 @@ +#! /bin/sh +# $Id: radiolist1,v 1.1 2010/01/17 23:05:14 tom Exp $ + +. ./setup-vars + +. ./setup-tempfile + +$DIALOG --backtitle "No Such Organization" \ + --title "RADIOLIST BOX" --clear "$@" \ + --radiolist "Hi, this is a radiolist box. You can use this to \n\ +present a list of choices which can be turned on or \n\ +off. If there are more items than can fit on the \n\ +screen, the list will be scrolled. You can use the \n\ +UP/DOWN arrow keys, the first letter of the choice as a \n\ +hot key, or the number keys 1-9 to choose an option. \n\ +Press SPACE to toggle an option on/off. \n\n\ + Which of the following are fruits?" 20 61 5 \ + "Apple" "It's an apple." off \ + "Dog" "No, that's not my dog." ON \ + "Dog2" "No2, that's not my dog." off \ + "Dog3" "No3, that's not my dog." off \ + "Dog4" "No4, that's not my dog." off \ + "Dog5" "No5, that's not my dog." off \ + "Dog6" "No6, that's not my dog." off \ + "Orange" "Yeah, that's juicy." off \ + "Chicken" "Normally not a pet." off \ + "Cat" "No, never put a dog and a cat together!" off \ + "Fish" "Cats like fish." off \ + "Lemon" "You know how it tastes." off 2> $tempfile + +retval=$? + +. ./report-tempfile Property changes on: vendor/dialog/1.3-20180621/samples/radiolist1 ___________________________________________________________________ Added: svn:executable ## -0,0 +1 ## +* \ No newline at end of property Index: vendor/dialog/1.3-20180621/samples/radiolist10 =================================================================== --- vendor/dialog/1.3-20180621/samples/radiolist10 (nonexistent) +++ vendor/dialog/1.3-20180621/samples/radiolist10 (revision 339483) @@ -0,0 +1,30 @@ +#! /bin/sh +# $Id: radiolist10,v 1.6 2010/01/13 10:20:03 tom Exp $ +# zero-width column + +. ./setup-vars + +. ./setup-tempfile + +$DIALOG \ + --backtitle "No such organization" \ + --title "RADIOLIST BOX" "$@" \ + --radiolist "Hi, this is a radiolist box. You can use this to \n\ +present a list of choices which can be turned on or \n\ +off. If there are more items than can fit on the \n\ +screen, the list will be scrolled. You can use the \n\ +UP/DOWN arrow keys, the first letter of the choice as a \n\ +hot key, or the number keys 1-9 to choose an option. \n\ +Press SPACE to toggle an option on/off. \n\n\ + Which of the following are fruits?" 20 61 5 \ + Dialog "" on \ + Readline "" off \ + Gnome "" off \ + Kde "" off \ + Editor "" off \ + Noninteractive "" on \ + 2> $tempfile + +retval=$? + +. ./report-tempfile Property changes on: vendor/dialog/1.3-20180621/samples/radiolist10 ___________________________________________________________________ Added: svn:executable ## -0,0 +1 ## +* \ No newline at end of property Index: vendor/dialog/1.3-20180621/samples/radiolist2 =================================================================== --- vendor/dialog/1.3-20180621/samples/radiolist2 (nonexistent) +++ vendor/dialog/1.3-20180621/samples/radiolist2 (revision 339483) @@ -0,0 +1,30 @@ +#! /bin/sh +# $Id: radiolist2,v 1.8 2010/01/13 10:20:03 tom Exp $ + +. ./setup-vars + +. ./setup-tempfile + +$DIALOG --ok-label Okay \ + --cancel-label 'Give Up' \ + --backtitle "No Such Organization" \ + --title "RADIOLIST BOX" --clear "$@" \ + --radiolist "Hi, this is a radiolist box. You can use this to \n\ +present a list of choices which can be turned on or \n\ +off. If there are more items than can fit on the \n\ +screen, the list will be scrolled. You can use the \n\ +UP/DOWN arrow keys, the first letter of the choice as a \n\ +hot key, or the number keys 1-9 to choose an option. \n\ +Press SPACE to toggle an option on/off. \n\n\ + Which of the following are fruits?" 20 61 5 \ + "Apple" "It's an apple." off \ + "Dog" "No, that's not my dog." ON \ + "Orange" "Yeah, that's juicy." off \ + "Chicken" "Normally not a pet." off \ + "Cat" "No, never put a dog and a cat together!" off \ + "Fish" "Cats like fish." off \ + "Lemon" "You know how it tastes." off 2> $tempfile + +retval=$? + +. ./report-tempfile Property changes on: vendor/dialog/1.3-20180621/samples/radiolist2 ___________________________________________________________________ Added: svn:executable ## -0,0 +1 ## +* \ No newline at end of property Index: vendor/dialog/1.3-20180621/samples/radiolist3 =================================================================== --- vendor/dialog/1.3-20180621/samples/radiolist3 (nonexistent) +++ vendor/dialog/1.3-20180621/samples/radiolist3 (revision 339483) @@ -0,0 +1,30 @@ +#! /bin/sh +# $Id: radiolist3,v 1.9 2010/01/13 10:20:03 tom Exp $ + +. ./setup-vars + +. ./setup-tempfile + +$DIALOG --item-help --ok-label Okay \ + --cancel-label 'Give Up' \ + --backtitle "No Such Organization" \ + --title "RADIOLIST BOX" --clear "$@" \ + --radiolist "Hi, this is a radiolist box. You can use this to \n\ +present a list of choices which can be turned on or \n\ +off. If there are more items than can fit on the \n\ +screen, the list will be scrolled. You can use the \n\ +UP/DOWN arrow keys, the first letter of the choice as a \n\ +hot key, or the number keys 1-9 to choose an option. \n\ +Press SPACE to toggle an option on/off. \n\n\ + Which of the following are fruits?" 20 61 5 \ + "Apple" "It's an apple." off "Hint: this grows in a tree" \ + "Dog" "No, that's not my dog." ON "Hint: this likes trees" \ + "Orange" "Yeah, that's juicy." off "Hint: this is green when picked" \ + "Chicken" "Normally not a pet." off "Hint: not often in trees" \ + "Cat" "No, never put a dog and a cat together!" off "Hint: may be found in trees" \ + "Fish" "Cats like fish." off "Hint: usually not close to cats" \ + "Lemon" "You know how it tastes." off "Hint: like an orange" 2> $tempfile + +retval=$? + +. ./report-tempfile Property changes on: vendor/dialog/1.3-20180621/samples/radiolist3 ___________________________________________________________________ Added: svn:executable ## -0,0 +1 ## +* \ No newline at end of property Index: vendor/dialog/1.3-20180621/samples/radiolist4 =================================================================== --- vendor/dialog/1.3-20180621/samples/radiolist4 (nonexistent) +++ vendor/dialog/1.3-20180621/samples/radiolist4 (revision 339483) @@ -0,0 +1,30 @@ +#! /bin/sh +# $Id: radiolist4,v 1.9 2010/01/13 10:20:03 tom Exp $ + +. ./setup-vars + +. ./setup-tempfile + +$DIALOG --help-button --help-label "Hints" --item-help --ok-label Okay \ + --cancel-label 'Give Up' \ + --backtitle "No Such Organization" \ + --title "RADIOLIST BOX" --clear "$@" \ + --radiolist "Hi, this is a radiolist box. You can use this to \n\ +present a list of choices which can be turned on or \n\ +off. If there are more items than can fit on the \n\ +screen, the list will be scrolled. You can use the \n\ +UP/DOWN arrow keys, the first letter of the choice as a \n\ +hot key, or the number keys 1-9 to choose an option. \n\ +Press SPACE to toggle an option on/off. \n\n\ + Which of the following are fruits?" 20 61 5 \ + "Apple" "It's an apple." off "Hint: this grows in a tree" \ + "Dog" "No, that's not my dog." ON "Hint: this likes trees" \ + "Orange" "Yeah, that's juicy." off "Hint: this is green when picked" \ + "Chicken" "Normally not a pet." off "Hint: not often in trees" \ + "Cat" "No, never put a dog and a cat together!" off "Hint: may be found in trees" \ + "Fish" "Cats like fish." off "Hint: usually not close to cats" \ + "Lemon" "You know how it tastes." off "Hint: like an orange" 2> $tempfile + +retval=$? + +. ./report-tempfile Property changes on: vendor/dialog/1.3-20180621/samples/radiolist4 ___________________________________________________________________ Added: svn:executable ## -0,0 +1 ## +* \ No newline at end of property Index: vendor/dialog/1.3-20180621/samples/rotated-data =================================================================== --- vendor/dialog/1.3-20180621/samples/rotated-data (nonexistent) +++ vendor/dialog/1.3-20180621/samples/rotated-data (revision 339483) @@ -0,0 +1,23 @@ +#!/bin/sh +# $Id: rotated-data,v 1.1 2004/12/19 16:43:47 tom Exp $ +# Rotate the second parameter's data by the given shift count. +if test $# != 0 +then + case $1 in + [1-9]*) + left=$1 + next=`expr $left + 1` + shift 1 + ;; + *) + left=1 + next=2 + ;; + esac + char=`echo "$@" | cut -b -${left}` + data=`echo "$@" | cut -b ${next}-` + + printf "%s%s\n" $data $char +else + echo +fi Property changes on: vendor/dialog/1.3-20180621/samples/rotated-data ___________________________________________________________________ Added: svn:executable ## -0,0 +1 ## +* \ No newline at end of property Index: vendor/dialog/1.3-20180621/samples/tailbox =================================================================== --- vendor/dialog/1.3-20180621/samples/tailbox (nonexistent) +++ vendor/dialog/1.3-20180621/samples/tailbox (revision 339483) @@ -0,0 +1,16 @@ +#!/bin/sh +# $Id: tailbox,v 1.7 2010/01/13 10:36:18 tom Exp $ + +. ./setup-vars + +./killall listing +./listing >listing.out & + +$DIALOG --title "TAIL BOX" "$@" \ + --tailbox listing.out 24 70 + +retval=$? + +. ./report-button + +./killall listing Property changes on: vendor/dialog/1.3-20180621/samples/tailbox ___________________________________________________________________ Added: svn:executable ## -0,0 +1 ## +* \ No newline at end of property Index: vendor/dialog/1.3-20180621/samples/textbox =================================================================== --- vendor/dialog/1.3-20180621/samples/textbox (nonexistent) +++ vendor/dialog/1.3-20180621/samples/textbox (revision 339483) @@ -0,0 +1,44 @@ +#!/bin/sh +# $Id: textbox,v 1.12 2010/01/13 10:36:35 tom Exp $ + +. ./setup-vars + +. ./setup-tempfile + +cat << EOF > $tempfile +Hi, this is a text dialog box. It can be used to display text from a file. +The file should not contain any 'tab' characters, so you should 'expand' +the file first if it contains 'tab' characters. + +It's like a simple text file viewer, with these keys implemented: + +PGDN/SPACE - Move down one page +PGUP/'b' - Move up one page +ENTER/DOWN/'j' - Move down one line +UP/'k' - Move up one line +LEFT/'h' - Scroll left +RIGHT/'l' - Scroll right +'0' - Move to beginning of line +HOME/'g' - Move to beginning of file +END/'G' - Move to end of file +'/' - Forward search +'?' - Backward search +'n' - Repeat last search (forward) +'N' - Repeat last search (backward) + + +The following is a sample text file: + + +EOF + +TEXT=/usr/share/common-licenses/GPL +test -f $TEXT || TEXT=../COPYING + +cat $TEXT | expand >> $tempfile + +$DIALOG --clear --title "TEXT BOX" "$@" --textbox "$tempfile" 22 77 + +retval=$? + +. ./report-button Property changes on: vendor/dialog/1.3-20180621/samples/textbox ___________________________________________________________________ Added: svn:executable ## -0,0 +1 ## +* \ No newline at end of property Index: vendor/dialog/1.3-20180621/samples/textbox.txt =================================================================== --- vendor/dialog/1.3-20180621/samples/textbox.txt (nonexistent) +++ vendor/dialog/1.3-20180621/samples/textbox.txt (revision 339483) @@ -0,0 +1,24 @@ +Hi, this is a text dialog box. It can be used to display text from a file. +The file should not contain any 'tab' characters, so you should 'expand' +the file first if it contains 'tab' characters. + +It's like a simple text file viewer, with these keys implemented: + +PGDN/SPACE - Move down one page +PGUP/'b' - Move up one page +ENTER/DOWN/'j' - Move down one line +UP/'k' - Move up one line +LEFT/'h' - Scroll left +RIGHT/'l' - Scroll right +'0' - Move to beginning of line +HOME/'g' - Move to beginning of file +END/'G' - Move to end of file +'/' - Forward search +'?' - Backward search +'n' - Repeat last search (forward) +'N' - Repeat last search (backward) + + +The following is a sample text file: + + Index: vendor/dialog/1.3-20180621/samples/textbox2 =================================================================== --- vendor/dialog/1.3-20180621/samples/textbox2 (nonexistent) +++ vendor/dialog/1.3-20180621/samples/textbox2 (revision 339483) @@ -0,0 +1,44 @@ +#!/bin/sh +# $Id: textbox2,v 1.8 2010/01/13 10:36:49 tom Exp $ + +. ./setup-vars + +. ./setup-tempfile + +cat << EOF > $tempfile +Hi, this is a text dialog box. It can be used to display text from a file. +The file should not contain any 'tab' characters, so you should 'expand' +the file first if it contains 'tab' characters. + +It's like a simple text file viewer, with these keys implemented: + +PGDN/SPACE - Move down one page +PGUP/'b' - Move up one page +ENTER/DOWN/'j' - Move down one line +UP/'k' - Move up one line +LEFT/'h' - Scroll left +RIGHT/'l' - Scroll right +'0' - Move to beginning of line +HOME/'g' - Move to beginning of file +END/'G' - Move to end of file +'/' - Forward search +'?' - Backward search +'n' - Repeat last search (forward) +'N' - Repeat last search (backward) + + +The following is a sample text file: + + +EOF + +TEXT=/usr/share/common-licenses/GPL +test -f $TEXT || TEXT=../COPYING + +cat $TEXT | expand >> $tempfile + +$DIALOG --clear --title "TEXT BOX" "$@" --textbox "$tempfile" 0 0 + +retval=$? + +. ./report-button Property changes on: vendor/dialog/1.3-20180621/samples/textbox2 ___________________________________________________________________ Added: svn:executable ## -0,0 +1 ## +* \ No newline at end of property Index: vendor/dialog/1.3-20180621/samples/textbox3 =================================================================== --- vendor/dialog/1.3-20180621/samples/textbox3 (nonexistent) +++ vendor/dialog/1.3-20180621/samples/textbox3 (revision 339483) @@ -0,0 +1,20 @@ +#!/bin/sh +# $Id: textbox3,v 1.6 2010/01/13 10:37:01 tom Exp $ + +. ./setup-vars + +. ./setup-tempfile + +TEXT=/usr/share/common-licenses/GPL +test -f $TEXT || TEXT=../COPYING + +cat textbox.txt | expand > $tempfile +cat $TEXT | expand >> $tempfile + +$DIALOG --clear --title "TEXT BOX" \ + --extra-button "$@" \ + --textbox "$tempfile" 22 77 + +retval=$? + +. ./report-button Property changes on: vendor/dialog/1.3-20180621/samples/textbox3 ___________________________________________________________________ Added: svn:executable ## -0,0 +1 ## +* \ No newline at end of property Index: vendor/dialog/1.3-20180621/samples/timebox =================================================================== --- vendor/dialog/1.3-20180621/samples/timebox (nonexistent) +++ vendor/dialog/1.3-20180621/samples/timebox (revision 339483) @@ -0,0 +1,14 @@ +#!/bin/sh +# $Id: timebox,v 1.9 2010/01/13 10:23:10 tom Exp $ + +. ./setup-vars + +DIALOG_ERROR=254 +export DIALOG_ERROR + +exec 3>&1 +RESULT=`$DIALOG --title "TIMEBOX" "$@" --timebox "Please set the time..." 0 0 12 34 56 2>&1 1>&3` +retval=$? +exec 3>&- + +. ./report-string Property changes on: vendor/dialog/1.3-20180621/samples/timebox ___________________________________________________________________ Added: svn:executable ## -0,0 +1 ## +* \ No newline at end of property Index: vendor/dialog/1.3-20180621/samples/timebox-stdout =================================================================== --- vendor/dialog/1.3-20180621/samples/timebox-stdout (nonexistent) +++ vendor/dialog/1.3-20180621/samples/timebox-stdout (revision 339483) @@ -0,0 +1,10 @@ +#!/bin/sh +# $Id: timebox-stdout,v 1.5 2010/01/13 10:37:19 tom Exp $ + +. ./setup-vars + +RESULT=`$DIALOG --stdout --title "TIMEBOX" "$@" --timebox "Please set the time..." 0 0 12 34 56` + +retval=$? + +. ./report-string Property changes on: vendor/dialog/1.3-20180621/samples/timebox-stdout ___________________________________________________________________ Added: svn:executable ## -0,0 +1 ## +* \ No newline at end of property Index: vendor/dialog/1.3-20180621/samples/timebox2 =================================================================== --- vendor/dialog/1.3-20180621/samples/timebox2 (nonexistent) +++ vendor/dialog/1.3-20180621/samples/timebox2 (revision 339483) @@ -0,0 +1,11 @@ +#!/bin/sh +# $Id: timebox2,v 1.7 2010/01/13 10:37:35 tom Exp $ + +. ./setup-vars + +exec 3>&1 +RESULT=`$DIALOG --title "TIMEBOX" "$@" --timebox "Please set the time..." 0 0 2>&1 1>&3` +retval=$? +exec 3>&- + +. ./report-string Property changes on: vendor/dialog/1.3-20180621/samples/timebox2 ___________________________________________________________________ Added: svn:executable ## -0,0 +1 ## +* \ No newline at end of property Index: vendor/dialog/1.3-20180621/samples/timebox2-stdout =================================================================== --- vendor/dialog/1.3-20180621/samples/timebox2-stdout (nonexistent) +++ vendor/dialog/1.3-20180621/samples/timebox2-stdout (revision 339483) @@ -0,0 +1,10 @@ +#!/bin/sh +# $Id: timebox2-stdout,v 1.5 2010/01/13 10:37:55 tom Exp $ + +. ./setup-vars + +RESULT=`$DIALOG --stdout --title "TIMEBOX" "$@" --timebox "Please set the time..." 0 0` + +retval=$? + +. ./report-string Property changes on: vendor/dialog/1.3-20180621/samples/timebox2-stdout ___________________________________________________________________ Added: svn:executable ## -0,0 +1 ## +* \ No newline at end of property Index: vendor/dialog/1.3-20180621/samples/yesno =================================================================== --- vendor/dialog/1.3-20180621/samples/yesno (nonexistent) +++ vendor/dialog/1.3-20180621/samples/yesno (revision 339483) @@ -0,0 +1,21 @@ +#!/bin/sh +# $Id: yesno,v 1.9 2010/01/14 01:11:11 tom Exp $ + +. ./setup-vars + +DIALOG_ERROR=254 +export DIALOG_ERROR + +$DIALOG --title "YES/NO BOX" --clear "$@" \ + --yesno "Hi, this is a yes/no dialog box. You can use this to ask \ + questions that have an answer of either yes or no. \ + BTW, do you notice that long lines will be automatically \ + wrapped around so that they can fit in the box? You can \ + also control line breaking explicitly by inserting \ + 'backslash n' at any place you like, but in this case, \ + auto wrap around will be disabled and you will have to \ + control line breaking yourself." 15 61 + +retval=$? + +. ./report-yesno Property changes on: vendor/dialog/1.3-20180621/samples/yesno ___________________________________________________________________ Added: svn:executable ## -0,0 +1 ## +* \ No newline at end of property Index: vendor/dialog/1.3-20180621/samples/yesno-both =================================================================== --- vendor/dialog/1.3-20180621/samples/yesno-both (nonexistent) +++ vendor/dialog/1.3-20180621/samples/yesno-both (revision 339483) @@ -0,0 +1,24 @@ +#!/bin/sh +# $Id: yesno-both,v 1.5 2010/01/13 10:40:39 tom Exp $ + +. ./setup-vars + +$DIALOG --title "YES/NO/MAYBE BOX" \ + --clear \ + --ok-label "Next" \ + --no-label "Cancel" \ + --extra-label "Previous" --extra-button \ + --help-button "$@" \ + --yesno "Hi, this is a yes/no dialog box with its labels changed. \ + You can use this to ask \ + questions that have an answer of either yes or no (or maybe). \ + BTW, do you notice that long lines will be automatically \ + wrapped around so that they can fit in the box? You can \ + also control line breaking explicitly by inserting \ + 'backslash n' at any place you like, but in this case, \ + auto wrap around will be disabled and you will have to \ + control line breaking yourself." 15 61 + +retval=$? + +. ./report-yesno Property changes on: vendor/dialog/1.3-20180621/samples/yesno-both ___________________________________________________________________ Added: svn:executable ## -0,0 +1 ## +* \ No newline at end of property Index: vendor/dialog/1.3-20180621/samples/yesno-extra =================================================================== --- vendor/dialog/1.3-20180621/samples/yesno-extra (nonexistent) +++ vendor/dialog/1.3-20180621/samples/yesno-extra (revision 339483) @@ -0,0 +1,23 @@ +#!/bin/sh +# $Id: yesno-extra,v 1.5 2010/01/13 10:40:39 tom Exp $ + +. ./setup-vars + +$DIALOG --title "YES/NO/MAYBE BOX" \ + --clear \ + --ok-label "Next" \ + --no-label "Cancel" \ + --extra-label "Previous" --extra-button "$@" \ + --yesno "Hi, this is a yes/no dialog box with its labels changed. \ + You can use this to ask \ + questions that have an answer of either yes or no (or maybe). \ + BTW, do you notice that long lines will be automatically \ + wrapped around so that they can fit in the box? You can \ + also control line breaking explicitly by inserting \ + 'backslash n' at any place you like, but in this case, \ + auto wrap around will be disabled and you will have to \ + control line breaking yourself." 15 61 + +retval=$? + +. ./report-yesno Property changes on: vendor/dialog/1.3-20180621/samples/yesno-extra ___________________________________________________________________ Added: svn:executable ## -0,0 +1 ## +* \ No newline at end of property Index: vendor/dialog/1.3-20180621/samples/yesno-help =================================================================== --- vendor/dialog/1.3-20180621/samples/yesno-help (nonexistent) +++ vendor/dialog/1.3-20180621/samples/yesno-help (revision 339483) @@ -0,0 +1,18 @@ +#!/bin/sh +# $Id: yesno-help,v 1.5 2010/01/13 10:40:39 tom Exp $ + +. ./setup-vars + +$DIALOG --title "YES/NO BOX" --clear --help-button "$@" \ + --yesno "Hi, this is a yes/no dialog box. You can use this to ask \ + questions that have an answer of either yes or no. \ + BTW, do you notice that long lines will be automatically \ + wrapped around so that they can fit in the box? You can \ + also control line breaking explicitly by inserting \ + 'backslash n' at any place you like, but in this case, \ + auto wrap around will be disabled and you will have to \ + control line breaking yourself." 15 61 + +retval=$? + +. ./report-yesno Property changes on: vendor/dialog/1.3-20180621/samples/yesno-help ___________________________________________________________________ Added: svn:executable ## -0,0 +1 ## +* \ No newline at end of property Index: vendor/dialog/1.3-20180621/samples/yesno-utf8 =================================================================== --- vendor/dialog/1.3-20180621/samples/yesno-utf8 (nonexistent) +++ vendor/dialog/1.3-20180621/samples/yesno-utf8 (revision 339483) @@ -0,0 +1,14 @@ +#! /bin/sh +# $Id: yesno-utf8,v 1.7 2010/01/14 01:11:23 tom Exp $ + +. ./setup-vars + +. ./setup-utf8 + +DIALOG_ERROR=254 +export DIALOG_ERROR + +$DIALOG "$@" --yesno "Are you a DOG?" 0 0 +retval=$? + +. ./report-yesno Property changes on: vendor/dialog/1.3-20180621/samples/yesno-utf8 ___________________________________________________________________ Added: svn:executable ## -0,0 +1 ## +* \ No newline at end of property Index: vendor/dialog/1.3-20180621/samples/yesno2 =================================================================== --- vendor/dialog/1.3-20180621/samples/yesno2 (nonexistent) +++ vendor/dialog/1.3-20180621/samples/yesno2 (revision 339483) @@ -0,0 +1,18 @@ +#!/bin/sh +# $Id: yesno2,v 1.7 2010/01/13 10:40:39 tom Exp $ + +. ./setup-vars + +$DIALOG --title "YES/NO BOX" "$@" \ + --yesno "Hi, this is a yes/no dialog box. You can use this to ask \ +questions that have an answer of either yes or no. \ +BTW, do you notice that long lines will be automatically \ +wrapped around so that they can fit in the box? You can \ +also control line breaking explicitly by inserting \ +'backslash n' at any place you like, but in this case, \ +auto wrap around will be disabled and you will have to \ +control line breaking yourself." 0 0 + +retval=$? + +. ./report-yesno Property changes on: vendor/dialog/1.3-20180621/samples/yesno2 ___________________________________________________________________ Added: svn:executable ## -0,0 +1 ## +* \ No newline at end of property Index: vendor/dialog/1.3-20180621/samples/yesno3 =================================================================== --- vendor/dialog/1.3-20180621/samples/yesno3 (nonexistent) +++ vendor/dialog/1.3-20180621/samples/yesno3 (revision 339483) @@ -0,0 +1,18 @@ +#!/bin/sh +# $Id: yesno3,v 1.6 2010/01/13 10:40:39 tom Exp $ + +. ./setup-vars + +$DIALOG --timeout 20 --title "YES/NO BOX" "$@" \ + --yesno "Hi, this is a yes/no dialog box. You can use this to ask \ +questions that have an answer of either yes or no. \ +BTW, do you notice that long lines will be automatically \ +wrapped around so that they can fit in the box? You can \ +also control line breaking explicitly by inserting \ +'backslash n' at any place you like, but in this case, \ +auto wrap around will be disabled and you will have to \ +control line breaking yourself." 0 0 + +retval=$? + +. ./report-yesno Property changes on: vendor/dialog/1.3-20180621/samples/yesno3 ___________________________________________________________________ Added: svn:executable ## -0,0 +1 ## +* \ No newline at end of property Index: vendor/dialog/1.3-20180621/samples/yesno4 =================================================================== --- vendor/dialog/1.3-20180621/samples/yesno4 (nonexistent) +++ vendor/dialog/1.3-20180621/samples/yesno4 (revision 339483) @@ -0,0 +1,18 @@ +#!/bin/sh +# $Id: yesno4,v 1.1 2010/01/14 10:26:40 tom Exp $ + +. ./setup-vars + +$DIALOG --title "YES/NO BOX" "$@" \ + --yesno "Hi, this is a yes/no dialog box. You can use this to ask \ +questions that have an answer of either yes or no. \ +BTW, do you notice that long lines will be automatically \ +wrapped around so that they can fit in the box? You can \ +also control line breaking explicitly by inserting \ +'backslash n' at any place you like, but in this case, \ +auto wrap around will be disabled and you will have to \ +control line breaking yourself." 6 30 + +retval=$? + +. ./report-yesno Property changes on: vendor/dialog/1.3-20180621/samples/yesno4 ___________________________________________________________________ Added: svn:executable ## -0,0 +1 ## +* \ No newline at end of property Index: vendor/dialog/1.3-20180621/tailbox.c =================================================================== --- vendor/dialog/1.3-20180621/tailbox.c (nonexistent) +++ vendor/dialog/1.3-20180621/tailbox.c (revision 339483) @@ -0,0 +1,425 @@ +/* + * $Id: tailbox.c,v 1.72 2018/06/19 22:57:01 tom Exp $ + * + * tailbox.c -- implements the tail box + * + * Copyright 2000-2012,2018 Thomas E. Dickey + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License, version 2.1 + * as published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this program; if not, write to + * Free Software Foundation, Inc. + * 51 Franklin St., Fifth Floor + * Boston, MA 02110, USA. + * + * An earlier version of this program lists as authors + * Pasquale De Marco (demarco_p@abramo.it) + */ + +#include <dialog.h> +#include <dlg_keys.h> +#include <sys/stat.h> + +typedef struct { + DIALOG_CALLBACK obj; + WINDOW *text; + const char **buttons; + int hscroll; + int old_hscroll; + char line[MAX_LEN + 2]; + off_t last_pos; +} MY_OBJ; + +/* + * Return current line of text. + */ +static char * +get_line(MY_OBJ * obj) +{ + FILE *fp = obj->obj.input; + int col = -(obj->hscroll); + int j, tmpint, ch; + + do { + if (((ch = getc(fp)) == EOF) && !feof(fp)) + dlg_exiterr("Error moving file pointer in get_line()."); + else if (!feof(fp) && (ch != '\n')) { + if ((ch == TAB) && (dialog_vars.tab_correct)) { + tmpint = dialog_state.tab_len + - ((col + obj->hscroll) % dialog_state.tab_len); + for (j = 0; j < tmpint; j++) { + if (col >= 0 && col < MAX_LEN) + obj->line[col] = ' '; + ++col; + } + } else { + if (col >= 0) + obj->line[col] = (char) ch; + ++col; + } + if (col >= MAX_LEN) + break; + } + } while (!feof(fp) && (ch != '\n')); + + if (col < 0) + col = 0; + obj->line[col] = '\0'; + + return obj->line; +} + +/* + * Print a new line of text. + */ +static void +print_line(MY_OBJ * obj, WINDOW *win, int row, int width) +{ + int i, y, x; + char *line = get_line(obj); + + (void) wmove(win, row, 0); /* move cursor to correct line */ + (void) waddch(win, ' '); + (void) waddnstr(win, line, MIN((int) strlen(line), width - 2)); + + getyx(win, y, x); + (void) y; + /* Clear 'residue' of previous line */ + for (i = 0; i < width - x; i++) + (void) waddch(win, ' '); +} + +/* + * Go back 'target' lines in text file. BUFSIZ has to be in 'size_t' range. + */ +static void +last_lines(MY_OBJ * obj, int target) +{ + FILE *fp = obj->obj.input; + size_t inx; + int count = 0; + char buf[BUFSIZ + 1]; + size_t size_to_read; + size_t size_as_read; + long offset = 0; + long fpos = 0; + + if (fseek(fp, 0L, SEEK_END) == -1 + || (fpos = ftell(fp)) < 0) + dlg_exiterr("Error moving file pointer in last_lines()."); + + if (fpos != 0) { + ++target; + for (;;) { + if (fpos >= BUFSIZ) { + size_to_read = BUFSIZ; + } else { + size_to_read = (size_t) fpos; + } + fpos = fpos - (long) size_to_read; + if (fseek(fp, fpos, SEEK_SET) == -1) + dlg_exiterr("Error moving file pointer in last_lines()."); + size_as_read = fread(buf, sizeof(char), size_to_read, fp); + if (ferror(fp)) + dlg_exiterr("Error reading file in last_lines()."); + + if (size_as_read == 0) { + fpos = 0; + offset = 0; + break; + } + + offset += (long) size_as_read; + for (inx = size_as_read - 1; inx != 0; --inx) { + if (buf[inx] == '\n') { + if (++count > target) + break; + offset = (long) (inx + 1); + } + } + + if (count > target) { + break; + } else if (fpos == 0) { + offset = 0; + break; + } + } + + if (fseek(fp, fpos + offset, SEEK_SET) == -1) + dlg_exiterr("Error moving file pointer in last_lines()."); + } +} + +/* + * Print a new page of text. + */ +static void +print_page(MY_OBJ * obj, int height, int width) +{ + int i; + + for (i = 0; i < height; i++) { + print_line(obj, obj->text, i, width); + } + (void) wnoutrefresh(obj->text); +} + +static void +print_last_page(MY_OBJ * obj) +{ + int high = getmaxy(obj->obj.win) - (2 * MARGIN + (obj->obj.bg_task ? 1 : 3)); + int wide = getmaxx(obj->text); + + last_lines(obj, high); + print_page(obj, high, wide); +} + +static void +repaint_text(MY_OBJ * obj) +{ + FILE *fp = obj->obj.input; + int cur_y, cur_x; + + getyx(obj->obj.win, cur_y, cur_x); + obj->old_hscroll = obj->hscroll; + + print_last_page(obj); + obj->last_pos = ftell(fp); + + (void) wmove(obj->obj.win, cur_y, cur_x); /* Restore cursor position */ + wrefresh(obj->obj.win); +} + +static bool +handle_input(DIALOG_CALLBACK * cb) +{ + MY_OBJ *obj = (MY_OBJ *) cb; + FILE *fp = obj->obj.input; + struct stat sb; + + if (fstat(fileno(fp), &sb) == 0 + && sb.st_size != obj->last_pos) { + repaint_text(obj); + } + + return TRUE; +} + +static bool +valid_callback(DIALOG_CALLBACK * cb) +{ + bool valid = FALSE; + DIALOG_CALLBACK *p; + for (p = dialog_state.getc_callbacks; p != 0; p = p->next) { + if (p == cb) { + valid = TRUE; + break; + } + } + return valid; +} + +static bool +handle_my_getc(DIALOG_CALLBACK * cb, int ch, int fkey, int *result) +{ + MY_OBJ *obj = (MY_OBJ *) cb; + bool done = FALSE; + + if (!valid_callback(cb)) + return FALSE; + + if (!fkey && dlg_char_to_button(ch, obj->buttons) == 0) { + ch = DLGK_ENTER; + fkey = TRUE; + } + + if (fkey) { + switch (ch) { + case DLGK_ENTER: + *result = DLG_EXIT_OK; + done = TRUE; + break; + case DLGK_BEGIN: /* Beginning of line */ + obj->hscroll = 0; + break; + case DLGK_GRID_LEFT: /* Scroll left */ + if (obj->hscroll > 0) { + obj->hscroll -= 1; + } + break; + case DLGK_GRID_RIGHT: /* Scroll right */ + if (obj->hscroll < MAX_LEN) + obj->hscroll += 1; + break; + default: + beep(); + break; + } + if ((obj->hscroll != obj->old_hscroll)) + repaint_text(obj); + } else { + switch (ch) { + case ERR: + clearerr(cb->input); + ch = getc(cb->input); + (void) ungetc(ch, cb->input); + if (ch != EOF) { + handle_input(cb); + } + break; + case ESC: + done = TRUE; + *result = DLG_EXIT_ESC; + break; + default: + beep(); + break; + } + } + + return !done; +} + +/* + * Display text from a file in a dialog box, like in a "tail -f". + */ +int +dialog_tailbox(const char *title, + const char *filename, + int height, + int width, + int bg_task) +{ + /* *INDENT-OFF* */ + static DLG_KEYS_BINDING binding[] = { + HELPKEY_BINDINGS, + ENTERKEY_BINDINGS, + DLG_KEYS_DATA( DLGK_BEGIN, '0' ), + DLG_KEYS_DATA( DLGK_BEGIN, KEY_BEG ), + DLG_KEYS_DATA( DLGK_GRID_LEFT, 'H' ), + DLG_KEYS_DATA( DLGK_GRID_LEFT, 'h' ), + DLG_KEYS_DATA( DLGK_GRID_LEFT, KEY_LEFT ), + DLG_KEYS_DATA( DLGK_GRID_RIGHT, 'L' ), + DLG_KEYS_DATA( DLGK_GRID_RIGHT, 'l' ), + DLG_KEYS_DATA( DLGK_GRID_RIGHT, KEY_RIGHT ), + END_KEYS_BINDING + }; + /* *INDENT-ON* */ + +#ifdef KEY_RESIZE + int old_height = height; + int old_width = width; +#endif + int fkey; + int x, y, result, thigh; + WINDOW *dialog, *text; + const char **buttons = 0; + MY_OBJ *obj; + FILE *fd; + int min_width = 12; + + DLG_TRACE(("# tailbox args:\n")); + DLG_TRACE2S("title", title); + DLG_TRACE2S("filename", filename); + DLG_TRACE2N("height", height); + DLG_TRACE2N("width", width); + DLG_TRACE2N("bg_task", bg_task); + + /* Open input file for reading */ + if ((fd = fopen(filename, "rb")) == NULL) + dlg_exiterr("Can't open input file in dialog_tailbox()."); + +#ifdef KEY_RESIZE + retry: +#endif + dlg_auto_sizefile(title, filename, &height, &width, 2, min_width); + dlg_print_size(height, width); + dlg_ctl_size(height, width); + + x = dlg_box_x_ordinate(width); + y = dlg_box_y_ordinate(height); + thigh = height - ((2 * MARGIN) + (bg_task ? 0 : 2)); + + dialog = dlg_new_window(height, width, y, x); + + dlg_mouse_setbase(x, y); + + /* Create window for text region, used for scrolling text */ + text = dlg_sub_window(dialog, + thigh, + width - (2 * MARGIN), + y + MARGIN, + x + MARGIN); + + dlg_draw_box2(dialog, 0, 0, height, width, dialog_attr, border_attr, border2_attr); + dlg_draw_bottom_box2(dialog, border_attr, border2_attr, dialog_attr); + dlg_draw_title(dialog, title); + dlg_draw_helpline(dialog, FALSE); + + if (!bg_task) { + buttons = dlg_exit_label(); + dlg_button_layout(buttons, &min_width); + dlg_draw_buttons(dialog, height - (2 * MARGIN), 0, buttons, FALSE, + FALSE, width); + } + + (void) wmove(dialog, thigh, (MARGIN + 1)); + (void) wnoutrefresh(dialog); + + obj = dlg_calloc(MY_OBJ, 1); + assert_ptr(obj, "dialog_tailbox"); + + obj->obj.input = fd; + obj->obj.win = dialog; + obj->obj.handle_getc = handle_my_getc; + obj->obj.handle_input = bg_task ? handle_input : 0; + obj->obj.keep_bg = bg_task && dialog_vars.cant_kill; + obj->obj.bg_task = bg_task; + obj->text = text; + obj->buttons = buttons; + dlg_add_callback(&(obj->obj)); + + dlg_register_window(dialog, "tailbox", binding); + dlg_register_buttons(dialog, "tailbox", buttons); + + /* Print last page of text */ + dlg_attr_clear(text, thigh, getmaxx(text), dialog_attr); + repaint_text(obj); + + dlg_trace_win(dialog); + if (bg_task) { + result = DLG_EXIT_OK; + } else { + int ch; + do { + ch = dlg_getc(dialog, &fkey); +#ifdef KEY_RESIZE + if (fkey && ch == KEY_RESIZE) { + dlg_will_resize(dialog); + /* reset data */ + height = old_height; + width = old_width; + /* repaint */ + dlg_clear(); + dlg_del_window(dialog); + refresh(); + dlg_mouse_free_regions(); + dlg_button_layout(buttons, &min_width); + goto retry; + } +#endif + } + while (handle_my_getc(&(obj->obj), ch, fkey, &result)); + } + dlg_mouse_free_regions(); + return result; +} Index: vendor/dialog/1.3-20180621/textbox.c =================================================================== --- vendor/dialog/1.3-20180621/textbox.c (nonexistent) +++ vendor/dialog/1.3-20180621/textbox.c (revision 339483) @@ -0,0 +1,984 @@ +/* + * $Id: textbox.c,v 1.117 2018/06/19 22:57:01 tom Exp $ + * + * textbox.c -- implements the text box + * + * Copyright 2000-2017,2018 Thomas E. Dickey + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License, version 2.1 + * as published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this program; if not, write to + * Free Software Foundation, Inc. + * 51 Franklin St., Fifth Floor + * Boston, MA 02110, USA. + * + * An earlier version of this program lists as authors: + * Savio Lam (lam836@cs.cuhk.hk) + */ + +#include <dialog.h> +#include <dlg_keys.h> + +#define PAGE_LENGTH (height - 4) +#define PAGE_WIDTH (width - 2) + +typedef struct { + DIALOG_CALLBACK obj; + WINDOW *text; + const char **buttons; + int hscroll; + char line[MAX_LEN + 1]; + int fd; + long file_size; + long fd_bytes_read; + long bytes_read; + long buffer_len; + bool begin_reached; + bool buffer_first; + bool end_reached; + long page_length; /* lines on the page which is shown */ + long in_buf; /* ending index into buf[] for page */ + char *buf; +} MY_OBJ; + +static long +lseek_obj(MY_OBJ * obj, long offset, int mode) +{ + long fpos; + if ((fpos = (long) lseek(obj->fd, (off_t) offset, mode)) == -1) { + switch (mode) { + default: + case SEEK_CUR: + dlg_exiterr("Cannot get file position"); + break; + case SEEK_END: + dlg_exiterr("Cannot seek to end of file"); + break; + case SEEK_SET: + dlg_exiterr("Cannot set file position to %ld", offset); + break; + } + } + return fpos; +} + +static long +ftell_obj(MY_OBJ * obj) +{ + return lseek_obj(obj, 0L, SEEK_CUR); +} + +static void +lseek_set(MY_OBJ * obj, long offset) +{ + long actual = lseek_obj(obj, offset, SEEK_SET); + + if (actual != offset) { + dlg_exiterr("Cannot set file position to %ld (actual %ld)\n", + offset, actual); + } +} + +static void +lseek_end(MY_OBJ * obj, long offset) +{ + long actual = lseek_obj(obj, offset, SEEK_END); + + if (offset == 0L && actual > offset) { + obj->file_size = actual; + } +} + +static void +lseek_cur(MY_OBJ * obj, long offset) +{ + long actual = lseek_obj(obj, offset, SEEK_CUR); + + if (actual != offset) { + DLG_TRACE(("# Lseek returned %ld, expected %ld\n", actual, offset)); + } +} + +static char * +xalloc(size_t size) +{ + char *result = dlg_malloc(char, size); + assert_ptr(result, "xalloc"); + return result; +} + +/* + * read_high() substitutes read() for tab->spaces conversion + * + * buffer_len, fd_bytes_read, bytes_read are modified + * buf is allocated + * + * fd_bytes_read is the effective number of bytes read from file + * bytes_read is the length of buf, that can be different if tab_correct + */ +static void +read_high(MY_OBJ * obj, size_t size_read) +{ + char *buftab, ch; + int i = 0, j, n, tmpint; + long begin_line; + + /* Allocate space for read buffer */ + buftab = xalloc(size_read + 1); + + if ((obj->fd_bytes_read = read(obj->fd, buftab, size_read)) != -1) { + + buftab[obj->fd_bytes_read] = '\0'; /* mark end of valid data */ + + if (dialog_vars.tab_correct) { + + /* calculate bytes_read by buftab and fd_bytes_read */ + obj->bytes_read = begin_line = 0; + for (j = 0; j < obj->fd_bytes_read; j++) + if (buftab[j] == TAB) + obj->bytes_read += dialog_state.tab_len + - ((obj->bytes_read - begin_line) + % dialog_state.tab_len); + else if (buftab[j] == '\n') { + obj->bytes_read++; + begin_line = obj->bytes_read; + } else + obj->bytes_read++; + + if (obj->bytes_read > obj->buffer_len) { + if (obj->buffer_first) + obj->buffer_first = FALSE; /* disp = 0 */ + else { + free(obj->buf); + } + + obj->buffer_len = obj->bytes_read; + + /* Allocate space for read buffer */ + obj->buf = xalloc((size_t) obj->buffer_len + 1); + } + + } else { + if (obj->buffer_first) { + obj->buffer_first = FALSE; + + /* Allocate space for read buffer */ + obj->buf = xalloc(size_read + 1); + } + + obj->bytes_read = obj->fd_bytes_read; + } + + j = 0; + begin_line = 0; + while (j < obj->fd_bytes_read) + if (((ch = buftab[j++]) == TAB) && (dialog_vars.tab_correct != 0)) { + tmpint = (dialog_state.tab_len + - ((int) ((long) i - begin_line) % dialog_state.tab_len)); + for (n = 0; n < tmpint; n++) + obj->buf[i++] = ' '; + } else { + if (ch == '\n') + begin_line = i + 1; + obj->buf[i++] = ch; + } + + obj->buf[i] = '\0'; /* mark end of valid data */ + + } + if (obj->bytes_read == -1) + dlg_exiterr("Error reading file"); + free(buftab); +} + +static long +find_first(MY_OBJ * obj, char *buffer, long length) +{ + long recount = obj->page_length; + long result = 0; + + while (length > 0) { + if (buffer[length] == '\n') { + if (--recount < 0) { + result = length; + break; + } + } + --length; + } + return result; +} + +static long +tabize(MY_OBJ * obj, long val, long *first_pos) +{ + long fpos; + long i, count, begin_line; + char *buftab; + + if (!dialog_vars.tab_correct) + return val; + + fpos = ftell_obj(obj); + + lseek_set(obj, fpos - obj->fd_bytes_read); + + /* Allocate space for read buffer */ + buftab = xalloc((size_t) val + 1); + + if ((read(obj->fd, buftab, (size_t) val)) == -1) + dlg_exiterr("Error reading file in tabize()."); + + begin_line = count = 0; + if (first_pos != 0) + *first_pos = 0; + + for (i = 0; i < val; i++) { + if ((first_pos != 0) && (count >= val)) { + *first_pos = find_first(obj, buftab, i); + break; + } + if (buftab[i] == TAB) + count += dialog_state.tab_len + - ((count - begin_line) % dialog_state.tab_len); + else if (buftab[i] == '\n') { + count++; + begin_line = count; + } else + count++; + } + + lseek_set(obj, fpos); + free(buftab); + return count; +} +/* + * Return current line of text. + * 'page' should point to start of current line before calling, and will be + * updated to point to start of next line. + */ +static char * +get_line(MY_OBJ * obj) +{ + int i = 0; + long fpos; + + obj->end_reached = FALSE; + while (obj->buf[obj->in_buf] != '\n') { + if (obj->buf[obj->in_buf] == '\0') { /* Either end of file or end of buffer reached */ + fpos = ftell_obj(obj); + + if (fpos < obj->file_size) { /* Not end of file yet */ + /* We've reached end of buffer, but not end of file yet, so + * read next part of file into buffer + */ + read_high(obj, BUF_SIZE); + obj->in_buf = 0; + } else { + if (!obj->end_reached) + obj->end_reached = TRUE; + break; + } + } else if (i < MAX_LEN) + obj->line[i++] = obj->buf[obj->in_buf++]; + else { + if (i == MAX_LEN) /* Truncate lines longer than MAX_LEN characters */ + obj->line[i++] = '\0'; + obj->in_buf++; + } + } + if (i <= MAX_LEN) + obj->line[i] = '\0'; + if (!obj->end_reached) + obj->in_buf++; /* move past '\n' */ + + return obj->line; +} + +static bool +match_string(MY_OBJ * obj, char *string) +{ + char *match = get_line(obj); + return strstr(match, string) != 0; +} + +/* + * Go back 'n' lines in text file. Called by dialog_textbox(). + * 'in_buf' will be updated to point to the desired line in 'buf'. + */ +static void +back_lines(MY_OBJ * obj, long n) +{ + int i; + long fpos; + long val_to_tabize; + + obj->begin_reached = FALSE; + /* We have to distinguish between end_reached and !end_reached since at end + * of file, the line is not ended by a '\n'. The code inside 'if' + * basically does a '--in_buf' to move one character backward so as to + * skip '\n' of the previous line */ + if (!obj->end_reached) { + /* Either beginning of buffer or beginning of file reached? */ + + if (obj->in_buf == 0) { + fpos = ftell_obj(obj); + + if (fpos > obj->fd_bytes_read) { /* Not beginning of file yet */ + /* We've reached beginning of buffer, but not beginning of file + * yet, so read previous part of file into buffer. Note that + * we only move backward for BUF_SIZE/2 bytes, but not BUF_SIZE + * bytes to avoid re-reading again in print_page() later + */ + /* Really possible to move backward BUF_SIZE/2 bytes? */ + if (fpos < BUF_SIZE / 2 + obj->fd_bytes_read) { + /* No, move less than */ + lseek_set(obj, 0L); + val_to_tabize = fpos - obj->fd_bytes_read; + } else { /* Move backward BUF_SIZE/2 bytes */ + lseek_cur(obj, -(BUF_SIZE / 2 + obj->fd_bytes_read)); + val_to_tabize = BUF_SIZE / 2; + } + read_high(obj, BUF_SIZE); + + obj->in_buf = tabize(obj, val_to_tabize, (long *) 0); + + } else { /* Beginning of file reached */ + obj->begin_reached = TRUE; + return; + } + } + obj->in_buf--; + if (obj->buf[obj->in_buf] != '\n') + /* Something's wrong... */ + dlg_exiterr("Internal error in back_lines()."); + } + + /* Go back 'n' lines */ + for (i = 0; i < n; i++) { + do { + if (obj->in_buf == 0) { + fpos = ftell_obj(obj); + + if (fpos > obj->fd_bytes_read) { + /* Really possible to move backward BUF_SIZE/2 bytes? */ + if (fpos < BUF_SIZE / 2 + obj->fd_bytes_read) { + /* No, move less than */ + lseek_set(obj, 0L); + val_to_tabize = fpos - obj->fd_bytes_read; + } else { /* Move backward BUF_SIZE/2 bytes */ + lseek_cur(obj, -(BUF_SIZE / 2 + obj->fd_bytes_read)); + val_to_tabize = BUF_SIZE / 2; + } + read_high(obj, BUF_SIZE); + + obj->in_buf = tabize(obj, val_to_tabize, (long *) 0); + + } else { /* Beginning of file reached */ + obj->begin_reached = TRUE; + return; + } + } + } while (obj->buf[--(obj->in_buf)] != '\n'); + } + obj->in_buf++; +} + +/* + * Print a new line of text. + */ +static void +print_line(MY_OBJ * obj, int row, int width) +{ + if (wmove(obj->text, row, 0) != ERR) { + int i, y, x; + char *line = get_line(obj); + const int *cols = dlg_index_columns(line); + const int *indx = dlg_index_wchars(line); + int limit = dlg_count_wchars(line); + int first = 0; + int last = limit; + + if (width > getmaxx(obj->text)) + width = getmaxx(obj->text); + --width; /* for the leading ' ' */ + + for (i = 0; i <= limit && cols[i] < obj->hscroll; ++i) + first = i; + + for (i = first; (i <= limit) && ((cols[i] - cols[first]) < width); ++i) + last = i; + + (void) waddch(obj->text, ' '); + (void) waddnstr(obj->text, line + indx[first], indx[last] - indx[first]); + + getyx(obj->text, y, x); + if (y == row) { /* Clear 'residue' of previous line */ + for (i = 0; i <= width - x; i++) { + (void) waddch(obj->text, ' '); + } + } + } +} + +/* + * Print a new page of text. + */ +static void +print_page(MY_OBJ * obj, int height, int width) +{ + int i, passed_end = 0; + + obj->page_length = 0; + for (i = 0; i < height; i++) { + print_line(obj, i, width); + if (!passed_end) + obj->page_length++; + if (obj->end_reached && !passed_end) + passed_end = 1; + } + (void) wnoutrefresh(obj->text); + dlg_trace_win(obj->text); +} + +/* + * Print current position + */ +static void +print_position(MY_OBJ * obj, WINDOW *win, int height, int width) +{ + long fpos; + long size; + long first = -1; + + fpos = ftell_obj(obj); + if (dialog_vars.tab_correct) + size = tabize(obj, obj->in_buf, &first); + else + first = find_first(obj, obj->buf, size = obj->in_buf); + + dlg_draw_scrollbar(win, + first, + fpos - obj->fd_bytes_read + size, + fpos - obj->fd_bytes_read + size, + obj->file_size, + 0, PAGE_WIDTH, + 0, PAGE_LENGTH + 1, + border_attr, + border_attr); +} + +/* + * Display a dialog box and get the search term from user. + */ +static int +get_search_term(WINDOW *dialog, char *input, int height, int width) +{ + /* *INDENT-OFF* */ + static DLG_KEYS_BINDING binding[] = { + INPUTSTR_BINDINGS, + HELPKEY_BINDINGS, + ENTERKEY_BINDINGS, + END_KEYS_BINDING + }; + /* *INDENT-ON* */ + + int old_x, old_y; + int box_x, box_y; + int box_height, box_width; + int offset = 0; + int key = 0; + int fkey = 0; + bool first = TRUE; + int result = DLG_EXIT_UNKNOWN; + const char *caption = _("Search"); + int len_caption = dlg_count_columns(caption); + const int *indx; + int limit; + WINDOW *widget; + + getbegyx(dialog, old_y, old_x); + + box_height = 1 + (2 * MARGIN); + box_width = len_caption + (2 * (MARGIN + 2)); + box_width = MAX(box_width, 30); + box_width = MIN(box_width, getmaxx(dialog) - 2 * MARGIN); + len_caption = MIN(len_caption, box_width - (2 * (MARGIN + 1))); + + box_x = (width - box_width) / 2; + box_y = (height - box_height) / 2; + widget = dlg_new_modal_window(dialog, + box_height, box_width, + old_y + box_y, old_x + box_x); + keypad(widget, TRUE); + dlg_register_window(widget, "searchbox", binding); + + dlg_draw_box2(widget, 0, 0, box_height, box_width, + searchbox_attr, + searchbox_border_attr, + searchbox_border2_attr); + dlg_attrset(widget, searchbox_title_attr); + (void) wmove(widget, 0, (box_width - len_caption) / 2); + + indx = dlg_index_wchars(caption); + limit = dlg_limit_columns(caption, len_caption, 0); + (void) waddnstr(widget, caption + indx[0], indx[limit] - indx[0]); + + box_width -= 2; + offset = dlg_count_columns(input); + + while (result == DLG_EXIT_UNKNOWN) { + if (!first) { + key = dlg_getc(widget, &fkey); + if (fkey) { + switch (fkey) { +#ifdef KEY_RESIZE + case KEY_RESIZE: + result = DLG_EXIT_CANCEL; + continue; +#endif + case DLGK_ENTER: + result = DLG_EXIT_OK; + continue; + } + } else if (key == ESC) { + result = DLG_EXIT_ESC; + continue; + } else if (key == ERR) { + napms(50); + continue; + } + } + if (dlg_edit_string(input, &offset, key, fkey, first)) { + dlg_show_string(widget, input, offset, searchbox_attr, + 1, 1, box_width, FALSE, first); + first = FALSE; + } + } + dlg_del_window(widget); + return result; +} + +static bool +perform_search(MY_OBJ * obj, int height, int width, int key, char *search_term) +{ + int dir; + long tempinx; + long fpos; + int result; + bool found; + bool temp, temp1; + bool moved = FALSE; + + /* set search direction */ + dir = (key == '/' || key == 'n') ? 1 : 0; + if (dir ? !obj->end_reached : !obj->begin_reached) { + if (key == 'n' || key == 'N') { + if (search_term[0] == '\0') { /* No search term yet */ + (void) beep(); + return FALSE; + } + /* Get search term from user */ + } else if ((result = get_search_term(obj->text, search_term, + PAGE_LENGTH, + PAGE_WIDTH)) != DLG_EXIT_OK + || search_term[0] == '\0') { +#ifdef KEY_RESIZE + if (result == DLG_EXIT_CANCEL) { + ungetch(key); + ungetch(KEY_RESIZE); + /* FALLTHRU */ + } +#endif + /* ESC pressed, or no search term, reprint page to clear box */ + dlg_attrset(obj->text, dialog_attr); + back_lines(obj, obj->page_length); + return TRUE; + } + /* Save variables for restoring in case search term can't be found */ + tempinx = obj->in_buf; + temp = obj->begin_reached; + temp1 = obj->end_reached; + fpos = ftell_obj(obj) - obj->fd_bytes_read; + /* update 'in_buf' to point to next (previous) line before + forward (backward) searching */ + back_lines(obj, (dir + ? obj->page_length - 1 + : obj->page_length + 1)); + if (dir) { /* Forward search */ + while ((found = match_string(obj, search_term)) == FALSE) { + if (obj->end_reached) + break; + } + } else { /* Backward search */ + while ((found = match_string(obj, search_term)) == FALSE) { + if (obj->begin_reached) + break; + back_lines(obj, 2L); + } + } + if (found == FALSE) { /* not found */ + (void) beep(); + /* Restore program state to that before searching */ + lseek_set(obj, fpos); + + read_high(obj, BUF_SIZE); + + obj->in_buf = tempinx; + obj->begin_reached = temp; + obj->end_reached = temp1; + /* move 'in_buf' to point to start of current page to + * re-print current page. Note that 'in_buf' always points + * to start of next page, so this is necessary + */ + back_lines(obj, obj->page_length); + } else { /* Search term found */ + back_lines(obj, 1L); + } + /* Reprint page */ + dlg_attrset(obj->text, dialog_attr); + moved = TRUE; + } else { /* no need to find */ + (void) beep(); + } + return moved; +} + +/* + * Display text from a file in a dialog box. + */ +int +dialog_textbox(const char *title, const char *filename, int height, int width) +{ + /* *INDENT-OFF* */ + static DLG_KEYS_BINDING binding[] = { + HELPKEY_BINDINGS, + ENTERKEY_BINDINGS, + DLG_KEYS_DATA( DLGK_GRID_DOWN, 'J' ), + DLG_KEYS_DATA( DLGK_GRID_DOWN, 'j' ), + DLG_KEYS_DATA( DLGK_GRID_DOWN, KEY_DOWN ), + DLG_KEYS_DATA( DLGK_GRID_LEFT, 'H' ), + DLG_KEYS_DATA( DLGK_GRID_LEFT, 'h' ), + DLG_KEYS_DATA( DLGK_GRID_LEFT, KEY_LEFT ), + DLG_KEYS_DATA( DLGK_GRID_RIGHT, 'L' ), + DLG_KEYS_DATA( DLGK_GRID_RIGHT, 'l' ), + DLG_KEYS_DATA( DLGK_GRID_RIGHT, KEY_RIGHT ), + DLG_KEYS_DATA( DLGK_GRID_UP, 'K' ), + DLG_KEYS_DATA( DLGK_GRID_UP, 'k' ), + DLG_KEYS_DATA( DLGK_GRID_UP, KEY_UP ), + DLG_KEYS_DATA( DLGK_PAGE_FIRST, 'g' ), + DLG_KEYS_DATA( DLGK_PAGE_FIRST, KEY_HOME ), + DLG_KEYS_DATA( DLGK_PAGE_LAST, 'G' ), + DLG_KEYS_DATA( DLGK_PAGE_LAST, KEY_END ), + DLG_KEYS_DATA( DLGK_PAGE_LAST, KEY_LL ), + DLG_KEYS_DATA( DLGK_PAGE_NEXT, CHR_SPACE ), + DLG_KEYS_DATA( DLGK_PAGE_NEXT, KEY_NPAGE ), + DLG_KEYS_DATA( DLGK_PAGE_PREV, 'B' ), + DLG_KEYS_DATA( DLGK_PAGE_PREV, 'b' ), + DLG_KEYS_DATA( DLGK_PAGE_PREV, KEY_PPAGE ), + DLG_KEYS_DATA( DLGK_BEGIN, '0' ), + DLG_KEYS_DATA( DLGK_BEGIN, KEY_BEG ), + DLG_KEYS_DATA( DLGK_FIELD_NEXT, TAB ), + DLG_KEYS_DATA( DLGK_FIELD_PREV, KEY_BTAB ), + END_KEYS_BINDING + }; + /* *INDENT-ON* */ + +#ifdef KEY_RESIZE + int old_height = height; + int old_width = width; +#endif + long fpos; + int x, y, cur_x, cur_y; + int key = 0, fkey; + int next = 0; + int i, code, passed_end; + char search_term[MAX_LEN + 1]; + MY_OBJ obj; + WINDOW *dialog; + bool moved; + int result = DLG_EXIT_UNKNOWN; + int button = dlg_default_button(); + int min_width = 12; + + DLG_TRACE(("# textbox args:\n")); + DLG_TRACE2S("title", title); + DLG_TRACE2S("filename", filename); + DLG_TRACE2N("height", height); + DLG_TRACE2N("width", width); + + search_term[0] = '\0'; /* no search term entered yet */ + + memset(&obj, 0, sizeof(obj)); + + obj.begin_reached = TRUE; + obj.buffer_first = TRUE; + obj.end_reached = FALSE; + obj.buttons = dlg_exit_label(); + + /* Open input file for reading */ + if ((obj.fd = open(filename, O_RDONLY)) == -1) + dlg_exiterr("Can't open input file %s", filename); + + /* Get file size. Actually, 'file_size' is the real file size - 1, + since it's only the last byte offset from the beginning */ + lseek_end(&obj, 0L); + + /* Restore file pointer to beginning of file after getting file size */ + lseek_set(&obj, 0L); + + read_high(&obj, BUF_SIZE); + + dlg_button_layout(obj.buttons, &min_width); + +#ifdef KEY_RESIZE + retry: +#endif + moved = TRUE; + + dlg_auto_sizefile(title, filename, &height, &width, 2, min_width); + dlg_print_size(height, width); + dlg_ctl_size(height, width); + + x = dlg_box_x_ordinate(width); + y = dlg_box_y_ordinate(height); + + dialog = dlg_new_window(height, width, y, x); + dlg_register_window(dialog, "textbox", binding); + dlg_register_buttons(dialog, "textbox", obj.buttons); + + dlg_mouse_setbase(x, y); + + /* Create window for text region, used for scrolling text */ + obj.text = dlg_sub_window(dialog, PAGE_LENGTH, PAGE_WIDTH, y + 1, x + 1); + + /* register the new window, along with its borders */ + dlg_mouse_mkbigregion(0, 0, PAGE_LENGTH + 2, width, KEY_MAX, 1, 1, 1 /* lines */ ); + dlg_draw_box2(dialog, 0, 0, height, width, dialog_attr, border_attr, border2_attr); + dlg_draw_bottom_box2(dialog, border_attr, border2_attr, dialog_attr); + dlg_draw_title(dialog, title); + + dlg_draw_buttons(dialog, PAGE_LENGTH + 2, 0, obj.buttons, button, FALSE, width); + (void) wnoutrefresh(dialog); + getyx(dialog, cur_y, cur_x); /* Save cursor position */ + + dlg_attr_clear(obj.text, PAGE_LENGTH, PAGE_WIDTH, dialog_attr); + + while (result == DLG_EXIT_UNKNOWN) { + + /* + * Update the screen according to whether we shifted up/down by a line + * or not. + */ + if (moved) { + if (next < 0) { + (void) scrollok(obj.text, TRUE); + (void) scroll(obj.text); /* Scroll text region up one line */ + (void) scrollok(obj.text, FALSE); + print_line(&obj, PAGE_LENGTH - 1, PAGE_WIDTH); + (void) wnoutrefresh(obj.text); + } else if (next > 0) { + /* + * We don't call print_page() here but use scrolling to ensure + * faster screen update. However, 'end_reached' and + * 'page_length' should still be updated, and 'in_buf' should + * point to start of next page. This is done by calling + * get_line() in the following 'for' loop. + */ + (void) scrollok(obj.text, TRUE); + (void) wscrl(obj.text, -1); /* Scroll text region down one line */ + (void) scrollok(obj.text, FALSE); + obj.page_length = 0; + passed_end = 0; + for (i = 0; i < PAGE_LENGTH; i++) { + if (!i) { + print_line(&obj, 0, PAGE_WIDTH); /* print first line of page */ + (void) wnoutrefresh(obj.text); + } else + (void) get_line(&obj); /* Called to update 'end_reached' and 'in_buf' */ + if (!passed_end) + obj.page_length++; + if (obj.end_reached && !passed_end) + passed_end = 1; + } + } else { + print_page(&obj, PAGE_LENGTH, PAGE_WIDTH); + } + print_position(&obj, dialog, height, width); + (void) wmove(dialog, cur_y, cur_x); /* Restore cursor position */ + wrefresh(dialog); + } + moved = FALSE; /* assume we'll not move */ + next = 0; /* ...but not scroll by a line */ + + key = dlg_mouse_wgetch(dialog, &fkey); + if (dlg_result_key(key, fkey, &result)) + break; + + if (!fkey && (code = dlg_char_to_button(key, obj.buttons)) >= 0) { + result = dlg_ok_buttoncode(code); + break; + } + + if (fkey) { + switch (key) { + default: + if (is_DLGK_MOUSE(key)) { + result = dlg_exit_buttoncode(key - M_EVENT); + if (result < 0) + result = DLG_EXIT_OK; + } else { + beep(); + } + break; + case DLGK_FIELD_NEXT: + button = dlg_next_button(obj.buttons, button); + if (button < 0) + button = 0; + dlg_draw_buttons(dialog, + height - 2, 0, + obj.buttons, button, + FALSE, width); + break; + case DLGK_FIELD_PREV: + button = dlg_prev_button(obj.buttons, button); + if (button < 0) + button = 0; + dlg_draw_buttons(dialog, + height - 2, 0, + obj.buttons, button, + FALSE, width); + break; + case DLGK_ENTER: + if (dialog_vars.nook) + result = DLG_EXIT_OK; + else + result = dlg_exit_buttoncode(button); + break; + case DLGK_PAGE_FIRST: + if (!obj.begin_reached) { + obj.begin_reached = 1; + /* First page not in buffer? */ + fpos = ftell_obj(&obj); + + if (fpos > obj.fd_bytes_read) { + /* Yes, we have to read it in */ + lseek_set(&obj, 0L); + + read_high(&obj, BUF_SIZE); + } + obj.in_buf = 0; + moved = TRUE; + } + break; + case DLGK_PAGE_LAST: + obj.end_reached = TRUE; + /* Last page not in buffer? */ + fpos = ftell_obj(&obj); + + if (fpos < obj.file_size) { + /* Yes, we have to read it in */ + lseek_end(&obj, -BUF_SIZE); + + read_high(&obj, BUF_SIZE); + } + obj.in_buf = obj.bytes_read; + back_lines(&obj, (long) PAGE_LENGTH); + moved = TRUE; + break; + case DLGK_GRID_UP: /* Previous line */ + if (!obj.begin_reached) { + back_lines(&obj, obj.page_length + 1); + next = 1; + moved = TRUE; + } + break; + case DLGK_PAGE_PREV: /* Previous page */ + case DLGK_MOUSE(KEY_PPAGE): + if (!obj.begin_reached) { + back_lines(&obj, obj.page_length + PAGE_LENGTH); + moved = TRUE; + } + break; + case DLGK_GRID_DOWN: /* Next line */ + if (!obj.end_reached) { + obj.begin_reached = 0; + next = -1; + moved = TRUE; + } + break; + case DLGK_PAGE_NEXT: /* Next page */ + case DLGK_MOUSE(KEY_NPAGE): + if (!obj.end_reached) { + obj.begin_reached = 0; + moved = TRUE; + } + break; + case DLGK_BEGIN: /* Beginning of line */ + if (obj.hscroll > 0) { + obj.hscroll = 0; + /* Reprint current page to scroll horizontally */ + back_lines(&obj, obj.page_length); + moved = TRUE; + } + break; + case DLGK_GRID_LEFT: /* Scroll left */ + if (obj.hscroll > 0) { + obj.hscroll--; + /* Reprint current page to scroll horizontally */ + back_lines(&obj, obj.page_length); + moved = TRUE; + } + break; + case DLGK_GRID_RIGHT: /* Scroll right */ + if (obj.hscroll < MAX_LEN) { + obj.hscroll++; + /* Reprint current page to scroll horizontally */ + back_lines(&obj, obj.page_length); + moved = TRUE; + } + break; +#ifdef KEY_RESIZE + case KEY_RESIZE: + dlg_will_resize(dialog); + /* reset data */ + height = old_height; + width = old_width; + back_lines(&obj, obj.page_length); + /* repaint */ + dlg_clear(); + dlg_del_window(dialog); + dlg_mouse_free_regions(); + goto retry; +#endif + } + } else { + switch (key) { + case '/': /* Forward search */ + case 'n': /* Repeat forward search */ + case '?': /* Backward search */ + case 'N': /* Repeat backward search */ + moved = perform_search(&obj, height, width, key, search_term); + fkey = FALSE; + break; + default: + beep(); + break; + } + } + } + + dlg_del_window(dialog); + free(obj.buf); + (void) close(obj.fd); + dlg_mouse_free_regions(); + return result; +} Index: vendor/dialog/1.3-20180621/timebox.c =================================================================== --- vendor/dialog/1.3-20180621/timebox.c (nonexistent) +++ vendor/dialog/1.3-20180621/timebox.c (revision 339483) @@ -0,0 +1,431 @@ +/* + * $Id: timebox.c,v 1.59 2018/06/19 22:57:01 tom Exp $ + * + * timebox.c -- implements the timebox dialog + * + * Copyright 2001-2016,2018 Thomas E. Dickey + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License, version 2.1 + * as published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this program; if not, write to + * Free Software Foundation, Inc. + * 51 Franklin St., Fifth Floor + * Boston, MA 02110, USA. + */ + +#include <dialog.h> +#include <dlg_keys.h> + +#include <time.h> + +#define ONE_HIGH 1 +#define ONE_WIDE 2 +#define BTN_HIGH 2 + +#define MIN_HIGH (ONE_HIGH + BTN_HIGH + (4 * MARGIN)) +#define MIN_WIDE ((3 * (ONE_WIDE + 2 * MARGIN)) + 2 + (2 * MARGIN)) + +typedef enum { + sHR = -3 + ,sMN = -2 + ,sSC = -1 +} STATES; + +struct _box; + +typedef struct _box { + WINDOW *parent; + WINDOW *window; + int x; + int y; + int width; + int height; + int period; + int value; +} BOX; + +static int +next_or_previous(int key) +{ + int result = 0; + + switch (key) { + case DLGK_ITEM_PREV: + result = -1; + break; + case DLGK_ITEM_NEXT: + result = 1; + break; + default: + beep(); + break; + } + return result; +} +/* + * Draw the hour-of-month selection box + */ +static int +draw_cell(BOX * data) +{ + werase(data->window); + dlg_draw_box(data->parent, + data->y - MARGIN, data->x - MARGIN, + data->height + (2 * MARGIN), data->width + (2 * MARGIN), + menubox_border_attr, menubox_border2_attr); + + dlg_attrset(data->window, item_attr); + wprintw(data->window, "%02d", data->value); + return 0; +} + +static int +init_object(BOX * data, + WINDOW *parent, + int x, int y, + int width, int height, + int period, int value, + int code) +{ + (void) code; + + data->parent = parent; + data->x = x; + data->y = y; + data->width = width; + data->height = height; + data->period = period; + data->value = value % period; + + data->window = derwin(data->parent, + data->height, data->width, + data->y, data->x); + if (data->window == 0) + return -1; + (void) keypad(data->window, TRUE); + + dlg_mouse_setbase(getbegx(parent), getbegy(parent)); + dlg_mouse_mkregion(y, x, height, width, code); + + return 0; +} + +static int +CleanupResult(int code, WINDOW *dialog, char *prompt, DIALOG_VARS * save_vars) +{ + dlg_del_window(dialog); + dlg_mouse_free_regions(); + free(prompt); + dlg_restore_vars(save_vars); + + return code; +} + +#define DrawObject(data) draw_cell(data) + +/* + * Display a dialog box for entering a date + */ +int +dialog_timebox(const char *title, + const char *subtitle, + int height, + int width, + int hour, + int minute, + int second) +{ + /* *INDENT-OFF* */ + static DLG_KEYS_BINDING binding[] = { + DLG_KEYS_DATA( DLGK_DELETE_RIGHT,KEY_DC ), + HELPKEY_BINDINGS, + ENTERKEY_BINDINGS, + TOGGLEKEY_BINDINGS, + DLG_KEYS_DATA( DLGK_FIELD_FIRST,KEY_HOME ), + DLG_KEYS_DATA( DLGK_FIELD_LAST, KEY_END ), + DLG_KEYS_DATA( DLGK_FIELD_LAST, KEY_LL ), + DLG_KEYS_DATA( DLGK_FIELD_NEXT, CHR_NEXT ), + DLG_KEYS_DATA( DLGK_FIELD_NEXT, KEY_RIGHT ), + DLG_KEYS_DATA( DLGK_FIELD_NEXT, TAB ), + DLG_KEYS_DATA( DLGK_FIELD_PREV, CHR_BACKSPACE ), + DLG_KEYS_DATA( DLGK_FIELD_PREV, CHR_PREVIOUS ), + DLG_KEYS_DATA( DLGK_FIELD_PREV, KEY_BTAB ), + DLG_KEYS_DATA( DLGK_FIELD_PREV, KEY_LEFT ), + DLG_KEYS_DATA( DLGK_ITEM_NEXT, '+'), + DLG_KEYS_DATA( DLGK_ITEM_NEXT, KEY_DOWN), + DLG_KEYS_DATA( DLGK_ITEM_NEXT, KEY_NEXT), + DLG_KEYS_DATA( DLGK_ITEM_NEXT, KEY_NPAGE), + DLG_KEYS_DATA( DLGK_ITEM_PREV, '-' ), + DLG_KEYS_DATA( DLGK_ITEM_PREV, KEY_PPAGE ), + DLG_KEYS_DATA( DLGK_ITEM_PREV, KEY_PREVIOUS ), + DLG_KEYS_DATA( DLGK_ITEM_PREV, KEY_UP ), + END_KEYS_BINDING + }; + /* *INDENT-ON* */ + +#ifdef KEY_RESIZE + int old_height = height; + int old_width = width; +#endif + BOX hr_box, mn_box, sc_box; + int key = 0, key2, fkey; + int button; + int result = DLG_EXIT_UNKNOWN; + WINDOW *dialog; + time_t now_time = time((time_t *) 0); + struct tm current; + int state = dlg_default_button(); + const char **buttons = dlg_ok_labels(); + char *prompt; + char buffer[MAX_LEN]; + DIALOG_VARS save_vars; + + DLG_TRACE(("# timebox args:\n")); + DLG_TRACE2S("title", title); + DLG_TRACE2S("message", subtitle); + DLG_TRACE2N("height", height); + DLG_TRACE2N("width", width); + DLG_TRACE2N("hour", hour); + DLG_TRACE2N("minute", minute); + DLG_TRACE2N("second", second); + + now_time = time((time_t *) 0); + current = *localtime(&now_time); + + dlg_save_vars(&save_vars); + dialog_vars.separate_output = TRUE; + + dlg_does_output(); + +#ifdef KEY_RESIZE + retry: +#endif + + prompt = dlg_strclone(subtitle); + dlg_auto_size(title, prompt, &height, &width, 0, 0); + + height += MIN_HIGH; + if (width < MIN_WIDE) + width = MIN_WIDE; + dlg_button_layout(buttons, &width); + dlg_print_size(height, width); + dlg_ctl_size(height, width); + + dialog = dlg_new_window(height, width, + dlg_box_y_ordinate(height), + dlg_box_x_ordinate(width)); + + if (hour >= 24 || minute >= 60 || second >= 60) { + return CleanupResult(DLG_EXIT_ERROR, dialog, prompt, &save_vars); + } + + dlg_register_window(dialog, "timebox", binding); + dlg_register_buttons(dialog, "timebox", buttons); + + dlg_draw_box2(dialog, 0, 0, height, width, dialog_attr, border_attr, border2_attr); + dlg_draw_bottom_box2(dialog, border_attr, border2_attr, dialog_attr); + dlg_draw_title(dialog, title); + dlg_draw_helpline(dialog, FALSE); + + dlg_attrset(dialog, dialog_attr); + dlg_print_autowrap(dialog, prompt, height, width); + + /* compute positions of hour, month and year boxes */ + memset(&hr_box, 0, sizeof(hr_box)); + memset(&mn_box, 0, sizeof(mn_box)); + memset(&sc_box, 0, sizeof(sc_box)); + + if (init_object(&hr_box, + dialog, + (width - MIN_WIDE + 1) / 2 + MARGIN, + (height - MIN_HIGH + MARGIN), + ONE_WIDE, + ONE_HIGH, + 24, + hour >= 0 ? hour : current.tm_hour, + 'H') < 0 + || DrawObject(&hr_box) < 0) { + return CleanupResult(DLG_EXIT_ERROR, dialog, prompt, &save_vars); + } + + mvwprintw(dialog, hr_box.y, hr_box.x + ONE_WIDE + MARGIN, ":"); + if (init_object(&mn_box, + dialog, + hr_box.x + (ONE_WIDE + 2 * MARGIN + 1), + hr_box.y, + hr_box.width, + hr_box.height, + 60, + minute >= 0 ? minute : current.tm_min, + 'M') < 0 + || DrawObject(&mn_box) < 0) { + return CleanupResult(DLG_EXIT_ERROR, dialog, prompt, &save_vars); + } + + mvwprintw(dialog, mn_box.y, mn_box.x + ONE_WIDE + MARGIN, ":"); + if (init_object(&sc_box, + dialog, + mn_box.x + (ONE_WIDE + 2 * MARGIN + 1), + mn_box.y, + mn_box.width, + mn_box.height, + 60, + second >= 0 ? second : current.tm_sec, + 'S') < 0 + || DrawObject(&sc_box) < 0) { + return CleanupResult(DLG_EXIT_ERROR, dialog, prompt, &save_vars); + } + + dlg_trace_win(dialog); + while (result == DLG_EXIT_UNKNOWN) { + BOX *obj = (state == sHR ? &hr_box + : (state == sMN ? &mn_box : + (state == sSC ? &sc_box : 0))); + + button = (state < 0) ? 0 : state; + dlg_draw_buttons(dialog, height - 2, 0, buttons, button, FALSE, width); + if (obj != 0) + dlg_set_focus(dialog, obj->window); + + key = dlg_mouse_wgetch(dialog, &fkey); + if (dlg_result_key(key, fkey, &result)) + break; + + if ((key2 = dlg_char_to_button(key, buttons)) >= 0) { + result = key2; + } else { + /* handle function-keys */ + if (fkey) { + switch (key) { + case DLGK_MOUSE('H'): + state = sHR; + break; + case DLGK_MOUSE('M'): + state = sMN; + break; + case DLGK_MOUSE('S'): + state = sSC; + break; + case DLGK_TOGGLE: + case DLGK_ENTER: + result = dlg_ok_buttoncode(button); + break; + case DLGK_FIELD_PREV: + state = dlg_prev_ok_buttonindex(state, sHR); + break; + case DLGK_FIELD_NEXT: + state = dlg_next_ok_buttonindex(state, sHR); + break; + case DLGK_FIELD_FIRST: + if (obj != 0) { + obj->value = 0; + (void) DrawObject(obj); + } + break; + case DLGK_FIELD_LAST: + if (obj != 0) { + switch (state) { + case sHR: + obj->value = 23; + break; + case sMN: + case sSC: + obj->value = 59; + break; + } + (void) DrawObject(obj); + } + break; + case DLGK_DELETE_RIGHT: + if (obj != 0) { + obj->value /= 10; + (void) DrawObject(obj); + } + break; +#ifdef KEY_RESIZE + case KEY_RESIZE: + dlg_will_resize(dialog); + /* reset data */ + height = old_height; + width = old_width; + hour = hr_box.value; + minute = mn_box.value; + second = sc_box.value; + /* repaint */ + free(prompt); + dlg_clear(); + dlg_del_window(dialog); + dlg_mouse_free_regions(); + goto retry; +#endif + default: + if (is_DLGK_MOUSE(key)) { + result = dlg_ok_buttoncode(key - M_EVENT); + if (result < 0) + result = DLG_EXIT_OK; + } else if (obj != 0) { + int step = next_or_previous(key); + if (step != 0) { + obj->value += step; + while (obj->value < 0) + obj->value += obj->period; + obj->value %= obj->period; + (void) DrawObject(obj); + } + } + break; + } + } else if (isdigit(key)) { + if (obj != 0) { + int digit = (key - '0'); + int value = (obj->value * 10) + digit; + if (value < obj->period) { + obj->value = value; + (void) DrawObject(obj); + } else { + beep(); + } + } + } else { + beep(); + } + } + } + +#define DefaultFormat(dst, src) \ + sprintf(dst, "%02d:%02d:%02d", \ + hr_box.value, mn_box.value, sc_box.value) + +#if defined(HAVE_STRFTIME) + if (dialog_vars.time_format != 0) { + size_t used; + time_t now = time((time_t *) 0); + struct tm *parts = localtime(&now); + + parts->tm_sec = sc_box.value; + parts->tm_min = mn_box.value; + parts->tm_hour = hr_box.value; + used = strftime(buffer, + sizeof(buffer) - 1, + dialog_vars.time_format, + parts); + if (used == 0 || *buffer == '\0') + DefaultFormat(buffer, hr_box); + } else +#endif + DefaultFormat(buffer, hr_box); + + dlg_add_result(buffer); + dlg_add_separator(); + dlg_add_last_key(-1); + + return CleanupResult(result, dialog, prompt, &save_vars); +} Index: vendor/dialog/1.3-20180621/trace.c =================================================================== --- vendor/dialog/1.3-20180621/trace.c (nonexistent) +++ vendor/dialog/1.3-20180621/trace.c (revision 339483) @@ -0,0 +1,268 @@ +/* + * $Id: trace.c,v 1.26 2018/06/13 00:06:48 tom Exp $ + * + * trace.c -- implements screen-dump and keystroke-logging + * + * Copyright 2007-2017,2018 Thomas E. Dickey + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License, version 2.1 + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this program; if not, write to + * Free Software Foundation, Inc. + * 51 Franklin St., Fifth Floor + * Boston, MA 02110, USA. + */ + +#include <dialog.h> + +#ifdef HAVE_DLG_TRACE + +#ifdef NEED_WCHAR_H +#include <wchar.h> +#endif + +#include <dlg_keys.h> +#include <time.h> + +#define myFP dialog_state.trace_output + +static void +dlg_trace_time(const char *tag) +{ + time_t now = time((time_t *) 0); + fprintf(myFP, "%s %s", tag, ctime(&now)); +} + +void +dlg_trace_msg(const char *fmt,...) +{ + if (myFP != 0) { + va_list ap; + va_start(ap, fmt); + vfprintf(myFP, fmt, ap); + va_end(ap); + fflush(myFP); + } +} + +void +dlg_trace_2s(const char *name, const char *value) +{ + bool first = TRUE; + const char *next; + int left, right = 0; + + if (value == 0) + value = "<NULL>"; + + while (value[right] != '\0') { + value += right; + if ((next = strchr(value, '\n')) != 0) { + left = (int) (next - value); + right = left + 1; + } else { + left = (int) strlen(value); + right = left; + } + if (first) { + first = FALSE; + dlg_trace_msg("#%14s=%.*s\n", name, left, value); + } else { + dlg_trace_msg("#+\t\t%.*s\n", left, value); + } + } +} + +void +dlg_trace_2n(const char *name, int value) +{ + dlg_trace_msg("#\t%7s=%d\n", name, value); +} + +void +dlg_trace_win(WINDOW *win) +{ + if (myFP != 0) { + int y, x; + int j, k; + WINDOW *top = wgetparent(win); + + while (top != 0 && top != stdscr) { + win = top; + top = wgetparent(win); + } + + if (win != 0) { + int rc = getmaxy(win); + int cc = getmaxx(win); + chtype ch, c2; + + fprintf(myFP, "window %dx%d at %d,%d\n", + rc, cc, getbegy(win), getbegx(win)); + + getyx(win, y, x); + for (j = 0; j < rc; ++j) { + fprintf(myFP, "%3d:", j); + for (k = 0; k < cc; ++k) { +#ifdef USE_WIDE_CURSES + char buffer[80]; + + ch = mvwinch(win, j, k) & (A_CHARTEXT | A_ALTCHARSET); + if (ch & A_ALTCHARSET) { + c2 = dlg_asciibox(ch); + if (c2 != 0) { + ch = c2; + } + buffer[0] = (char) ch; + buffer[1] = '\0'; + } else { + cchar_t cch; + wchar_t *uc; + + if (win_wch(win, &cch) == ERR + || (uc = wunctrl((&cch))) == 0 + || uc[1] != 0 + || wcwidth(uc[0]) <= 0) { + buffer[0] = '.'; + buffer[1] = '\0'; + } else { + mbstate_t state; + const wchar_t *ucp = uc; + + memset(&state, 0, sizeof(state)); + wcsrtombs(buffer, &ucp, sizeof(buffer), &state); + k += wcwidth(uc[0]) - 1; + } + } + fputs(buffer, myFP); +#else + ch = mvwinch(win, j, k) & (A_CHARTEXT | A_ALTCHARSET); + c2 = dlg_asciibox(ch); + if (c2 != 0) { + ch = c2; + } else if (unctrl(ch) == 0 || strlen(unctrl(ch)) > 1) { + ch = '.'; + } + fputc((int) (ch & 0xff), myFP); +#endif + } + fputc('\n', myFP); + } + wmove(win, y, x); + fflush(myFP); + } + } +} + +void +dlg_trace_chr(int ch, int fkey) +{ + static int last_err = 0; + + /* + * Do not bother to trace ERR's indefinitely, since those are usually due + * to relatively short polling timeouts. + */ + if (last_err && !fkey && ch == ERR) { + ++last_err; + } else if (myFP != 0) { + const char *fkey_name = "?"; + + if (last_err) { + fprintf(myFP, "skipped %d ERR's\n", last_err); + last_err = 0; + } + + if (fkey) { + if (fkey > KEY_MAX || (fkey_name = keyname(fkey)) == 0) { +#define CASE(name) case name: fkey_name = #name; break + switch ((DLG_KEYS_ENUM) fkey) { + CASE(DLGK_MIN); + CASE(DLGK_OK); + CASE(DLGK_CANCEL); + CASE(DLGK_EXTRA); + CASE(DLGK_HELP); + CASE(DLGK_ESC); + CASE(DLGK_PAGE_FIRST); + CASE(DLGK_PAGE_LAST); + CASE(DLGK_PAGE_NEXT); + CASE(DLGK_PAGE_PREV); + CASE(DLGK_ITEM_FIRST); + CASE(DLGK_ITEM_LAST); + CASE(DLGK_ITEM_NEXT); + CASE(DLGK_ITEM_PREV); + CASE(DLGK_FIELD_FIRST); + CASE(DLGK_FIELD_LAST); + CASE(DLGK_FIELD_NEXT); + CASE(DLGK_FIELD_PREV); + CASE(DLGK_FORM_FIRST); + CASE(DLGK_FORM_LAST); + CASE(DLGK_FORM_NEXT); + CASE(DLGK_FORM_PREV); + CASE(DLGK_GRID_UP); + CASE(DLGK_GRID_DOWN); + CASE(DLGK_GRID_LEFT); + CASE(DLGK_GRID_RIGHT); + CASE(DLGK_DELETE_LEFT); + CASE(DLGK_DELETE_RIGHT); + CASE(DLGK_DELETE_ALL); + CASE(DLGK_ENTER); + CASE(DLGK_BEGIN); + CASE(DLGK_FINAL); + CASE(DLGK_SELECT); + CASE(DLGK_HELPFILE); + CASE(DLGK_TRACE); + CASE(DLGK_TOGGLE); + } + } + } else if (ch == ERR) { + fkey_name = "ERR"; + last_err = 1; + } else { + fkey_name = unctrl((chtype) ch); + if (fkey_name == 0) + fkey_name = "UNKNOWN"; + } + if (ch >= 0) { + fprintf(myFP, "chr %s (ch=%#x, fkey=%d)\n", fkey_name, ch, fkey); + } else { + fprintf(myFP, "chr %s (ch=%d, fkey=%d)\n", fkey_name, ch, fkey); + } + fflush(myFP); + } +} + +void +dlg_trace(const char *fname) +{ + if (fname != 0) { + if (myFP == 0) { + myFP = fopen(fname, "a"); + if (myFP != 0) { + dlg_trace_time("## opened at"); + DLG_TRACE(("## dialog %s\n", dialog_version())); + DLG_TRACE(("## vile: confmode\n")); + } + } + } else if (myFP != 0) { + dlg_trace_time("## closed at"); + fclose(myFP); + myFP = 0; + } +} +#else +#undef dlg_trace +extern void dlg_trace(const char *); +void +dlg_trace(const char *fname) +{ + (void) fname; +} +#endif Index: vendor/dialog/1.3-20180621/treeview.c =================================================================== --- vendor/dialog/1.3-20180621/treeview.c (nonexistent) +++ vendor/dialog/1.3-20180621/treeview.c (revision 339483) @@ -0,0 +1,672 @@ +/* + * $Id: treeview.c,v 1.32 2018/06/19 22:57:01 tom Exp $ + * + * treeview.c -- implements the treeview dialog + * + * Copyright 2012-2016,2018 Thomas E. Dickey + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License, version 2.1 + * as published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this program; if not, write to + * Free Software Foundation, Inc. + * 51 Franklin St., Fifth Floor + * Boston, MA 02110, USA. + */ + +#include <dialog.h> +#include <dlg_keys.h> + +#define INDENT 3 +#define MIN_HIGH (1 + (5 * MARGIN)) + +typedef struct { + /* the outer-window */ + WINDOW *dialog; + bool is_check; + int box_y; + int box_x; + int check_x; + int item_x; + int use_height; + int use_width; + /* the inner-window */ + WINDOW *list; + DIALOG_LISTITEM *items; + int item_no; + int *depths; + const char *states; +} ALL_DATA; + +/* + * Print list item. The 'selected' parameter is true if 'choice' is the + * current item. That one is colored differently from the other items. + */ +static void +print_item(ALL_DATA * data, + DIALOG_LISTITEM * item, + const char *states, + int depths, + int choice, + int selected) +{ + WINDOW *win = data->list; + chtype save = dlg_get_attrs(win); + int i; + bool first = TRUE; + int climit = (getmaxx(win) - data->check_x + 1); + const char *show = (dialog_vars.no_items + ? item->name + : item->text); + + /* Clear 'residue' of last item */ + dlg_attrset(win, menubox_attr); + (void) wmove(win, choice, 0); + for (i = 0; i < data->use_width; i++) + (void) waddch(win, ' '); + + (void) wmove(win, choice, data->check_x); + dlg_attrset(win, selected ? check_selected_attr : check_attr); + (void) wprintw(win, + data->is_check ? "[%c]" : "(%c)", + states[item->state]); + dlg_attrset(win, menubox_attr); + + dlg_attrset(win, selected ? item_selected_attr : item_attr); + for (i = 0; i < depths; ++i) { + int j; + (void) wmove(win, choice, data->item_x + INDENT * i); + (void) waddch(win, ACS_VLINE); + for (j = INDENT - 1; j > 0; --j) + (void) waddch(win, ' '); + } + (void) wmove(win, choice, data->item_x + INDENT * depths); + + dlg_print_listitem(win, show, climit, first, selected); + + if (selected) { + dlg_item_help(item->help); + } + dlg_attrset(win, save); +} + +static void +print_list(ALL_DATA * data, + int choice, + int scrollamt, + int max_choice) +{ + int i; + int cur_y, cur_x; + + getyx(data->dialog, cur_y, cur_x); + + for (i = 0; i < max_choice; i++) { + print_item(data, + &data->items[scrollamt + i], + data->states, + data->depths[scrollamt + i], + i, i == choice); + } + (void) wnoutrefresh(data->list); + + dlg_draw_scrollbar(data->dialog, + (long) (scrollamt), + (long) (scrollamt), + (long) (scrollamt + max_choice), + (long) (data->item_no), + data->box_x + data->check_x, + data->box_x + data->use_width, + data->box_y, + data->box_y + data->use_height + 1, + menubox_border2_attr, + menubox_border_attr); + + (void) wmove(data->dialog, cur_y, cur_x); +} + +static bool +check_hotkey(DIALOG_LISTITEM * items, int choice) +{ + bool result = FALSE; + + if (dlg_match_char(dlg_last_getc(), + (dialog_vars.no_tags + ? items[choice].text + : items[choice].name))) { + result = TRUE; + } + return result; +} + +/* + * This is an alternate interface to 'treeview' which allows the application + * to read the list item states back directly without putting them in the + * output buffer. + */ +int +dlg_treeview(const char *title, + const char *cprompt, + int height, + int width, + int list_height, + int item_no, + DIALOG_LISTITEM * items, + const char *states, + int *depths, + int flag, + int *current_item) +{ + /* *INDENT-OFF* */ + static DLG_KEYS_BINDING binding[] = { + HELPKEY_BINDINGS, + ENTERKEY_BINDINGS, + DLG_KEYS_DATA( DLGK_FIELD_NEXT, KEY_RIGHT ), + DLG_KEYS_DATA( DLGK_FIELD_NEXT, TAB ), + DLG_KEYS_DATA( DLGK_FIELD_PREV, KEY_BTAB ), + DLG_KEYS_DATA( DLGK_FIELD_PREV, KEY_LEFT ), + DLG_KEYS_DATA( DLGK_ITEM_FIRST, KEY_HOME ), + DLG_KEYS_DATA( DLGK_ITEM_LAST, KEY_END ), + DLG_KEYS_DATA( DLGK_ITEM_LAST, KEY_LL ), + DLG_KEYS_DATA( DLGK_ITEM_NEXT, '+' ), + DLG_KEYS_DATA( DLGK_ITEM_NEXT, KEY_DOWN ), + DLG_KEYS_DATA( DLGK_ITEM_NEXT, CHR_NEXT ), + DLG_KEYS_DATA( DLGK_ITEM_PREV, '-' ), + DLG_KEYS_DATA( DLGK_ITEM_PREV, KEY_UP ), + DLG_KEYS_DATA( DLGK_ITEM_PREV, CHR_PREVIOUS ), + DLG_KEYS_DATA( DLGK_PAGE_NEXT, KEY_NPAGE ), + DLG_KEYS_DATA( DLGK_PAGE_NEXT, DLGK_MOUSE(KEY_NPAGE) ), + DLG_KEYS_DATA( DLGK_PAGE_PREV, KEY_PPAGE ), + DLG_KEYS_DATA( DLGK_PAGE_PREV, DLGK_MOUSE(KEY_PPAGE) ), + TOGGLEKEY_BINDINGS, + END_KEYS_BINDING + }; + /* *INDENT-ON* */ + +#ifdef KEY_RESIZE + int old_height = height; + int old_width = width; +#endif + ALL_DATA all; + int i, j, key2, found, x, y, cur_y, box_x, box_y; + int key = 0, fkey; + int button = dialog_state.visit_items ? -1 : dlg_default_button(); + int choice = dlg_default_listitem(items); + int scrollamt = 0; + int max_choice; + int was_mouse; + int use_height; + int use_width, name_width, text_width, tree_width; + int result = DLG_EXIT_UNKNOWN; + int num_states; + WINDOW *dialog, *list; + char *prompt = dlg_strclone(cprompt); + const char **buttons = dlg_ok_labels(); + const char *widget_name; + + /* we need at least two states */ + if (states == 0 || strlen(states) < 2) + states = " *"; + num_states = (int) strlen(states); + + dialog_state.plain_buttons = TRUE; + + memset(&all, 0, sizeof(all)); + all.items = items; + all.item_no = item_no; + all.states = states; + all.depths = depths; + + dlg_does_output(); + dlg_tab_correct_str(prompt); + + /* + * If this is a radiobutton list, ensure that no more than one item is + * selected initially. Allow none to be selected, since some users may + * wish to provide this flavor. + */ + if (flag == FLAG_RADIO) { + bool first = TRUE; + + for (i = 0; i < item_no; i++) { + if (items[i].state) { + if (first) { + first = FALSE; + } else { + items[i].state = 0; + } + } + } + } else { + all.is_check = TRUE; + } + widget_name = "treeview"; +#ifdef KEY_RESIZE + retry: +#endif + + use_height = list_height; + use_width = dlg_calc_list_width(item_no, items) + 10; + use_width = MAX(26, use_width); + if (use_height == 0) { + /* calculate height without items (4) */ + dlg_auto_size(title, prompt, &height, &width, MIN_HIGH, use_width); + dlg_calc_listh(&height, &use_height, item_no); + } else { + dlg_auto_size(title, prompt, &height, &width, MIN_HIGH + use_height, use_width); + } + dlg_button_layout(buttons, &width); + dlg_print_size(height, width); + dlg_ctl_size(height, width); + + x = dlg_box_x_ordinate(width); + y = dlg_box_y_ordinate(height); + + dialog = dlg_new_window(height, width, y, x); + dlg_register_window(dialog, widget_name, binding); + dlg_register_buttons(dialog, widget_name, buttons); + + dlg_mouse_setbase(x, y); + + dlg_draw_box2(dialog, 0, 0, height, width, dialog_attr, border_attr, border2_attr); + dlg_draw_bottom_box2(dialog, border_attr, border2_attr, dialog_attr); + dlg_draw_title(dialog, title); + + dlg_attrset(dialog, dialog_attr); + dlg_print_autowrap(dialog, prompt, height, width); + + all.use_width = width - 4; + cur_y = getcury(dialog); + box_y = cur_y + 1; + box_x = (width - all.use_width) / 2 - 1; + + /* + * After displaying the prompt, we know how much space we really have. + * Limit the list to avoid overwriting the ok-button. + */ + if (use_height + MIN_HIGH > height - cur_y) + use_height = height - MIN_HIGH - cur_y; + if (use_height <= 0) + use_height = 1; + + max_choice = MIN(use_height, item_no); + + /* create new window for the list */ + list = dlg_sub_window(dialog, use_height, all.use_width, + y + box_y + 1, x + box_x + 1); + + /* draw a box around the list items */ + dlg_draw_box(dialog, box_y, box_x, + use_height + 2 * MARGIN, + all.use_width + 2 * MARGIN, + menubox_border_attr, menubox_border2_attr); + + text_width = 0; + name_width = 0; + tree_width = 0; + /* Find length of longest item to center treeview */ + for (i = 0; i < item_no; i++) { + tree_width = MAX(tree_width, INDENT * depths[i]); + text_width = MAX(text_width, dlg_count_columns(items[i].text)); + name_width = MAX(name_width, dlg_count_columns(items[i].name)); + } + if (dialog_vars.no_tags && !dialog_vars.no_items) { + tree_width += text_width; + } else if (dialog_vars.no_items) { + tree_width += name_width; + } else { + tree_width += (text_width + name_width); + } + + use_width = (all.use_width - 4); + tree_width = MIN(tree_width, all.use_width); + + all.check_x = (use_width - tree_width) / 2; + all.item_x = ((dialog_vars.no_tags + ? 0 + : (dialog_vars.no_items + ? 0 + : (2 + name_width))) + + all.check_x + 4); + + /* ensure we are scrolled to show the current choice */ + if (choice >= (max_choice + scrollamt)) { + scrollamt = choice - max_choice + 1; + choice = max_choice - 1; + } + + /* register the new window, along with its borders */ + dlg_mouse_mkbigregion(box_y + 1, box_x, + use_height, all.use_width + 2, + KEY_MAX, 1, 1, 1 /* by lines */ ); + + all.dialog = dialog; + all.box_x = box_x; + all.box_y = box_y; + all.use_height = use_height; + all.list = list; + print_list(&all, choice, scrollamt, max_choice); + + dlg_draw_buttons(dialog, height - 2, 0, buttons, button, FALSE, width); + + dlg_trace_win(dialog); + while (result == DLG_EXIT_UNKNOWN) { + if (button < 0) /* --visit-items */ + wmove(dialog, box_y + choice + 1, box_x + all.check_x + 2); + + key = dlg_mouse_wgetch(dialog, &fkey); + if (dlg_result_key(key, fkey, &result)) + break; + + was_mouse = (fkey && is_DLGK_MOUSE(key)); + if (was_mouse) + key -= M_EVENT; + + if (was_mouse && (key >= KEY_MAX)) { + i = (key - KEY_MAX); + if (i < max_choice) { + choice = (key - KEY_MAX); + print_list(&all, choice, scrollamt, max_choice); + + key = DLGK_TOGGLE; /* force the selected item to toggle */ + } else { + beep(); + continue; + } + fkey = FALSE; + } else if (was_mouse && key >= KEY_MIN) { + key = dlg_lookup_key(dialog, key, &fkey); + } + + /* + * A space toggles the item status. + */ + if (key == DLGK_TOGGLE) { + int current = scrollamt + choice; + int next = items[current].state + 1; + + if (next >= num_states) + next = 0; + + if (flag == FLAG_CHECK) { /* checklist? */ + items[current].state = next; + } else { + for (i = 0; i < item_no; i++) { + if (i != current) { + items[i].state = 0; + } + } + if (items[current].state) { + items[current].state = next ? next : 1; + } else { + items[current].state = 1; + } + } + print_list(&all, choice, scrollamt, max_choice); + continue; /* wait for another key press */ + } + + /* + * Check if key pressed matches first character of any item tag in + * list. If there is more than one match, we will cycle through + * each one as the same key is pressed repeatedly. + */ + found = FALSE; + if (!fkey) { + if (button < 0 || !dialog_state.visit_items) { + for (j = scrollamt + choice + 1; j < item_no; j++) { + if (check_hotkey(items, j)) { + found = TRUE; + i = j - scrollamt; + break; + } + } + if (!found) { + for (j = 0; j <= scrollamt + choice; j++) { + if (check_hotkey(items, j)) { + found = TRUE; + i = j - scrollamt; + break; + } + } + } + if (found) + dlg_flush_getc(); + } else if ((j = dlg_char_to_button(key, buttons)) >= 0) { + button = j; + ungetch('\n'); + continue; + } + } + + /* + * A single digit (1-9) positions the selection to that line in the + * current screen. + */ + if (!found + && (key <= '9') + && (key > '0') + && (key - '1' < max_choice)) { + found = TRUE; + i = key - '1'; + } + + if (!found) { + if (fkey) { + found = TRUE; + switch (key) { + case DLGK_ITEM_FIRST: + i = -scrollamt; + break; + case DLGK_ITEM_LAST: + i = item_no - 1 - scrollamt; + break; + case DLGK_PAGE_PREV: + if (choice) + i = 0; + else if (scrollamt != 0) + i = -MIN(scrollamt, max_choice); + else + continue; + break; + case DLGK_PAGE_NEXT: + i = MIN(choice + max_choice, item_no - scrollamt - 1); + break; + case DLGK_ITEM_PREV: + i = choice - 1; + if (choice == 0 && scrollamt == 0) + continue; + break; + case DLGK_ITEM_NEXT: + i = choice + 1; + if (scrollamt + choice >= item_no - 1) + continue; + break; + default: + found = FALSE; + break; + } + } + } + + if (found) { + if (i != choice) { + if (i < 0 || i >= max_choice) { + if (i < 0) { + scrollamt += i; + choice = 0; + } else { + choice = max_choice - 1; + scrollamt += (i - max_choice + 1); + } + print_list(&all, choice, scrollamt, max_choice); + } else { + choice = i; + print_list(&all, choice, scrollamt, max_choice); + } + } + continue; /* wait for another key press */ + } + + if (fkey) { + switch (key) { + case DLGK_ENTER: + result = dlg_enter_buttoncode(button); + break; + case DLGK_FIELD_PREV: + button = dlg_prev_button(buttons, button); + dlg_draw_buttons(dialog, height - 2, 0, buttons, button, + FALSE, width); + break; + case DLGK_FIELD_NEXT: + button = dlg_next_button(buttons, button); + dlg_draw_buttons(dialog, height - 2, 0, buttons, button, + FALSE, width); + break; +#ifdef KEY_RESIZE + case KEY_RESIZE: + dlg_will_resize(dialog); + /* reset data */ + height = old_height; + width = old_width; + /* repaint */ + dlg_clear(); + dlg_del_window(dialog); + refresh(); + dlg_mouse_free_regions(); + goto retry; +#endif + default: + if (was_mouse) { + if ((key2 = dlg_ok_buttoncode(key)) >= 0) { + result = key2; + break; + } + beep(); + } + } + } else { + beep(); + } + } + + dlg_del_window(dialog); + dlg_mouse_free_regions(); + free(prompt); + *current_item = (scrollamt + choice); + return result; +} + +/* + * Display a set of items as a tree. + */ +int +dialog_treeview(const char *title, + const char *cprompt, + int height, + int width, + int list_height, + int item_no, + char **items, + int flag) +{ + int result; + int i, j; + DIALOG_LISTITEM *listitems; + int *depths; + bool show_status = FALSE; + int current = 0; + char *help_result; + + DLG_TRACE(("# treeview args:\n")); + DLG_TRACE2S("title", title); + DLG_TRACE2S("message", cprompt); + DLG_TRACE2N("height", height); + DLG_TRACE2N("width", width); + DLG_TRACE2N("lheight", list_height); + DLG_TRACE2N("llength", item_no); + /* FIXME dump the items[][] too */ + DLG_TRACE2N("flag", flag); + + listitems = dlg_calloc(DIALOG_LISTITEM, (size_t) item_no + 1); + assert_ptr(listitems, "dialog_treeview"); + + depths = dlg_calloc(int, (size_t) item_no + 1); + assert_ptr(depths, "dialog_treeview"); + + for (i = j = 0; i < item_no; ++i) { + listitems[i].name = items[j++]; + listitems[i].text = (dialog_vars.no_items + ? dlg_strempty() + : items[j++]); + listitems[i].state = !dlg_strcmp(items[j++], "on"); + depths[i] = atoi(items[j++]); + listitems[i].help = ((dialog_vars.item_help) + ? items[j++] + : dlg_strempty()); + } + dlg_align_columns(&listitems[0].text, (int) sizeof(DIALOG_LISTITEM), item_no); + + result = dlg_treeview(title, + cprompt, + height, + width, + list_height, + item_no, + listitems, + NULL, + depths, + flag, + ¤t); + + switch (result) { + case DLG_EXIT_OK: /* FALLTHRU */ + case DLG_EXIT_EXTRA: + show_status = TRUE; + break; + case DLG_EXIT_HELP: + dlg_add_help_listitem(&result, &help_result, &listitems[current]); + if ((show_status = dialog_vars.help_status)) { + if (dialog_vars.separate_output) { + dlg_add_string(help_result); + dlg_add_separator(); + } else { + dlg_add_quoted(help_result); + } + } else { + dlg_add_string(help_result); + } + break; + } + + if (show_status) { + for (i = 0; i < item_no; i++) { + if (listitems[i].state) { + if (dialog_vars.separate_output) { + dlg_add_string(listitems[i].name); + dlg_add_separator(); + } else { + if (dlg_need_separator()) + dlg_add_separator(); + if (flag == FLAG_CHECK) + dlg_add_quoted(listitems[i].name); + else + dlg_add_string(listitems[i].name); + } + } + } + dlg_add_last_key(-1); + } + + dlg_free_columns(&listitems[0].text, (int) sizeof(DIALOG_LISTITEM), item_no); + free(depths); + free(listitems); + return result; +} Property changes on: vendor/dialog/1.3-20180621/treeview.c ___________________________________________________________________ Added: fbsd:nokeywords ## -0,0 +1 ## +yes \ No newline at end of property Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Index: vendor/dialog/1.3-20180621/ttysize.c =================================================================== --- vendor/dialog/1.3-20180621/ttysize.c (nonexistent) +++ vendor/dialog/1.3-20180621/ttysize.c (revision 339483) @@ -0,0 +1,87 @@ +/* + * $Id: ttysize.c,v 1.1 2018/06/09 02:03:03 tom Exp $ + * + * ttysize.c -- obtain terminal-size for dialog + * + * Copyright 2018 Thomas E. Dickey + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License, version 2.1 + * as published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this program; if not, write to + * Free Software Foundation, Inc. + * 51 Franklin St., Fifth Floor + * Boston, MA 02110, USA. + * + * An earlier version of this program lists as authors + * Savio Lam (lam836@cs.cuhk.hk) + */ + +#include <dialog.h> + +/* + * This is based on work I did for ncurses in 1997, and improved/extended for + * other terminal-based programs. The comments are from my original version -TD + */ + +#ifdef HAVE_TERMIOS_H +#include <termios.h> +#endif + +#ifdef HAVE_SYS_IOCTL_H +# include <sys/ioctl.h> +#endif + +#ifdef NEED_PTEM_H + /* On SCO, they neglected to define struct winsize in termios.h -- it's only + * in termio.h and ptem.h (the former conflicts with other definitions). + */ +# include <sys/stream.h> +# include <sys/ptem.h> +#endif + +/* + * SCO defines TIOCGSIZE and the corresponding struct. Other systems (SunOS, + * Solaris, IRIX) define TIOCGWINSZ and struct winsize. + */ +#if defined(TIOCGSIZE) +# define IOCTL_WINSIZE TIOCGSIZE +# define STRUCT_WINSIZE struct ttysize +# define WINSIZE_ROWS(n) (int)n.ts_lines +# define WINSIZE_COLS(n) (int)n.ts_cols +#elif defined(TIOCGWINSZ) +# define IOCTL_WINSIZE TIOCGWINSZ +# define STRUCT_WINSIZE struct winsize +# define WINSIZE_ROWS(n) (int)n.ws_row +# define WINSIZE_COLS(n) (int)n.ws_col +#else +# undef HAVE_SIZECHANGE +#endif + +int +dlg_ttysize(int fd, int *high, int *wide) +{ + int rc = -1; +#ifdef HAVE_SIZECHANGE + if (isatty(fd)) { + STRUCT_WINSIZE size; + + if (ioctl(fd, IOCTL_WINSIZE, &size) >= 0) { + *high = WINSIZE_ROWS(size); + *wide = WINSIZE_COLS(size); + rc = 0; + } + } +#else + high = 24; + wide = 80; +#endif /* HAVE_SIZECHANGE */ + return rc; +} Property changes on: vendor/dialog/1.3-20180621/ttysize.c ___________________________________________________________________ Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:keywords ## -0,0 +1 ## +FreeBSD=%H \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/plain \ No newline at end of property Index: vendor/dialog/1.3-20180621/ui_getc.c =================================================================== --- vendor/dialog/1.3-20180621/ui_getc.c (nonexistent) +++ vendor/dialog/1.3-20180621/ui_getc.c (revision 339483) @@ -0,0 +1,668 @@ +/* + * $Id: ui_getc.c,v 1.70 2018/06/14 00:05:05 tom Exp $ + * + * ui_getc.c - user interface glue for getc() + * + * Copyright 2001-2013,2018 Thomas E. Dickey + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License, version 2.1 + * as published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this program; if not, write to + * Free Software Foundation, Inc. + * 51 Franklin St., Fifth Floor + * Boston, MA 02110, USA. + */ + +#include <dialog.h> +#include <dlg_keys.h> + +#ifdef NEED_WCHAR_H +#include <wchar.h> +#endif + +#if TIME_WITH_SYS_TIME +# include <sys/time.h> +# include <time.h> +#else +# if HAVE_SYS_TIME_H +# include <sys/time.h> +# else +# include <time.h> +# endif +#endif + +#ifdef HAVE_SYS_WAIT_H +#include <sys/wait.h> +#endif + +#ifdef __QNX__ +#include <sys/select.h> +#endif + +#ifndef WEXITSTATUS +# ifdef HAVE_TYPE_UNIONWAIT +# define WEXITSTATUS(status) (status.w_retcode) +# else +# define WEXITSTATUS(status) (((status) & 0xff00) >> 8) +# endif +#endif + +#ifndef WTERMSIG +# ifdef HAVE_TYPE_UNIONWAIT +# define WTERMSIG(status) (status.w_termsig) +# else +# define WTERMSIG(status) ((status) & 0x7f) +# endif +#endif + +void +dlg_add_callback(DIALOG_CALLBACK * p) +{ + p->next = dialog_state.getc_callbacks; + dialog_state.getc_callbacks = p; + wtimeout(p->win, WTIMEOUT_VAL); +} + +/* + * Like dlg_add_callback(), but providing for cleanup of caller's associated + * state. + */ +void +dlg_add_callback_ref(DIALOG_CALLBACK ** p, DIALOG_FREEBACK freeback) +{ + (*p)->caller = p; + (*p)->freeback = freeback; + dlg_add_callback(*p); +} + +void +dlg_remove_callback(DIALOG_CALLBACK * p) +{ + DIALOG_CALLBACK *q; + + if (p->input != 0) { + FILE *input = p->input; + fclose(input); + if (p->input == dialog_state.pipe_input) + dialog_state.pipe_input = 0; + /* more than one callback can have the same input */ + for (q = dialog_state.getc_callbacks; q != 0; q = q->next) { + if (q->input == input) { + q->input = 0; + } + } + } + + if (!(p->keep_win)) + dlg_del_window(p->win); + if ((q = dialog_state.getc_callbacks) == p) { + dialog_state.getc_callbacks = p->next; + } else { + while (q != 0) { + if (q->next == p) { + q->next = p->next; + break; + } + q = q->next; + } + } + + /* handle dlg_add_callback_ref cleanup */ + if (p->freeback != 0) + p->freeback(p); + if (p->caller != 0) + *(p->caller) = 0; + + free(p); +} + +/* + * A select() might find more than one input ready for service. Handle them + * all. + */ +static bool +handle_inputs(WINDOW *win) +{ + bool result = FALSE; + DIALOG_CALLBACK *p; + DIALOG_CALLBACK *q; + int cur_y, cur_x; + int state = ERR; + + getyx(win, cur_y, cur_x); + for (p = dialog_state.getc_callbacks, q = 0; p != 0; p = q) { + q = p->next; + if ((p->handle_input != 0) && p->input_ready) { + p->input_ready = FALSE; + if (state == ERR) { + state = curs_set(0); + } + if (p->handle_input(p)) { + result = TRUE; + } + } + } + if (result) { + (void) wmove(win, cur_y, cur_x); /* Restore cursor position */ + wrefresh(win); + } + if (state != ERR) + curs_set(state); + return result; +} + +static bool +may_handle_inputs(void) +{ + bool result = FALSE; + + DIALOG_CALLBACK *p; + + for (p = dialog_state.getc_callbacks; p != 0; p = p->next) { + if (p->input != 0) { + result = TRUE; + break; + } + } + + return result; +} + +/* + * Check any any inputs registered via callbacks, to see if there is any input + * available. If there is, return a file-descriptor which should be read. + * Otherwise, return -1. + */ +static int +check_inputs(void) +{ + DIALOG_CALLBACK *p; + fd_set read_fds; + struct timeval test; + int last_fd = -1; + int fd; + int found; + int result = -1; + + if ((p = dialog_state.getc_callbacks) != 0) { + FD_ZERO(&read_fds); + + while (p != 0) { + p->input_ready = FALSE; + if (p->input != 0 && (fd = fileno(p->input)) >= 0) { + FD_SET(fd, &read_fds); + if (last_fd < fd) + last_fd = fd; + } + p = p->next; + } + + test.tv_sec = 0; + test.tv_usec = WTIMEOUT_VAL * 1000; + found = select(last_fd + 1, &read_fds, + (fd_set *) 0, + (fd_set *) 0, + &test); + + if (found > 0) { + for (p = dialog_state.getc_callbacks; p != 0; p = p->next) { + if (p->input != 0 + && (fd = fileno(p->input)) >= 0 + && FD_ISSET(fd, &read_fds)) { + p->input_ready = TRUE; + result = fd; + } + } + } + } + + return result; +} + +int +dlg_getc_callbacks(int ch, int fkey, int *result) +{ + int code = FALSE; + DIALOG_CALLBACK *p, *q; + + if ((p = dialog_state.getc_callbacks) != 0) { + if (check_inputs() >= 0) { + do { + q = p->next; + if (p->input_ready) { + if (!(p->handle_getc(p, ch, fkey, result))) { + dlg_remove_callback(p); + } + } + } while ((p = q) != 0); + } + code = (dialog_state.getc_callbacks != 0); + } + return code; +} + +static void +dlg_raise_window(WINDOW *win) +{ + touchwin(win); + wmove(win, getcury(win), getcurx(win)); + wnoutrefresh(win); + doupdate(); +} + +/* + * This is a work-around for the case where we actually need the wide-character + * code versus a byte stream. + */ +static int last_getc = ERR; + +#ifdef USE_WIDE_CURSES +static char last_getc_bytes[80]; +static int have_last_getc; +static int used_last_getc; +#endif + +int +dlg_last_getc(void) +{ +#ifdef USE_WIDE_CURSES + if (used_last_getc != 1) + return ERR; /* not really an error... */ +#endif + return last_getc; +} + +void +dlg_flush_getc(void) +{ + last_getc = ERR; +#ifdef USE_WIDE_CURSES + have_last_getc = 0; + used_last_getc = 0; +#endif +} + +/* + * Report the last key entered by the user. The 'mode' parameter controls + * the way it is separated from other results: + * -2 (no separator) + * -1 (separator after the key name) + * 0 (separator is optionally before the key name) + * 1 (same as -1) + */ +void +dlg_add_last_key(int mode) +{ + if (dialog_vars.last_key) { + if (mode >= 0) { + if (mode > 0) { + dlg_add_last_key(-1); + } else { + if (dlg_need_separator()) + dlg_add_separator(); + dlg_add_last_key(-2); + } + } else { + char temp[80]; + sprintf(temp, "%d", last_getc); + dlg_add_string(temp); + if (mode == -1) + dlg_add_separator(); + } + } +} + +/* + * Check if the stream has been unexpectedly closed, returning false in that + * case. + */ +static bool +valid_file(FILE *fp) +{ + bool code = FALSE; + int fd = fileno(fp); + + if (fd >= 0) { + if (fcntl(fd, F_GETFL, 0) >= 0) { + code = TRUE; + } + } + return code; +} + +static int +really_getch(WINDOW *win, int *fkey) +{ + int ch; +#ifdef USE_WIDE_CURSES + int code; + mbstate_t state; + wchar_t my_wchar; + wint_t my_wint; + + /* + * We get a wide character, translate it to multibyte form to avoid + * having to change the rest of the code to use wide-characters. + */ + if (used_last_getc >= have_last_getc) { + used_last_getc = 0; + have_last_getc = 0; + ch = ERR; + *fkey = 0; + code = wget_wch(win, &my_wint); + my_wchar = (wchar_t) my_wint; + switch (code) { + case KEY_CODE_YES: + ch = *fkey = my_wchar; + last_getc = my_wchar; + break; + case OK: + memset(&state, 0, sizeof(state)); + have_last_getc = (int) wcrtomb(last_getc_bytes, my_wchar, &state); + if (have_last_getc < 0) { + have_last_getc = used_last_getc = 0; + last_getc_bytes[0] = (char) my_wchar; + } + ch = (int) CharOf(last_getc_bytes[used_last_getc++]); + last_getc = my_wchar; + break; + case ERR: + ch = ERR; + last_getc = ERR; + break; + default: + break; + } + } else { + ch = (int) CharOf(last_getc_bytes[used_last_getc++]); + } +#else + ch = wgetch(win); + last_getc = ch; + *fkey = (ch > KEY_MIN && ch < KEY_MAX); +#endif + return ch; +} + +static DIALOG_CALLBACK * +next_callback(DIALOG_CALLBACK * p) +{ + if ((p = dialog_state.getc_redirect) != 0) { + p = p->next; + } else { + p = dialog_state.getc_callbacks; + } + return p; +} + +static DIALOG_CALLBACK * +prev_callback(DIALOG_CALLBACK * p) +{ + DIALOG_CALLBACK *q; + + if ((p = dialog_state.getc_redirect) != 0) { + if (p == dialog_state.getc_callbacks) { + for (p = dialog_state.getc_callbacks; p->next != 0; p = p->next) ; + } else { + for (q = dialog_state.getc_callbacks; q->next != p; q = q->next) ; + p = q; + } + } else { + p = dialog_state.getc_callbacks; + } + return p; +} + +#define isBeforeChr(chr) ((chr) == before_chr && !before_fkey) +#define isBeforeFkey(chr) ((chr) == before_chr && before_fkey) + +/* + * Read a character from the given window. Handle repainting here (to simplify + * things in the calling application). Also, if input-callback(s) are set up, + * poll the corresponding files and handle the updates, e.g., for displaying a + * tailbox. + */ +int +dlg_getc(WINDOW *win, int *fkey) +{ + WINDOW *save_win = win; + int ch = ERR; + int before_chr; + int before_fkey; + int result; + bool done = FALSE; + bool literal = FALSE; + DIALOG_CALLBACK *p = 0; + int interval = (dialog_vars.timeout_secs * 1000); + time_t expired = time((time_t *) 0) + dialog_vars.timeout_secs; + time_t current; + + if (may_handle_inputs()) + wtimeout(win, WTIMEOUT_VAL); + else if (interval > 0) + wtimeout(win, interval); + + while (!done) { + bool handle_others = FALSE; + + /* + * If there was no pending file-input, check the keyboard. + */ + ch = really_getch(win, fkey); + if (literal) { + done = TRUE; + continue; + } + + before_chr = ch; + before_fkey = *fkey; + + ch = dlg_lookup_key(win, ch, fkey); + dlg_trace_chr(ch, *fkey); + + current = time((time_t *) 0); + + /* + * If we acquired a fkey value, then it is one of dialog's builtin + * codes such as DLGK_HELPFILE. + */ + if (!*fkey || *fkey != before_fkey) { + switch (ch) { + case CHR_LITERAL: + literal = TRUE; + keypad(win, FALSE); + continue; + case CHR_REPAINT: + (void) touchwin(win); + (void) wrefresh(curscr); + break; + case ERR: /* wtimeout() in effect; check for file I/O */ + if (interval > 0 + && current >= expired) { + DLG_TRACE(("# dlg_getc: timeout expired\n")); + ch = ESC; + done = TRUE; + } else if (!valid_file(stdin) + || !valid_file(dialog_state.screen_output)) { + DLG_TRACE(("# dlg_getc: input or output is invalid\n")); + ch = ESC; + done = TRUE; + } else if (check_inputs()) { + if (handle_inputs(win)) + dlg_raise_window(win); + else + done = TRUE; + } else { + done = (interval <= 0); + } + break; + case DLGK_HELPFILE: + if (dialog_vars.help_file) { + int yold, xold; + getyx(win, yold, xold); + dialog_helpfile("HELP", dialog_vars.help_file, 0, 0); + dlg_raise_window(win); + wmove(win, yold, xold); + } + continue; + case DLGK_FIELD_PREV: + /* FALLTHRU */ + case KEY_BTAB: + /* FALLTHRU */ + case DLGK_FIELD_NEXT: + /* FALLTHRU */ + case TAB: + /* Handle tab/backtab as a special case for traversing between + * the nominal "current" window, and other windows having + * callbacks. If the nominal (control) window closes, we'll + * close the windows with callbacks. + */ + if (dialog_state.getc_callbacks != 0 && + (isBeforeChr(TAB) || + isBeforeFkey(KEY_BTAB))) { + p = (isBeforeChr(TAB) + ? next_callback(p) + : prev_callback(p)); + if ((dialog_state.getc_redirect = p) != 0) { + win = p->win; + } else { + win = save_win; + } + dlg_raise_window(win); + break; + } + /* FALLTHRU */ + default: +#ifdef NO_LEAKS + if (isBeforeChr(DLG_CTRL('P'))) { + /* for testing, ^P closes the connection */ + close(0); + close(1); + close(2); + break; + } +#endif + handle_others = TRUE; + break; +#ifdef HAVE_DLG_TRACE + case CHR_TRACE: + dlg_trace_win(win); + break; +#endif + } + } else { + handle_others = TRUE; + } + + if (handle_others) { + if ((p = dialog_state.getc_redirect) != 0) { + if (!(p->handle_getc(p, ch, *fkey, &result))) { + done = (p->win == save_win) && (!p->keep_win); + dlg_remove_callback(p); + dialog_state.getc_redirect = 0; + win = save_win; + } + } else { + done = TRUE; + } + } + } + if (literal) + keypad(win, TRUE); + return ch; +} + +static void +finish_bg(int sig GCC_UNUSED) +{ + end_dialog(); + dlg_exit(DLG_EXIT_ERROR); +} + +/* + * If we have callbacks active, purge the list of all that are not marked + * to keep in the background. If any remain, run those in a background + * process. + */ +void +dlg_killall_bg(int *retval) +{ + DIALOG_CALLBACK *cb; + int pid; +#ifdef HAVE_TYPE_UNIONWAIT + union wait wstatus; +#else + int wstatus; +#endif + + if ((cb = dialog_state.getc_callbacks) != 0) { + while (cb != 0) { + if (cb->keep_bg) { + cb = cb->next; + } else { + dlg_remove_callback(cb); + cb = dialog_state.getc_callbacks; + } + } + if (dialog_state.getc_callbacks != 0) { + + refresh(); + fflush(stdout); + fflush(stderr); + reset_shell_mode(); + if ((pid = fork()) != 0) { + _exit(pid > 0 ? DLG_EXIT_OK : DLG_EXIT_ERROR); + } else if (pid == 0) { /* child */ + if ((pid = fork()) != 0) { + /* + * Echo the process-id of the grandchild so a shell script + * can read that, and kill that process. We'll wait around + * until then. Our parent has already left, leaving us + * temporarily orphaned. + */ + if (pid > 0) { /* parent */ + fprintf(stderr, "%d\n", pid); + fflush(stderr); + } + /* wait for child */ +#ifdef HAVE_WAITPID + while (-1 == waitpid(pid, &wstatus, 0)) { +#ifdef EINTR + if (errno == EINTR) + continue; +#endif /* EINTR */ +#ifdef ERESTARTSYS + if (errno == ERESTARTSYS) + continue; +#endif /* ERESTARTSYS */ + break; + } +#else + while (wait(&wstatus) != pid) /* do nothing */ + ; +#endif + _exit(WEXITSTATUS(wstatus)); + } else if (pid == 0) { + if (!dialog_vars.cant_kill) + (void) signal(SIGHUP, finish_bg); + (void) signal(SIGINT, finish_bg); + (void) signal(SIGQUIT, finish_bg); + (void) signal(SIGSEGV, finish_bg); + while (dialog_state.getc_callbacks != 0) { + int fkey = 0; + dlg_getc_callbacks(ERR, fkey, retval); + napms(1000); + } + } + } + } + } +} Index: vendor/dialog/1.3-20180621/util.c =================================================================== --- vendor/dialog/1.3-20180621/util.c (nonexistent) +++ vendor/dialog/1.3-20180621/util.c (revision 339483) @@ -0,0 +1,2779 @@ +/* + * $Id: util.c,v 1.272 2018/06/21 23:47:10 tom Exp $ + * + * util.c -- miscellaneous utilities for dialog + * + * Copyright 2000-2016,2018 Thomas E. Dickey + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License, version 2.1 + * as published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this program; if not, write to + * Free Software Foundation, Inc. + * 51 Franklin St., Fifth Floor + * Boston, MA 02110, USA. + * + * An earlier version of this program lists as authors + * Savio Lam (lam836@cs.cuhk.hk) + */ + +#include <dialog.h> +#include <dlg_keys.h> + +#ifdef HAVE_SETLOCALE +#include <locale.h> +#endif + +#ifdef NEED_WCHAR_H +#include <wchar.h> +#endif + +#ifdef NCURSES_VERSION +#if defined(HAVE_NCURSESW_TERM_H) +#include <ncursesw/term.h> +#elif defined(HAVE_NCURSES_TERM_H) +#include <ncurses/term.h> +#else +#include <term.h> +#endif +#endif + +#if defined(HAVE_WCHGAT) +# if defined(NCURSES_VERSION_PATCH) +# if NCURSES_VERSION_PATCH >= 20060715 +# define USE_WCHGAT 1 +# else +# define USE_WCHGAT 0 +# endif +# else +# define USE_WCHGAT 1 +# endif +#else +# define USE_WCHGAT 0 +#endif + +/* globals */ +DIALOG_STATE dialog_state; +DIALOG_VARS dialog_vars; + +#if !(defined(HAVE_WGETPARENT) && defined(HAVE_WINDOW__PARENT)) +#define NEED_WGETPARENT 1 +#else +#undef NEED_WGETPARENT +#endif + +#define concat(a,b) a##b + +#ifdef HAVE_RC_FILE +#define RC_DATA(name,comment) , #name "_color", comment " color" +#else +#define RC_DATA(name,comment) /*nothing */ +#endif + +#ifdef HAVE_COLOR +#include <dlg_colors.h> +#define COLOR_DATA(upr) , \ + concat(DLGC_FG_,upr), \ + concat(DLGC_BG_,upr), \ + concat(DLGC_HL_,upr) +#else +#define COLOR_DATA(upr) /*nothing */ +#endif + +#define DATA(atr,upr,lwr,cmt) { atr COLOR_DATA(upr) RC_DATA(lwr,cmt) } + +#define UseShadow(dw) ((dw) != 0 && (dw)->normal != 0 && (dw)->shadow != 0) + +/* + * Table of color and attribute values, default is for mono display. + * The order matches the DIALOG_ATR() values. + */ +/* *INDENT-OFF* */ +DIALOG_COLORS dlg_color_table[] = +{ + DATA(A_NORMAL, SCREEN, screen, "Screen"), + DATA(A_NORMAL, SHADOW, shadow, "Shadow"), + DATA(A_REVERSE, DIALOG, dialog, "Dialog box"), + DATA(A_REVERSE, TITLE, title, "Dialog box title"), + DATA(A_REVERSE, BORDER, border, "Dialog box border"), + DATA(A_BOLD, BUTTON_ACTIVE, button_active, "Active button"), + DATA(A_DIM, BUTTON_INACTIVE, button_inactive, "Inactive button"), + DATA(A_UNDERLINE, BUTTON_KEY_ACTIVE, button_key_active, "Active button key"), + DATA(A_UNDERLINE, BUTTON_KEY_INACTIVE, button_key_inactive, "Inactive button key"), + DATA(A_NORMAL, BUTTON_LABEL_ACTIVE, button_label_active, "Active button label"), + DATA(A_NORMAL, BUTTON_LABEL_INACTIVE, button_label_inactive, "Inactive button label"), + DATA(A_REVERSE, INPUTBOX, inputbox, "Input box"), + DATA(A_REVERSE, INPUTBOX_BORDER, inputbox_border, "Input box border"), + DATA(A_REVERSE, SEARCHBOX, searchbox, "Search box"), + DATA(A_REVERSE, SEARCHBOX_TITLE, searchbox_title, "Search box title"), + DATA(A_REVERSE, SEARCHBOX_BORDER, searchbox_border, "Search box border"), + DATA(A_REVERSE, POSITION_INDICATOR, position_indicator, "File position indicator"), + DATA(A_REVERSE, MENUBOX, menubox, "Menu box"), + DATA(A_REVERSE, MENUBOX_BORDER, menubox_border, "Menu box border"), + DATA(A_REVERSE, ITEM, item, "Item"), + DATA(A_NORMAL, ITEM_SELECTED, item_selected, "Selected item"), + DATA(A_REVERSE, TAG, tag, "Tag"), + DATA(A_REVERSE, TAG_SELECTED, tag_selected, "Selected tag"), + DATA(A_NORMAL, TAG_KEY, tag_key, "Tag key"), + DATA(A_BOLD, TAG_KEY_SELECTED, tag_key_selected, "Selected tag key"), + DATA(A_REVERSE, CHECK, check, "Check box"), + DATA(A_REVERSE, CHECK_SELECTED, check_selected, "Selected check box"), + DATA(A_REVERSE, UARROW, uarrow, "Up arrow"), + DATA(A_REVERSE, DARROW, darrow, "Down arrow"), + DATA(A_NORMAL, ITEMHELP, itemhelp, "Item help-text"), + DATA(A_BOLD, FORM_ACTIVE_TEXT, form_active_text, "Active form text"), + DATA(A_REVERSE, FORM_TEXT, form_text, "Form text"), + DATA(A_NORMAL, FORM_ITEM_READONLY, form_item_readonly, "Readonly form item"), + DATA(A_REVERSE, GAUGE, gauge, "Dialog box gauge"), + DATA(A_REVERSE, BORDER2, border2, "Dialog box border2"), + DATA(A_REVERSE, INPUTBOX_BORDER2, inputbox_border2, "Input box border2"), + DATA(A_REVERSE, SEARCHBOX_BORDER2, searchbox_border2, "Search box border2"), + DATA(A_REVERSE, MENUBOX_BORDER2, menubox_border2, "Menu box border2") +}; +/* *INDENT-ON* */ + +/* + * Maintain a list of subwindows so that we can delete them to cleanup. + * More important, this provides a fallback when wgetparent() is not available. + */ +static void +add_subwindow(WINDOW *parent, WINDOW *child) +{ + DIALOG_WINDOWS *p = dlg_calloc(DIALOG_WINDOWS, 1); + + if (p != 0) { + p->normal = parent; + p->shadow = child; + p->next = dialog_state.all_subwindows; + dialog_state.all_subwindows = p; + } +} + +static void +del_subwindows(WINDOW *parent) +{ + DIALOG_WINDOWS *p = dialog_state.all_subwindows; + DIALOG_WINDOWS *q = 0; + DIALOG_WINDOWS *r; + + while (p != 0) { + if (p->normal == parent) { + delwin(p->shadow); + r = p->next; + if (q == 0) { + dialog_state.all_subwindows = r; + } else { + q->next = r; + } + free(p); + p = r; + } else { + q = p; + p = p->next; + } + } +} + +/* + * Display background title if it exists ... + */ +void +dlg_put_backtitle(void) +{ + int i; + + if (dialog_vars.backtitle != NULL) { + chtype attr = A_NORMAL; + int backwidth = dlg_count_columns(dialog_vars.backtitle); + + dlg_attrset(stdscr, screen_attr); + (void) wmove(stdscr, 0, 1); + dlg_print_text(stdscr, dialog_vars.backtitle, COLS - 2, &attr); + for (i = 0; i < COLS - backwidth; i++) + (void) waddch(stdscr, ' '); + (void) wmove(stdscr, 1, 1); + for (i = 0; i < COLS - 2; i++) + (void) waddch(stdscr, dlg_boxchar(ACS_HLINE)); + } + + (void) wnoutrefresh(stdscr); +} + +/* + * Set window to attribute 'attr'. There are more efficient ways to do this, + * but will not work on older/buggy ncurses versions. + */ +void +dlg_attr_clear(WINDOW *win, int height, int width, chtype attr) +{ + int i, j; + + dlg_attrset(win, attr); + for (i = 0; i < height; i++) { + (void) wmove(win, i, 0); + for (j = 0; j < width; j++) + (void) waddch(win, ' '); + } + (void) touchwin(win); +} + +void +dlg_clear(void) +{ + dlg_attr_clear(stdscr, LINES, COLS, screen_attr); +} + +#define isprivate(s) ((s) != 0 && strstr(s, "\033[?") != 0) + +#define TTY_DEVICE "/dev/tty" + +/* + * If $DIALOG_TTY exists, allow the program to try to open the terminal + * directly when stdout is redirected. By default we require the "--stdout" + * option to be given, but some scripts were written making use of the + * behavior of dialog which tried opening the terminal anyway. + */ +static char * +dialog_tty(void) +{ + char *result = getenv("DIALOG_TTY"); + if (result != 0 && atoi(result) == 0) + result = 0; + return result; +} + +/* + * Open the terminal directly. If one of stdin, stdout or stderr really points + * to a tty, use it. Otherwise give up and open /dev/tty. + */ +static int +open_terminal(char **result, int mode) +{ + const char *device = TTY_DEVICE; + if (!isatty(fileno(stderr)) + || (device = ttyname(fileno(stderr))) == 0) { + if (!isatty(fileno(stdout)) + || (device = ttyname(fileno(stdout))) == 0) { + if (!isatty(fileno(stdin)) + || (device = ttyname(fileno(stdin))) == 0) { + device = TTY_DEVICE; + } + } + } + *result = dlg_strclone(device); + return open(device, mode); +} + +#ifdef NCURSES_VERSION +static int +my_putc(int ch) +{ + char buffer[2]; + int fd = fileno(dialog_state.screen_output); + + buffer[0] = (char) ch; + return (int) write(fd, buffer, (size_t) 1); +} +#endif + +/* + * Do some initialization for dialog. + * + * 'input' is the real tty input of dialog. Usually it is stdin, but if + * --input-fd option is used, it may be anything. + * + * 'output' is where dialog will send its result. Usually it is stderr, but + * if --stdout or --output-fd is used, it may be anything. We are concerned + * mainly with the case where it happens to be the same as stdout. + */ +void +init_dialog(FILE *input, FILE *output) +{ + int fd1, fd2; + char *device = 0; + + setlocale(LC_ALL, ""); + + dialog_state.output = output; + dialog_state.tab_len = TAB_LEN; + dialog_state.aspect_ratio = DEFAULT_ASPECT_RATIO; +#ifdef HAVE_COLOR + dialog_state.use_colors = USE_COLORS; /* use colors by default? */ + dialog_state.use_shadow = USE_SHADOW; /* shadow dialog boxes by default? */ +#endif + +#ifdef HAVE_RC_FILE + if (dlg_parse_rc() == -1) /* Read the configuration file */ + dlg_exiterr("init_dialog: dlg_parse_rc"); +#endif + + /* + * Some widgets (such as gauge) may read from the standard input. Pipes + * only connect stdout/stdin, so there is not much choice. But reading a + * pipe would get in the way of curses' normal reading stdin for getch. + * + * As in the --stdout (see below), reopening the terminal does not always + * work properly. dialog provides a --pipe-fd option for this purpose. We + * test that case first (differing fileno's for input/stdin). If the + * fileno's are equal, but we're not reading from a tty, see if we can open + * /dev/tty. + */ + dialog_state.pipe_input = stdin; + if (fileno(input) != fileno(stdin)) { + if ((fd1 = dup(fileno(input))) >= 0 + && (fd2 = dup(fileno(stdin))) >= 0) { + (void) dup2(fileno(input), fileno(stdin)); + dialog_state.pipe_input = fdopen(fd2, "r"); + if (fileno(stdin) != 0) /* some functions may read fd #0 */ + (void) dup2(fileno(stdin), 0); + } else { + dlg_exiterr("cannot open tty-input"); + } + close(fd1); + } else if (!isatty(fileno(stdin))) { + if ((fd1 = open_terminal(&device, O_RDONLY)) >= 0) { + if ((fd2 = dup(fileno(stdin))) >= 0) { + dialog_state.pipe_input = fdopen(fd2, "r"); + if (freopen(device, "r", stdin) == 0) + dlg_exiterr("cannot open tty-input"); + if (fileno(stdin) != 0) /* some functions may read fd #0 */ + (void) dup2(fileno(stdin), 0); + } + close(fd1); + } + free(device); + } + + /* + * If stdout is not a tty and dialog is called with the --stdout option, we + * have to provide for a way to write to the screen. + * + * The curses library normally writes its output to stdout, leaving stderr + * free for scripting. Scripts are simpler when stdout is redirected. The + * newterm function is useful; it allows us to specify where the output + * goes. Reopening the terminal is not portable since several + * configurations do not allow this to work properly: + * + * a) some getty implementations (and possibly broken tty drivers, e.g., on + * HPUX 10 and 11) cause stdin to act as if it is still in cooked mode + * even though results from ioctl's state that it is successfully + * altered to raw mode. Broken is the proper term. + * + * b) the user may not have permissions on the device, e.g., if one su's + * from the login user to another non-privileged user. + */ + if (!isatty(fileno(stdout)) + && (fileno(stdout) == fileno(output) || dialog_tty())) { + if ((fd1 = open_terminal(&device, O_WRONLY)) >= 0 + && (dialog_state.screen_output = fdopen(fd1, "w")) != 0) { + if (newterm(NULL, dialog_state.screen_output, stdin) == 0) { + dlg_exiterr("cannot initialize curses"); + } + free(device); + } else { + dlg_exiterr("cannot open tty-output"); + } + } else { + dialog_state.screen_output = stdout; + (void) initscr(); + } +#ifdef NCURSES_VERSION + /* + * Cancel xterm's alternate-screen mode. + */ + if (!dialog_vars.keep_tite + && (fileno(dialog_state.screen_output) != fileno(stdout) + || isatty(fileno(dialog_state.screen_output))) + && key_mouse != 0 /* xterm and kindred */ + && isprivate(enter_ca_mode) + && isprivate(exit_ca_mode)) { + /* + * initscr() or newterm() already wrote enter_ca_mode as a side + * effect of initializing the screen. It would be nice to not even + * do that, but we do not really have access to the correct copy of + * the terminfo description until those functions have been invoked. + */ + (void) refresh(); + (void) tputs(exit_ca_mode, 0, my_putc); + (void) tputs(clear_screen, 0, my_putc); + /* + * Prevent ncurses from switching "back" to the normal screen when + * exiting from dialog. That would move the cursor to the original + * location saved in xterm. Normally curses sets the cursor position + * to the first line after the display, but the alternate screen + * switching is done after that point. + * + * Cancelling the strings altogether also works around the buggy + * implementation of alternate-screen in rxvt, etc., which clear + * more of the display than they should. + */ + enter_ca_mode = 0; + exit_ca_mode = 0; + } +#endif +#ifdef HAVE_FLUSHINP + (void) flushinp(); +#endif + (void) keypad(stdscr, TRUE); + (void) cbreak(); + (void) noecho(); + + if (!dialog_state.no_mouse) { + mouse_open(); + } + + dialog_state.screen_initialized = TRUE; + +#ifdef HAVE_COLOR + if (dialog_state.use_colors || dialog_state.use_shadow) + dlg_color_setup(); /* Set up colors */ +#endif + + /* Set screen to screen attribute */ + dlg_clear(); +} + +#ifdef HAVE_COLOR +static int defined_colors = 1; /* pair-0 is reserved */ +/* + * Setup for color display + */ +void +dlg_color_setup(void) +{ + unsigned i; + + if (has_colors()) { /* Terminal supports color? */ + (void) start_color(); + +#if defined(HAVE_USE_DEFAULT_COLORS) + use_default_colors(); +#endif + +#if defined(__NetBSD__) && defined(_CURSES_) +#define C_ATTR(x,y) (((x) != 0 ? A_BOLD : 0) | COLOR_PAIR((y))) + /* work around bug in NetBSD curses */ + for (i = 0; i < sizeof(dlg_color_table) / + sizeof(dlg_color_table[0]); i++) { + + /* Initialize color pairs */ + (void) init_pair(i + 1, + dlg_color_table[i].fg, + dlg_color_table[i].bg); + + /* Setup color attributes */ + dlg_color_table[i].atr = C_ATTR(dlg_color_table[i].hilite, i + 1); + } + defined_colors = i + 1; +#else + for (i = 0; i < sizeof(dlg_color_table) / + sizeof(dlg_color_table[0]); i++) { + + /* Initialize color pairs */ + chtype color = dlg_color_pair(dlg_color_table[i].fg, + dlg_color_table[i].bg); + + /* Setup color attributes */ + dlg_color_table[i].atr = ((dlg_color_table[i].hilite + ? A_BOLD + : 0) + | color); + } +#endif + } else { + dialog_state.use_colors = FALSE; + dialog_state.use_shadow = FALSE; + } +} + +int +dlg_color_count(void) +{ + return sizeof(dlg_color_table) / sizeof(dlg_color_table[0]); +} + +/* + * Wrapper for getattrs(), or the more cumbersome X/Open wattr_get(). + */ +chtype +dlg_get_attrs(WINDOW *win) +{ + chtype result; +#ifdef HAVE_GETATTRS + result = (chtype) getattrs(win); +#else + attr_t my_result; + short my_pair; + wattr_get(win, &my_result, &my_pair, NULL); + result = my_result; +#endif + return result; +} + +/* + * Reuse color pairs (they are limited), returning a COLOR_PAIR() value if we + * have (or can) define a pair with the given color as foreground on the + * window's defined background. + */ +chtype +dlg_color_pair(int foreground, int background) +{ + chtype result = 0; + int pair; + short fg, bg; + bool found = FALSE; + + for (pair = 1; pair < defined_colors; ++pair) { + if (pair_content((short) pair, &fg, &bg) != ERR + && fg == foreground + && bg == background) { + result = (chtype) COLOR_PAIR(pair); + found = TRUE; + break; + } + } + if (!found && (defined_colors + 1) < COLOR_PAIRS) { + pair = defined_colors++; + (void) init_pair((short) pair, (short) foreground, (short) background); + result = (chtype) COLOR_PAIR(pair); + } + return result; +} + +/* + * Reuse color pairs (they are limited), returning a COLOR_PAIR() value if we + * have (or can) define a pair with the given color as foreground on the + * window's defined background. + */ +static chtype +define_color(WINDOW *win, int foreground) +{ + int pair; + short fg, bg, background; + if (dialog_state.text_only) { + background = COLOR_BLACK; + } else { + chtype attrs = dlg_get_attrs(win); + + if ((pair = PAIR_NUMBER(attrs)) != 0 + && pair_content((short) pair, &fg, &bg) != ERR) { + background = bg; + } else { + background = COLOR_BLACK; + } + } + return dlg_color_pair(foreground, background); +} +#endif + +/* + * End using dialog functions. + */ +void +end_dialog(void) +{ + if (dialog_state.screen_initialized) { + dialog_state.screen_initialized = FALSE; + mouse_close(); + (void) endwin(); + (void) fflush(stdout); + } +} + +#define ESCAPE_LEN 3 +#define isOurEscape(p) (((p)[0] == '\\') && ((p)[1] == 'Z') && ((p)[2] != 0)) + +int +dlg_count_real_columns(const char *text) +{ + int result = 0; + if (*text) { + result = dlg_count_columns(text); + if (result && dialog_vars.colors) { + int hidden = 0; + while (*text) { + if (dialog_vars.colors && isOurEscape(text)) { + hidden += ESCAPE_LEN; + text += ESCAPE_LEN; + } else { + ++text; + } + } + result -= hidden; + } + } + return result; +} + +static int +centered(int width, const char *string) +{ + int need = dlg_count_real_columns(string); + int left; + + left = (width - need) / 2 - 1; + if (left < 0) + left = 0; + return left; +} + +#ifdef USE_WIDE_CURSES +static bool +is_combining(const char *txt, int *combined) +{ + bool result = FALSE; + + if (*combined == 0) { + if (UCH(*txt) >= 128) { + wchar_t wch; + mbstate_t state; + size_t given = strlen(txt); + size_t len; + + memset(&state, 0, sizeof(state)); + len = mbrtowc(&wch, txt, given, &state); + if ((int) len > 0 && wcwidth(wch) == 0) { + *combined = (int) len - 1; + result = TRUE; + } + } + } else { + result = TRUE; + *combined -= 1; + } + return result; +} +#endif + +/* + * Print the name (tag) or text from a DIALOG_LISTITEM, highlighting the + * first character if selected. + */ +void +dlg_print_listitem(WINDOW *win, + const char *text, + int climit, + bool first, + int selected) +{ + chtype attr = A_NORMAL; + int limit; + const int *cols; + chtype attrs[4]; + + if (text == 0) + text = ""; + + if (first) { + const int *indx = dlg_index_wchars(text); + attrs[3] = tag_key_selected_attr; + attrs[2] = tag_key_attr; + attrs[1] = tag_selected_attr; + attrs[0] = tag_attr; + + dlg_attrset(win, selected ? attrs[3] : attrs[2]); + (void) waddnstr(win, text, indx[1]); + + if ((int) strlen(text) > indx[1]) { + limit = dlg_limit_columns(text, climit, 1); + if (limit > 1) { + dlg_attrset(win, selected ? attrs[1] : attrs[0]); + (void) waddnstr(win, + text + indx[1], + indx[limit] - indx[1]); + } + } + } else { + attrs[1] = item_selected_attr; + attrs[0] = item_attr; + + cols = dlg_index_columns(text); + limit = dlg_limit_columns(text, climit, 0); + + if (limit > 0) { + dlg_attrset(win, selected ? attrs[1] : attrs[0]); + dlg_print_text(win, text, cols[limit], &attr); + } + } +} + +/* + * Print up to 'cols' columns from 'text', optionally rendering our escape + * sequence for attributes and color. + */ +void +dlg_print_text(WINDOW *win, const char *txt, int cols, chtype *attr) +{ + int y_origin, x_origin; + int y_before, x_before = 0; + int y_after, x_after; + int tabbed = 0; + bool thisTab; + bool ended = FALSE; + chtype useattr; +#ifdef USE_WIDE_CURSES + int combined = 0; +#endif + + if (dialog_state.text_only) { + y_origin = y_after = 0; + x_origin = x_after = 0; + } else { + getyx(win, y_origin, x_origin); + } + while (cols > 0 && (*txt != '\0')) { + if (dialog_vars.colors) { + while (isOurEscape(txt)) { + int code; + + txt += 2; + switch (code = CharOf(*txt)) { +#ifdef HAVE_COLOR + case '0': + case '1': + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + *attr &= ~A_COLOR; + *attr |= define_color(win, code - '0'); + break; +#endif + case 'B': + *attr &= ~A_BOLD; + break; + case 'b': + *attr |= A_BOLD; + break; + case 'R': + *attr &= ~A_REVERSE; + break; + case 'r': + *attr |= A_REVERSE; + break; + case 'U': + *attr &= ~A_UNDERLINE; + break; + case 'u': + *attr |= A_UNDERLINE; + break; + case 'n': + *attr = A_NORMAL; + break; + } + ++txt; + } + } + if (ended || *txt == '\n' || *txt == '\0') + break; + useattr = (*attr) & A_ATTRIBUTES; +#ifdef HAVE_COLOR + /* + * Prevent this from making text invisible when the foreground and + * background colors happen to be the same, and there's no bold + * attribute. + */ + if ((useattr & A_COLOR) != 0 && (useattr & A_BOLD) == 0) { + short pair = (short) PAIR_NUMBER(useattr); + short fg, bg; + if (pair_content(pair, &fg, &bg) != ERR + && fg == bg) { + useattr &= ~A_COLOR; + useattr |= dlg_color_pair(fg, ((bg == COLOR_BLACK) + ? COLOR_WHITE + : COLOR_BLACK)); + } + } +#endif + /* + * Write the character, using curses to tell exactly how wide it + * is. If it is a tab, discount that, since the caller thinks + * tabs are nonprinting, and curses will expand tabs to one or + * more blanks. + */ + thisTab = (CharOf(*txt) == TAB); + if (dialog_state.text_only) { + y_before = y_after; + x_before = x_after; + } else { + if (thisTab) { + getyx(win, y_before, x_before); + (void) y_before; + } + } + if (dialog_state.text_only) { + int ch = CharOf(*txt++); + if (thisTab) { + while ((x_after++) % 8) { + fputc(' ', dialog_state.output); + } + } else { + fputc(ch, dialog_state.output); + x_after++; /* FIXME: handle meta per locale */ + } + } else { + (void) waddch(win, CharOf(*txt++) | useattr); + getyx(win, y_after, x_after); + } + if (thisTab && (y_after == y_origin)) + tabbed += (x_after - x_before); + if ((y_after != y_origin) || + (x_after >= (cols + tabbed + x_origin) +#ifdef USE_WIDE_CURSES + && !is_combining(txt, &combined) +#endif + )) { + ended = TRUE; + } + } + if (dialog_state.text_only) { + fputc('\n', dialog_state.output); + } +} + +/* + * Print one line of the prompt in the window within the limits of the + * specified right margin. The line will end on a word boundary and a pointer + * to the start of the next line is returned, or a NULL pointer if the end of + * *prompt is reached. + */ +const char * +dlg_print_line(WINDOW *win, + chtype *attr, + const char *prompt, + int lm, int rm, int *x) +{ + const char *wrap_ptr; + const char *test_ptr; + const char *hide_ptr = 0; + const int *cols = dlg_index_columns(prompt); + const int *indx = dlg_index_wchars(prompt); + int wrap_inx = 0; + int test_inx = 0; + int cur_x = lm; + int hidden = 0; + int limit = dlg_count_wchars(prompt); + int n; + int tabbed = 0; + + *x = 1; + + /* + * Set *test_ptr to the end of the line or the right margin (rm), whichever + * is less, and set wrap_ptr to the end of the last word in the line. + */ + for (n = 0; n < limit; ++n) { + int ch = *(test_ptr = prompt + indx[test_inx]); + if (ch == '\n' || ch == '\0' || cur_x >= (rm + hidden)) + break; + if (ch == TAB && n == 0) { + tabbed = 8; /* workaround for leading tabs */ + } else if (isblank(UCH(ch)) + && n != 0 + && !isblank(UCH(prompt[indx[n - 1]]))) { + wrap_inx = n; + *x = cur_x; + } else if (dialog_vars.colors && isOurEscape(test_ptr)) { + hide_ptr = test_ptr; + hidden += ESCAPE_LEN; + n += (ESCAPE_LEN - 1); + } + cur_x = lm + tabbed + cols[n + 1]; + if (cur_x > (rm + hidden)) + break; + test_inx = n + 1; + } + + /* + * If the line doesn't reach the right margin in the middle of a word, then + * we don't have to wrap it at the end of the previous word. + */ + test_ptr = prompt + indx[test_inx]; + if (*test_ptr == '\n' || isblank(UCH(*test_ptr)) || *test_ptr == '\0') { + wrap_inx = test_inx; + while (wrap_inx > 0 && isblank(UCH(prompt[indx[wrap_inx - 1]]))) { + wrap_inx--; + } + *x = lm + indx[wrap_inx]; + } else if (*x == 1 && cur_x >= rm) { + /* + * If the line has no spaces, then wrap it anyway at the right margin + */ + *x = rm; + wrap_inx = test_inx; + } + wrap_ptr = prompt + indx[wrap_inx]; +#ifdef USE_WIDE_CURSES + if (UCH(*wrap_ptr) >= 128) { + int combined = 0; + while (is_combining(wrap_ptr, &combined)) { + ++wrap_ptr; + } + } +#endif + + /* + * If we found hidden text past the last point that we will display, + * discount that from the displayed length. + */ + if ((hide_ptr != 0) && (hide_ptr >= wrap_ptr)) { + hidden -= ESCAPE_LEN; + test_ptr = wrap_ptr; + while (test_ptr < wrap_ptr) { + if (dialog_vars.colors && isOurEscape(test_ptr)) { + hidden -= ESCAPE_LEN; + test_ptr += ESCAPE_LEN; + } else { + ++test_ptr; + } + } + } + + /* + * Print the line if we have a window pointer. Otherwise this routine + * is just being called for sizing the window. + */ + if (dialog_state.text_only || win) { + dlg_print_text(win, prompt, (cols[wrap_inx] - hidden), attr); + } + + /* *x tells the calling function how long the line was */ + if (*x == 1) { + *x = rm; + } + + *x -= hidden; + + /* Find the start of the next line and return a pointer to it */ + test_ptr = wrap_ptr; + while (isblank(UCH(*test_ptr))) + test_ptr++; + if (*test_ptr == '\n') + test_ptr++; + dlg_finish_string(prompt); + return (test_ptr); +} + +static void +justify_text(WINDOW *win, + const char *prompt, + int limit_y, + int limit_x, + int *high, int *wide) +{ + chtype attr = A_NORMAL; + int x = (2 * MARGIN); + int y = MARGIN; + int max_x = 2; + int lm = (2 * MARGIN); /* left margin (box-border plus a space) */ + int rm = limit_x; /* right margin */ + int bm = limit_y; /* bottom margin */ + int last_y = 0, last_x = 0; + + dialog_state.text_height = 0; + dialog_state.text_width = 0; + if (dialog_state.text_only || win) { + rm -= (2 * MARGIN); + bm -= (2 * MARGIN); + } + if (prompt == 0) + prompt = ""; + + if (win != 0) + getyx(win, last_y, last_x); + while (y <= bm && *prompt) { + x = lm; + + if (*prompt == '\n') { + while (*prompt == '\n' && y < bm) { + if (*(prompt + 1) != '\0') { + ++y; + if (win != 0) + (void) wmove(win, y, lm); + } + prompt++; + } + } else if (win != 0) + (void) wmove(win, y, lm); + + if (*prompt) { + prompt = dlg_print_line(win, &attr, prompt, lm, rm, &x); + if (win != 0) + getyx(win, last_y, last_x); + } + if (*prompt) { + ++y; + if (win != 0) + (void) wmove(win, y, lm); + } + max_x = MAX(max_x, x); + } + /* Move back to the last position after drawing prompt, for msgbox. */ + if (win != 0) + (void) wmove(win, last_y, last_x); + + /* Set the final height and width for the calling function */ + if (high != 0) + *high = y; + if (wide != 0) + *wide = max_x; +} + +/* + * Print a string of text in a window, automatically wrap around to the next + * line if the string is too long to fit on one line. Note that the string may + * contain embedded newlines. + */ +void +dlg_print_autowrap(WINDOW *win, const char *prompt, int height, int width) +{ + justify_text(win, prompt, + height, + width, + (int *) 0, (int *) 0); +} + +/* + * Display the message in a scrollable window. Actually the way it works is + * that we create a "tall" window of the proper width, let the text wrap within + * that, and copy a slice of the result to the dialog. + * + * It works for ncurses. Other curses implementations show only blanks (Tru64) + * or garbage (NetBSD). + */ +int +dlg_print_scrolled(WINDOW *win, + const char *prompt, + int offset, + int height, + int width, + int pauseopt) +{ + int oldy, oldx; + int last = 0; + + (void) pauseopt; /* used only for ncurses */ + + getyx(win, oldy, oldx); +#ifdef NCURSES_VERSION + if (pauseopt) { + int wide = width - (2 * MARGIN); + int high = LINES; + int y, x; + int len; + int percent; + WINDOW *dummy; + char buffer[5]; + +#if defined(NCURSES_VERSION_PATCH) && NCURSES_VERSION_PATCH >= 20040417 + /* + * If we're not limited by the screensize, allow text to possibly be + * one character per line. + */ + if ((len = dlg_count_columns(prompt)) > high) + high = len; +#endif + dummy = newwin(high, width, 0, 0); + if (dummy == 0) { + dlg_attrset(win, dialog_attr); + dlg_print_autowrap(win, prompt, height + 1 + (3 * MARGIN), width); + last = 0; + } else { + wbkgdset(dummy, dialog_attr | ' '); + dlg_attrset(dummy, dialog_attr); + werase(dummy); + dlg_print_autowrap(dummy, prompt, high, width); + getyx(dummy, y, x); + (void) x; + + copywin(dummy, /* srcwin */ + win, /* dstwin */ + offset + MARGIN, /* sminrow */ + MARGIN, /* smincol */ + MARGIN, /* dminrow */ + MARGIN, /* dmincol */ + height, /* dmaxrow */ + wide, /* dmaxcol */ + FALSE); + + delwin(dummy); + + /* if the text is incomplete, or we have scrolled, show the percentage */ + if (y > 0 && wide > 4) { + percent = (int) ((height + offset) * 100.0 / y); + if (percent < 0) + percent = 0; + if (percent > 100) + percent = 100; + if (offset != 0 || percent != 100) { + dlg_attrset(win, position_indicator_attr); + (void) wmove(win, MARGIN + height, wide - 4); + (void) sprintf(buffer, "%d%%", percent); + (void) waddstr(win, buffer); + if ((len = (int) strlen(buffer)) < 4) { + dlg_attrset(win, border_attr); + whline(win, dlg_boxchar(ACS_HLINE), 4 - len); + } + } + } + last = (y - height); + } + } else +#endif + { + (void) offset; + dlg_attrset(win, dialog_attr); + dlg_print_autowrap(win, prompt, height + 1 + (3 * MARGIN), width); + last = 0; + } + wmove(win, oldy, oldx); + return last; +} + +int +dlg_check_scrolled(int key, int last, int page, bool * show, int *offset) +{ + int code = 0; + + *show = FALSE; + + switch (key) { + case DLGK_PAGE_FIRST: + if (*offset > 0) { + *offset = 0; + *show = TRUE; + } + break; + case DLGK_PAGE_LAST: + if (*offset < last) { + *offset = last; + *show = TRUE; + } + break; + case DLGK_GRID_UP: + if (*offset > 0) { + --(*offset); + *show = TRUE; + } + break; + case DLGK_GRID_DOWN: + if (*offset < last) { + ++(*offset); + *show = TRUE; + } + break; + case DLGK_PAGE_PREV: + if (*offset > 0) { + *offset -= page; + if (*offset < 0) + *offset = 0; + *show = TRUE; + } + break; + case DLGK_PAGE_NEXT: + if (*offset < last) { + *offset += page; + if (*offset > last) + *offset = last; + *show = TRUE; + } + break; + default: + code = -1; + break; + } + return code; +} + +/* + * Calculate the window size for preformatted text. This will calculate box + * dimensions that are at or close to the specified aspect ratio for the prompt + * string with all spaces and newlines preserved and additional newlines added + * as necessary. + */ +static void +auto_size_preformatted(const char *prompt, int *height, int *width) +{ + int high = 0, wide = 0; + float car; /* Calculated Aspect Ratio */ + float diff; + int max_y = SLINES - 1; + int max_x = SCOLS - 2; + int max_width = max_x; + int ar = dialog_state.aspect_ratio; + + /* Get the initial dimensions */ + justify_text((WINDOW *) 0, prompt, max_y, max_x, &high, &wide); + car = (float) (wide / high); + + /* + * If the aspect ratio is greater than it should be, then decrease the + * width proportionately. + */ + if (car > ar) { + diff = car / (float) ar; + max_x = (int) ((float) wide / diff + 4); + justify_text((WINDOW *) 0, prompt, max_y, max_x, &high, &wide); + car = (float) wide / (float) high; + } + + /* + * If the aspect ratio is too small after decreasing the width, then + * incrementally increase the width until the aspect ratio is equal to or + * greater than the specified aspect ratio. + */ + while (car < ar && max_x < max_width) { + max_x += 4; + justify_text((WINDOW *) 0, prompt, max_y, max_x, &high, &wide); + car = (float) (wide / high); + } + + *height = high; + *width = wide; +} + +/* + * Find the length of the longest "word" in the given string. By setting the + * widget width at least this long, we can avoid splitting a word on the + * margin. + */ +static int +longest_word(const char *string) +{ + int length, result = 0; + + while (*string != '\0') { + length = 0; + while (*string != '\0' && !isspace(UCH(*string))) { + length++; + string++; + } + result = MAX(result, length); + if (*string != '\0') + string++; + } + return result; +} + +/* + * if (height or width == -1) Maximize() + * if (height or width == 0), justify and return actual limits. + */ +static void +real_auto_size(const char *title, + const char *prompt, + int *height, int *width, + int boxlines, int mincols) +{ + int x = (dialog_vars.begin_set ? dialog_vars.begin_x : 2); + int y = (dialog_vars.begin_set ? dialog_vars.begin_y : 1); + int title_length = title ? dlg_count_columns(title) : 0; + int high; + int wide; + int save_high = *height; + int save_wide = *width; + int max_high; + int max_wide; + + if (prompt == 0) { + if (*height == 0) + *height = -1; + if (*width == 0) + *width = -1; + } + + max_high = (*height < 0); + max_wide = (*width < 0); + + if (*height > 0) { + high = *height; + } else { + high = SLINES - y; + } + + if (*width <= 0) { + if (prompt != 0) { + wide = MAX(title_length, mincols); + if (strchr(prompt, '\n') == 0) { + double val = (dialog_state.aspect_ratio * + dlg_count_real_columns(prompt)); + double xxx = sqrt(val); + int tmp = (int) xxx; + wide = MAX(wide, tmp); + wide = MAX(wide, longest_word(prompt)); + justify_text((WINDOW *) 0, prompt, high, wide, height, width); + } else { + auto_size_preformatted(prompt, height, width); + } + } else { + wide = SCOLS - x; + justify_text((WINDOW *) 0, prompt, high, wide, height, width); + } + } + + if (*width < title_length) { + justify_text((WINDOW *) 0, prompt, high, title_length, height, width); + *width = title_length; + } + + dialog_state.text_height = *height; + dialog_state.text_width = *width; + + if (*width < mincols && save_wide == 0) + *width = mincols; + if (prompt != 0) { + *width += ((2 * MARGIN) + SHADOW_COLS); + *height += boxlines + (2 * MARGIN); + } + + if (save_high > 0) + *height = save_high; + if (save_wide > 0) + *width = save_wide; + + if (max_high) + *height = SLINES - (dialog_vars.begin_set ? dialog_vars.begin_y : 0); + if (max_wide) + *width = SCOLS - (dialog_vars.begin_set ? dialog_vars.begin_x : 0); +} + +/* End of real_auto_size() */ + +void +dlg_auto_size(const char *title, + const char *prompt, + int *height, + int *width, + int boxlines, + int mincols) +{ + DLG_TRACE(("# dlg_auto_size(%d,%d) limits %d,%d\n", + *height, *width, + boxlines, mincols)); + + real_auto_size(title, prompt, height, width, boxlines, mincols); + + if (*width > SCOLS) { + (*height)++; + *width = SCOLS; + } + + if (*height > SLINES) { + *height = SLINES; + } + DLG_TRACE(("# ...dlg_auto_size(%d,%d) also %d,%d\n", + *height, *width, + dialog_state.text_height, dialog_state.text_width)); +} + +/* + * if (height or width == -1) Maximize() + * if (height or width == 0) + * height=MIN(SLINES, num.lines in fd+n); + * width=MIN(SCOLS, MAX(longer line+n, mincols)); + */ +void +dlg_auto_sizefile(const char *title, + const char *file, + int *height, + int *width, + int boxlines, + int mincols) +{ + int count = 0; + int len = title ? dlg_count_columns(title) : 0; + int nc = 4; + int numlines = 2; + long offset; + int ch; + FILE *fd; + + /* Open input file for reading */ + if ((fd = fopen(file, "rb")) == NULL) + dlg_exiterr("dlg_auto_sizefile: Cannot open input file %s", file); + + if ((*height == -1) || (*width == -1)) { + *height = SLINES - (dialog_vars.begin_set ? dialog_vars.begin_y : 0); + *width = SCOLS - (dialog_vars.begin_set ? dialog_vars.begin_x : 0); + } + if ((*height != 0) && (*width != 0)) { + (void) fclose(fd); + if (*width > SCOLS) + *width = SCOLS; + if (*height > SLINES) + *height = SLINES; + return; + } + + while (!feof(fd)) { + if (ferror(fd)) + break; + offset = 0; + while (((ch = getc(fd)) != '\n') && !feof(fd)) { + if ((ch == TAB) && (dialog_vars.tab_correct)) { + offset += dialog_state.tab_len - (offset % dialog_state.tab_len); + } else { + offset++; + } + } + + if (offset > len) + len = (int) offset; + + count++; + } + + /* now 'count' has the number of lines of fd and 'len' the max length */ + + *height = MIN(SLINES, count + numlines + boxlines); + *width = MIN(SCOLS, MAX((len + nc), mincols)); + /* here width and height can be maximized if > SCOLS|SLINES because + textbox-like widgets don't put all <file> on the screen. + Msgbox-like widget instead have to put all <text> correctly. */ + + (void) fclose(fd); +} + +/* + * Draw a rectangular box with line drawing characters. + * + * borderchar is used to color the upper/left edges. + * + * boxchar is used to color the right/lower edges. It also is fill-color used + * for the box contents. + * + * Normally, if you are drawing a scrollable box, use menubox_border_attr for + * boxchar, and menubox_attr for borderchar since the scroll-arrows are drawn + * with menubox_attr at the top, and menubox_border_attr at the bottom. That + * also (given the default color choices) produces a recessed effect. + * + * If you want a raised effect (and are not going to use the scroll-arrows), + * reverse this choice. + */ +void +dlg_draw_box2(WINDOW *win, int y, int x, int height, int width, + chtype boxchar, chtype borderchar, chtype borderchar2) +{ + int i, j; + chtype save = dlg_get_attrs(win); + + dlg_attrset(win, 0); + for (i = 0; i < height; i++) { + (void) wmove(win, y + i, x); + for (j = 0; j < width; j++) + if (!i && !j) + (void) waddch(win, borderchar | dlg_boxchar(ACS_ULCORNER)); + else if (i == height - 1 && !j) + (void) waddch(win, borderchar | dlg_boxchar(ACS_LLCORNER)); + else if (!i && j == width - 1) + (void) waddch(win, borderchar2 | dlg_boxchar(ACS_URCORNER)); + else if (i == height - 1 && j == width - 1) + (void) waddch(win, borderchar2 | dlg_boxchar(ACS_LRCORNER)); + else if (!i) + (void) waddch(win, borderchar | dlg_boxchar(ACS_HLINE)); + else if (i == height - 1) + (void) waddch(win, borderchar2 | dlg_boxchar(ACS_HLINE)); + else if (!j) + (void) waddch(win, borderchar | dlg_boxchar(ACS_VLINE)); + else if (j == width - 1) + (void) waddch(win, borderchar2 | dlg_boxchar(ACS_VLINE)); + else + (void) waddch(win, boxchar | ' '); + } + dlg_attrset(win, save); +} + +void +dlg_draw_box(WINDOW *win, int y, int x, int height, int width, + chtype boxchar, chtype borderchar) +{ + dlg_draw_box2(win, y, x, height, width, boxchar, borderchar, boxchar); +} + +static DIALOG_WINDOWS * +find_window(WINDOW *win) +{ + DIALOG_WINDOWS *result = 0; + DIALOG_WINDOWS *p; + + for (p = dialog_state.all_windows; p != 0; p = p->next) { + if (p->normal == win) { + result = p; + break; + } + } + return result; +} + +#ifdef HAVE_COLOR +/* + * If we have wchgat(), use that for updating shadow attributes, to work with + * wide-character data. + */ + +/* + * Check if the given point is "in" the given window. If so, return the window + * pointer, otherwise null. + */ +static WINDOW * +in_window(WINDOW *win, int y, int x) +{ + WINDOW *result = 0; + int y_base = getbegy(win); + int x_base = getbegx(win); + int y_last = getmaxy(win) + y_base; + int x_last = getmaxx(win) + x_base; + + if (y >= y_base && y <= y_last && x >= x_base && x <= x_last) + result = win; + return result; +} + +static WINDOW * +window_at_cell(DIALOG_WINDOWS * dw, int y, int x) +{ + WINDOW *result = 0; + DIALOG_WINDOWS *p; + int y_want = y + getbegy(dw->shadow); + int x_want = x + getbegx(dw->shadow); + + for (p = dialog_state.all_windows; p != 0; p = p->next) { + if (dw->normal != p->normal + && dw->shadow != p->normal + && (result = in_window(p->normal, y_want, x_want)) != 0) { + break; + } + } + if (result == 0) { + result = stdscr; + } + return result; +} + +static bool +in_shadow(WINDOW *normal, WINDOW *shadow, int y, int x) +{ + bool result = FALSE; + int ybase = getbegy(normal); + int ylast = getmaxy(normal) + ybase; + int xbase = getbegx(normal); + int xlast = getmaxx(normal) + xbase; + + y += getbegy(shadow); + x += getbegx(shadow); + + if (y >= ybase + SHADOW_ROWS + && y < ylast + SHADOW_ROWS + && x >= xlast + && x < xlast + SHADOW_COLS) { + /* in the right-side */ + result = TRUE; + } else if (y >= ylast + && y < ylast + SHADOW_ROWS + && x >= ybase + SHADOW_COLS + && x < ylast + SHADOW_COLS) { + /* check the bottom */ + result = TRUE; + } + + return result; +} + +/* + * When erasing a shadow, check each cell to make sure that it is not part of + * another box's shadow. This is a little complicated since most shadows are + * merged onto stdscr. + */ +static bool +last_shadow(DIALOG_WINDOWS * dw, int y, int x) +{ + DIALOG_WINDOWS *p; + bool result = TRUE; + + for (p = dialog_state.all_windows; p != 0; p = p->next) { + if (p->normal != dw->normal + && in_shadow(p->normal, dw->shadow, y, x)) { + result = FALSE; + break; + } + } + return result; +} + +static void +repaint_cell(DIALOG_WINDOWS * dw, bool draw, int y, int x) +{ + WINDOW *win = dw->shadow; + WINDOW *cellwin; + int y2, x2; + + if ((cellwin = window_at_cell(dw, y, x)) != 0 + && (draw || last_shadow(dw, y, x)) + && (y2 = (y + getbegy(win) - getbegy(cellwin))) >= 0 + && (x2 = (x + getbegx(win) - getbegx(cellwin))) >= 0 + && wmove(cellwin, y2, x2) != ERR) { + chtype the_cell = dlg_get_attrs(cellwin); + chtype the_attr = (draw ? shadow_attr : the_cell); + + if (winch(cellwin) & A_ALTCHARSET) { + the_attr |= A_ALTCHARSET; + } +#if USE_WCHGAT + wchgat(cellwin, 1, + the_attr & (chtype) (~A_COLOR), + (short) PAIR_NUMBER(the_attr), + NULL); +#else + { + chtype the_char = ((winch(cellwin) & A_CHARTEXT) | the_attr); + (void) waddch(cellwin, the_char); + } +#endif + wnoutrefresh(cellwin); + } +} + +#define RepaintCell(dw, draw, y, x) repaint_cell(dw, draw, y, x) + +static void +repaint_shadow(DIALOG_WINDOWS * dw, bool draw, int y, int x, int height, int width) +{ + int i, j; + + if (UseShadow(dw)) { +#if !USE_WCHGAT + chtype save = dlg_get_attrs(dw->shadow); + dlg_attrset(dw->shadow, draw ? shadow_attr : screen_attr); +#endif + for (i = 0; i < SHADOW_ROWS; ++i) { + for (j = 0; j < width; ++j) { + RepaintCell(dw, draw, i + y + height, j + x + SHADOW_COLS); + } + } + for (i = 0; i < height; i++) { + for (j = 0; j < SHADOW_COLS; ++j) { + RepaintCell(dw, draw, i + y + SHADOW_ROWS, j + x + width); + } + } + (void) wnoutrefresh(dw->shadow); +#if !USE_WCHGAT + dlg_attrset(dw->shadow, save); +#endif + } +} + +/* + * Draw a shadow on the parent window corresponding to the right- and + * bottom-edge of the child window, to give a 3-dimensional look. + */ +static void +draw_childs_shadow(DIALOG_WINDOWS * dw) +{ + if (UseShadow(dw)) { + repaint_shadow(dw, + TRUE, + getbegy(dw->normal) - getbegy(dw->shadow), + getbegx(dw->normal) - getbegx(dw->shadow), + getmaxy(dw->normal), + getmaxx(dw->normal)); + } +} + +/* + * Erase a shadow on the parent window corresponding to the right- and + * bottom-edge of the child window. + */ +static void +erase_childs_shadow(DIALOG_WINDOWS * dw) +{ + if (UseShadow(dw)) { + repaint_shadow(dw, + FALSE, + getbegy(dw->normal) - getbegy(dw->shadow), + getbegx(dw->normal) - getbegx(dw->shadow), + getmaxy(dw->normal), + getmaxx(dw->normal)); + } +} + +/* + * Draw shadows along the right and bottom edge to give a more 3D look + * to the boxes. + */ +void +dlg_draw_shadow(WINDOW *win, int y, int x, int height, int width) +{ + repaint_shadow(find_window(win), TRUE, y, x, height, width); +} +#endif /* HAVE_COLOR */ + +/* + * Allow shell scripts to remap the exit codes so they can distinguish ESC + * from ERROR. + */ +void +dlg_exit(int code) +{ + /* *INDENT-OFF* */ + static const struct { + int code; + const char *name; + } table[] = { + { DLG_EXIT_CANCEL, "DIALOG_CANCEL" }, + { DLG_EXIT_ERROR, "DIALOG_ERROR" }, + { DLG_EXIT_ESC, "DIALOG_ESC" }, + { DLG_EXIT_EXTRA, "DIALOG_EXTRA" }, + { DLG_EXIT_HELP, "DIALOG_HELP" }, + { DLG_EXIT_OK, "DIALOG_OK" }, + { DLG_EXIT_ITEM_HELP, "DIALOG_ITEM_HELP" }, + }; + /* *INDENT-ON* */ + + unsigned n; + char *name; + char *temp; + long value; + bool overridden = FALSE; + + retry: + for (n = 0; n < sizeof(table) / sizeof(table[0]); n++) { + if (table[n].code == code) { + if ((name = getenv(table[n].name)) != 0) { + value = strtol(name, &temp, 0); + if (temp != 0 && temp != name && *temp == '\0') { + code = (int) value; + overridden = TRUE; + } + } + break; + } + } + + /* + * Prior to 2004/12/19, a widget using --item-help would exit with "OK" + * if the help button were selected. Now we want to exit with "HELP", + * but allow the environment variable to override. + */ + if (code == DLG_EXIT_ITEM_HELP && !overridden) { + code = DLG_EXIT_HELP; + goto retry; + } +#ifdef HAVE_DLG_TRACE + dlg_trace((const char *) 0); /* close it */ +#endif + +#ifdef NO_LEAKS + _dlg_inputstr_leaks(); +#if defined(NCURSES_VERSION) && defined(HAVE__NC_FREE_AND_EXIT) + _nc_free_and_exit(code); +#endif +#endif + + if (dialog_state.input == stdin) { + exit(code); + } else { + /* + * Just in case of using --input-fd option, do not + * call atexit functions of ncurses which may hang. + */ + if (dialog_state.input) { + fclose(dialog_state.input); + dialog_state.input = 0; + } + if (dialog_state.pipe_input) { + if (dialog_state.pipe_input != stdin) { + fclose(dialog_state.pipe_input); + dialog_state.pipe_input = 0; + } + } + _exit(code); + } +} + +/* quit program killing all tailbg */ +void +dlg_exiterr(const char *fmt,...) +{ + int retval; + va_list ap; + + end_dialog(); + + (void) fputc('\n', stderr); + va_start(ap, fmt); + (void) vfprintf(stderr, fmt, ap); + va_end(ap); + (void) fputc('\n', stderr); + + dlg_killall_bg(&retval); + + (void) fflush(stderr); + (void) fflush(stdout); + dlg_exit(DLG_EXIT_ERROR); +} + +void +dlg_beeping(void) +{ + if (dialog_vars.beep_signal) { + (void) beep(); + dialog_vars.beep_signal = 0; + } +} + +void +dlg_print_size(int height, int width) +{ + if (dialog_vars.print_siz) { + fprintf(dialog_state.output, "Size: %d, %d\n", height, width); + DLG_TRACE(("# print size: %dx%d\n", height, width)); + } +} + +void +dlg_ctl_size(int height, int width) +{ + if (dialog_vars.size_err) { + if ((width > COLS) || (height > LINES)) { + dlg_exiterr("Window too big. (height, width) = (%d, %d). Max allowed (%d, %d).", + height, width, LINES, COLS); + } +#ifdef HAVE_COLOR + else if ((dialog_state.use_shadow) + && ((width > SCOLS || height > SLINES))) { + if ((width <= COLS) && (height <= LINES)) { + /* try again, without shadows */ + dialog_state.use_shadow = 0; + } else { + dlg_exiterr("Window+Shadow too big. (height, width) = (%d, %d). Max allowed (%d, %d).", + height, width, SLINES, SCOLS); + } + } +#endif + } +} + +/* + * If the --tab-correct was not selected, convert tabs to single spaces. + */ +void +dlg_tab_correct_str(char *prompt) +{ + char *ptr; + + if (dialog_vars.tab_correct) { + while ((ptr = strchr(prompt, TAB)) != NULL) { + *ptr = ' '; + prompt = ptr; + } + } +} + +void +dlg_calc_listh(int *height, int *list_height, int item_no) +{ + /* calculate new height and list_height */ + int rows = SLINES - (dialog_vars.begin_set ? dialog_vars.begin_y : 0); + if (rows - (*height) > 0) { + if (rows - (*height) > item_no) + *list_height = item_no; + else + *list_height = rows - (*height); + } + (*height) += (*list_height); +} + +/* obsolete */ +int +dlg_calc_listw(int item_no, char **items, int group) +{ + int n, i, len1 = 0, len2 = 0; + for (i = 0; i < (item_no * group); i += group) { + if ((n = dlg_count_columns(items[i])) > len1) + len1 = n; + if ((n = dlg_count_columns(items[i + 1])) > len2) + len2 = n; + } + return len1 + len2; +} + +int +dlg_calc_list_width(int item_no, DIALOG_LISTITEM * items) +{ + int n, i, len1 = 0, len2 = 0; + int bits = ((dialog_vars.no_tags ? 1 : 0) + + (dialog_vars.no_items ? 2 : 0)); + + for (i = 0; i < item_no; ++i) { + switch (bits) { + case 0: + /* FALLTHRU */ + case 1: + if ((n = dlg_count_columns(items[i].name)) > len1) + len1 = n; + if ((n = dlg_count_columns(items[i].text)) > len2) + len2 = n; + break; + case 2: + /* FALLTHRU */ + case 3: + if ((n = dlg_count_columns(items[i].name)) > len1) + len1 = n; + break; + } + } + return len1 + len2; +} + +char * +dlg_strempty(void) +{ + static char empty[] = ""; + return empty; +} + +char * +dlg_strclone(const char *cprompt) +{ + char *prompt = 0; + if (cprompt != 0) { + prompt = dlg_malloc(char, strlen(cprompt) + 1); + assert_ptr(prompt, "dlg_strclone"); + strcpy(prompt, cprompt); + } + return prompt; +} + +chtype +dlg_asciibox(chtype ch) +{ + chtype result = 0; + + if (ch == ACS_ULCORNER) + result = '+'; + else if (ch == ACS_LLCORNER) + result = '+'; + else if (ch == ACS_URCORNER) + result = '+'; + else if (ch == ACS_LRCORNER) + result = '+'; + else if (ch == ACS_HLINE) + result = '-'; + else if (ch == ACS_VLINE) + result = '|'; + else if (ch == ACS_LTEE) + result = '+'; + else if (ch == ACS_RTEE) + result = '+'; + else if (ch == ACS_UARROW) + result = '^'; + else if (ch == ACS_DARROW) + result = 'v'; + + return result; +} + +chtype +dlg_boxchar(chtype ch) +{ + chtype result = dlg_asciibox(ch); + + if (result != 0) { + if (dialog_vars.ascii_lines) + ch = result; + else if (dialog_vars.no_lines) + ch = ' '; + } + return ch; +} + +int +dlg_box_x_ordinate(int width) +{ + int x; + + if (dialog_vars.begin_set == 1) { + x = dialog_vars.begin_x; + } else { + /* center dialog box on screen unless --begin-set */ + x = (SCOLS - width) / 2; + } + return x; +} + +int +dlg_box_y_ordinate(int height) +{ + int y; + + if (dialog_vars.begin_set == 1) { + y = dialog_vars.begin_y; + } else { + /* center dialog box on screen unless --begin-set */ + y = (SLINES - height) / 2; + } + return y; +} + +void +dlg_draw_title(WINDOW *win, const char *title) +{ + if (title != NULL) { + chtype attr = A_NORMAL; + chtype save = dlg_get_attrs(win); + int x = centered(getmaxx(win), title); + + dlg_attrset(win, title_attr); + wmove(win, 0, x); + dlg_print_text(win, title, getmaxx(win) - x, &attr); + dlg_attrset(win, save); + dlg_finish_string(title); + } +} + +void +dlg_draw_bottom_box2(WINDOW *win, chtype on_left, chtype on_right, chtype on_inside) +{ + int width = getmaxx(win); + int height = getmaxy(win); + int i; + + dlg_attrset(win, on_left); + (void) wmove(win, height - 3, 0); + (void) waddch(win, dlg_boxchar(ACS_LTEE)); + for (i = 0; i < width - 2; i++) + (void) waddch(win, dlg_boxchar(ACS_HLINE)); + dlg_attrset(win, on_right); + (void) waddch(win, dlg_boxchar(ACS_RTEE)); + dlg_attrset(win, on_inside); + (void) wmove(win, height - 2, 1); + for (i = 0; i < width - 2; i++) + (void) waddch(win, ' '); +} + +void +dlg_draw_bottom_box(WINDOW *win) +{ + dlg_draw_bottom_box2(win, border_attr, dialog_attr, dialog_attr); +} + +/* + * Remove a window, repainting everything else. This would be simpler if we + * used the panel library, but that is not _always_ available. + */ +void +dlg_del_window(WINDOW *win) +{ + DIALOG_WINDOWS *p, *q, *r; + + /* + * If --keep-window was set, do not delete/repaint the windows. + */ + if (dialog_vars.keep_window) + return; + + /* Leave the main window untouched if there are no background windows. + * We do this so the current window will not be cleared on exit, allowing + * things like the infobox demo to run without flicker. + */ + if (dialog_state.getc_callbacks != 0) { + touchwin(stdscr); + wnoutrefresh(stdscr); + } + + for (p = dialog_state.all_windows, q = r = 0; p != 0; r = p, p = p->next) { + if (p->normal == win) { + q = p; /* found a match - should be only one */ + if (r == 0) { + dialog_state.all_windows = p->next; + } else { + r->next = p->next; + } + } else { + if (p->shadow != 0) { + touchwin(p->shadow); + wnoutrefresh(p->shadow); + } + touchwin(p->normal); + wnoutrefresh(p->normal); + } + } + + if (q) { + if (dialog_state.all_windows != 0) + erase_childs_shadow(q); + del_subwindows(q->normal); + dlg_unregister_window(q->normal); + delwin(q->normal); + free(q); + } + doupdate(); +} + +/* + * Create a window, optionally with a shadow. + */ +WINDOW * +dlg_new_window(int height, int width, int y, int x) +{ + return dlg_new_modal_window(stdscr, height, width, y, x); +} + +/* + * "Modal" windows differ from normal ones by having a shadow in a window + * separate from the standard screen. + */ +WINDOW * +dlg_new_modal_window(WINDOW *parent, int height, int width, int y, int x) +{ + WINDOW *win; + DIALOG_WINDOWS *p = dlg_calloc(DIALOG_WINDOWS, 1); + + (void) parent; + if (p == 0 + || (win = newwin(height, width, y, x)) == 0) { + dlg_exiterr("Can't make new window at (%d,%d), size (%d,%d).\n", + y, x, height, width); + } + p->next = dialog_state.all_windows; + p->normal = win; + dialog_state.all_windows = p; +#ifdef HAVE_COLOR + if (dialog_state.use_shadow) { + p->shadow = parent; + draw_childs_shadow(p); + } +#endif + + (void) keypad(win, TRUE); + return win; +} + +/* + * Move/Resize a window, optionally with a shadow. + */ +#ifdef KEY_RESIZE +void +dlg_move_window(WINDOW *win, int height, int width, int y, int x) +{ + DIALOG_WINDOWS *p; + + if (win != 0) { + dlg_ctl_size(height, width); + + if ((p = find_window(win)) != 0) { + (void) wresize(win, height, width); + (void) mvwin(win, y, x); +#ifdef HAVE_COLOR + if (p->shadow != 0) { + if (dialog_state.use_shadow) { + (void) mvwin(p->shadow, y + SHADOW_ROWS, x + SHADOW_COLS); + } else { + p->shadow = 0; + } + } +#endif + (void) refresh(); + +#ifdef HAVE_COLOR + draw_childs_shadow(p); +#endif + } + } +} + +/* + * Having just received a KEY_RESIZE, wait a short time to ignore followup + * KEY_RESIZE events. + */ +void +dlg_will_resize(WINDOW *win) +{ + int n, ch, base; + int caught = 0; + + dlg_trace_win(win); + wtimeout(win, 20); + for (n = base = 0; n < base + 10; ++n) { + if ((ch = wgetch(win)) != ERR) { + if (ch == KEY_RESIZE) { + base = n; + ++caught; + } else { + ungetch(ch); + break; + } + } + } + dlg_trace_msg("# caught %d KEY_RESIZE key%s\n", + 1 + caught, + caught == 1 ? "" : "s"); +} +#endif /* KEY_RESIZE */ + +WINDOW * +dlg_sub_window(WINDOW *parent, int height, int width, int y, int x) +{ + WINDOW *win; + + if ((win = subwin(parent, height, width, y, x)) == 0) { + dlg_exiterr("Can't make sub-window at (%d,%d), size (%d,%d).\n", + y, x, height, width); + } + + add_subwindow(parent, win); + (void) keypad(win, TRUE); + return win; +} + +/* obsolete */ +int +dlg_default_item(char **items, int llen) +{ + int result = 0; + + if (dialog_vars.default_item != 0) { + int count = 0; + while (*items != 0) { + if (!strcmp(dialog_vars.default_item, *items)) { + result = count; + break; + } + items += llen; + count++; + } + } + return result; +} + +int +dlg_default_listitem(DIALOG_LISTITEM * items) +{ + int result = 0; + + if (dialog_vars.default_item != 0) { + int count = 0; + while (items->name != 0) { + if (!strcmp(dialog_vars.default_item, items->name)) { + result = count; + break; + } + ++items; + count++; + } + } + return result; +} + +/* + * Draw the string for item_help + */ +void +dlg_item_help(const char *txt) +{ + if (USE_ITEM_HELP(txt)) { + chtype attr = A_NORMAL; + int y, x; + + dlg_attrset(stdscr, itemhelp_attr); + (void) wmove(stdscr, LINES - 1, 0); + (void) wclrtoeol(stdscr); + (void) addch(' '); + dlg_print_text(stdscr, txt, COLS - 1, &attr); + if (itemhelp_attr & A_COLOR) { + /* fill the remainder of the line with the window's attributes */ + getyx(stdscr, y, x); + (void) y; + while (x < COLS) { + (void) addch(' '); + ++x; + } + } + (void) wnoutrefresh(stdscr); + } +} + +#ifndef HAVE_STRCASECMP +int +dlg_strcmp(const char *a, const char *b) +{ + int ac, bc, cmp; + + for (;;) { + ac = UCH(*a++); + bc = UCH(*b++); + if (isalpha(ac) && islower(ac)) + ac = _toupper(ac); + if (isalpha(bc) && islower(bc)) + bc = _toupper(bc); + cmp = ac - bc; + if (ac == 0 || bc == 0 || cmp != 0) + break; + } + return cmp; +} +#endif + +/* + * Returns true if 'dst' points to a blank which follows another blank which + * is not a leading blank on a line. + */ +static bool +trim_blank(char *base, char *dst) +{ + int count = isblank(UCH(*dst)); + + while (dst-- != base) { + if (*dst == '\n') { + break; + } else if (isblank(UCH(*dst))) { + count++; + } else { + break; + } + } + return (count > 1); +} + +/* + * Change embedded "\n" substrings to '\n' characters and tabs to single + * spaces. If there are no "\n"s, it will strip all extra spaces, for + * justification. If it has "\n"'s, it will preserve extra spaces. If cr_wrap + * is set, it will preserve '\n's. + */ +void +dlg_trim_string(char *s) +{ + char *base = s; + char *p1; + char *p = s; + int has_newlines = !dialog_vars.no_nl_expand && (strstr(s, "\\n") != 0); + + while (*p != '\0') { + if (*p == TAB && !dialog_vars.nocollapse) + *p = ' '; + + if (has_newlines) { /* If prompt contains "\n" strings */ + if (*p == '\\' && *(p + 1) == 'n') { + *s++ = '\n'; + p += 2; + p1 = p; + /* + * Handle end of lines intelligently. If '\n' follows "\n" + * then ignore the '\n'. This eliminates the need to escape + * the '\n' character (no need to use "\n\"). + */ + while (isblank(UCH(*p1))) + p1++; + if (*p1 == '\n') + p = p1 + 1; + } else if (*p == '\n') { + if (dialog_vars.cr_wrap) + *s++ = *p++; + else { + /* Replace the '\n' with a space if cr_wrap is not set */ + if (!trim_blank(base, p)) + *s++ = ' '; + p++; + } + } else /* If *p != '\n' */ + *s++ = *p++; + } else if (dialog_vars.trim_whitespace) { + if (isblank(UCH(*p))) { + if (!isblank(UCH(*(s - 1)))) { + *s++ = ' '; + p++; + } else + p++; + } else if (*p == '\n') { + if (dialog_vars.cr_wrap) + *s++ = *p++; + else if (!isblank(UCH(*(s - 1)))) { + /* Strip '\n's if cr_wrap is not set. */ + *s++ = ' '; + p++; + } else + p++; + } else + *s++ = *p++; + } else { /* If there are no "\n" strings */ + if (isblank(UCH(*p)) && !dialog_vars.nocollapse) { + if (!trim_blank(base, p)) + *s++ = *p; + p++; + } else + *s++ = *p++; + } + } + + *s = '\0'; +} + +void +dlg_set_focus(WINDOW *parent, WINDOW *win) +{ + if (win != 0) { + (void) wmove(parent, + getpary(win) + getcury(win), + getparx(win) + getcurx(win)); + (void) wnoutrefresh(win); + (void) doupdate(); + } +} + +/* + * Returns the nominal maximum buffer size. + */ +int +dlg_max_input(int max_len) +{ + if (dialog_vars.max_input != 0 && dialog_vars.max_input < MAX_LEN) + max_len = dialog_vars.max_input; + + return max_len; +} + +/* + * Free storage used for the result buffer. + */ +void +dlg_clr_result(void) +{ + if (dialog_vars.input_length) { + dialog_vars.input_length = 0; + if (dialog_vars.input_result) + free(dialog_vars.input_result); + } + dialog_vars.input_result = 0; +} + +/* + * Setup a fixed-buffer for the result. + */ +char * +dlg_set_result(const char *string) +{ + unsigned need = string ? (unsigned) strlen(string) + 1 : 0; + + /* inputstr.c needs a fixed buffer */ + if (need < MAX_LEN) + need = MAX_LEN; + + /* + * If the buffer is not big enough, allocate a new one. + */ + if (dialog_vars.input_length != 0 + || dialog_vars.input_result == 0 + || need > MAX_LEN) { + + dlg_clr_result(); + + dialog_vars.input_length = need; + dialog_vars.input_result = dlg_malloc(char, need); + assert_ptr(dialog_vars.input_result, "dlg_set_result"); + } + + strcpy(dialog_vars.input_result, string ? string : ""); + + return dialog_vars.input_result; +} + +/* + * Accumulate results in dynamically allocated buffer. + * If input_length is zero, it is a MAX_LEN buffer belonging to the caller. + */ +void +dlg_add_result(const char *string) +{ + unsigned have = (dialog_vars.input_result + ? (unsigned) strlen(dialog_vars.input_result) + : 0); + unsigned want = (unsigned) strlen(string) + 1 + have; + + if ((want >= MAX_LEN) + || (dialog_vars.input_length != 0) + || (dialog_vars.input_result == 0)) { + + if (dialog_vars.input_length == 0 + || dialog_vars.input_result == 0) { + + char *save_result = dialog_vars.input_result; + + dialog_vars.input_length = want * 2; + dialog_vars.input_result = dlg_malloc(char, dialog_vars.input_length); + assert_ptr(dialog_vars.input_result, "dlg_add_result malloc"); + dialog_vars.input_result[0] = '\0'; + if (save_result != 0) + strcpy(dialog_vars.input_result, save_result); + } else if (want >= dialog_vars.input_length) { + dialog_vars.input_length = want * 2; + dialog_vars.input_result = dlg_realloc(char, + dialog_vars.input_length, + dialog_vars.input_result); + assert_ptr(dialog_vars.input_result, "dlg_add_result realloc"); + } + } + strcat(dialog_vars.input_result, string); +} + +/* + * These are characters that (aside from the quote-delimiter) will have to + * be escaped in a single- or double-quoted string. + */ +#define FIX_SINGLE "\n\\" +#define FIX_DOUBLE FIX_SINGLE "[]{}?*;`~#$^&()|<>" + +/* + * Returns the quote-delimiter. + */ +static const char * +quote_delimiter(void) +{ + return dialog_vars.single_quoted ? "'" : "\""; +} + +/* + * Returns true if we should quote the given string. + */ +static bool +must_quote(char *string) +{ + bool code = FALSE; + + if (*string != '\0') { + size_t len = strlen(string); + if (strcspn(string, quote_delimiter()) != len) + code = TRUE; + else if (strcspn(string, "\n\t ") != len) + code = TRUE; + else + code = (strcspn(string, FIX_DOUBLE) != len); + } else { + code = TRUE; + } + + return code; +} + +/* + * Add a quoted string to the result buffer. + */ +void +dlg_add_quoted(char *string) +{ + char temp[2]; + const char *my_quote = quote_delimiter(); + const char *must_fix = (dialog_vars.single_quoted + ? FIX_SINGLE + : FIX_DOUBLE); + + if (must_quote(string)) { + temp[1] = '\0'; + dlg_add_result(my_quote); + while (*string != '\0') { + temp[0] = *string++; + if ((strchr) (my_quote, *temp) || (strchr) (must_fix, *temp)) + dlg_add_result("\\"); + dlg_add_result(temp); + } + dlg_add_result(my_quote); + } else { + dlg_add_result(string); + } +} + +/* + * When adding a result, make that depend on whether "--quoted" is used. + */ +void +dlg_add_string(char *string) +{ + if (dialog_vars.quoted) { + dlg_add_quoted(string); + } else { + dlg_add_result(string); + } +} + +bool +dlg_need_separator(void) +{ + bool result = FALSE; + + if (dialog_vars.output_separator) { + result = TRUE; + } else if (dialog_vars.input_result && *(dialog_vars.input_result)) { + result = TRUE; + } + return result; +} + +void +dlg_add_separator(void) +{ + const char *separator = (dialog_vars.separate_output) ? "\n" : " "; + + if (dialog_vars.output_separator) + separator = dialog_vars.output_separator; + + dlg_add_result(separator); +} + +#define HELP_PREFIX "HELP " + +void +dlg_add_help_listitem(int *result, char **tag, DIALOG_LISTITEM * item) +{ + dlg_add_result(HELP_PREFIX); + if (USE_ITEM_HELP(item->help)) { + *tag = dialog_vars.help_tags ? item->name : item->help; + *result = DLG_EXIT_ITEM_HELP; + } else { + *tag = item->name; + } +} + +void +dlg_add_help_formitem(int *result, char **tag, DIALOG_FORMITEM * item) +{ + dlg_add_result(HELP_PREFIX); + if (USE_ITEM_HELP(item->help)) { + *tag = dialog_vars.help_tags ? item->name : item->help; + *result = DLG_EXIT_ITEM_HELP; + } else { + *tag = item->name; + } +} + +/* + * Some widgets support only one value of a given variable - save/restore the + * global dialog_vars so we can override it consistently. + */ +void +dlg_save_vars(DIALOG_VARS * vars) +{ + *vars = dialog_vars; +} + +/* + * Most of the data in DIALOG_VARS is normally set by command-line options. + * The input_result member is an exception; it is normally set by the dialog + * library to return result values. + */ +void +dlg_restore_vars(DIALOG_VARS * vars) +{ + char *save_result = dialog_vars.input_result; + unsigned save_length = dialog_vars.input_length; + + dialog_vars = *vars; + dialog_vars.input_result = save_result; + dialog_vars.input_length = save_length; +} + +/* + * Called each time a widget is invoked which may do output, increment a count. + */ +void +dlg_does_output(void) +{ + dialog_state.output_count += 1; +} + +/* + * Compatibility for different versions of curses. + */ +#if !(defined(HAVE_GETBEGX) && defined(HAVE_GETBEGY)) +int +dlg_getbegx(WINDOW *win) +{ + int y, x; + getbegyx(win, y, x); + return x; +} +int +dlg_getbegy(WINDOW *win) +{ + int y, x; + getbegyx(win, y, x); + return y; +} +#endif + +#if !(defined(HAVE_GETCURX) && defined(HAVE_GETCURY)) +int +dlg_getcurx(WINDOW *win) +{ + int y, x; + getyx(win, y, x); + return x; +} +int +dlg_getcury(WINDOW *win) +{ + int y, x; + getyx(win, y, x); + return y; +} +#endif + +#if !(defined(HAVE_GETMAXX) && defined(HAVE_GETMAXY)) +int +dlg_getmaxx(WINDOW *win) +{ + int y, x; + getmaxyx(win, y, x); + return x; +} +int +dlg_getmaxy(WINDOW *win) +{ + int y, x; + getmaxyx(win, y, x); + return y; +} +#endif + +#if !(defined(HAVE_GETPARX) && defined(HAVE_GETPARY)) +int +dlg_getparx(WINDOW *win) +{ + int y, x; + getparyx(win, y, x); + return x; +} +int +dlg_getpary(WINDOW *win) +{ + int y, x; + getparyx(win, y, x); + return y; +} +#endif + +#ifdef NEED_WGETPARENT +WINDOW * +dlg_wgetparent(WINDOW *win) +{ +#undef wgetparent + WINDOW *result = 0; + DIALOG_WINDOWS *p; + + for (p = dialog_state.all_subwindows; p != 0; p = p->next) { + if (p->shadow == win) { + result = p->normal; + break; + } + } + return result; +} +#endif Index: vendor/dialog/1.3-20180621/yesno.c =================================================================== --- vendor/dialog/1.3-20180621/yesno.c (nonexistent) +++ vendor/dialog/1.3-20180621/yesno.c (revision 339483) @@ -0,0 +1,173 @@ +/* + * $Id: yesno.c,v 1.62 2018/06/19 22:57:01 tom Exp $ + * + * yesno.c -- implements the yes/no box + * + * Copyright 1999-2012,2018 Thomas E. Dickey + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License, version 2.1 + * as published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this program; if not, write to + * Free Software Foundation, Inc. + * 51 Franklin St., Fifth Floor + * Boston, MA 02110, USA. + * + * An earlier version of this program lists as authors + * Savio Lam (lam836@cs.cuhk.hk) + */ + +#include <dialog.h> +#include <dlg_keys.h> + +/* + * Display a dialog box with two buttons - Yes and No. + */ +int +dialog_yesno(const char *title, const char *cprompt, int height, int width) +{ + /* *INDENT-OFF* */ + static DLG_KEYS_BINDING binding[] = { + HELPKEY_BINDINGS, + ENTERKEY_BINDINGS, + SCROLLKEY_BINDINGS, + TRAVERSE_BINDINGS, + END_KEYS_BINDING + }; + /* *INDENT-ON* */ + + int x, y; + int key = 0, fkey; + int code; + int button = dlg_default_button(); + WINDOW *dialog = 0; + int result = DLG_EXIT_UNKNOWN; + char *prompt; + const char **buttons = dlg_yes_labels(); + int min_width = 25; + bool show = TRUE; + int page, last = 0, offset = 0; + +#ifdef KEY_RESIZE + int req_high = height; + int req_wide = width; +#endif + + DLG_TRACE(("# yesno args:\n")); + DLG_TRACE2S("title", title); + DLG_TRACE2S("message", cprompt); + DLG_TRACE2N("height", height); + DLG_TRACE2N("width", width); + +#ifdef KEY_RESIZE + restart: +#endif + prompt = dlg_strclone(cprompt); + dlg_tab_correct_str(prompt); + dlg_button_layout(buttons, &min_width); + dlg_auto_size(title, prompt, &height, &width, 2, min_width); + dlg_print_size(height, width); + dlg_ctl_size(height, width); + + x = dlg_box_x_ordinate(width); + y = dlg_box_y_ordinate(height); + +#ifdef KEY_RESIZE + if (dialog != 0) + dlg_move_window(dialog, height, width, y, x); + else +#endif + { + dialog = dlg_new_window(height, width, y, x); + dlg_register_window(dialog, "yesno", binding); + dlg_register_buttons(dialog, "yesno", buttons); + } + + dlg_draw_box2(dialog, 0, 0, height, width, dialog_attr, border_attr, border2_attr); + dlg_draw_bottom_box2(dialog, border_attr, border2_attr, dialog_attr); + dlg_draw_title(dialog, title); + dlg_draw_helpline(dialog, FALSE); + + dlg_attrset(dialog, dialog_attr); + + page = height - (1 + 3 * MARGIN); + dlg_draw_buttons(dialog, + height - 2 * MARGIN, 0, + buttons, button, FALSE, width); + + while (result == DLG_EXIT_UNKNOWN) { + if (show) { + last = dlg_print_scrolled(dialog, prompt, offset, + page, width, TRUE); + dlg_trace_win(dialog); + show = FALSE; + } + key = dlg_mouse_wgetch(dialog, &fkey); + if (dlg_result_key(key, fkey, &result)) + break; + if ((code = dlg_char_to_button(key, buttons)) >= 0) { + result = dlg_ok_buttoncode(code); + break; + } + /* handle function keys */ + if (fkey) { + switch (key) { + case DLGK_FIELD_NEXT: + button = dlg_next_button(buttons, button); + if (button < 0) + button = 0; + dlg_draw_buttons(dialog, + height - 2, 0, + buttons, button, + FALSE, width); + break; + case DLGK_FIELD_PREV: + button = dlg_prev_button(buttons, button); + if (button < 0) + button = 0; + dlg_draw_buttons(dialog, + height - 2, 0, + buttons, button, + FALSE, width); + break; + case DLGK_ENTER: + result = dlg_yes_buttoncode(button); + break; +#ifdef KEY_RESIZE + case KEY_RESIZE: + dlg_will_resize(dialog); + dlg_clear(); + free(prompt); + height = req_high; + width = req_wide; + show = TRUE; + goto restart; +#endif + default: + if (is_DLGK_MOUSE(key)) { + result = dlg_yes_buttoncode(key - M_EVENT); + if (result < 0) + result = DLG_EXIT_OK; + } else if (dlg_check_scrolled(key, last, page, + &show, &offset) != 0) { + beep(); + } + break; + } + } else { + beep(); + } + } + + dlg_del_window(dialog); + dlg_mouse_free_regions(); + free(prompt); + return result; +} Index: vendor/dialog/1.3-20180621/dialog-config.in =================================================================== --- vendor/dialog/1.3-20180621/dialog-config.in (nonexistent) +++ vendor/dialog/1.3-20180621/dialog-config.in (revision 339483) @@ -0,0 +1,136 @@ +#!@SHELL@ +# $Id: dialog-config.in,v 1.6 2012/10/06 14:29:45 tom Exp $ +############################################################################## +# Copyright (c) 2007-2011,2012 Thomas E. Dickey # +# # +# 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. # +############################################################################## + +prefix="@prefix@" +exec_prefix="@exec_prefix@" +datarootdir="@datarootdir@" + +bindir="@bindir@" +libdir="@libdir@" +datadir="@datadir@" +mandir="@mandir@" + +THIS="@PACKAGE@" + +test $# = 0 && exec @SHELL@ $0 --error + +while test $# -gt 0; do + case "$1" in + -*=*) + ARG=`echo "$1" | sed 's/[-_a-zA-Z0-9]*=//'` + ;; + *) + ARG= + ;; + esac + + case "$1" in + # basic configuration + --prefix=*) + prefix="$ARG" + test -z "$exec_prefix" && exec_prefix="$ARG" + ;; + --prefix) + echo "$prefix" + ;; + --exec-prefix=*) + exec_prefix="$ARG" + ;; + --exec-prefix) + echo "$exec_prefix" + ;; + # compile/link + --cflags) + INCS= + if test "${prefix}/include" != /usr/include ; then + INCS="-I${prefix}/include" + fi + sed -e 's,^[ ]*,,' -e 's, [ ]*, ,g' -e 's,[ ]*$,,' <<-ENDECHO + $INCS +ENDECHO + ;; + --libs) + sed -e 's,^[ ]*,,' -e 's, [ ]*, ,g' -e 's,[ ]*$,,' <<-ENDECHO + -L${exec_prefix}/lib -l${THIS} @LIBS@ +ENDECHO + ;; + # identification + --version) + echo "@VERSION_MAJOR@.@VERSION_MINOR@.@VERSION_PATCH@" + ;; + --abi-version) + echo "@VERSION@" | sed -e 's/:/./g' + ;; + # locations + --bindir) + echo "${bindir}" + ;; + --datadir) + echo "${datadir}" + ;; + --libdir) + echo "${libdir}" + ;; + --mandir) + echo "${mandir}" + ;; + # general info + --help) + cat <<ENDHELP +Usage: ${THIS}-config [options] + +Options: + --prefix echos the package-prefix of ${THIS} + --prefix=ARG sets the package-prefix of ${THIS} + --exec-prefix echos the executable-prefix of ${THIS} + --exec-prefix=ARG sets the executable-prefix of ${THIS} + + --cflags echos the C compiler flags needed to compile with ${THIS} + --libs echos the libraries needed to link with ${THIS} + + --version echos the release+patchdate version of ${THIS} + --abi-version echos the ABI version of ${THIS} + + --bindir echos the directory containing ${THIS} programs + --datadir echos the directory containing ${THIS} data + --libdir echos the directory containing ${THIS} libraries + --mandir echos the directory containing ${THIS} manpages + + --help prints this message +ENDHELP + ;; + --error|*) + @SHELL@ $0 --help 1>&2 + exit 1 + ;; + esac + shift +done +# vile:shmode Index: vendor/dialog/1.3-20180621/help.c =================================================================== --- vendor/dialog/1.3-20180621/help.c (nonexistent) +++ vendor/dialog/1.3-20180621/help.c (revision 339483) @@ -0,0 +1,54 @@ +/* + * $Id: help.c,v 1.3 2012/12/04 02:01:10 tom Exp $ + * + * help.c -- implements the help dialog + * + * Copyright 2011,2012 Thomas E. Dickey + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License, version 2.1 + * as published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this program; if not, write to + * Free Software Foundation, Inc. + * 51 Franklin St., Fifth Floor + * Boston, MA 02110, USA. + */ + +#include <dialog.h> + +/* + * Display a help-file as a textbox widget. + */ +int +dialog_helpfile(const char *title, + const char *file, + int height, + int width) +{ + int result = DLG_EXIT_ERROR; + DIALOG_VARS save; + + if (!dialog_vars.in_helpfile && file != 0 && *file != '\0') { + dlg_save_vars(&save); + + dialog_vars.no_label = NULL; + dialog_vars.ok_label = NULL; + dialog_vars.help_button = FALSE; + dialog_vars.extra_button = FALSE; + dialog_vars.nook = FALSE; + + dialog_vars.in_helpfile = TRUE; + + result = dialog_textbox(title, file, height, width); + + dlg_restore_vars(&save); + } + return (result); +} Index: vendor/dialog/1.3-20180621/rename.sh =================================================================== --- vendor/dialog/1.3-20180621/rename.sh (nonexistent) +++ vendor/dialog/1.3-20180621/rename.sh (revision 339483) @@ -0,0 +1,60 @@ +#! /bin/sh +# $Id: rename.sh,v 1.4 2012/12/19 10:17:36 tom Exp $ +############################################################################## +# Copyright (c) 2011,2012 Thomas E. Dickey # +# # +# 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. # +############################################################################## +# install-helper for dialog's manpages, e.g., as "cdialog". +# +# $1 = input file +# $2 = output file +# $3 = actual program name that dialog is installed as +# $4 = actual name that header/library are installed as +# $5+ = install program and possible options + +LANG=C; export LANG +LC_ALL=C; export LC_ALL +LC_CTYPE=C; export LC_CTYPE +LANGUAGE=C; export LANGUAGE + +SOURCE=$1; shift +TARGET=$1; shift +BINARY=$1; shift +PACKAGE=$1; shift + +CHR_LEAD=`echo "$BINARY" | sed -e 's/^\(.\).*/\1/'` +CHR_TAIL=`echo "$BINARY" | sed -e 's/^.//'` +ONE_CAPS=`echo $CHR_LEAD | tr '[a-z]' '[A-Z]'`$CHR_TAIL +ALL_CAPS=`echo "$BINARY" | tr '[a-z]' '[A-Z]'` + +sed -e "s,^\.ds p dialog\>,.ds p $BINARY," \ + -e "s,^\.ds l dialog\>,.ds l $PACKAGE," \ + -e "s,^\.ds L Dialog\>,.ds L $ONE_CAPS," \ + -e "s,^\.ds D DIALOG\>,.ds D $ALL_CAPS," \ + -e 's,^dialog \\- ,'"$PACKAGE"' \\- ,' \ + <$SOURCE >source.tmp +"$@" source.tmp $TARGET +rm -f source.tmp Property changes on: vendor/dialog/1.3-20180621/rename.sh ___________________________________________________________________ Added: svn:executable ## -0,0 +1 ## +* \ No newline at end of property Index: vendor/dialog/1.3-20180621/columns.c =================================================================== --- vendor/dialog/1.3-20180621/columns.c (nonexistent) +++ vendor/dialog/1.3-20180621/columns.c (revision 339483) @@ -0,0 +1,175 @@ +/* + * $Id: columns.c,v 1.10 2011/10/20 20:53:55 tom Exp $ + * + * columns.c -- implements column-alignment + * + * Copyright 2008-2010,2011 Thomas E. Dickey + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License, version 2.1 + * as published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this program; if not, write to + * Free Software Foundation, Inc. + * 51 Franklin St., Fifth Floor + * Boston, MA 02110, USA. + */ + +#include <dialog.h> + +#define each(row, data) \ + row = 0, data = target; \ + row < num_rows; \ + ++row, data = next_row(data, per_row) + +static char * +column_separator(void) +{ + char *result = 0; + + if ((result = dialog_vars.column_separator) != 0) { + if (*result == '\0') + result = 0; + } + return result; +} + +static char ** +next_row(char **target, int per_row) +{ + char *result = (char *) target; + result += per_row; + return (char **) (void *) result; +} + +static char * +next_col(char *source, unsigned offset) +{ + char *mark = column_separator(); + char *result = source + offset; + if (offset) + result += strlen(mark); + return strstr(result, mark); +} + +/* + * Parse the source string, storing the offsets and widths of each column in + * the corresponding arrays. Return the number of columns. + */ +static unsigned +split_row(char *source, unsigned *offsets, unsigned *widths) +{ + int mark = (int) strlen(column_separator()); + char *next = 0; + unsigned result = 0; + unsigned offset = 0; + + do { + if (result) { + offset = (unsigned) (mark + next - source); + widths[result - 1] = offset - offsets[result - 1] - (unsigned) mark; + } + offsets[result] = offset; + ++result; + } while ((next = next_col(source, offset)) != 0); + + offset = (unsigned) strlen(source); + widths[result - 1] = offset - offsets[result - 1]; + + return result; +} + +/* + * The caller passes a pointer to a struct or array containing pointers + * to strings that we may want to copy and reformat according to the column + * separator. + */ +void +dlg_align_columns(char **target, int per_row, int num_rows) +{ + int row; + + if (column_separator()) { + char **value; + unsigned numcols = 1; + size_t maxcols = 0; + unsigned *widths; + unsigned *offsets; + unsigned *maxwidth; + unsigned realwidth; + unsigned n; + + /* first allocate arrays for workspace */ + for (each(row, value)) { + size_t len = strlen(*value); + if (maxcols < len) + maxcols = len; + } + ++maxcols; + widths = dlg_calloc(unsigned, maxcols); + offsets = dlg_calloc(unsigned, maxcols); + maxwidth = dlg_calloc(unsigned, maxcols); + + assert_ptr(widths, "dlg_align_columns"); + assert_ptr(offsets, "dlg_align_columns"); + assert_ptr(maxwidth, "dlg_align_columns"); + + /* now, determine the number of columns and the column-widths */ + for (each(row, value)) { + unsigned cols = split_row(*value, offsets, widths); + if (numcols < cols) + numcols = cols; + for (n = 0; n < cols; ++n) { + if (maxwidth[n] < widths[n]) + maxwidth[n] = widths[n]; + } + } + realwidth = numcols - 1; + for (n = 0; n < numcols; ++n) { + realwidth += maxwidth[n]; + } + + /* finally, construct reformatted strings */ + for (each(row, value)) { + unsigned cols = split_row(*value, offsets, widths); + unsigned offset = 0; + char *text = dlg_malloc(char, realwidth + 1); + + assert_ptr(text, "dlg_align_columns"); + + memset(text, ' ', (size_t) realwidth); + for (n = 0; n < cols; ++n) { + memcpy(text + offset, *value + offsets[n], (size_t) widths[n]); + offset += maxwidth[n] + 1; + } + text[realwidth] = 0; + *value = text; + } + + free(widths); + free(offsets); + free(maxwidth); + } +} + +/* + * Free temporary storage used while making column-aligned data. + */ +void +dlg_free_columns(char **target, int per_row, int num_rows) +{ + int row; + char **value; + + if (column_separator()) { + for (each(row, value)) { + free(*value); + } + } +} Index: vendor/dialog/1.3-20180621/dlg_colors.h =================================================================== --- vendor/dialog/1.3-20180621/dlg_colors.h (nonexistent) +++ vendor/dialog/1.3-20180621/dlg_colors.h (revision 339483) @@ -0,0 +1,202 @@ +/* + * $Id: dlg_colors.h,v 1.17 2011/10/14 21:19:59 tom Exp $ + * + * colors.h -- color attribute definitions + * + * Copyright 2000-2007,2011 Thomas E. Dickey + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License, version 2.1 + * as published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this program; if not, write to + * Free Software Foundation, Inc. + * 51 Franklin St., Fifth Floor + * Boston, MA 02110, USA. + * + * An earlier version of this program lists as authors + * Savio Lam (lam836@cs.cuhk.hk) + */ + +#ifndef COLORS_H_included +#define COLORS_H_included 1 + +#include <dialog.h> + +/* + * Default color definitions (DLGC means "Dialog Color") + * + * DLGC_FG_xxx = foreground for "xxx" + * DLGC_BG_xxx = background for "xxx" + * DLGC_HL_xxx = highlight for "xxx" + */ +#define DLGC_FG_SCREEN COLOR_CYAN +#define DLGC_BG_SCREEN COLOR_BLUE +#define DLGC_HL_SCREEN TRUE + +#define DLGC_FG_SHADOW COLOR_BLACK +#define DLGC_BG_SHADOW COLOR_BLACK +#define DLGC_HL_SHADOW TRUE + +#define DLGC_FG_DIALOG COLOR_BLACK +#define DLGC_BG_DIALOG COLOR_WHITE +#define DLGC_HL_DIALOG FALSE + +#define DLGC_FG_TITLE COLOR_BLUE +#define DLGC_BG_TITLE COLOR_WHITE +#define DLGC_HL_TITLE TRUE + +#define DLGC_FG_BORDER COLOR_WHITE +#define DLGC_BG_BORDER COLOR_WHITE +#define DLGC_HL_BORDER TRUE + +#define DLGC_FG_BORDER2 DLGC_FG_DIALOG +#define DLGC_BG_BORDER2 DLGC_BG_DIALOG +#define DLGC_HL_BORDER2 DLGC_HL_DIALOG + +#define DLGC_FG_BUTTON_ACTIVE COLOR_WHITE +#define DLGC_BG_BUTTON_ACTIVE COLOR_BLUE +#define DLGC_HL_BUTTON_ACTIVE TRUE + +#define DLGC_FG_BUTTON_INACTIVE COLOR_BLACK +#define DLGC_BG_BUTTON_INACTIVE COLOR_WHITE +#define DLGC_HL_BUTTON_INACTIVE FALSE + +#define DLGC_FG_BUTTON_KEY_ACTIVE COLOR_WHITE +#define DLGC_BG_BUTTON_KEY_ACTIVE COLOR_BLUE +#define DLGC_HL_BUTTON_KEY_ACTIVE TRUE + +#define DLGC_FG_BUTTON_KEY_INACTIVE COLOR_RED +#define DLGC_BG_BUTTON_KEY_INACTIVE COLOR_WHITE +#define DLGC_HL_BUTTON_KEY_INACTIVE FALSE + +#define DLGC_FG_BUTTON_LABEL_ACTIVE COLOR_YELLOW +#define DLGC_BG_BUTTON_LABEL_ACTIVE COLOR_BLUE +#define DLGC_HL_BUTTON_LABEL_ACTIVE TRUE + +#define DLGC_FG_BUTTON_LABEL_INACTIVE COLOR_BLACK +#define DLGC_BG_BUTTON_LABEL_INACTIVE COLOR_WHITE +#define DLGC_HL_BUTTON_LABEL_INACTIVE TRUE + +#define DLGC_FG_FORM_ITEM_READONLY COLOR_CYAN +#define DLGC_BG_FORM_ITEM_READONLY COLOR_WHITE +#define DLGC_HL_FORM_ITEM_READONLY TRUE + +#define DLGC_FG_INPUTBOX COLOR_BLACK +#define DLGC_BG_INPUTBOX COLOR_WHITE +#define DLGC_HL_INPUTBOX FALSE + +#define DLGC_FG_INPUTBOX_BORDER COLOR_BLACK +#define DLGC_BG_INPUTBOX_BORDER COLOR_WHITE +#define DLGC_HL_INPUTBOX_BORDER FALSE + +#define DLGC_FG_INPUTBOX_BORDER2 DLGC_FG_INPUTBOX +#define DLGC_BG_INPUTBOX_BORDER2 DLGC_BG_INPUTBOX +#define DLGC_HL_INPUTBOX_BORDER2 DLGC_HL_INPUTBOX + +#define DLGC_FG_SEARCHBOX COLOR_BLACK +#define DLGC_BG_SEARCHBOX COLOR_WHITE +#define DLGC_HL_SEARCHBOX FALSE + +#define DLGC_FG_SEARCHBOX_TITLE COLOR_BLUE +#define DLGC_BG_SEARCHBOX_TITLE COLOR_WHITE +#define DLGC_HL_SEARCHBOX_TITLE TRUE + +#define DLGC_FG_SEARCHBOX_BORDER COLOR_WHITE +#define DLGC_BG_SEARCHBOX_BORDER COLOR_WHITE +#define DLGC_HL_SEARCHBOX_BORDER TRUE + +#define DLGC_FG_SEARCHBOX_BORDER2 DLGC_FG_SEARCHBOX +#define DLGC_BG_SEARCHBOX_BORDER2 DLGC_BG_SEARCHBOX +#define DLGC_HL_SEARCHBOX_BORDER2 DLGC_HL_SEARCHBOX + +#define DLGC_FG_POSITION_INDICATOR COLOR_BLUE +#define DLGC_BG_POSITION_INDICATOR COLOR_WHITE +#define DLGC_HL_POSITION_INDICATOR TRUE + +#define DLGC_FG_MENUBOX COLOR_BLACK +#define DLGC_BG_MENUBOX COLOR_WHITE +#define DLGC_HL_MENUBOX FALSE + +#define DLGC_FG_MENUBOX_BORDER COLOR_WHITE +#define DLGC_BG_MENUBOX_BORDER COLOR_WHITE +#define DLGC_HL_MENUBOX_BORDER TRUE + +#define DLGC_FG_MENUBOX_BORDER2 DLGC_FG_MENUBOX +#define DLGC_BG_MENUBOX_BORDER2 DLGC_BG_MENUBOX +#define DLGC_HL_MENUBOX_BORDER2 DLGC_HL_MENUBOX + +#define DLGC_FG_ITEM COLOR_BLACK +#define DLGC_BG_ITEM COLOR_WHITE +#define DLGC_HL_ITEM FALSE + +#define DLGC_FG_ITEM_SELECTED COLOR_WHITE +#define DLGC_BG_ITEM_SELECTED COLOR_BLUE +#define DLGC_HL_ITEM_SELECTED TRUE + +#define DLGC_FG_TAG COLOR_BLUE +#define DLGC_BG_TAG COLOR_WHITE +#define DLGC_HL_TAG TRUE + +#define DLGC_FG_TAG_SELECTED COLOR_YELLOW +#define DLGC_BG_TAG_SELECTED COLOR_BLUE +#define DLGC_HL_TAG_SELECTED TRUE + +#define DLGC_FG_TAG_KEY COLOR_RED +#define DLGC_BG_TAG_KEY COLOR_WHITE +#define DLGC_HL_TAG_KEY FALSE + +#define DLGC_FG_TAG_KEY_SELECTED COLOR_RED +#define DLGC_BG_TAG_KEY_SELECTED COLOR_BLUE +#define DLGC_HL_TAG_KEY_SELECTED TRUE + +#define DLGC_FG_CHECK COLOR_BLACK +#define DLGC_BG_CHECK COLOR_WHITE +#define DLGC_HL_CHECK FALSE + +#define DLGC_FG_CHECK_SELECTED COLOR_WHITE +#define DLGC_BG_CHECK_SELECTED COLOR_BLUE +#define DLGC_HL_CHECK_SELECTED TRUE + +#define DLGC_FG_UARROW COLOR_GREEN +#define DLGC_BG_UARROW COLOR_WHITE +#define DLGC_HL_UARROW TRUE + +#define DLGC_FG_DARROW COLOR_GREEN +#define DLGC_BG_DARROW COLOR_WHITE +#define DLGC_HL_DARROW TRUE + +#define DLGC_FG_ITEMHELP COLOR_WHITE +#define DLGC_BG_ITEMHELP COLOR_BLACK +#define DLGC_HL_ITEMHELP FALSE + +#define DLGC_FG_FORM_ACTIVE_TEXT COLOR_WHITE +#define DLGC_BG_FORM_ACTIVE_TEXT COLOR_BLUE +#define DLGC_HL_FORM_ACTIVE_TEXT TRUE + +#define DLGC_FG_FORM_TEXT COLOR_WHITE +#define DLGC_BG_FORM_TEXT COLOR_CYAN +#define DLGC_HL_FORM_TEXT TRUE + +#define DLGC_FG_GAUGE COLOR_BLUE +#define DLGC_BG_GAUGE COLOR_WHITE +#define DLGC_HL_GAUGE TRUE + +/* End of default color definitions */ + +/* + * Global variables + */ + +typedef struct { + const char *name; + int value; +} color_names_st; + +#endif /* COLORS_H_included */ Index: vendor/dialog/1.3-20180621/headers-sh.in =================================================================== --- vendor/dialog/1.3-20180621/headers-sh.in (nonexistent) +++ vendor/dialog/1.3-20180621/headers-sh.in (revision 339483) @@ -0,0 +1,199 @@ +#! /bin/sh +# $Id: headers-sh.in,v 1.11 2011/10/18 23:49:13 tom Exp $ +############################################################################## +# Copyright (c) 2004-2007,2011 Thomas E. Dickey # +# # +# 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. # +############################################################################## +# +# Adjust includes for header files that reside in a subdirectory of +# /usr/include, etc. +# +# Parameters (the first case creates the sed script): +# $1 is the target directory +# $2 is the source directory +# or (the second case does the install, using the sed script): +# $1 is the script to use for installing +# $2 is the target directory +# $3 is the source directory +# $4 is the file to install, editing source/target/etc. + +PACKAGE=@PACKAGE@ +PKGNAME=@PACKAGE_PREFIX@ +CONFIGH=@PACKAGE_CONFIG@ +SUB_INC=@SUB_INC@ + +: ${TMPDIR:=/tmp} + +TMPSED=headers.sed + +DIGIT=0123456789 +alpha=abcdefghijklmnopqrstuvwxyz +ALPHA=ABCDEFGHIJKLMNOPQRSTUVWXYZ + +alnum=_${DIGIT}${alpha} +ALNUM=_${DIGIT}${ALPHA} +MIXED=_${DIGIT}${ALPHA}${alpha} + +pkgname=`echo "$PKGNAME" | tr "$ALPHA" "$alpha"` + +if test $# = 2 ; then + rm -f $TMPSED + DST=$1 + REF=$2 + LEAF=`basename $DST` + + # map the include-directory, if needed, to the subdirectory + case $DST in + /*/include/$LEAF) + END=`basename $DST` + for i in $REF/*.h + do + NAME=`basename $i` + echo "s/<$NAME>/<$END\/$NAME>/g" >> $TMPSED + done + ;; + *) + touch $TMPSED + ;; + esac + + # cannot do _this_ in -e options: + cat >headers.tmp <<EOF +s/^#[^ ][^ ]*// +s/[^'$MIXED']/ /g +s/[ ][ ]*/ /g +s/^ // +s/ $// +:split + h + s/ .*// + p + t next + b done +:next + x + s/^[^ ][^ ]* // + t split +:done +EOF + # pick up autoconf-style symbols used in the application's headers + for name in $REF/*.h + do + sed -e 's/^[ ][ ]*#[ ][ ]*/#/' $name \ + | egrep '^#(if|ifdef|ifndef|elif)' \ + | sed -f headers.tmp \ + | sort -u \ + | egrep '^(HAVE_|NEED_|NO_|ENABLE_|DISABLE_)' \ + | sed -e 's%^\(.*\)%s/\\<\1\\>/'${PKGNAME}'_\1/g%' >>$TMPSED + done + rm -f headers.tmp + + # pick up autoconf-defined symbols in the config.h file + for name in ` + egrep '^#define[ ][ ]*['$ALNUM']' $REF/$CONFIGH \ + | sed \ + -e 's/^#define[ ][ ]*//' \ + -e 's/[ ].*//' \ + | egrep -v "^${PACKAGE}_" \ + | sort -u` + do + echo "s/\\<$name\\>/${PKGNAME}_$name/g" >>$TMPSED + done + + if test "$SUB_INC" = yes + then + echo "s,#include <${pkgname}_,#include <${PACKAGE}/${pkgname}_," >>$TMPSED + fi + + echo '/_FILE_OFFSET_BITS/d' >>$TMPSED + + # reduce the count if possible, since some old sed's limit is 100 lines + sort -u $TMPSED >headers.tmp + mv headers.tmp $TMPSED +else + PRG="" + while test $# != 3 + do + PRG="$PRG $1"; shift + done + + DST=$1 + REF=$2 + SRC=$3 + + SHOW=`basename $SRC` + TMPSRC=$TMPDIR/${SHOW}-text$$ + TMPEDT=$TMPDIR/${SHOW}-edit$$ + TMPTMP=$TMPDIR/${SHOW}-temp$$ + + echo " ... $SHOW" + test -f $REF/$SRC && SRC="$REF/$SRC" + + rm -f $TMPSRC + cat $SRC >$TMPSRC + + tmp1=1 + while true + do + tmp2=`expr $tmp1 + 49` + if test $tmp1 = 1 + then + sed "${tmp2}q" $TMPSED >$TMPEDT + else + sed "1,${tmp1}d; ${tmp2}q" $TMPSED >$TMPEDT + fi + test -s $TMPEDT || break + sed -f $TMPEDT $TMPSRC > $TMPTMP + mv $TMPTMP $TMPSRC + tmp1=$tmp2 + done + + NAME=`basename $SRC` + + # Just in case someone gzip'd manpages, remove the conflicting copy. + test -f $DST/$NAME.gz && rm -f $DST/$NAME.gz + + if test "$SUB_INC" = yes + then + case $NAME in #(vi + ${pkgname}_*) #(vi + case "$PRG" in #(vi + *install*) + test -d $DST/$PACKAGE || mkdir -p $DST/$PACKAGE + ;; + esac + NAME=$PACKAGE/$NAME + ;; + *) + NAME=$PACKAGE.h + ;; + esac + fi + + eval $PRG $TMPSRC $DST/$NAME + rm -f $TMPEDT $TMPTMP $TMPSRC +fi +# vile:ts=4 sw=4 Property changes on: vendor/dialog/1.3-20180621/headers-sh.in ___________________________________________________________________ Added: svn:executable ## -0,0 +1 ## +* \ No newline at end of property Index: vendor/dialog/1.3-20180621/COPYING =================================================================== --- vendor/dialog/1.3-20180621/COPYING (nonexistent) +++ vendor/dialog/1.3-20180621/COPYING (revision 339483) @@ -0,0 +1,504 @@ + GNU LESSER GENERAL PUBLIC LICENSE + Version 2.1, February 1999 + + Copyright (C) 1991, 1999 Free Software Foundation, Inc. + 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + +[This is the first released version of the Lesser GPL. It also counts + as the successor of the GNU Library Public License, version 2, hence + the version number 2.1.] + + Preamble + + The licenses for most software are designed to take away your +freedom to share and change it. By contrast, the GNU General Public +Licenses are intended to guarantee your freedom to share and change +free software--to make sure the software is free for all its users. + + This license, the Lesser General Public License, applies to some +specially designated software packages--typically libraries--of the +Free Software Foundation and other authors who decide to use it. You +can use it too, but we suggest you first think carefully about whether +this license or the ordinary General Public License is the better +strategy to use in any particular case, based on the explanations below. + + When we speak of free software, we are referring to freedom of use, +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 and use pieces of +it in new free programs; and that you are informed that you can do +these things. + + To protect your rights, we need to make restrictions that forbid +distributors to deny you these rights or to ask you to surrender these +rights. These restrictions translate to certain responsibilities for +you if you distribute copies of the library or if you modify it. + + For example, if you distribute copies of the library, whether gratis +or for a fee, you must give the recipients all the rights that we gave +you. You must make sure that they, too, receive or can get the source +code. If you link other code with the library, you must provide +complete object files to the recipients, so that they can relink them +with the library after making changes to the library and recompiling +it. And you must show them these terms so they know their rights. + + We protect your rights with a two-step method: (1) we copyright the +library, and (2) we offer you this license, which gives you legal +permission to copy, distribute and/or modify the library. + + To protect each distributor, we want to make it very clear that +there is no warranty for the free library. Also, if the library is +modified by someone else and passed on, the recipients should know +that what they have is not the original version, so that the original +author's reputation will not be affected by problems that might be +introduced by others. + + Finally, software patents pose a constant threat to the existence of +any free program. We wish to make sure that a company cannot +effectively restrict the users of a free program by obtaining a +restrictive license from a patent holder. Therefore, we insist that +any patent license obtained for a version of the library must be +consistent with the full freedom of use specified in this license. + + Most GNU software, including some libraries, is covered by the +ordinary GNU General Public License. This license, the GNU Lesser +General Public License, applies to certain designated libraries, and +is quite different from the ordinary General Public License. We use +this license for certain libraries in order to permit linking those +libraries into non-free programs. + + When a program is linked with a library, whether statically or using +a shared library, the combination of the two is legally speaking a +combined work, a derivative of the original library. The ordinary +General Public License therefore permits such linking only if the +entire combination fits its criteria of freedom. The Lesser General +Public License permits more lax criteria for linking other code with +the library. + + We call this license the "Lesser" General Public License because it +does Less to protect the user's freedom than the ordinary General +Public License. It also provides other free software developers Less +of an advantage over competing non-free programs. These disadvantages +are the reason we use the ordinary General Public License for many +libraries. However, the Lesser license provides advantages in certain +special circumstances. + + For example, on rare occasions, there may be a special need to +encourage the widest possible use of a certain library, so that it becomes +a de-facto standard. To achieve this, non-free programs must be +allowed to use the library. A more frequent case is that a free +library does the same job as widely used non-free libraries. In this +case, there is little to gain by limiting the free library to free +software only, so we use the Lesser General Public License. + + In other cases, permission to use a particular library in non-free +programs enables a greater number of people to use a large body of +free software. For example, permission to use the GNU C Library in +non-free programs enables many more people to use the whole GNU +operating system, as well as its variant, the GNU/Linux operating +system. + + Although the Lesser General Public License is Less protective of the +users' freedom, it does ensure that the user of a program that is +linked with the Library has the freedom and the wherewithal to run +that program using a modified version of the Library. + + The precise terms and conditions for copying, distribution and +modification follow. Pay close attention to the difference between a +"work based on the library" and a "work that uses the library". The +former contains code derived from the library, whereas the latter must +be combined with the library in order to run. + + GNU LESSER GENERAL PUBLIC LICENSE + TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + + 0. This License Agreement applies to any software library or other +program which contains a notice placed by the copyright holder or +other authorized party saying it may be distributed under the terms of +this Lesser General Public License (also called "this License"). +Each licensee is addressed as "you". + + A "library" means a collection of software functions and/or data +prepared so as to be conveniently linked with application programs +(which use some of those functions and data) to form executables. + + The "Library", below, refers to any such software library or work +which has been distributed under these terms. A "work based on the +Library" means either the Library or any derivative work under +copyright law: that is to say, a work containing the Library or a +portion of it, either verbatim or with modifications and/or translated +straightforwardly into another language. (Hereinafter, translation is +included without limitation in the term "modification".) + + "Source code" for a work means the preferred form of the work for +making modifications to it. For a library, 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 library. + + Activities other than copying, distribution and modification are not +covered by this License; they are outside its scope. The act of +running a program using the Library is not restricted, and output from +such a program is covered only if its contents constitute a work based +on the Library (independent of the use of the Library in a tool for +writing it). Whether that is true depends on what the Library does +and what the program that uses the Library does. + + 1. You may copy and distribute verbatim copies of the Library's +complete 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 distribute a copy of this License along with the +Library. + + 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 Library or any portion +of it, thus forming a work based on the Library, 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) The modified work must itself be a software library. + + b) You must cause the files modified to carry prominent notices + stating that you changed the files and the date of any change. + + c) You must cause the whole of the work to be licensed at no + charge to all third parties under the terms of this License. + + d) If a facility in the modified Library refers to a function or a + table of data to be supplied by an application program that uses + the facility, other than as an argument passed when the facility + is invoked, then you must make a good faith effort to ensure that, + in the event an application does not supply such function or + table, the facility still operates, and performs whatever part of + its purpose remains meaningful. + + (For example, a function in a library to compute square roots has + a purpose that is entirely well-defined independent of the + application. Therefore, Subsection 2d requires that any + application-supplied function or table used by this function must + be optional: if the application does not supply it, the square + root function must still compute square roots.) + +These requirements apply to the modified work as a whole. If +identifiable sections of that work are not derived from the Library, +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 Library, 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 Library. + +In addition, mere aggregation of another work not based on the Library +with the Library (or with a work based on the Library) on a volume of +a storage or distribution medium does not bring the other work under +the scope of this License. + + 3. You may opt to apply the terms of the ordinary GNU General Public +License instead of this License to a given copy of the Library. To do +this, you must alter all the notices that refer to this License, so +that they refer to the ordinary GNU General Public License, version 2, +instead of to this License. (If a newer version than version 2 of the +ordinary GNU General Public License has appeared, then you can specify +that version instead if you wish.) Do not make any other change in +these notices. + + Once this change is made in a given copy, it is irreversible for +that copy, so the ordinary GNU General Public License applies to all +subsequent copies and derivative works made from that copy. + + This option is useful when you wish to copy part of the code of +the Library into a program that is not a library. + + 4. You may copy and distribute the Library (or a portion or +derivative of it, under Section 2) in object code or executable form +under the terms of Sections 1 and 2 above provided that you 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. + + If distribution of 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 satisfies the requirement to +distribute the source code, even though third parties are not +compelled to copy the source along with the object code. + + 5. A program that contains no derivative of any portion of the +Library, but is designed to work with the Library by being compiled or +linked with it, is called a "work that uses the Library". Such a +work, in isolation, is not a derivative work of the Library, and +therefore falls outside the scope of this License. + + However, linking a "work that uses the Library" with the Library +creates an executable that is a derivative of the Library (because it +contains portions of the Library), rather than a "work that uses the +library". The executable is therefore covered by this License. +Section 6 states terms for distribution of such executables. + + When a "work that uses the Library" uses material from a header file +that is part of the Library, the object code for the work may be a +derivative work of the Library even though the source code is not. +Whether this is true is especially significant if the work can be +linked without the Library, or if the work is itself a library. The +threshold for this to be true is not precisely defined by law. + + If such an object file uses only numerical parameters, data +structure layouts and accessors, and small macros and small inline +functions (ten lines or less in length), then the use of the object +file is unrestricted, regardless of whether it is legally a derivative +work. (Executables containing this object code plus portions of the +Library will still fall under Section 6.) + + Otherwise, if the work is a derivative of the Library, you may +distribute the object code for the work under the terms of Section 6. +Any executables containing that work also fall under Section 6, +whether or not they are linked directly with the Library itself. + + 6. As an exception to the Sections above, you may also combine or +link a "work that uses the Library" with the Library to produce a +work containing portions of the Library, and distribute that work +under terms of your choice, provided that the terms permit +modification of the work for the customer's own use and reverse +engineering for debugging such modifications. + + You must give prominent notice with each copy of the work that the +Library is used in it and that the Library and its use are covered by +this License. You must supply a copy of this License. If the work +during execution displays copyright notices, you must include the +copyright notice for the Library among them, as well as a reference +directing the user to the copy of this License. Also, you must do one +of these things: + + a) Accompany the work with the complete corresponding + machine-readable source code for the Library including whatever + changes were used in the work (which must be distributed under + Sections 1 and 2 above); and, if the work is an executable linked + with the Library, with the complete machine-readable "work that + uses the Library", as object code and/or source code, so that the + user can modify the Library and then relink to produce a modified + executable containing the modified Library. (It is understood + that the user who changes the contents of definitions files in the + Library will not necessarily be able to recompile the application + to use the modified definitions.) + + b) Use a suitable shared library mechanism for linking with the + Library. A suitable mechanism is one that (1) uses at run time a + copy of the library already present on the user's computer system, + rather than copying library functions into the executable, and (2) + will operate properly with a modified version of the library, if + the user installs one, as long as the modified version is + interface-compatible with the version that the work was made with. + + c) Accompany the work with a written offer, valid for at + least three years, to give the same user the materials + specified in Subsection 6a, above, for a charge no more + than the cost of performing this distribution. + + d) If distribution of the work is made by offering access to copy + from a designated place, offer equivalent access to copy the above + specified materials from the same place. + + e) Verify that the user has already received a copy of these + materials or that you have already sent this user a copy. + + For an executable, the required form of the "work that uses the +Library" must include any data and utility programs needed for +reproducing the executable from it. However, as a special exception, +the materials to be 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. + + It may happen that this requirement contradicts the license +restrictions of other proprietary libraries that do not normally +accompany the operating system. Such a contradiction means you cannot +use both them and the Library together in an executable that you +distribute. + + 7. You may place library facilities that are a work based on the +Library side-by-side in a single library together with other library +facilities not covered by this License, and distribute such a combined +library, provided that the separate distribution of the work based on +the Library and of the other library facilities is otherwise +permitted, and provided that you do these two things: + + a) Accompany the combined library with a copy of the same work + based on the Library, uncombined with any other library + facilities. This must be distributed under the terms of the + Sections above. + + b) Give prominent notice with the combined library of the fact + that part of it is a work based on the Library, and explaining + where to find the accompanying uncombined form of the same work. + + 8. You may not copy, modify, sublicense, link with, or distribute +the Library except as expressly provided under this License. Any +attempt otherwise to copy, modify, sublicense, link with, or +distribute the Library 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. + + 9. 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 Library or its derivative works. These actions are +prohibited by law if you do not accept this License. Therefore, by +modifying or distributing the Library (or any work based on the +Library), you indicate your acceptance of this License to do so, and +all its terms and conditions for copying, distributing or modifying +the Library or works based on it. + + 10. Each time you redistribute the Library (or any work based on the +Library), the recipient automatically receives a license from the +original licensor to copy, distribute, link with or modify the Library +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 with +this License. + + 11. 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 Library at all. For example, if a patent +license would not permit royalty-free redistribution of the Library 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 Library. + +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. + + 12. If the distribution and/or use of the Library is restricted in +certain countries either by patents or by copyrighted interfaces, the +original copyright holder who places the Library 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. + + 13. The Free Software Foundation may publish revised and/or new +versions of the Lesser 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 Library +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 Library does not specify a +license version number, you may choose any version ever published by +the Free Software Foundation. + + 14. If you wish to incorporate parts of the Library into other free +programs whose distribution conditions are incompatible with these, +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 + + 15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO +WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW. +EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR +OTHER PARTIES PROVIDE THE LIBRARY "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 +LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME +THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. + + 16. 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 LIBRARY 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 +LIBRARY (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 LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), 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 Libraries + + If you develop a new library, and you want it to be of the greatest +possible use to the public, we recommend making it free software that +everyone can redistribute and change. You can do so by permitting +redistribution under these terms (or, alternatively, under the terms of the +ordinary General Public License). + + To apply these terms, attach the following notices to the library. It is +safest to attach them to the start of each source file to most effectively +convey the exclusion of warranty; and each file should have at least the +"copyright" line and a pointer to where the full notice is found. + + <one line to give the library's name and a brief idea of what it does.> + Copyright (C) <year> <name of author> + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + +Also add information on how to contact you by electronic and paper mail. + +You should also get your employer (if you work as a programmer) or your +school, if any, to sign a "copyright disclaimer" for the library, if +necessary. Here is a sample; alter the names: + + Yoyodyne, Inc., hereby disclaims all copyright interest in the + library `Frob' (a library for tweaking knobs) written by James Random Hacker. + + <signature of Ty Coon>, 1 April 1990 + Ty Coon, President of Vice + +That's all there is to it! + + Index: vendor/dialog/1.3-20180621/README =================================================================== --- vendor/dialog/1.3-20180621/README (nonexistent) +++ vendor/dialog/1.3-20180621/README (revision 339483) @@ -0,0 +1,61 @@ +-(1999-12-25)------------------------------------------------------------------- +This version of dialog, formerly known as cdialog is based on the Debian +package for dialog 0.9a (see CHANGES for recent modifications) +- T.Dickey <dickey@invisible-island.net> + +-(1996-01-15)------------------------------------------------------------------- +I have uploaded cdialog-0.9a.tar.gz to sunsite. It should be moved +to pub/Linux/utils/shell, I think. + +Starting point for cdialog v.0.9a was dialog-0.6c. Many new features +like as Resolution-independence, Auto-sizing, Maximizing, more widget +on the same screen (multi-widget), etc. were added. New widget are +tailbox and tailbox-in-background. Here are the options: + + Usage: dialog <Common options> <Box options> + { --and-widget <Common options> <Box options> } + + Common options: <Global options> + [--backtitle <backtitle>] [--sleep <secs>] [--beep] [--beep-after] + [--clear] [--begin <y> <x>] [--aspect <ratio>] [--print-size] + [--print-maxsize] [--size-err] [--separate-output] [--cr-wrap] + [--tab-len <n>] [--tab-correct] [--print-version] [--no-kill] + [--title <title>] + + Global options: [--shadow] [--no-shadow] [--separate-widget "<str>"] + +At the moment, mouse support with libgpm can't be added because it +does't implement the wtimeout() function of ncurses. Wtimeout() is +needed to have more widgets (es.tailbox) cooperating on the same +screen... I don't know if with newer versions of libgpm it's possible. + +I have no more time to write docs for this new version...Is there +anyone, that looking at the code, can do it??? Ouch! :-) +Don't flame me! + +For the future, if any volunteer want, the way to evolve cdialog is to +1) make a daemon for a better support of multi-tasking or implementing + multithreading. +2) add an option that could permit to read commands (--options) from a + file, like as in a normal programming language, but maintaining + compatiblity with older version of dialog. + +I no longer could maintain cdialog... +Executable and library name of cdialog are the same of dialog, for +compatiblity. + +I think that only one directive should be follow: don't use a resource +like stdin, stdout when you'll write new options for cdialog; these +resources have to be shared from all widgets on the command line. +Guage uses stdin :-/ so that can't be mixed for example with an inputbox, +but it was made before of multi-widget. However this is not a big problem! + +THERE ARE NO *KNOWN* BUGS. If anyone has much time and can find the way +to add wtimeout() support to libgpm, also mouse could be supported. + +Please use ncurses-1.9.4 or newer. + +| __ | demarco_p@abramo.it:~$ make Linux | more > UserFriendly; +| /__) | /~~ _ _ _ _ /~\ _ / . _ | +|/ ako | (___ (_) | ) ) (-' (__/ | ) /__ | | ) (_| >< . coordinator. + Index: vendor/dialog/1.3-20180621/config.hin =================================================================== --- vendor/dialog/1.3-20180621/config.hin (nonexistent) +++ vendor/dialog/1.3-20180621/config.hin (revision 339483) @@ -0,0 +1,4 @@ +/* + * The configure script expands this as a set of definitions + */ +@DEFS@ Index: vendor/dialog/1.3-20180621/dialog.lsm =================================================================== --- vendor/dialog/1.3-20180621/dialog.lsm (nonexistent) +++ vendor/dialog/1.3-20180621/dialog.lsm (revision 339483) @@ -0,0 +1,23 @@ +Begin3 +Title: dialog - Display dialog boxes in scripts +Version: 1.0-20060221 +Entered-date: 21FEB06 +Description: Dialog is a program that will let you present a variety + of questions or display messages in nice looking color + non-graphical dialog boxes from a shell or perl script. + Various dialog boxes can be presented such as yes/no, menu, + input, message, checklist, radiolist, and more. + + This program is based on the no longer maintained cdialog, but + contains bug fixes and more features. +Keywords: dialog, cdialog, shell, script, window +Author: Originally Savio Lam for the ancient version +Maintained-by: Thomas E. Dickey <dickey@invisible-island.net> + Vila, Santiago <sanvila@debian.org> +Primary-site: http://invisible-island.net/dialog/ + http://packages.debian.org/ +Alternate-site: ftp://ftp.us.debian.org/debian/pool/main/d/dialog/ +Original-site: ftp://sunsite.unc.edu/pub/Linux/utils/shell +Platforms: Linux *nix, OS/2 EMX +Copying-policy: LGPL +End Index: vendor/dialog/1.3-20180621/install-sh =================================================================== --- vendor/dialog/1.3-20180621/install-sh (nonexistent) +++ vendor/dialog/1.3-20180621/install-sh (revision 339483) @@ -0,0 +1,294 @@ +#! /bin/sh +# +# install - install a program, script, or datafile +# +# This originates from X11R5 (mit/util/scripts/install.sh), which was +# later released in X11R6 (xc/config/util/install.sh) with the +# following copyright and license. +# +# Copyright (C) 1994 X Consortium +# +# 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, 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 +# X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN +# AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNEC- +# TION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +# +# Except as contained in this notice, the name of the X Consortium shall not +# be used in advertising or otherwise to promote the sale, use or other deal- +# ings in this Software without prior written authorization from the X Consor- +# tium. +# +# +# FSF changes to this file are in the public domain. +# +# Calling this script install-sh is preferred over install.sh, to prevent +# `make' implicit rules from creating a file called install from it +# when there is no Makefile. +# +# This script is compatible with the BSD install script, but was written +# from scratch. It can only install one file at a time, a restriction +# shared with many OS's install programs. + + +# set DOITPROG to echo to test this script + +# Don't use :- since 4.3BSD and earlier shells don't like it. +doit="${DOITPROG-}" + + +# put in absolute paths if you don't have them in your path; or use env. vars. + +mvprog="${MVPROG-mv}" +cpprog="${CPPROG-cp}" +chmodprog="${CHMODPROG-chmod}" +chownprog="${CHOWNPROG-chown}" +chgrpprog="${CHGRPPROG-chgrp}" +stripprog="${STRIPPROG-strip}" +rmprog="${RMPROG-rm}" +mkdirprog="${MKDIRPROG-mkdir}" + +transformbasename="" +transform_arg="" +instcmd="$mvprog" +chmodcmd="$chmodprog 0755" +chowncmd="" +chgrpcmd="" +stripcmd="" +rmcmd="$rmprog -f" +mvcmd="$mvprog" +src="" +dst="" +dir_arg="" + +while [ x"$1" != x ]; do + case $1 in + -c) instcmd=$cpprog + shift + continue;; + + -d) dir_arg=true + shift + continue;; + + -m) chmodcmd="$chmodprog $2" + shift + shift + continue;; + + -o) chowncmd="$chownprog $2" + shift + shift + continue;; + + -g) chgrpcmd="$chgrpprog $2" + shift + shift + continue;; + + -s) stripcmd=$stripprog + shift + continue;; + + -t=*) transformarg=`echo $1 | sed 's/-t=//'` + shift + continue;; + + -b=*) transformbasename=`echo $1 | sed 's/-b=//'` + shift + continue;; + + *) if [ x"$src" = x ] + then + src=$1 + else + # this colon is to work around a 386BSD /bin/sh bug + : + dst=$1 + fi + shift + continue;; + esac +done + +if [ x"$src" = x ] +then + echo "$0: no input file specified" >&2 + exit 1 +else + : +fi + +if [ x"$dir_arg" != x ]; then + dst=$src + src="" + + if [ -d "$dst" ]; then + instcmd=: + chmodcmd="" + else + instcmd=$mkdirprog + fi +else + +# Waiting for this to be detected by the "$instcmd $src $dsttmp" command +# might cause directories to be created, which would be especially bad +# if $src (and thus $dsttmp) contains '*'. + + if [ -f "$src" ] || [ -d "$src" ] + then + : + else + echo "$0: $src does not exist" >&2 + exit 1 + fi + + if [ x"$dst" = x ] + then + echo "$0: no destination specified" >&2 + exit 1 + else + : + fi + +# If destination is a directory, append the input filename; if your system +# does not like double slashes in filenames, you may need to add some logic + + if [ -d "$dst" ] + then + dst=$dst/`basename "$src"` + else + : + fi +fi + +## this sed command emulates the dirname command +dstdir=`echo "$dst" | sed -e 's,[^/]*$,,;s,/$,,;s,^$,.,'` + +# Make sure that the destination directory exists. +# this part is taken from Noah Friedman's mkinstalldirs script + +# Skip lots of stat calls in the usual case. +if [ ! -d "$dstdir" ]; then +defaultIFS=' + ' +IFS="${IFS-$defaultIFS}" + +oIFS=$IFS +# Some sh's can't handle IFS=/ for some reason. +IFS='%' +set - `echo "$dstdir" | sed -e 's@/@%@g' -e 's@^%@/@'` +IFS=$oIFS + +pathcomp='' + +while [ $# -ne 0 ] ; do + pathcomp=$pathcomp$1 + shift + + if [ ! -d "$pathcomp" ] ; + then + $mkdirprog "$pathcomp" + else + : + fi + + pathcomp=$pathcomp/ +done +fi + +if [ x"$dir_arg" != x ] +then + $doit $instcmd "$dst" && + + if [ x"$chowncmd" != x ]; then $doit $chowncmd "$dst"; else : ; fi && + if [ x"$chgrpcmd" != x ]; then $doit $chgrpcmd "$dst"; else : ; fi && + if [ x"$stripcmd" != x ]; then $doit $stripcmd "$dst"; else : ; fi && + if [ x"$chmodcmd" != x ]; then $doit $chmodcmd "$dst"; else : ; fi +else + +# If we're going to rename the final executable, determine the name now. + + if [ x"$transformarg" = x ] + then + dstfile=`basename "$dst"` + else + dstfile=`basename "$dst" $transformbasename | + sed $transformarg`$transformbasename + fi + +# don't allow the sed command to completely eliminate the filename + + if [ x"$dstfile" = x ] + then + dstfile=`basename "$dst"` + else + : + fi + +# Make a couple of temp file names in the proper directory. + + dsttmp=$dstdir/#inst.$$# + rmtmp=$dstdir/#rm.$$# + +# Trap to clean up temp files at exit. + + trap 'status=$?; rm -f "$dsttmp" "$rmtmp" && exit $status' 0 + trap '(exit $?); exit' 1 2 13 15 + +# Move or copy the file name to the temp name + + $doit $instcmd "$src" "$dsttmp" && + +# and set any options; do chmod last to preserve setuid bits + +# If any of these fail, we abort the whole thing. If we want to +# ignore errors from any of these, just make sure not to ignore +# errors from the above "$doit $instcmd $src $dsttmp" command. + + if [ x"$chowncmd" != x ]; then $doit $chowncmd "$dsttmp"; else :;fi && + if [ x"$chgrpcmd" != x ]; then $doit $chgrpcmd "$dsttmp"; else :;fi && + if [ x"$stripcmd" != x ]; then $doit $stripcmd "$dsttmp"; else :;fi && + if [ x"$chmodcmd" != x ]; then $doit $chmodcmd "$dsttmp"; else :;fi && + +# Now remove or move aside any old file at destination location. We try this +# two ways since rm can't unlink itself on some systems and the destination +# file might be busy for other reasons. In this case, the final cleanup +# might fail but the new file should still install successfully. + +{ + if [ -f "$dstdir/$dstfile" ] + then + $doit $rmcmd -f "$dstdir/$dstfile" 2>/dev/null || + $doit $mvcmd -f "$dstdir/$dstfile" "$rmtmp" 2>/dev/null || + { + echo "$0: cannot unlink or rename $dstdir/$dstfile" >&2 + (exit 1); exit + } + else + : + fi +} && + +# Now rename the file to the real destination. + + $doit $mvcmd "$dsttmp" "$dstdir/$dstfile" + +fi && + +# The final little trick to "correctly" pass the exit status to the exit trap. + +{ + (exit 0); exit +} Property changes on: vendor/dialog/1.3-20180621/install-sh ___________________________________________________________________ Added: svn:executable ## -0,0 +1 ## +* \ No newline at end of property Index: vendor/dialog/1.3-20180621/version.c =================================================================== --- vendor/dialog/1.3-20180621/version.c (nonexistent) +++ vendor/dialog/1.3-20180621/version.c (revision 339483) @@ -0,0 +1,33 @@ +/* + * $Id: version.c,v 1.6 2010/01/15 23:34:46 tom Exp $ + * + * version.c -- dialog's version string + * + * Copyright 2005-2006,2010 Thomas E. Dickey + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License, version 2.1 + * as published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this program; if not, write to + * Free Software Foundation, Inc. + * 51 Franklin St., Fifth Floor + * Boston, MA 02110, USA. + */ +#include <dialog.h> + +#define quoted(a) #a +#define concat(a,b) a "-" quoted(b) +#define DLG_VERSION concat(DIALOG_VERSION,DIALOG_PATCHDATE) + +const char * +dialog_version(void) +{ + return DLG_VERSION; +}