diff --git a/TODO b/TODO index c708034d..c578641c 100644 --- a/TODO +++ b/TODO @@ -8,9 +8,7 @@ Vague musings: - Allow indentation of marked text by spaces as well as tabs? - Allow indentation to add just enough columns to reach the nearest multiple of tabsize, rather than always adding tabsize columns? -- Allow conversion between different character sets. Maybe use glib's - iconv() if the system's iconv() is inadequate, since we already use - glib's vsnprintf() if the system lacks vsnprintf()? +- Allow conversion between different character sets. - Allow setting marks (saved positions, not to be confused with the mark set via Ctrl-^) at various lines and/or columns in the buffer, and allow movement between them with a single keystroke? diff --git a/autogen.sh b/autogen.sh index 98a88f86..bb2f4e10 100755 --- a/autogen.sh +++ b/autogen.sh @@ -11,9 +11,11 @@ modules=" isblank iswblank regex + snprintf-posix strcase strcasestr-simple strnlen + vsnprintf-posix " # Make sure the local gnulib git repo is up-to-date. diff --git a/configure.ac b/configure.ac index c9abd1e9..659e4144 100644 --- a/configure.ac +++ b/configure.ac @@ -28,7 +28,10 @@ AC_PREREQ([2.69]) dnl Lie about gnulib features we don't use to speed up & shrink down. +gl_cv_func_printf_directive_n=yes gl_cv_func_printf_infinite_long_double=yes +gl_cv_func_printf_long_double=yes +gl_cv_func_snprintf_directive_n=yes dnl Checks for programs. @@ -465,30 +468,9 @@ int main(void) dnl Checks for functions. -AC_CHECK_FUNCS(snprintf vsnprintf) - if test "x$enable_utf8" != xno; then AC_CHECK_FUNCS(iswalnum iswpunct iswspace nl_langinfo mblen mbstowcs mbtowc wctomb wcwidth) fi - -if test x$ac_cv_func_snprintf = xno; then - AM_PATH_GLIB_2_0(2.0.0,, - AC_MSG_ERROR([ -*** snprintf() not found. GLIB 2.x not found either. -*** You should install the GLIB 2.x library which can -*** be found at http://ftp.gtk.org/.]), - glib) -fi - -if test x$ac_cv_func_vsnprintf = xno; then - AM_PATH_GLIB_2_0(2.0.0,, - AC_MSG_ERROR([ -*** vsnprintf() not found. GLIB 2.x not found either. -*** You should install the GLIB 2.x library which can -*** be found at http://ftp.gtk.org/.]), - glib) -fi - dnl Checks for typedefs, structures, and compiler characteristics. dnl Checks for available flags. @@ -498,7 +480,6 @@ AX_CHECK_COMPILE_FLAG([-Wall], [CFLAGS="$CFLAGS -Wall"], [], []) dnl Checks for library functions. AC_TYPE_SIGNAL -AC_FUNC_VPRINTF dnl Checks for libraries. @@ -575,13 +556,6 @@ LIBS="$LIBS $CURSES_LIB" AC_SUBST(CURSES_LIB) -if test "x$GLIB_CFLAGS" != "x"; then - CFLAGS="$CFLAGS $GLIB_CFLAGS" -fi -if test "x$GLIB_LIBS" != "x"; then - LDFLAGS="$LDFLAGS $GLIB_LIBS" -fi - if test "x$enable_utf8" != xno && \ test x$CURSES_LIB_WIDE = xyes && \ test x$ac_cv_func_iswalnum = xyes && \ diff --git a/m4/Makefile.am b/m4/Makefile.am index b9a37af7..450cda1e 100644 --- a/m4/Makefile.am +++ b/m4/Makefile.am @@ -5,7 +5,6 @@ EXTRA_DIST = \ extern-inline.m4 \ fcntl-o.m4 \ gettext.m4 \ - glib-2.0.m4 \ glibc21.m4 \ glibc2.m4 \ gnulib-cache.m4 \ diff --git a/m4/glib-2.0.m4 b/m4/glib-2.0.m4 deleted file mode 100644 index d6413ff7..00000000 --- a/m4/glib-2.0.m4 +++ /dev/null @@ -1,215 +0,0 @@ -# Configure paths for GLIB -# Owen Taylor 1997-2001 - -dnl AM_PATH_GLIB_2_0([MINIMUM-VERSION, [ACTION-IF-FOUND [, ACTION-IF-NOT-FOUND [, MODULES]]]]) -dnl Test for GLIB, and define GLIB_CFLAGS and GLIB_LIBS, if gmodule, gobject or -dnl gthread is specified in MODULES, pass to pkg-config -dnl -AC_DEFUN([AM_PATH_GLIB_2_0], -[dnl -dnl Get the cflags and libraries from pkg-config -dnl -AC_ARG_ENABLE(glibtest, [ --disable-glibtest do not try to compile and run a test GLIB program], - , enable_glibtest=yes) - - pkg_config_args=glib-2.0 - for module in . $4 - do - case "$module" in - gmodule) - pkg_config_args="$pkg_config_args gmodule-2.0" - ;; - gmodule-no-export) - pkg_config_args="$pkg_config_args gmodule-no-export-2.0" - ;; - gobject) - pkg_config_args="$pkg_config_args gobject-2.0" - ;; - gthread) - pkg_config_args="$pkg_config_args gthread-2.0" - ;; - esac - done - - AC_PATH_PROG(PKG_CONFIG, pkg-config, no) - - no_glib="" - - if test x$PKG_CONFIG != xno ; then - if $PKG_CONFIG --atleast-pkgconfig-version 0.7 ; then - : - else - echo *** pkg-config too old; version 0.7 or better required. - no_glib=yes - PKG_CONFIG=no - fi - else - no_glib=yes - fi - - min_glib_version=ifelse([$1], ,2.0.0,$1) - AC_MSG_CHECKING(for GLIB - version >= $min_glib_version) - - if test x$PKG_CONFIG != xno ; then - ## don't try to run the test against uninstalled libtool libs - if $PKG_CONFIG --uninstalled $pkg_config_args; then - echo "Will use uninstalled version of GLib found in PKG_CONFIG_PATH" - enable_glibtest=no - fi - - if $PKG_CONFIG --atleast-version $min_glib_version $pkg_config_args; then - : - else - no_glib=yes - fi - fi - - if test x"$no_glib" = x ; then - GLIB_GENMARSHAL=`$PKG_CONFIG --variable=glib_genmarshal glib-2.0` - GOBJECT_QUERY=`$PKG_CONFIG --variable=gobject_query glib-2.0` - GLIB_MKENUMS=`$PKG_CONFIG --variable=glib_mkenums glib-2.0` - - GLIB_CFLAGS=`$PKG_CONFIG --cflags $pkg_config_args` - GLIB_LIBS=`$PKG_CONFIG --libs $pkg_config_args` - glib_config_major_version=`$PKG_CONFIG --modversion glib-2.0 | \ - sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\1/'` - glib_config_minor_version=`$PKG_CONFIG --modversion glib-2.0 | \ - sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\2/'` - glib_config_micro_version=`$PKG_CONFIG --modversion glib-2.0 | \ - sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\3/'` - if test "x$enable_glibtest" = "xyes" ; then - ac_save_CFLAGS="$CFLAGS" - ac_save_LIBS="$LIBS" - CFLAGS="$CFLAGS $GLIB_CFLAGS" - LIBS="$GLIB_LIBS $LIBS" -dnl -dnl Now check if the installed GLIB is sufficiently new. (Also sanity -dnl checks the results of pkg-config to some extent) -dnl - rm -f conf.glibtest - AC_TRY_RUN([ -#include -#include -#include - -int -main () -{ - int major, minor, micro; - char *tmp_version; - - system ("touch conf.glibtest"); - - /* HP/UX 9 (%@#!) writes to sscanf strings */ - tmp_version = g_strdup("$min_glib_version"); - if (sscanf(tmp_version, "%d.%d.%d", &major, &minor, µ) != 3) { - printf("%s, bad version string\n", "$min_glib_version"); - exit(1); - } - - if ((glib_major_version != $glib_config_major_version) || - (glib_minor_version != $glib_config_minor_version) || - (glib_micro_version != $glib_config_micro_version)) - { - printf("\n*** 'pkg-config --modversion glib-2.0' returned %d.%d.%d, but GLIB (%d.%d.%d)\n", - $glib_config_major_version, $glib_config_minor_version, $glib_config_micro_version, - glib_major_version, glib_minor_version, glib_micro_version); - printf ("*** was found! If pkg-config was correct, then it is best\n"); - printf ("*** to remove the old version of GLib. You may also be able to fix the error\n"); - printf("*** by modifying your LD_LIBRARY_PATH enviroment variable, or by editing\n"); - printf("*** /etc/ld.so.conf. Make sure you have run ldconfig if that is\n"); - printf("*** required on your system.\n"); - printf("*** If pkg-config was wrong, set the environment variable PKG_CONFIG_PATH\n"); - printf("*** to point to the correct configuration files\n"); - } - else if ((glib_major_version != GLIB_MAJOR_VERSION) || - (glib_minor_version != GLIB_MINOR_VERSION) || - (glib_micro_version != GLIB_MICRO_VERSION)) - { - printf("*** GLIB header files (version %d.%d.%d) do not match\n", - GLIB_MAJOR_VERSION, GLIB_MINOR_VERSION, GLIB_MICRO_VERSION); - printf("*** library (version %d.%d.%d)\n", - glib_major_version, glib_minor_version, glib_micro_version); - } - else - { - if ((glib_major_version > major) || - ((glib_major_version == major) && (glib_minor_version > minor)) || - ((glib_major_version == major) && (glib_minor_version == minor) && (glib_micro_version >= micro))) - { - return 0; - } - else - { - printf("\n*** An old version of GLIB (%d.%d.%d) was found.\n", - glib_major_version, glib_minor_version, glib_micro_version); - printf("*** You need a version of GLIB newer than %d.%d.%d. The latest version of\n", - major, minor, micro); - printf("*** GLIB is always available from ftp://ftp.gtk.org.\n"); - printf("***\n"); - printf("*** If you have already installed a sufficiently new version, this error\n"); - printf("*** probably means that the wrong copy of the pkg-config shell script is\n"); - printf("*** being found. The easiest way to fix this is to remove the old version\n"); - printf("*** of GLIB, but you can also set the PKG_CONFIG environment to point to the\n"); - printf("*** correct copy of pkg-config. (In this case, you will have to\n"); - printf("*** modify your LD_LIBRARY_PATH enviroment variable, or edit /etc/ld.so.conf\n"); - printf("*** so that the correct libraries are found at run-time))\n"); - } - } - return 1; -} -],, no_glib=yes,[echo $ac_n "cross compiling; assumed OK... $ac_c"]) - CFLAGS="$ac_save_CFLAGS" - LIBS="$ac_save_LIBS" - fi - fi - if test "x$no_glib" = x ; then - AC_MSG_RESULT(yes (version $glib_config_major_version.$glib_config_minor_version.$glib_config_micro_version)) - ifelse([$2], , :, [$2]) - else - AC_MSG_RESULT(no) - if test "$PKG_CONFIG" = "no" ; then - echo "*** A new enough version of pkg-config was not found." - echo "*** See http://www.freedesktop.org/software/pkgconfig/" - else - if test -f conf.glibtest ; then - : - else - echo "*** Could not run GLIB test program, checking why..." - ac_save_CFLAGS="$CFLAGS" - ac_save_LIBS="$LIBS" - CFLAGS="$CFLAGS $GLIB_CFLAGS" - LIBS="$LIBS $GLIB_LIBS" - AC_TRY_LINK([ -#include -#include -], [ return ((glib_major_version) || (glib_minor_version) || (glib_micro_version)); ], - [ echo "*** The test program compiled, but did not run. This usually means" - echo "*** that the run-time linker is not finding GLIB or finding the wrong" - echo "*** version of GLIB. If it is not finding GLIB, you'll need to set your" - echo "*** LD_LIBRARY_PATH environment variable, or edit /etc/ld.so.conf to point" - echo "*** to the installed location Also, make sure you have run ldconfig if that" - echo "*** is required on your system" - echo "***" - echo "*** If you have an old version installed, it is best to remove it, although" - echo "*** you may also be able to get things to work by modifying LD_LIBRARY_PATH" ], - [ echo "*** The test program failed to compile or link. See the file config.log for the" - echo "*** exact error that occured. This usually means GLIB is incorrectly installed."]) - CFLAGS="$ac_save_CFLAGS" - LIBS="$ac_save_LIBS" - fi - fi - GLIB_CFLAGS="" - GLIB_LIBS="" - GLIB_GENMARSHAL="" - GOBJECT_QUERY="" - GLIB_MKENUMS="" - ifelse([$3], , :, [$3]) - fi - AC_SUBST(GLIB_CFLAGS) - AC_SUBST(GLIB_LIBS) - AC_SUBST(GLIB_GENMARSHAL) - AC_SUBST(GOBJECT_QUERY) - AC_SUBST(GLIB_MKENUMS) - rm -f conf.glibtest -]) diff --git a/src/Makefile.am b/src/Makefile.am index f3f0609b..bada082f 100644 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -38,7 +38,7 @@ nano_SOURCES = browser.c \ utils.c \ winio.c -nano_LDADD = @GLIB_LIBS@ @LIBINTL@ $(top_builddir)/lib/libgnu.a +nano_LDADD = @LIBINTL@ $(top_builddir)/lib/libgnu.a install-exec-hook: cd $(DESTDIR)$(bindir) && rm -f rnano && $(LN_S) nano rnano diff --git a/src/nano.h b/src/nano.h index 22b8379b..b21ccdb5 100644 --- a/src/nano.h +++ b/src/nano.h @@ -120,12 +120,6 @@ #include #include -/* If no vsnprintf(), use the version from glib 2.x. */ -#ifndef HAVE_VSNPRINTF -#include -#define vsnprintf g_vsnprintf -#endif - /* If we aren't using ncurses with mouse support, turn the mouse support * off, as it's useless then. */ #ifndef NCURSES_MOUSE_VERSION