diff --git a/aclocal.m4 b/aclocal.m4 index 2a4fdc78e..07554614f 100644 --- a/aclocal.m4 +++ b/aclocal.m4 @@ -1,4 +1,67 @@ dnl +dnl GNOME_INIT_HOOK (script-if-gnome-enabled, failflag) +dnl +dnl if failflag is "fail" then GNOME_INIT_HOOK will abort if gnomeConf.sh +dnl is not found. +dnl + +AC_DEFUN([GNOME_INIT_HOOK], +[ + AC_SUBST(GNOME_LIBS) + AC_SUBST(GNOMEUI_LIBS) + AC_SUBST(GTKXMHTML_LIBS) + AC_SUBST(GNOME_LIBDIR) + AC_SUBST(GNOME_INCLUDEDIR) + + if test x$exec_prefix = xNONE; then + if test x$prefix = xNONE; then + gnome_prefix=$ac_default_prefix/lib + else + gnome_prefix=$prefix/lib + fi + else + gnome_prefix=`eval echo \`echo $libdir\`` + fi + + AC_ARG_WITH(gnome-includes, + [ --with-gnome-includes Specify location of GNOME headers],[ + CFLAGS="$CFLAGS -I$withval" + ]) + + AC_ARG_WITH(gnome-libs, + [ --with-gnome-libs Specify location of GNOME libs],[ + LDFLAGS="$LDFLAGS -L$withval" + gnome_prefix=$withval + ]) + + AC_ARG_WITH(gnome, + [ --with-gnome Specify prefix for GNOME files],[ + if test x$withval = xyes; then + $1 + else + LDFLAGS="$LDFLAGS -L$withval/lib" + CFLAGS="$CFLAGS -I$withval/include" + gnome_prefix=$withval/lib + fi + ]) + + AC_MSG_CHECKING(for gnomeConf.sh file in $gnome_prefix) + if test -f $gnome_prefix/gnomeConf.sh; then + AC_MSG_RESULT(found) + echo "loading gnome configuration from $gnome_prefix/gnomeConf.sh" + . $gnome_prefix/gnomeConf.sh + $1 + else + AC_MSG_RESULT(not found) + if test x$2 = xfail; then + AC_MSG_ERROR(Could not find the gnomeConf.sh file that is generated by gnome-libs install) + fi + fi +]) + +AC_DEFUN([GNOME_INIT],[ + GNOME_INIT_HOOK([],fail) +])dnl dnl XView & SlingShot library checking dnl (c) 1995 Jakub Jelinek dnl diff --git a/autogen.sh b/autogen.sh index 02f77a1fb..46f98cad2 100755 --- a/autogen.sh +++ b/autogen.sh @@ -1,88 +1,3 @@ -#! /bin/sh -# Run this to generate all the initial makefiles, etc. - -# Make it possible to specify path in the environment -: ${AUTOCONF=autoconf} -: ${AUTOHEADER=autoheader} -: ${AUTOMAKE=automake} -: ${ACLOCAL=aclocal} -: ${GETTEXTIZE=gettextize} - -srcdir=`dirname $0` -test -z "$srcdir" && srcdir=. - -( -cd $srcdir - -# The autoconf cache (version after 2.52) is not reliable yet. -rm -rf autom4te.cache vfs/samba/autom4te.cache - -# Ensure that gettext is reasonably new. -gettext_ver=`$GETTEXTIZE --version | sed -n '1s/\.//g;1s/.* //p'` -expr $gettext_ver '>=' 01038 >/dev/null -if test $? != 0; then - echo "Don't use gettext older than 0.10.38" 2>&1 - exit 1 -fi - -rm -rf intl -$GETTEXTIZE --copy --force >tmpout || exit 1 -rm -f po/ChangeLog -mv po/ChangeLog~ po/ChangeLog - -if test ! -d config; then - mkdir config || exit 1 -fi - -rm -f aclocal.m4 -if test -f `aclocal --print-ac-dir`/gettext.m4; then - : # gettext macro files are available to aclocal. -else - # gettext macro files are not available. - # Find them and copy to a local directory. - # Ugly way to parse the instructions gettexize gives us. - m4files="`cat tmpout | sed -n -e '/^Please/,/^from/s/^ *//p'`" - fromdir=`cat tmpout | sed -n -e '/^Please/,/^from/s/^from the \([^ ]*\) .*$/\1/p'` - rm tmpout - rm -rf gettext.m4 - mkdir gettext.m4 - for i in $m4files; do - cp -f $fromdir/$i gettext.m4 - done - ACLOCAL_INCLUDES="-I gettext.m4" -fi - -# Some old version of GNU build tools fail to set error codes. -# Check that they generate some of the files they should. - -$ACLOCAL $ACLOCAL_INCLUDES $ACLOCAL_FLAGS || exit 1 -test -f aclocal.m4 || \ - { echo "aclocal failed to generate aclocal.m4" 2>&1; exit 1; } - -$AUTOHEADER || exit 1 -test -f config.h.in || \ - { echo "autoheader failed to generate config.h.in" 2>&1; exit 1; } - -$AUTOCONF || exit 1 -test -f configure || \ - { echo "autoconf failed to generate configure" 2>&1; exit 1; } - -# Workaround for Automake 1.5 to ensure that depcomp is distributed. -$AUTOMAKE -a src/Makefile || exit 1 -$AUTOMAKE -a || exit 1 -test -f Makefile.in || \ - { echo "automake failed to generate Makefile.in" 2>&1; exit 1; } - -cd vfs/samba || exit 1 -date -u >include/stamp-h.in - -$AUTOHEADER || exit 1 -test -f include/config.h.in || \ - { echo "autoheader failed to generate vfs/samba/include/config.h.in" 2>&1; exit 1; } - -$AUTOCONF || exit 1 -test -f configure || \ - { echo "autoconf failed to generate vfs/samba/configure" 2>&1; exit 1; } -) || exit 1 - -$srcdir/configure --cache-file=config.cache --enable-maintainer-mode "$@" +cat macros/gnome.m4 mc-aclocal.m4 > aclocal.m4 +autoconf +./configure $* diff --git a/configure.in b/configure.in index 4ec7e1524..4c80f9326 100644 --- a/configure.in +++ b/configure.in @@ -657,20 +657,17 @@ dnl Check for Gnome dnl gmc="" gmcdep="" -if test x$no_x != xyes; then - AC_ARG_WITH(gnome,[--with-gnome Compile the GNOME edition],[ - if test x$withval = xyes; then +AC_SUBST(insticons) +GNOME_INIT_HOOK([ gmc=gmc gmcdep=gmcdep insticons=install_icons - AC_SUBST(insticons) if test x"$xvers" = xnone; then xvers="Gnome" else xvers="Gnome+$xvers" fi - fi]) -fi +]) AC_SUBST(gmc) AC_SUBST(gmcdep) diff --git a/gnome/ChangeLog b/gnome/ChangeLog index 075b6e4c1..ace92d1c0 100644 --- a/gnome/ChangeLog +++ b/gnome/ChangeLog @@ -1,3 +1,7 @@ +1998-03-19 Miguel de Icaza + + * gscreen.c (display_mini_info): Implement mini status. + 1998-03-19 Federico Mena Quintero * gdesktop.c (get_transparent_window_for_dentry): New function, diff --git a/gnome/Makefile.in b/gnome/Makefile.in index 8a28e8ceb..ffa909f99 100644 --- a/gnome/Makefile.in +++ b/gnome/Makefile.in @@ -5,8 +5,8 @@ rootdir = $(srcdir)/.. @MCFG@@MCF@ CFLAGS = $(XCFLAGS) @X_CFLAGS@ -CPPFLAGS = $(XCPPFLAGS) -I$(vfsdir) -I$(slangdir) -DHAVE_X -DHAVE_GNOME -LDFLAGS = $(XLDFLAGS) @X_LIBS@ +CPPFLAGS = $(XCPPFLAGS) -I$(vfsdir) -I$(slangdir) -DHAVE_X -DHAVE_GNOME @GNOME_INCLUDEDIR@ +LDFLAGS = $(XLDFLAGS) @X_LIBS@ @GNOME_LIBDIR@ @GNOMEUI_LIBS@ DEFS = $(XDEFS) LIBS = -lgnomeui -lgdk_imlib -lgnome -lgnomesupport -lgtk -lgdk -lglib @X_EXTRA_LIBS@ -lX11 @X_PRE_LIBS@ $(XLIBS) $(XLIB) @TERMNET@ EXTRALIBS = @LVFS@ @LSLANG@ @LEDIT@ diff --git a/gnome/gconf.h b/gnome/gconf.h index a9e6e1929..b67ab24b1 100644 --- a/gnome/gconf.h +++ b/gnome/gconf.h @@ -26,6 +26,7 @@ #define PORT_HAS_DESTROY_CMD 1 #define PORT_HAS_RADIO_FOCUS_ITEM 1 #define PORT_HAS_DIALOG_STOP 1 +#define PORT_HAS_DISPLAY_MINI_INFO 1 #define mi_getch() fprintf (stderr, "mi_getch is not implemented in this port\n") #define frontend_run_dlg(x) gtkrundlg_event (x) diff --git a/gnome/gnome.TODO b/gnome/gnome.TODO index 49d07d5b8..bb0def4aa 100644 --- a/gnome/gnome.TODO +++ b/gnome/gnome.TODO @@ -2,7 +2,6 @@ All: - Intenrationalization - It crashes - It leaks objects. -- It does not object to leaks. - argp handling. - Session management @@ -12,7 +11,6 @@ Desktop: Panels: - Global bindings (some shortcuts are not implemented) -- Mini-info panel display - Finish regular property pages - Add a nifty toolbar - Split view. diff --git a/gnome/gscreen.c b/gnome/gscreen.c index 9a15f4aab..a328ee4eb 100644 --- a/gnome/gscreen.c +++ b/gnome/gscreen.c @@ -264,6 +264,8 @@ panel_file_list_configure_contents (GtkWidget *file_list, WPanel *panel, int mai } else extra_space = expand_space = 0; + panel->estimated_total = total_columns; + /* If we dont have enough space, shorten the fields */ if (used_columns > total_columns){ expand_space = 0; @@ -564,7 +566,6 @@ panel_file_list_compute_lines (GtkCList *file_list, WPanel *panel, int height) static void panel_file_list_size_allocate_hook (GtkWidget *file_list, GtkAllocation *allocation, WPanel *panel) { - printf ("%d %d\n", allocation->width, allocation->height); gtk_signal_handler_block_by_data (GTK_OBJECT (file_list), panel); panel_file_list_configure_contents (file_list, panel, allocation->width, allocation->height); gtk_signal_handler_unblock_by_data (GTK_OBJECT (file_list), panel); @@ -1077,6 +1078,62 @@ show_filter_popup (GtkWidget *button, gpointer data) GDK_CURRENT_TIME); } +void +display_mini_info (WPanel *panel) +{ + GtkLabel *label = GTK_LABEL (panel->ministatus); + + if (panel->searching){ + char *str = copy_strings ("Search: ", panel->search_buffer, NULL); + + gtk_label_set (label, str); + free (str); + return; + } + + if (panel->marked){ + char buffer [120]; + + sprintf (buffer, " %s bytes in %d files%s", + size_trunc_sep (panel->total), panel->marked, + panel->marked == 1 ? "" : "s"); + + gtk_label_set (label, buffer); + } + + if (S_ISLNK (panel->dir.list [panel->selected].buf.st_mode)){ + char *link, link_target [MC_MAXPATHLEN]; + int len; + + link = concat_dir_and_file (panel->cwd, panel->dir.list [panel->selected].fname); + len = mc_readlink (link, link_target, MC_MAXPATHLEN); + free (link); + + if (len > 0){ + char *str; + + link_target [len] = 0; + str = copy_strings ("-> ", link_target, NULL); + gtk_label_set (label, str); + free (str); + } else + gtk_label_set (label, ""); + return; + } + + if (panel->estimated_total){ + int len = panel->estimated_total; + char *buffer; + + buffer = xmalloc (len + 2, "display_mini_info"); + format_file (buffer, panel, panel->selected, panel->estimated_total-2, 0, 1); + buffer [len] = 0; + gtk_label_set (label, buffer); + + free (buffer); + } +} + static GtkWidget * panel_create_filter (Dlg_head *h, WPanel *panel, GtkWidget **filter_w) { @@ -1138,28 +1195,27 @@ void x_create_panel (Dlg_head *h, widget_data parent, WPanel *panel) { GtkWidget *status_line, *filter, *statusbar, *vbox; + GtkWidget *ministatus_align; panel->table = gtk_table_new (2, 1, 0); - gtk_widget_show (panel->table); panel->list = panel_create_file_list (panel); - gtk_widget_show (panel->list); panel->current_dir = panel_create_cwd (panel); - gtk_widget_show (panel->current_dir); filter = panel_create_filter (h, panel, (GtkWidget **) &panel->filter_w); - gtk_widget_show (filter); + /* ministatus */ + ministatus_align = gtk_alignment_new (0.0, 0.0, 1.0, 1.0); panel->ministatus = gtk_label_new (""); + gtk_container_add (GTK_CONTAINER (ministatus_align), panel->ministatus); + status_line = gtk_hbox_new (0, 0); - gtk_widget_show (status_line); gtk_box_pack_start (GTK_BOX (status_line), panel->current_dir, 1, 1, 0); gtk_box_pack_end (GTK_BOX (status_line), filter, 0, 0, 0); panel->status = statusbar = gtk_label_new (""); - gtk_widget_show (statusbar); gtk_table_attach (GTK_TABLE (panel->table), panel->list, 0, 1, 1, 2, GTK_EXPAND | GTK_FILL | GTK_SHRINK, @@ -1169,14 +1225,14 @@ x_create_panel (Dlg_head *h, widget_data parent, WPanel *panel) gtk_table_attach (GTK_TABLE (panel->table), status_line, 0, 1, 0, 1, GTK_EXPAND | GTK_FILL, GTK_SHRINK, 0, 0); - gtk_table_attach (GTK_TABLE (panel->table), panel->ministatus, 0, 1, 2, 3, - GTK_EXPAND | GTK_FILL, + gtk_table_attach (GTK_TABLE (panel->table), ministatus_align, 0, 1, 2, 3, + GTK_EXPAND | GTK_FILL | GTK_SHRINK, 0, 0, 0); + gtk_table_attach (GTK_TABLE (panel->table), statusbar, 0, 1, 3, 4, GTK_EXPAND | GTK_FILL, 0, 0, 0); - gtk_widget_show (panel->table); /* Ultra nasty hack: pull the vbox from wdata */ vbox = GTK_WIDGET (panel->widget.wdata); @@ -1185,7 +1241,9 @@ x_create_panel (Dlg_head *h, widget_data parent, WPanel *panel) /* Now, insert our table in our parent */ gtk_container_add (GTK_CONTAINER (vbox), panel->table); - + + gtk_widget_show_all (panel->table); + if (!pixmaps_ready){ if (!GTK_WIDGET_REALIZED (panel->list)) gtk_widget_realize (panel->list); @@ -1196,6 +1254,7 @@ x_create_panel (Dlg_head *h, widget_data parent, WPanel *panel) * filter input line */ panel->widget.options |= W_WANT_CURSOR; + panel->estimated_total = 0; } void diff --git a/gnome/gview.c b/gnome/gview.c index 013c73864..80d861d8d 100644 --- a/gnome/gview.c +++ b/gnome/gview.c @@ -72,6 +72,7 @@ view_percent (WView *view, int p) sprintf (buffer, "%3d%%", percent); gtk_label_set (GTK_LABEL (view->gtk_percent), buffer); + } void @@ -300,7 +301,7 @@ int view (char *_command, char *_file, int *move_dir_p, int start_line) { Dlg_head *our_dlg; - GtkWidget *toplevel, *status; + GtkWidget *toplevel, *status, *scrollbar; GtkVBox *vbox; WView *wview; int midnight_colors [4]; @@ -327,6 +328,8 @@ view (char *_command, char *_file, int *move_dir_p, int start_line) error = view_init (wview, _command, _file, start_line); if (move_dir_p) *move_dir_p = 0; + + scrollbar = gtk_vscrollbar_new (sadj); /* Please note that if you add another widget, * you have to modify view_adjust_size to diff --git a/mc-aclocal.m4 b/mc-aclocal.m4 new file mode 100644 index 000000000..2a4fdc78e --- /dev/null +++ b/mc-aclocal.m4 @@ -0,0 +1,1182 @@ +dnl +dnl XView & SlingShot library checking +dnl (c) 1995 Jakub Jelinek +dnl + +dnl Set xview_includes, xview_libraries, and no_xview (initially yes). +dnl Also sets xview_no_private_headers to yes if there are no xview_private +dnl headers in the system. +AC_DEFUN(AC_PATH_XVIEW, +[ +no_xview=yes +AC_ARG_WITH(xview, [--with-xview Use the XView toolkit],no_xview=) + +AC_ARG_WITH(xview-includes, [--with-xview-includes=path Specifies XView includes directory], +[ +if test x$withval = xyes; then + AC_MSG_WARN(Usage is: --with-xview-includes=path) + xview_includes=NONE + no_xview= +else + xview_includes=$withval +fi +], +[ +xview_includes=NONE +])dnl +AC_ARG_WITH(xview-libraries, [--with-xview-libraries=path Specifies XView libraries directory], +[ +if test x$withval = xyes; then + AC_MSG_WARN(Usage is: --with-xview-libraries=path) + xview_libraries=NONE + no_xview= +else + xview_libraries=$withval +fi +], +[ +xview_libraries=NONE +])dnl + +if test "$no_xview" != yes; then + if test "$no_x" = yes; then + no_xview=yes + fi +fi +if test "$no_xview" != yes; then +AC_MSG_CHECKING(for XView) +if test x$xview_libraries = xNONE; then + if test x$xview_includes = xNONE; then +AC_CACHE_VAL(ac_cv_path_xview, +[ + no_xview=yes +AC_PATH_XVIEW_XMKMF + if test "x$no_xview" = xyes; then +AC_PATH_XVIEW_DIRECT + fi + if test "x$no_xview" = xyes; then + ac_cv_path_xview="no_xview=yes" + else + ac_cv_path_xview="no_xview= ac_xview_includes=$ac_xview_includes ac_xview_libraries=$ac_xview_libraries ac_xview_no_private_headers=$ac_xview_no_private_headers" + fi +])dnl + eval "$ac_cv_path_xview" + fi +fi + +if test "x$no_xview" = xyes; then + AC_MSG_RESULT(no) +else + if test "x$xview_includes" = x || test "x$xview_includes" = xNONE; then + xview_includes=$ac_xview_includes + fi + if test "x$xview_libraries" = x || test "x$xview_libraries" = xNONE; then + xview_libraries=$ac_xview_libraries + fi + xview_no_private_headers=$ac_xview_no_private_headers + ac_cv_path_xview="no_xview= ac_xview_includes=$xview_includes ac_xview_libraries=$xview_libraries ac_xview_no_private_headers=$ac_xview_no_private_headers" + if test "x$xview_libraries" != x; then + ac_msg_xview="libraries $xview_libraries" + else + ac_msg_xview="" + fi + if test "x$xview_includes" != x; then + if test "x$ac_msg_xview" != x; then + ac_msg_xview="$ac_msg_xview, " + fi + ac_msg_xview="${ac_msg_xview}headers $xview_includes" + fi + if test "x$xview_no_private_headers" = xyes; then + if test "x$ac_msg_xview" != x; then + ac_msg_xview="$ac_msg_xview, " + fi + ac_msg_xview="${ac_msg_xview}without xview_private headers" + fi + AC_MSG_RESULT([$ac_msg_xview]) +fi +fi +]) + +dnl Internal subroutine of AC_PATH_XVIEW +dnl Set ac_xview_includes, ac_xview_libraries, and no_xview (initially yes). +AC_DEFUN(AC_PATH_XVIEW_XMKMF, +[rm -fr conftestdir +if mkdir conftestdir; then + cd conftestdir + # Make sure to not put "make" in the Imakefile rules, since we grep it out. + cat > Imakefile <<'EOF' +#include +acfindxv: + @echo 'ac_im_library_dest="${LIBRARY_DEST}"; ac_im_header_dest="${HEADER_DEST}"' +EOF + if (xmkmf) >/dev/null 2>/dev/null && test -f Makefile; then + no_xview= + # GNU make sometimes prints "make[1]: Entering...", which would confuse us. + eval `make acfindxv 2>/dev/null | grep -v make` + # Screen out bogus values from the imake configuration. + if test -f "$ac_im_header_dest/xview/xview.h"; then + ac_xview_includes="$ac_im_header_dest" + else + no_xview=yes + fi + if test -d "$ac_im_library_dest"; then + ac_xview_libraries="$ac_im_library_dest" + else + no_xview=yes + fi + fi + if test "x$no_xview" != xyes; then + if test -f "$ac_xview_includes/xview_private/draw_impl.h"; then + ac_xview_no_private_headers= + else + ac_xview_no_private_headers=yes + fi + fi + cd .. + rm -fr conftestdir +fi +]) + +dnl Internal subroutine of AC_PATH_XVIEW +dnl Set ac_xview_includes, ac_xview_libraries, and no_xview (initially yes). +AC_DEFUN(AC_PATH_XVIEW_DIRECT, +[test -z "$xview_direct_test_library" && xview_direct_test_library=xview +test -z "$xview_direct_test_function" && xview_direct_test_function=xv_unique_key +test -z "$xview_direct_test_include" && xview_direct_test_include=xview/xview.h +AC_TRY_CPP([#include <$xview_direct_test_include>], +[no_xview= ac_xview_includes=], +[ for ac_dir in \ + $OPENWINHOME/include \ + /usr/openwin/include \ + /usr/openwin/share/include \ + \ + /usr/X11R6/include \ + /usr/X11R5/include \ + /usr/X11R4/include \ + \ + /usr/include/X11R6 \ + /usr/include/X11R5 \ + /usr/include/X11R4 \ + \ + /usr/local/X11R6/include \ + /usr/local/X11R5/include \ + /usr/local/X11R4/include \ + \ + /usr/local/include/X11R6 \ + /usr/local/include/X11R5 \ + /usr/local/include/X11R4 \ + \ + /usr/X11/include \ + /usr/include/X11 \ + /usr/local/X11/include \ + /usr/local/include/X11 \ + \ + /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 \ + ; \ + do + if test -r "$ac_dir/$xview_direct_test_include"; then + no_xview= ac_xview_includes=$ac_dir + break + fi + done]) + +if test "x$no_xview" != xyes; then + if test "x$ac_xview_includes" != x; then + if test -f "$ac_xview_includes/xview_private/draw_impl.h"; then + ac_xview_no_private_headers= + else + ac_xview_no_private_headers=yes + fi + else +AC_TRY_CPP([#include ], +[ac_xview_no_private_headers=],[ac_xview_no_private_headers=yes]) + fi +fi + +# Check for the libraries. +# See if we find them without any special options. +# Don't add to $LIBS permanently. +ac_save_LIBS="$LIBS" +ac_save_LDFLAGS="$LDFLAGS" +LDFLAGS="$LDFLAGS $X_LIBS" +LIBS="-l$xview_direct_test_library -lolgx $X_EXTRA_LIBS -lX11 $X_PRE_LIBS $LIBS" +AC_TRY_LINK([#include <$xview_direct_test_include> +], [${xview_direct_test_function}()], +[LIBS="$ac_save_LIBS" LDFLAGS="$ac_save_LDFLAGS" no_xview= ac_xview_libraries=], +[LIBS="$ac_save_LIBS" LDFLAGS="$ac_save_LDFLAGS" +# First see if replacing the include by lib works. +for ac_dir in `echo "$ac_xview_includes" | sed s/include/lib/` \ + $OPENWINHOME/lib \ + $OPENWINHOME/share/lib \ + /usr/openwin/lib \ + /usr/openwin/share/lib \ + \ + /usr/X11R6/lib \ + /usr/X11R5/lib \ + /usr/X11R4/lib \ + \ + /usr/lib/X11R6 \ + /usr/lib/X11R5 \ + /usr/lib/X11R4 \ + \ + /usr/local/X11R6/lib \ + /usr/local/X11R5/lib \ + /usr/local/X11R4/lib \ + \ + /usr/local/lib/X11R6 \ + /usr/local/lib/X11R5 \ + /usr/local/lib/X11R4 \ + \ + /usr/X11/lib \ + /usr/lib/X11 \ + /usr/local/X11/lib \ + /usr/local/lib/X11 \ + \ + /usr/X386/lib \ + /usr/x386/lib \ + /usr/XFree86/lib/X11 \ + \ + /usr/lib \ + /usr/local/lib \ + /usr/unsupported/lib \ + /usr/athena/lib \ + /usr/local/x11r5/lib \ + /usr/lpp/Xamples/lib \ + ; \ +do + for ac_extension in a so sl; do + if test -r $ac_dir/lib${xview_direct_test_library}.$ac_extension; then + no_xview= ac_xview_libraries=$ac_dir + break 2 + fi + done +done])]) + +dnl Substitute XVIEW_LIBS and XVIEW_CFLAGS and +dnl HAVE_XVIEW, which is either yes or no. +dnl Both contain X_LIBS resp. X_CFLAGS inside +dnl Also substitutes HAVE_XVIEW_PRIVATE_HEADERS +dnl if there are xview_private headers in the system +AC_DEFUN(AC_PATH_XVIEW_XTRA, +[AC_REQUIRE([AC_PATH_XVIEW])dnl +if test "$no_xview" = yes; then + # Not all programs may use this symbol, but it does not hurt to define it. + XVIEW_CFLAGS="$X_CFGLAGS $XVIEW_CFLAGS -DXVIEW_MISSING" +else + if test -n "$xview_includes"; then + XVIEW_CFLAGS="$X_CFLAGS $XVIEW_CFGLAGS" + if test "$xview_includes" != "$x_includes"; then + XVIEW_CPPFLAGS="-I$xview_includes" + fi + fi + + # It would be nice to have a more robust check for the -R ld option than + # just checking for Solaris. + # It would also be nice to do this for all -L options, not just this one. + if test -n "$xview_libraries"; then + if test "$xview_libraries" = "$x_libraries"; then + XVIEW_LIBS="$X_LIBS $XVIEW_LIBS" + else + XVIEW_LIBS="$X_LIBS $XVIEW_LIBS -L$xview_libraries" + if test "`(uname) 2>/dev/null`" = SunOS && + uname -r | grep '^5' >/dev/null; then + XVIEW_LIBS="$XVIEW_LIBS -R$xview_libraries" + fi + fi + fi +fi +if test "x$no_xview" = xyes; then + HAVE_XVIEW=no +else + HAVE_XVIEW=yes +fi +if test "x$xview_no_private_headers" = xyes; then + HAVE_XVIEW_PRIVATE_HEADERS=no +else + HAVE_XVIEW_PRIVATE_HEADERS=yes +fi +AC_SUBST(XVIEW_CFLAGS)dnl +AC_SUBST(XVIEW_CPPFLAGS)dnl +AC_SUBST(XVIEW_LIBS)dnl +AC_SUBST(HAVE_XVIEW)dnl +AC_SUBST(HAVE_XVIEW_PRIVATE_HEADERS)dnl +])dnl + +dnl Internal subroutine of AC_PATH_SLINGSHOT +AC_DEFUN(AC_PATH_SLINGSHOT_DIRECT, +[ +AC_TRY_CPP([#include ],[no_ss= ac_ss_includes=], +[ for ac_dir in \ + $OPENWINHOME/include \ + /usr/openwin/include \ + /usr/openwin/share/include \ + \ + /usr/X11R6/include \ + /usr/X11R5/include \ + /usr/X11R4/include \ + \ + /usr/include/X11R6 \ + /usr/include/X11R5 \ + /usr/include/X11R4 \ + \ + /usr/local/X11R6/include \ + /usr/local/X11R5/include \ + /usr/local/X11R4/include \ + \ + /usr/local/include/X11R6 \ + /usr/local/include/X11R5 \ + /usr/local/include/X11R4 \ + \ + /usr/X11/include \ + /usr/include/X11 \ + /usr/local/X11/include \ + /usr/local/include/X11 \ + \ + /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 \ + ; \ + do + if test -r "$ac_dir/sspkg/rectobj.h"; then + no_ss= ac_ss_includes=$ac_dir + break + fi + done]) + +# Check for the libraries. +# See if we find them without any special options. +# Don't add to $LIBS permanently. +ac_save_LIBS="$LIBS" +ac_save_LDFLAGS="$LDFLAGS" +LDFLAGS="$LDFLAGS $XVIEW_LIBS" +LIBS="-lsspkg -lm -lxview -lolgx $X_EXTRA_LIBS -lX11 $X_PRE_LIBS $LIBS" +AC_TRY_LINK([#include +], [rectobj_get_selected_list()], +[LIBS="$ac_save_LIBS" LDFLAGS="$ac_save_LDFLAGS" no_ss= ac_ss_libraries=], +[LIBS="$ac_save_LIBS" LDFLAGS="$ac_save_LDFLAGS" +# First see if replacing the include by lib works. +for ac_dir in `echo "$ac_ss_includes" | sed s/include/lib/` \ + $OPENWINHOME/lib \ + $OPENWINHOME/share/lib \ + /usr/openwin/lib \ + /usr/openwin/share/lib \ + \ + /usr/X11R6/lib \ + /usr/X11R5/lib \ + /usr/X11R4/lib \ + \ + /usr/lib/X11R6 \ + /usr/lib/X11R5 \ + /usr/lib/X11R4 \ + \ + /usr/local/X11R6/lib \ + /usr/local/X11R5/lib \ + /usr/local/X11R4/lib \ + \ + /usr/local/lib/X11R6 \ + /usr/local/lib/X11R5 \ + /usr/local/lib/X11R4 \ + \ + /usr/X11/lib \ + /usr/lib/X11 \ + /usr/local/X11/lib \ + /usr/local/lib/X11 \ + \ + /usr/X386/lib \ + /usr/x386/lib \ + /usr/XFree86/lib/X11 \ + \ + /usr/lib \ + /usr/local/lib \ + /usr/unsupported/lib \ + /usr/athena/lib \ + /usr/local/x11r5/lib \ + /usr/lpp/Xamples/lib \ + ; \ +do + for ac_extension in a so sl; do + if test -r $ac_dir/libsspkg.$ac_extension; then + no_ss= ac_ss_libraries=$ac_dir + break 2 + fi + done +done])]) + +dnl Set ss_includes, ss_libraries, and no_ss (initially yes). +AC_DEFUN(AC_PATH_SLINGSHOT, +[AC_REQUIRE([AC_PATH_XVIEW_XTRA])dnl +AC_MSG_CHECKING(for SlingShot) +AC_ARG_WITH(ss, [--with-ss Use the SlingShot extension]) + +AC_ARG_WITH(ss-includes, [--with-ss-includes=path Specifies SlingShot includes directory], +[ +if test x$withval = xyes; then + AC_MSG_WARN(Usage is: --with-ss-includes=path) + ss_includes=NONE +else + ss_includes=$withval +fi +], +[ +ss_includes=NONE +])dnl +AC_ARG_WITH(ss-libraries, [--with-ss-libraries=path Specifies SlingShot libraries directory], +[ +if test x$withval = xyes; then + AC_MSG_WARN(Usage is: --with-ss-libraries=path) + ss_libraries=NONE +else + ss_libraries=$withval +fi +], +[ +ss_libraries=NONE +])dnl + +if test "x$with_ss" = xno; then + no_ss=yes +else + if test "x$ss_includes" != xNONE && test "x$ss_libraries" != xNONE; then + no_ss= + else +AC_CACHE_VAL(ac_cv_path_ss, +[ + no_ss=yes +AC_PATH_SLINGSHOT_DIRECT + if test "x$no_ss" = xyes; then + ac_cv_path_ss="ac_noss=yes" + else + ac_cv_path_ss="ac_ss_includes=$ac_ss_includes ac_ss_libraries=$ac_ss_libraries" + fi +])dnl + eval "$ac_cv_path_ss" + fi +fi +fi +if test "x$no_ss" = xyes; then + AC_MSG_RESULT(no) +else + if test "x$ss_includes" = x || test "x$ss_includes" = xNONE; then + ss_includes=$ac_ss_includes + fi + if test "x$ss_libraries" = x || test "x$ss_libraries" = xNONE; then + ss_libraries=$ac_ss_libraries + fi + ac_cv_path_ss="no_ss= ac_ss_includes=$ss_includes ac_ss_libraries=$ss_libraries" + if test "x$ss_libraries" = x; then + if test "x$ss_includes" = x; then + AC_MSG_RESULT(yes) + else + AC_MSG_RESULT([headers $ss_includes]) + fi + else + if test "x$ss_includes" = x; then + AC_MSG_RESULT([libraries $ss_libraries]) + else + AC_MSG_RESULT([libraries $ss_libraries, headers $ss_includes]) + fi + fi +fi +]) + +dnl Substitute SLINGSHOT_LIBS and SLINGSHOT_CFLAGS and +dnl HAVE_SLINGSHOT, which is either yes or no. +dnl Both contain XVIEW_LIBS resp. XVIEW_CFLAGS inside +AC_DEFUN(AC_PATH_SLINGSHOT_XTRA, +[AC_REQUIRE([AC_PATH_SLINGSHOT])dnl +if test "$no_ss" = yes; then + # Not all programs may use this symbol, but it does not hurt to define it. + SLINGSHOT_CFLAGS="$XVIEW_CFGLAGS $SLINGSHOT_CFLAGS -DSLINGSHOT_MISSING" +else + if test -n "$ss_includes"; then + SLINGSHOT_CFLAGS="$XVIEW_CFLAGS $SLINGSHOT_CFGLAGS -I$ss_includes" + fi + + # It would be nice to have a more robust check for the -R ld option than + # just checking for Solaris. + # It would also be nice to do this for all -L options, not just this one. + if test -n "$ss_libraries"; then + SLINGSHOT_LIBS="$XVIEW_LIBS $SLINGSHOT_LIBS -L$ss_libraries" + if test "`(uname) 2>/dev/null`" = SunOS && + uname -r | grep '^5' >/dev/null; then + SLINGSHOT_LIBS="$SLINGSHOT_LIBS -R$ss_libraries" + fi + fi +fi +if test "x$no_ss" = xyes; then + HAVE_SLINGSHOT=no +else + HAVE_SLINGSHOT=yes +fi +AC_SUBST(SLINGSHOT_CFLAGS)dnl +AC_SUBST(SLINGSHOT_LIBS)dnl +AC_SUBST(HAVE_SLINGSHOT)dnl +])dnl + +dnl +dnl XView library checking end +dnl + +dnl +dnl Check for struct linger +dnl +AC_DEFUN(AC_STRUCT_LINGER, [ +av_struct_linger=no +AC_MSG_CHECKING(struct linger is available) +AC_TRY_RUN([ +#include +#include + +struct linger li; + +main () +{ + li.l_onoff = 1; + li.l_linger = 120; + exit (0); +} +],[ +AC_DEFINE(HAVE_STRUCT_LINGER) +av_struct_linger=yes +],[ +av_struct_linger=no +],[ +av_struct_linger=no +]) +AC_MSG_RESULT($av_struct_linger) +]) + +dnl +dnl Check for size of d_name dirent member +dnl +AC_DEFUN(AC_SHORT_D_NAME_LEN, [ +AC_MSG_CHECKING(filename fits on dirent.d_name) +AC_CACHE_VAL(ac_cv_dnamesize, [ +OCFLAGS="$CFLAGS" +CFLAGS="$CFLAGS -I$srcdir" +AC_TRY_RUN([ +#include + +main () +{ + struct dirent ddd; + + if (sizeof (ddd.d_name) < 12) + exit (0); + else + exit (1); +} + +],[ + ac_cv_dnamesize="no" +], [ + ac_cv_dnamesize="yes" +], [ +# Cannot find out, so assume no + ac_cv_dnamesize="no" +]) +CFLAGS="$OCFLAGS" +]) +if test x$ac_cv_dnamesize = xno; then + AC_DEFINE(NEED_EXTRA_DIRENT_BUFFER) +fi +AC_MSG_RESULT($ac_cv_dnamesize) +]) + +dnl +dnl Filesystem information detection +dnl +dnl To get information about the disk, mount points, etc. +dnl + +AC_DEFUN(AC_GET_FS_INFO, [ + AC_CHECK_HEADERS(fcntl.h sys/dustat.h sys/param.h sys/statfs.h sys/fstyp.h) + AC_CHECK_HEADERS(mnttab.h mntent.h utime.h sys/statvfs.h sys/vfs.h) + AC_CHECK_HEADERS(sys/mount.h sys/filsys.h sys/fs_types.h) + AC_CHECK_FUNCS(getmntinfo) + + dnl This configure.in code has been stolen from GNU fileutils-3.12. Its + dnl job is to detect a method to get list of mounted filesystems. + + AC_MSG_CHECKING([for d_ino member in directory struct]) + AC_CACHE_VAL(fu_cv_sys_d_ino_in_dirent, + [AC_TRY_LINK([ +#include +#ifdef HAVE_DIRENT_H +# include +#else /* not HAVE_DIRENT_H */ +# define dirent direct +# ifdef HAVE_SYS_NDIR_H +# include +# endif /* HAVE_SYS_NDIR_H */ +# ifdef HAVE_SYS_DIR_H +# include +# endif /* HAVE_SYS_DIR_H */ +# ifdef HAVE_NDIR_H +# include +# endif /* HAVE_NDIR_H */ +#endif /* HAVE_DIRENT_H */ + ], + [struct dirent dp; dp.d_ino = 0;], + fu_cv_sys_d_ino_in_dirent=yes, + fu_cv_sys_d_ino_in_dirent=no)]) + AC_MSG_RESULT($fu_cv_sys_d_ino_in_dirent) + if test $fu_cv_sys_d_ino_in_dirent = yes; then + AC_DEFINE(D_INO_IN_DIRENT) + fi + + # Determine how to get the list of mounted filesystems. + list_mounted_fs= + + # If the getmntent function is available but not in the standard library, + # make sure LIBS contains -lsun (on Irix4) or -lseq (on PTX). + AC_FUNC_GETMNTENT + + if test $ac_cv_func_getmntent = yes; then + + # This system has the getmntent function. + # Determine whether it's the one-argument variant or the two-argument one. + + if test -z "$list_mounted_fs"; then + # SVR4 + AC_MSG_CHECKING([for two-argument getmntent function]) + AC_CACHE_VAL(fu_cv_sys_mounted_getmntent2, + [AC_EGREP_HEADER(getmntent, sys/mnttab.h, + fu_cv_sys_mounted_getmntent2=yes, + fu_cv_sys_mounted_getmntent2=no)]) + AC_MSG_RESULT($fu_cv_sys_mounted_getmntent2) + if test $fu_cv_sys_mounted_getmntent2 = yes; then + list_mounted_fs=found + AC_DEFINE(MOUNTED_GETMNTENT2) + fi + fi + + if test -z "$list_mounted_fs"; then + # 4.3BSD, SunOS, HP-UX, Dynix, Irix + AC_MSG_CHECKING([for one-argument getmntent function]) + AC_CACHE_VAL(fu_cv_sys_mounted_getmntent1, + [test $ac_cv_header_mntent_h = yes \ + && fu_cv_sys_mounted_getmntent1=yes \ + || fu_cv_sys_mounted_getmntent1=no]) + AC_MSG_RESULT($fu_cv_sys_mounted_getmntent1) + if test $fu_cv_sys_mounted_getmntent1 = yes; then + list_mounted_fs=found + AC_DEFINE(MOUNTED_GETMNTENT1) + fi + fi + + if test -z "$list_mounted_fs"; then + AC_WARN([could not determine how to read list of mounted fs]) + CPPFLAGS="$CPPFLAGS -DNO_INFOMOUNT" + fi + + fi + + if test -z "$list_mounted_fs"; then + # DEC Alpha running OSF/1. + AC_MSG_CHECKING([for getfsstat function]) + AC_CACHE_VAL(fu_cv_sys_mounted_getsstat, + [AC_TRY_LINK([ +#include +#include +#include ], + [struct statfs *stats; + numsys = getfsstat ((struct statfs *)0, 0L, MNT_WAIT); ], + fu_cv_sys_mounted_getsstat=yes, + fu_cv_sys_mounted_getsstat=no)]) + AC_MSG_RESULT($fu_cv_sys_mounted_getsstat) + if test $fu_cv_sys_mounted_getsstat = yes; then + list_mounted_fs=found + AC_DEFINE(MOUNTED_GETFSSTAT) + fi + fi + + if test -z "$list_mounted_fs"; then + # AIX. + AC_MSG_CHECKING([for mntctl function and struct vmount]) + AC_CACHE_VAL(fu_cv_sys_mounted_vmount, + [AC_TRY_CPP([#include ], + fu_cv_sys_mounted_vmount=yes, + fu_cv_sys_mounted_vmount=no)]) + AC_MSG_RESULT($fu_cv_sys_mounted_vmount) + if test $fu_cv_sys_mounted_vmount = yes; then + list_mounted_fs=found + AC_DEFINE(MOUNTED_VMOUNT) + fi + fi + + if test -z "$list_mounted_fs"; then + # SVR3 + AC_MSG_CHECKING([for existence of three headers]) + AC_CACHE_VAL(fu_cv_sys_mounted_fread_fstyp, + [AC_TRY_CPP([ +#include +#include +#include ], + fu_cv_sys_mounted_fread_fstyp=yes, + fu_cv_sys_mounted_fread_fstyp=no)]) + AC_MSG_RESULT($fu_cv_sys_mounted_fread_fstyp) + if test $fu_cv_sys_mounted_fread_fstyp = yes; then + list_mounted_fs=found + AC_DEFINE(MOUNTED_FREAD_FSTYP) + fi + fi + + if test -z "$list_mounted_fs"; then + # 4.4BSD and DEC OSF/1. + AC_MSG_CHECKING([for getmntinfo function]) + AC_CACHE_VAL(fu_cv_sys_mounted_getmntinfo, + [ + ok= + if test $ac_cv_func_getmntinfo = yes; then + AC_EGREP_HEADER(f_type;, sys/mount.h, + ok=yes) + fi + test -n "$ok" \ + && fu_cv_sys_mounted_getmntinfo=yes \ + || fu_cv_sys_mounted_getmntinfo=no + ]) + AC_MSG_RESULT($fu_cv_sys_mounted_getmntinfo) + if test $fu_cv_sys_mounted_getmntinfo = yes; then + list_mounted_fs=found + AC_DEFINE(MOUNTED_GETMNTINFO) + fi + fi + + # FIXME: add a test for netbsd-1.1 here + + if test -z "$list_mounted_fs"; then + # Ultrix + AC_MSG_CHECKING([for getmnt function]) + AC_CACHE_VAL(fu_cv_sys_mounted_getmnt, + [AC_TRY_CPP([ +#include +#include ], + fu_cv_sys_mounted_getmnt=yes, + fu_cv_sys_mounted_getmnt=no)]) + AC_MSG_RESULT($fu_cv_sys_mounted_getmnt) + if test $fu_cv_sys_mounted_getmnt = yes; then + list_mounted_fs=found + AC_DEFINE(MOUNTED_GETMNT) + fi + fi + + if test -z "$list_mounted_fs"; then + # SVR2 + AC_MSG_CHECKING([whether it is possible to resort to fread on /etc/mnttab]) + AC_CACHE_VAL(fu_cv_sys_mounted_fread, + [AC_TRY_CPP([#include ], + fu_cv_sys_mounted_fread=yes, + fu_cv_sys_mounted_fread=no)]) + AC_MSG_RESULT($fu_cv_sys_mounted_fread) + if test $fu_cv_sys_mounted_fread = yes; then + list_mounted_fs=found + AC_DEFINE(MOUNTED_FREAD) + fi + fi + + if test -z "$list_mounted_fs"; then + AC_MSG_WARN([could not determine how to read list of mounted fs]) + CPPFLAGS="$CPPFLAGS -DNO_INFOMOUNT" + # FIXME -- no need to abort building the whole package + # Can't build mountlist.c or anything that needs its functions + fi + +dnl This configure.in code has been stolen from GNU fileutils-3.12. Its +dnl job is to detect a method to get file system information. + + AC_CHECKING(how to get filesystem space usage) + space=no + + # Here we'll compromise a little (and perform only the link test) + # since it seems there are no variants of the statvfs function. + if test $space = no; then + # SVR4 + AC_CHECK_FUNCS(statvfs) + if test $ac_cv_func_statvfs = yes; then + space=yes + AC_DEFINE(STAT_STATVFS) + fi + fi + + if test $space = no; then + # DEC Alpha running OSF/1 + AC_MSG_CHECKING([for 3-argument statfs function (DEC OSF/1)]) + AC_CACHE_VAL(fu_cv_sys_stat_statfs3_osf1, + [AC_TRY_RUN([ +#include +#include +#include + main () + { + struct statfs fsd; + fsd.f_fsize = 0; + exit (statfs (".", &fsd, sizeof (struct statfs))); + }], + fu_cv_sys_stat_statfs3_osf1=yes, + fu_cv_sys_stat_statfs3_osf1=no, + fu_cv_sys_stat_statfs3_osf1=no)]) + AC_MSG_RESULT($fu_cv_sys_stat_statfs3_osf1) + if test $fu_cv_sys_stat_statfs3_osf1 = yes; then + space=yes + AC_DEFINE(STAT_STATFS3_OSF1) + fi + fi + + if test $space = no; then + # AIX + AC_MSG_CHECKING([for two-argument statfs with statfs.bsize member (AIX, 4.3BSD)]) + AC_CACHE_VAL(fu_cv_sys_stat_statfs2_bsize, + [AC_TRY_RUN([ +#ifdef HAVE_SYS_PARAM_H +#include +#endif +#ifdef HAVE_SYS_MOUNT_H +#include +#endif +#ifdef HAVE_SYS_VFS_H +#include +#endif + main () + { + struct statfs fsd; + fsd.f_bsize = 0; + exit (statfs (".", &fsd)); + }], + fu_cv_sys_stat_statfs2_bsize=yes, + fu_cv_sys_stat_statfs2_bsize=no, + fu_cv_sys_stat_statfs2_bsize=no)]) + AC_MSG_RESULT($fu_cv_sys_stat_statfs2_bsize) + if test $fu_cv_sys_stat_statfs2_bsize = yes; then + space=yes + AC_DEFINE(STAT_STATFS2_BSIZE) + fi + fi + + if test $space = no; then + # SVR3 + AC_MSG_CHECKING([for four-argument statfs (AIX-3.2.5, SVR3)]) + AC_CACHE_VAL(fu_cv_sys_stat_statfs4, + [AC_TRY_RUN([#include +#include + main () + { + struct statfs fsd; + exit (statfs (".", &fsd, sizeof fsd, 0)); + }], + fu_cv_sys_stat_statfs4=yes, + fu_cv_sys_stat_statfs4=no, + fu_cv_sys_stat_statfs4=no)]) + AC_MSG_RESULT($fu_cv_sys_stat_statfs4) + if test $fu_cv_sys_stat_statfs4 = yes; then + space=yes + AC_DEFINE(STAT_STATFS4) + fi + fi + + if test $space = no; then + # 4.4BSD and NetBSD + AC_MSG_CHECKING([for two-argument statfs with statfs.fsize dnl + member (4.4BSD and NetBSD)]) + AC_CACHE_VAL(fu_cv_sys_stat_statfs2_fsize, + [AC_TRY_RUN([#include +#ifdef HAVE_SYS_PARAM_H +#include +#endif +#ifdef HAVE_SYS_MOUNT_H +#include +#endif + main () + { + struct statfs fsd; + fsd.f_fsize = 0; + exit (statfs (".", &fsd)); + }], + fu_cv_sys_stat_statfs2_fsize=yes, + fu_cv_sys_stat_statfs2_fsize=no, + fu_cv_sys_stat_statfs2_fsize=no)]) + AC_MSG_RESULT($fu_cv_sys_stat_statfs2_fsize) + if test $fu_cv_sys_stat_statfs2_fsize = yes; then + space=yes + AC_DEFINE(STAT_STATFS2_FSIZE) + fi + fi + + if test $space = no; then + # Ultrix + AC_MSG_CHECKING([for two-argument statfs with struct fs_data (Ultrix)]) + AC_CACHE_VAL(fu_cv_sys_stat_fs_data, + [AC_TRY_RUN([ +#include +#ifdef HAVE_SYS_PARAM_H +#include +#endif +#ifdef HAVE_SYS_MOUNT_H +#include +#endif +#ifdef HAVE_SYS_FS_TYPES_H +#include +#endif + main () + { + struct fs_data fsd; + /* Ultrix's statfs returns 1 for success, + 0 for not mounted, -1 for failure. */ + exit (statfs (".", &fsd) != 1); + }], + fu_cv_sys_stat_fs_data=yes, + fu_cv_sys_stat_fs_data=no, + fu_cv_sys_stat_fs_data=no)]) + AC_MSG_RESULT($fu_cv_sys_stat_fs_data) + if test $fu_cv_sys_stat_fs_data = yes; then + space=yes + AC_DEFINE(STAT_STATFS2_FS_DATA) + fi + fi + + dnl Not supported + dnl if test $space = no; then + dnl # SVR2 + dnl AC_TRY_CPP([#include ], + dnl AC_DEFINE(STAT_READ_FILSYS) space=yes) + dnl fi +]) + +dnl AC_CHECK_HEADER_IN_PATH(HEADER-FILE, ADDITIONAL_PATH, ACTION-IF-FOUND [, ACTION-IF-NOT-FOUND]) +AC_DEFUN(AC_CHECK_HEADER_IN_PATH, +[dnl Do the transliteration at runtime so arg 1 can be a shell variable. +ac_safe=`echo "$1" | tr './\055' '___'` +AC_MSG_CHECKING([for $1]) +AC_CACHE_VAL(ac_cv_header_in_path_$ac_safe, +[AC_TRY_CPP([#include <$1>], ac_header_in_path=yes, [ + ac_header_in_path_found=no + for ac_header_in_path_value in [$2]; do + ac_in_path_save_CPPFLAGS=$CPPFLAGS + CPPFLAGS="$CPPFLAGS -I$ac_header_in_path_value" + AC_TRY_CPP([#include <$1>], [ +ac_header_in_path_found=yes +ac_header_in_path=$ac_header_in_path_value +], ) + CPPFLAGS=$ac_in_path_save_CPPFLAGS + if test x$ac_header_in_path_found = xyes; then + break + fi + done + if test $ac_header_in_path_found = xno; then + ac_header_in_path=no + fi +]) + eval "ac_cv_header_in_path_$ac_safe=$ac_header_in_path" +])dnl +eval "ac_header_in_path=`echo '$ac_cv_header_in_path_'$ac_safe`" +if test "$ac_header_in_path" = no; then + AC_MSG_RESULT(no) +ifelse([$4], , , [$4 +])dnl +else + if test -n "$ac_header_in_path"; then + AC_MSG_RESULT($ac_header_in_path) + else + AC_MSG_RESULT(yes) + fi + if test x$ac_header_in_path = xyes; then + ac_header_in_path= + eval "ac_cv_header_in_path_$ac_safe=" + fi + ifelse([$3], , , [$3 +])dnl +fi +]) + +dnl Hope I can check for libXpm only in the X11 library directory +AC_DEFUN(AC_LIB_XPM, [ +AC_MSG_CHECKING(for -lXpm) +AC_CACHE_VAL(ac_cv_has_xpm, [ + ac_cv_has_xpm=no + if test x$no_x = xyes; then + : + else + has_xpm_save_LIBS=$LIBS + LIBS="-lXpm $X_EXTRA_LIBS -lX11 $X_PRE_LIBS $LIBS" + has_xpm_save_LDFLAGS=$LDFLAGS + LDFLAGS="$LDFLAGS $X_LIBS" + has_xpm_save_CFLAGS=$CFLAGS + CFLAGS="$CFLAGS $X_CFLAGS" + AC_TRY_LINK([ +#include +#include +], [XpmLibraryVersion();], ac_cv_has_xpm=yes) + CFLAGS="$has_xpm_save_CFLAGS" + LDFLAGS="$has_xpm_save_LDFLAGS" + LIBS="$has_xpm_save_LIBS" + fi +]) +AC_MSG_RESULT($ac_cv_has_xpm) +]) + +dnl Hope I can check for libXext only in the X11 library directory +dnl and shape.h will be in X11/extensions/shape.h +AC_DEFUN(AC_X_SHAPE_EXTENSION, [ +AC_MSG_CHECKING(for X11 non-rectangular shape extension) +AC_CACHE_VAL(ac_cv_has_shape, [ + ac_cv_has_shape=no + if test x$no_x = xyes; then + : + else + has_shape_save_LIBS=$LIBS + LIBS="-lXext $X_EXTRA_LIBS -lX11 $X_PRE_LIBS $LIBS" + has_shape_save_LDFLAGS=$LDFLAGS + LDFLAGS="$LDFLAGS $X_LIBS" + has_shape_save_CFLAGS=$CFLAGS + CFLAGS="$CFLAGS $X_CFLAGS" + AC_TRY_LINK([ +#include +#include +#include +], [ +Display *dpy = (Display *)NULL; +int a, b; +XShapeQueryVersion(dpy,&a,&b); +], ac_cv_has_shape=yes) + CFLAGS="$has_shape_save_CFLAGS" + LDFLAGS="$has_shape_save_LDFLAGS" + LIBS="$has_shape_save_LIBS" + fi +]) +AC_MSG_RESULT($ac_cv_has_shape) +]) + +dnl AC_TRY_WARNINGS(INCLUDES, FUNCTION-BODY, +dnl ACTION-IF-NO-WARNINGS [, ACTION-IF-WARNINGS-OR-ERROR]) +AC_DEFUN(AC_TRY_WARNINGS, +[cat > conftest.$ac_ext <&AC_FD_CC 2>&AC_FD_CC; then + ifelse([$4], , :, [rm -rf conftest* + $4]) +ifelse([$3], , , [else + rm -rf conftest* + $3 +])dnl +fi +rm -f conftest*] +) + +dnl Find if make is GNU make. +AC_DEFUN(AC_PROG_GNU_MAKE, +[AC_MSG_CHECKING(whether we are using GNU make) +set dummy ${MAKE-make}; ac_make=[$]2 +AC_CACHE_VAL(ac_cv_prog_gnu_make, +[cat > conftestmake <<\EOF +all: + @echo ' ' +EOF +if ${MAKE-make} --version -f conftestmake 2>/dev/null | grep GNU >/dev/null 2>&1; then + ac_cv_prog_gnu_make=yes +else + ac_cv_prog_gnu_make=no +fi +rm -f conftestmake])dnl +if test $ac_cv_prog_gnu_make = yes; then + AC_MSG_RESULT(yes) + GNU_MAKE="GNU_MAKE=yes" +else + AC_MSG_RESULT(no) + GNU_MAKE= +fi +AC_SUBST([GNU_MAKE])dnl +]) + +dnl +dnl Local additions to Autoconf macros. +dnl Copyright (C) 1992, 1994, 1995 Free Software Foundation, Inc. +dnl François Pinard , 1992. + +dnl ## ----------------------------------------- ## +dnl ## ANSIfy the C compiler whenever possible. ## +dnl ## ----------------------------------------- ## + +dnl @defmac AC_PROG_CC_STDC +dnl @maindex PROG_CC_STDC +dnl @ovindex CC +dnl If the C compiler in not in ANSI C mode by default, try to add an option +dnl to output variable @code{CC} to make it so. This macro tries various +dnl options that select ANSI C on some system or another. It considers the +dnl compiler to be in ANSI C mode if it defines @code{__STDC__} to 1 and +dnl handles function prototypes correctly. +dnl +dnl If you use this macro, you should check after calling it whether the C +dnl compiler has been set to accept ANSI C; if not, the shell variable +dnl @code{ac_cv_prog_cc_stdc} is set to @samp{no}. If you wrote your source +dnl code in ANSI C, you can make an un-ANSIfied copy of it by using the +dnl program @code{ansi2knr}, which comes with Ghostscript. +dnl @end defmac + +dnl Unixware 2.1 defines __STDC__ to 1 only when some useful extensions are +dnl turned off. They are on by default and turned off with the option -Xc. +dnl The consequence is that __STDC__ is defined but e.g. struct sigaction +dnl is not defined. -- Norbert + +dnl Below all tests but the one for HP-UX are removed. They caused more +dnl problems than they soved, sigh. -- Norbert + +AC_DEFUN(fp_PROG_CC_STDC, +[AC_MSG_CHECKING(for ${CC-cc} option to accept ANSI C) +AC_CACHE_VAL(ac_cv_prog_cc_stdc, +[ac_cv_prog_cc_stdc=no +ac_save_CFLAGS="$CFLAGS" +dnl Don't try gcc -ansi; that turns off useful extensions and +dnl breaks some systems' header files. +dnl AIX -qlanglvl=ansi (removed -- Norbert) +dnl Ultrix and OSF/1 -std1 (removed -- Norbert) +dnl HP-UX -Aa -D_HPUX_SOURCE +dnl SVR4 -Xc (removed -- Norbert) +for ac_arg in "" "-Aa -D_HPUX_SOURCE" +do + CFLAGS="$ac_save_CFLAGS $ac_arg" + AC_TRY_COMPILE( +[#include +#if !defined(__STDC__) || __STDC__ != 1 +choke me +#endif +], [int test (int i, double x); +struct sigaction sa; +struct s1 {int (*f) (int a);}; +struct s2 {int (*f) (double a);};], +[ac_cv_prog_cc_stdc="$ac_arg"; break]) +done +CFLAGS="$ac_save_CFLAGS" +]) +AC_MSG_RESULT($ac_cv_prog_cc_stdc) +case "x$ac_cv_prog_cc_stdc" in + x|xno) ;; + *) CC="$CC $ac_cv_prog_cc_stdc" ;; +esac +]) + diff --git a/src/panel.h b/src/panel.h index 0099b68ae..cfcc631a9 100644 --- a/src/panel.h +++ b/src/panel.h @@ -116,6 +116,8 @@ typedef struct { void *filter_w; void *status; void *ministatus; + + int estimated_total; #endif } WPanel; diff --git a/src/screen.c b/src/screen.c index 41cc38666..f9605eac7 100644 --- a/src/screen.c +++ b/src/screen.c @@ -507,16 +507,25 @@ format_file (char *dest, WPanel *panel, int file_index, int width, int attr, int color = NORMAL_COLOR; for (format = home; format; format = format->next){ if (format->string_fn){ + int len; + if (empty_line) txt = " "; else txt = (*format->string_fn)(fe, format->field_len); old_pos = cdest; - cdest = to_buffer (cdest, format->just_mode, format->field_len, txt); - length += format->field_len; -#ifndef HAVE_X + len = format->field_len; + if (len + length > width) + len = width - length; + cdest = to_buffer (cdest, format->just_mode, len, txt); + length += len; + +#ifdef HAVE_X + if (length == width) + break; +#else /* What shall we do? Will we color each line according to * the file type? Any suggestions to mc@timur.kazan.su */ @@ -601,10 +610,10 @@ repaint_file (WPanel *panel, int file_index, int mv, int attr, int isstatus) } #endif +#ifndef PORT_HAS_DISPLAY_MINI_INFO void display_mini_info (WPanel *panel) { -#ifndef HAVE_X if (!show_mini_info) return; @@ -659,8 +668,8 @@ display_mini_info (WPanel *panel) /* Default behaviour */ repaint_file (panel, panel->selected, 0, STATUS, 1); return; -#endif } +#endif #ifndef HAVE_X void diff --git a/src/view.h b/src/view.h index 29ca431b0..ca5e61c0e 100644 --- a/src/view.h +++ b/src/view.h @@ -97,6 +97,7 @@ typedef struct { void *gtk_bytes; /* bytes */ void *gtk_flags; /* flags (growing) */ void *gtk_percent; /* percent */ + void *sadj; /* scrollbar adjustment */ #endif int move_dir; /* return value from widget: diff --git a/tk/tkconf.h b/tk/tkconf.h index cbfd2c5e2..692ff3a59 100644 --- a/tk/tkconf.h +++ b/tk/tkconf.h @@ -11,6 +11,7 @@ #define PORT_HAS_PANEL_RESET_SORT_LABELS 1 #define PORT_HAS_DESTROY_CMD 1 #define PORT_HAS_RADIO_FOCUS_ITEM 1 +#define PORT_HAS_DISPLAY_MINI_INFO 1 #define frontend_run_dlg(x) tkrundlg_event (x) diff --git a/tk/tkscreen.c b/tk/tkscreen.c index 8f7c8f98e..c1869d832 100644 --- a/tk/tkscreen.c +++ b/tk/tkscreen.c @@ -554,3 +554,9 @@ panel_update_cols (Widget *widget, int frame_size) { /* nothing */ } + +void +display_mini_info (WPanel *panel) +{ + /* FIXME: implement */ +}