Merge changes from emacs-23 branch
authorChong Yidong <cyd@stupidchicken.com>
Mon, 31 Jan 2011 23:54:50 +0000 (18:54 -0500)
committerChong Yidong <cyd@stupidchicken.com>
Mon, 31 Jan 2011 23:54:50 +0000 (18:54 -0500)
26 files changed:
1  2 
ChangeLog
configure
configure.in
doc/emacs/ChangeLog
doc/emacs/files.texi
doc/emacs/search.texi
doc/lispref/ChangeLog
doc/lispref/display.texi
doc/lispref/elisp.texi
doc/lispref/keymaps.texi
doc/lispref/vol1.texi
doc/lispref/vol2.texi
lisp/ChangeLog
lisp/emacs-lisp/shadow.el
lisp/erc/ChangeLog
lisp/erc/erc-track.el
lisp/files.el
lisp/image-dired.el
lisp/international/quail.el
lisp/mouse.el
lisp/msb.el
lisp/progmodes/cc-cmds.el
lisp/progmodes/cc-engine.el
lisp/term/ns-win.el
src/ChangeLog
src/image.c

diff --cc ChangeLog
+++ b/ChangeLog
 -2011-01-27  Chong Yidong  <cyd@stupidchicken.com>
++2011-01-31  Chong Yidong  <cyd@stupidchicken.com>
+       * configure.in: Test existence of xaw3d library, not just the
+       header (Bug#7642).
 -2011-01-23  Peter O'Gorman  <bug-gnu-emacs@mlists.thewrittenword.com>  (tiny change)
 +2011-01-31  Eli Zaretskii  <eliz@gnu.org>
 +
 +      * lib/makefile.w32-in (GNULIBOBJS): Add $(BLD)/strftime.$(O) and
 +      $(BLD)/time_r.$(O).
 +      ($(BLD)/dtoastr.$(O)): Depend on $(EMACS_ROOT)/src/s/ms-w32.h and
 +      $(EMACS_ROOT)/src/m/intel386.h.
-       ($(BLD)/strftime.$(O)): 
++      ($(BLD)/strftime.$(O)):
 +      ($(BLD)/time_r.$(O)): Define prerequisites.
 +
 +2011-01-31  Paul Eggert  <eggert@cs.ucla.edu>
 +
 +      src/emacs.c now gets version number from configure.in
 +      * configure.in (version): Set this from $PACKAGE_VERSION,
 +      which is set from AC_INIT, rather than scouting through src/emacs.c.
 +      * configure: Regenerate.
 +      * make-dist (version): Get it from configure.in, not src/emacs.c.
 +
 +2011-01-30  Paul Eggert  <eggert@cs.ucla.edu>
 +
 +      strftime: import from gnulib
 +      * Makefile.in (GNULIB_MODULES): Add strftime.
 +      * configure.in (AC_FUNC_STRFTIME, my_strftime): Remove; no longer
 +      needed.
 +      * aclocal.m4, configure, lib/Makefile.in, lib/gnulib.mk, m4/gl-comp.m4:
 +      Regenerate.
 +      * lib/strftime.c, lib/strftime.h, lib/stdbool.in.h: New files,
 +      imported from gnulib.
 +      * m4/strftime.m4, m4/stdbool.m4, m4/tm_gmtoff.m4: Likewise.
 +      This incorporates many changes from gnulib, including simpler
 +      handling of multibyte formats, porting to mingw32 and other
 +      platforms, and support for higher-resolution time stamps.
 +      Emacs does not yet use the higher-resolution interface.
 +
 +2011-01-30  Paul Eggert  <eggert@cs.ucla.edu>
 +
 +      gnulib: import mktime and move-if-change fixes from gnulib
 +
 +      * configure: Regenerate from the following.
 +
 +      2011-01-30  Paul Eggert  <eggert@cs.ucla.edu>
 +
 +      mktime: clarify long_int width checking
 +      * lib/mktime.c (long_int_is_wide_enough): Move this assertion to
 +      the top level, to make it clearer that the assumption about
 +      long_int width is being checked.  See
 +      <http://lists.gnu.org/archive/html/bug-gnulib/2011-01/msg00554.html>.
 +
 +      2011-01-29  Paul Eggert  <eggert@cs.ucla.edu>
 +
 +      TYPE_MAXIMUM: avoid theoretically undefined behavior
 +      * lib/intprops.h (TYPE_MINIMUM, TYPE_MAXIMUM): Do not shift a
 +      negative number, which the C Standard says has undefined behavior.
 +      In practice this is not a problem, but might as well do it by the book.
 +      Reported by Rich Felker and Eric Blake; see
 +      <http://lists.gnu.org/archive/html/bug-gnulib/2011-01/msg00493.html>.
 +      * m4/mktime.m4 (AC_FUNC_MKTIME): Likewise.
 +      * lib/mktime.c (TYPE_MAXIMUM): Redo slightly to match the others.
 +
 +      mktime: #undef mktime before #defining it
 +      * lib/mktime.c (mktime) [DEBUG]: #undef mktime before #defining it.
 +
 +      mktime: systematically normalize tm_isdst comparisons
 +      * lib/mktime.c (isdst_differ): New function.
 +      (__mktime_internal): Use it systematically for all isdst comparisons.
 +      This completes the fix for libc BZ #6723, and removes the need for
 +      normalizing tm_isdst.  See
 +      <http://sourceware.org/bugzilla/show_bug.cgi?id=6723>
 +      (not_equal_tm) [DEBUG]: Use isdst_differ here, too.
 +
 +      mktime: fix some integer overflow issues and sidestep the rest
 +
 +      This was prompted by a bug report by Benjamin Lindner for MinGW
 +      <http://lists.gnu.org/archive/html/bug-gnulib/2011-01/msg00472.html>.
 +      His bug is due to signed integer overflow (0 - INT_MIN), and I
 +      I scanned through mktime.c looking for other integer overflow
 +      problems, fixing all the bugs I found.
 +
 +      Although the C Standard says the resulting code is still not safe
 +      in the presence of integer overflow, in practice it should be good
 +      enough for all real-world two's-complement implementations, except
 +      for debugging environments that deliberately trap on integer
 +      overflow (e.g., gcc -ftrapv).
 +
 +      * lib/mktime.c (WRAPV): New macro.
 +      (SHR): Also check that long_int and time_t shift right in the
 +      usual way, before using the fast-but-unportable method.
 +      (TYPE_ONES_COMPLEMENT, TYPE_SIGNED_MAGNITUDE): Remove, no longer
 +      used.  The code already assumed two's complement, so there's
 +      no need to test for alternatives.  All uses removed.
 +      (TYPE_MAXIMUM): Don't rely here on overflow behavior not defined by
 +      the C standard.  Problem reported by Rich Felker in
 +      <http://lists.gnu.org/archive/html/bug-gnulib/2011-01/msg00488.html>.
 +      (twos_complement_arithmetic): Also check long_int and time_t.
 +      (time_t_avg, time_t_add_ok, time_t_int_add_ok): New functions.
 +      (guess_time_tm, ranged_convert, __mktime_internal): Use them.
 +      (__mktime_internal): Avoid integer overflow with unary subtraction
 +      in two instances where -1 - X is an adequate replacement for -X,
 +      since the calculations are approximate.
 +
 +      2011-01-29  Eric Blake  <eblake@redhat.com>
 +
 +      mktime: avoid infinite loop
 +      * m4/mktime.m4 (AC_FUNC_MKTIME): Avoid overflow on possibly-signed
 +      type; behavior is still undefined but portable to all known targets.
 +      Reported by Rich Felker.
 +
 +      2011-01-28  Paul Eggert  <eggert@cs.ucla.edu>
 +
 +      mktime: avoid problems on NetBSD 5 / i386
 +      * lib/mktime.c (long_int): New type.  This works around a problem
 +      on NetBSD 5 / i386, where 'long int' and 'int' are both 32 bits
 +      but time_t is 64 bits, and where I expect the existing code is
 +      wrong in some cases.
 +      (leapyear, ydhms_diff, guess_time_tm, __mktime_internal): Use it.
 +      (ydhms_diff): Bring back the compile-time check for wide-enough
 +      year and yday.
 +
 +      mktime: fix misspelling in comment
 +      * lib/mktime.c (__mktime_internal): Fix misspelling in comment.
 +      This merges all recent glibc changes of importance.
 +
 +      2011-01-28  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
 +
 +      move-if-change: cope with concurrent mv of identical file.
 +      * move-if-change (CMPPROG): Accept environment
 +      variable as an override for `cmp'.
 +      (usage): Document CMPPROG.
 +      Adjust comparison to drop stdout.  Cope with failure of mv if
 +      the target file exists and is identical to the source, for
 +      parallel builds.
 +      Report from H.J. Lu against binutils in PR binutils/12283.
 +
 +2011-01-29  Eli Zaretskii  <eliz@gnu.org>
 +
 +      * lib/makefile.w32-in:
 +      * lib/getopt_.h: New files.
 +
 +2011-01-28  Paul Eggert  <eggert@cs.ucla.edu>
 +
 +      improve fix for MS-DOS file name clash
 +      * Makefile.in (DOS_gnulib_comp.m4): Renamed from DOS-gnulib-comp.m4,
 +      for portability to POSIX make.  Reported by Bruno Haible.
 +      (sync-from-gnulib): Copy gl-comp.m4 (if present) back to
 +      gnulib-comp.m4 before running gnulib-tool, to prevent old gnulib
 +      files from accumulating as garbage.  Also reported by Bruno Haible.
 +
 +2011-01-27  Paul Eggert  <eggert@cs.ucla.edu>
 +
 +      fix two m4/gnulib-*.m4 file names that clashed under MS-DOS
 +      * Makefile.in (DOS-gnulib-comp.m4): New macro.
 +      (sync-from-gnulib): Rename m4/gnulib-comp.m4 to m4/gl-comp.m4 to avoid
 +      problems with MS-DOS 8+3 file name restrictions.
 +      Remove m4/gnulib-cache.m4, as we can live without it.  If we kept
 +      it, it would also cause problems when extracting Emacs distribution
 +      tarballs on MS-DOS hosts.
 +      (ACLOCAL_INPUTS): Adjust to file renaming.
 +      * aclocal.m4, configure, lib/Makefile.in, src/config.in: Regenerate.
 +      * config.guess, config.sub: Sync from gnulib.
 +      * m4/gnulib-cache.m4: Remove from repository.
 +      * m4/gl-comp.m4: Rename from m4/gnulib-comp.m4.
 +
 +2011-01-25  Glenn Morris  <rgm@gnu.org>
 +
 +      * README: Add a note about ranges in copyright years.
 +
 +      * configure.in: Set CANNOT_DUMP on ia64 hpux (port from emacs-23).
 +
 +2011-01-25  Peter O'Gorman  <bug-gnu-emacs@mlists.thewrittenword.com>  (tiny change)
  
        * configure.in: Add HP-UX on IA64 (Bug#6811).
  
diff --cc configure
+++ b/configure
@@@ -10436,288 -7517,149 +10436,329 @@@ char lgetfilecon ()
  int
  main ()
  {
 -  char *data, *data2, *data3;
 -  const char *cdata2;
 -  int i, pagesize;
 -  int fd, fd2;
 +return lgetfilecon ();
 +  ;
 +  return 0;
 +}
 +_ACEOF
 +if ac_fn_c_try_link "$LINENO"; then :
 +  ac_cv_lib_selinux_lgetfilecon=yes
 +else
 +  ac_cv_lib_selinux_lgetfilecon=no
 +fi
 +rm -f core conftest.err conftest.$ac_objext \
 +    conftest$ac_exeext conftest.$ac_ext
 +LIBS=$ac_check_lib_save_LIBS
 +fi
 +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_selinux_lgetfilecon" >&5
 +$as_echo "$ac_cv_lib_selinux_lgetfilecon" >&6; }
 +if test "x$ac_cv_lib_selinux_lgetfilecon" = xyes; then :
 +  HAVE_LIBSELINUX=yes
 +else
 +  HAVE_LIBSELINUX=no
 +fi
  
 -  pagesize = getpagesize ();
 +   if test "$HAVE_LIBSELINUX" = yes; then
  
 -  /* First, make a file with some known garbage in it. */
 -  data = (char *) malloc (pagesize);
 -  if (!data)
 -    return 1;
 -  for (i = 0; i < pagesize; ++i)
 -    *(data + i) = rand ();
 -  umask (0);
 -  fd = creat ("conftest.mmap", 0600);
 -  if (fd < 0)
 -    return 2;
 -  if (write (fd, data, pagesize) != pagesize)
 -    return 3;
 -  close (fd);
 +$as_echo "#define HAVE_LIBSELINUX 1" >>confdefs.h
  
 -  /* Next, check that the tail of a page is zero-filled.  File must have
 -     non-zero length, otherwise we risk SIGBUS for entire page.  */
 -  fd2 = open ("conftest.txt", O_RDWR | O_CREAT | O_TRUNC, 0600);
 -  if (fd2 < 0)
 -    return 4;
 -  cdata2 = "";
 -  if (write (fd2, cdata2, 1) != 1)
 -    return 5;
 -  data2 = (char *) mmap (0, pagesize, PROT_READ | PROT_WRITE, MAP_SHARED, fd2, 0L);
 -  if (data2 == MAP_FAILED)
 -    return 6;
 -  for (i = 0; i < pagesize; ++i)
 -    if (*(data2 + i))
 -      return 7;
 -  close (fd2);
 -  if (munmap (data2, pagesize))
 -    return 8;
 +      LIBSELINUX_LIBS=-lselinux
 +   fi
 +fi
  
 -  /* Next, try to mmap the file at a fixed address which already has
 -     something else allocated at it.  If we can, also make sure that
 -     we see the same garbage.  */
 -  fd = open ("conftest.mmap", O_RDWR);
 -  if (fd < 0)
 -    return 9;
 -  if (data2 != mmap (data2, pagesize, PROT_READ | PROT_WRITE,
 -                   MAP_PRIVATE | MAP_FIXED, fd, 0L))
 -    return 10;
 -  for (i = 0; i < pagesize; ++i)
 -    if (*(data + i) != *(data2 + i))
 -      return 11;
  
 -  /* Finally, make sure that changes to the mapped area do not
 -     percolate back to the file as seen by read().  (This is a bug on
 -     some variants of i386 svr4.0.)  */
 -  for (i = 0; i < pagesize; ++i)
 -    *(data2 + i) = *(data2 + i) + 1;
 -  data3 = (char *) malloc (pagesize);
 -  if (!data3)
 -    return 12;
 -  if (read (fd, data3, pagesize) != pagesize)
 -    return 13;
 -  for (i = 0; i < pagesize; ++i)
 -    if (*(data + i) != *(data3 + i))
 -      return 14;
 -  close (fd);
 -  return 0;
 -}
 -_ACEOF
 -if ac_fn_c_try_run "$LINENO"; then :
 -  ac_cv_func_mmap_fixed_mapped=yes
 +HAVE_GNUTLS=no
 +if test "${with_gnutls}" = "yes" ; then
 +
 +  succeeded=no
 +
 +  # Extract the first word of "pkg-config", so it can be a program name with args.
 +set dummy pkg-config; ac_word=$2
 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
 +$as_echo_n "checking for $ac_word... " >&6; }
 +if ${ac_cv_path_PKG_CONFIG+:} false; then :
 +  $as_echo_n "(cached) " >&6
  else
 -  ac_cv_func_mmap_fixed_mapped=no
 +  case $PKG_CONFIG in
 +  [\\/]* | ?:[\\/]*)
 +  ac_cv_path_PKG_CONFIG="$PKG_CONFIG" # Let the user override the test with a path.
 +  ;;
 +  *)
 +  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
 +for as_dir in $PATH
 +do
 +  IFS=$as_save_IFS
 +  test -z "$as_dir" && as_dir=.
 +    for ac_exec_ext in '' $ac_executable_extensions; do
 +  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
 +    ac_cv_path_PKG_CONFIG="$as_dir/$ac_word$ac_exec_ext"
 +    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
 +    break 2
 +  fi
 +done
 +  done
 +IFS=$as_save_IFS
 +
 +  test -z "$ac_cv_path_PKG_CONFIG" && ac_cv_path_PKG_CONFIG="no"
 +  ;;
 +esac
  fi
 -rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
 -  conftest.$ac_objext conftest.beam conftest.$ac_ext
 +PKG_CONFIG=$ac_cv_path_PKG_CONFIG
 +if test -n "$PKG_CONFIG"; then
 +  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $PKG_CONFIG" >&5
 +$as_echo "$PKG_CONFIG" >&6; }
 +else
 +  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
 +$as_echo "no" >&6; }
  fi
  
 -fi
 -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_mmap_fixed_mapped" >&5
 -$as_echo "$ac_cv_func_mmap_fixed_mapped" >&6; }
 -if test $ac_cv_func_mmap_fixed_mapped = yes; then
  
 -$as_echo "#define HAVE_MMAP 1" >>confdefs.h
  
 -fi
 -rm -f conftest.mmap conftest.txt
 +  if test "$PKG_CONFIG" = "no" ; then
 +     HAVE_GNUTLS=no
 +  else
 +     PKG_CONFIG_MIN_VERSION=0.9.0
 +     if $PKG_CONFIG --atleast-pkgconfig-version $PKG_CONFIG_MIN_VERSION; then
 +        { $as_echo "$as_me:${as_lineno-$LINENO}: checking for gnutls >= 2.2.4" >&5
 +$as_echo_n "checking for gnutls >= 2.2.4... " >&6; }
  
 -if test $use_mmap_for_buffers = yes; then
 -  REL_ALLOC=no
 +        if $PKG_CONFIG --exists "gnutls >= 2.2.4" 2>&5; then
 +            { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
 +$as_echo "yes" >&6; }
 +            succeeded=yes
 +
 +            { $as_echo "$as_me:${as_lineno-$LINENO}: checking LIBGNUTLS_CFLAGS" >&5
 +$as_echo_n "checking LIBGNUTLS_CFLAGS... " >&6; }
 +            LIBGNUTLS_CFLAGS=`$PKG_CONFIG --cflags "gnutls >= 2.2.4"|sed -e 's,///*,/,g'`
 +            { $as_echo "$as_me:${as_lineno-$LINENO}: result: $LIBGNUTLS_CFLAGS" >&5
 +$as_echo "$LIBGNUTLS_CFLAGS" >&6; }
 +
 +            { $as_echo "$as_me:${as_lineno-$LINENO}: checking LIBGNUTLS_LIBS" >&5
 +$as_echo_n "checking LIBGNUTLS_LIBS... " >&6; }
 +            LIBGNUTLS_LIBS=`$PKG_CONFIG --libs "gnutls >= 2.2.4"|sed -e 's,///*,/,g'`
 +            { $as_echo "$as_me:${as_lineno-$LINENO}: result: $LIBGNUTLS_LIBS" >&5
 +$as_echo "$LIBGNUTLS_LIBS" >&6; }
 +        else
 +            { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
 +$as_echo "no" >&6; }
 +            LIBGNUTLS_CFLAGS=""
 +            LIBGNUTLS_LIBS=""
 +            ## If we have a custom action on failure, don't print errors, but
 +            ## do set a variable so people can do so.
 +            LIBGNUTLS_PKG_ERRORS=`$PKG_CONFIG --errors-to-stdout --print-errors "gnutls >= 2.2.4"`
 +
 +        fi
 +
 +
 +
 +     else
 +        echo "*** Your version of pkg-config is too old. You need version $PKG_CONFIG_MIN_VERSION or newer."
 +        echo "*** See http://www.freedesktop.org/software/pkgconfig"
 +     fi
 +  fi
 +
 +  if test $succeeded = yes; then
 +     HAVE_GNUTLS=yes
 +  else
 +     HAVE_GNUTLS=no
 +  fi
 +
 +  if test "${HAVE_GNUTLS}" = "yes"; then
 +
 +$as_echo "#define HAVE_GNUTLS 1" >>confdefs.h
 +
 +  fi
  fi
  
 -LIBS="$libsrc_libs $LIBS"
  
 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for dnet_ntoa in -ldnet" >&5
 -$as_echo_n "checking for dnet_ntoa in -ldnet... " >&6; }
 -if test "${ac_cv_lib_dnet_dnet_ntoa+set}" = set; then :
 +
 +HAVE_XAW3D=no
 +LUCID_LIBW=
 +if test x"${USE_X_TOOLKIT}" = xmaybe || test x"${USE_X_TOOLKIT}" = xLUCID; then
 +  if test "$with_xaw3d" != no; then
 +    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for xaw3d" >&5
 +$as_echo_n "checking for xaw3d... " >&6; }
 +    if ${emacs_cv_xaw3d+:} false; then :
 +  $as_echo_n "(cached) " >&6
 +else
 +  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 +/* end confdefs.h.  */
 +
 +#include <X11/Intrinsic.h>
 +#include <X11/Xaw3d/Simple.h>
 +int
 +main ()
 +{
 +
 +  ;
 +  return 0;
 +}
 +_ACEOF
 +if ac_fn_c_try_link "$LINENO"; then :
++  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for XawScrollbarSetThumb in -lXaw3d" >&5
++$as_echo_n "checking for XawScrollbarSetThumb in -lXaw3d... " >&6; }
++if test "${ac_cv_lib_Xaw3d_XawScrollbarSetThumb+set}" = set; then :
+   $as_echo_n "(cached) " >&6
+ else
+   ac_check_lib_save_LIBS=$LIBS
 -LIBS="-ldnet  $LIBS"
++LIBS="-lXaw3d  $LIBS"
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+ /* end confdefs.h.  */
+ /* Override any GCC internal prototype to avoid an error.
+    Use char because int might match the return type of a GCC
+    builtin and then its argument prototype would still apply.  */
+ #ifdef __cplusplus
+ extern "C"
+ #endif
 -char dnet_ntoa ();
++char XawScrollbarSetThumb ();
+ int
+ main ()
+ {
 -return dnet_ntoa ();
++return XawScrollbarSetThumb ();
+   ;
+   return 0;
+ }
+ _ACEOF
+ if ac_fn_c_try_link "$LINENO"; then :
 -  ac_cv_lib_dnet_dnet_ntoa=yes
++  ac_cv_lib_Xaw3d_XawScrollbarSetThumb=yes
+ else
 -  ac_cv_lib_dnet_dnet_ntoa=no
++  ac_cv_lib_Xaw3d_XawScrollbarSetThumb=no
+ fi
+ rm -f core conftest.err conftest.$ac_objext \
+     conftest$ac_exeext conftest.$ac_ext
+ LIBS=$ac_check_lib_save_LIBS
+ fi
 -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dnet_dnet_ntoa" >&5
 -$as_echo "$ac_cv_lib_dnet_dnet_ntoa" >&6; }
 -if test "x$ac_cv_lib_dnet_dnet_ntoa" = x""yes; then :
 -  cat >>confdefs.h <<_ACEOF
 -#define HAVE_LIBDNET 1
++{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_Xaw3d_XawScrollbarSetThumb" >&5
++$as_echo "$ac_cv_lib_Xaw3d_XawScrollbarSetThumb" >&6; }
++if test "x$ac_cv_lib_Xaw3d_XawScrollbarSetThumb" = x""yes; then :
 +  emacs_cv_xaw3d=yes
 +else
 +  emacs_cv_xaw3d=no
 +fi
++
++else
++  emacs_cv_xaw3d=no
++fi
 +rm -f core conftest.err conftest.$ac_objext \
 +    conftest$ac_exeext conftest.$ac_ext
 +fi
 +
 +  else
 +    emacs_cv_xaw3d=no
 +  fi
 +  if test $emacs_cv_xaw3d = yes; then
 +    { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes; using Lucid toolkit" >&5
 +$as_echo "yes; using Lucid toolkit" >&6; }
 +    USE_X_TOOLKIT=LUCID
 +    HAVE_XAW3D=yes
 +    LUCID_LIBW=-lXaw3d
 +
 +$as_echo "#define HAVE_XAW3D 1" >>confdefs.h
 +
 +  else
 +    { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
 +$as_echo "no" >&6; }
 +    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for libXaw" >&5
 +$as_echo_n "checking for libXaw... " >&6; }
 +    if ${emacs_cv_xaw+:} false; then :
 +  $as_echo_n "(cached) " >&6
 +else
 +  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 +/* end confdefs.h.  */
 +
 +#include <X11/Intrinsic.h>
 +#include <X11/Xaw/Simple.h>
 +int
 +main ()
 +{
 +
 +  ;
 +  return 0;
 +}
  _ACEOF
 +if ac_fn_c_try_link "$LINENO"; then :
 +  emacs_cv_xaw=yes
 +else
 +  emacs_cv_xaw=no
 +fi
 +rm -f core conftest.err conftest.$ac_objext \
 +    conftest$ac_exeext conftest.$ac_ext
 +fi
  
 -  LIBS="-ldnet $LIBS"
 +    if test $emacs_cv_xaw = yes; then
 +      { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes; using Lucid toolkit" >&5
 +$as_echo "yes; using Lucid toolkit" >&6; }
 +      USE_X_TOOLKIT=LUCID
 +      LUCID_LIBW=-lXaw
 +    elif test x"${USE_X_TOOLKIT}" = xLUCID; then
 +      as_fn_error $? "Lucid toolkit requires X11/Xaw include files" "$LINENO" 5
 +    else
 +      { $as_echo "$as_me:${as_lineno-$LINENO}: result: no; do not use toolkit by default" >&5
 +$as_echo "no; do not use toolkit by default" >&6; }
 +      USE_X_TOOLKIT=none
 +    fi
 +  fi
 +fi
 +
 +X_TOOLKIT_TYPE=$USE_X_TOOLKIT
 +
 +LIBXTR6=
 +if test "${USE_X_TOOLKIT}" != "none"; then
 +  { $as_echo "$as_me:${as_lineno-$LINENO}: checking X11 toolkit version" >&5
 +$as_echo_n "checking X11 toolkit version... " >&6; }
 +  if ${emacs_cv_x11_toolkit_version_6+:} false; then :
 +  $as_echo_n "(cached) " >&6
 +else
 +  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 +/* end confdefs.h.  */
 +#include <X11/Intrinsic.h>
 +int
 +main ()
 +{
 +#if XtSpecificationRelease < 6
 +fail;
 +#endif
  
 +  ;
 +  return 0;
 +}
 +_ACEOF
 +if ac_fn_c_try_link "$LINENO"; then :
 +  emacs_cv_x11_toolkit_version_6=yes
 +else
 +  emacs_cv_x11_toolkit_version_6=no
 +fi
 +rm -f core conftest.err conftest.$ac_objext \
 +    conftest$ac_exeext conftest.$ac_ext
  fi
  
 +  HAVE_X11XTR6=$emacs_cv_x11_toolkit_version_6
 +  if test $emacs_cv_x11_toolkit_version_6 = yes; then
 +    { $as_echo "$as_me:${as_lineno-$LINENO}: result: 6 or newer" >&5
 +$as_echo "6 or newer" >&6; }
 +
 +$as_echo "#define HAVE_X11XTR6 1" >>confdefs.h
  
 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for main in -lXbsd" >&5
 -$as_echo_n "checking for main in -lXbsd... " >&6; }
 -if test "${ac_cv_lib_Xbsd_main+set}" = set; then :
 +    LIBXTR6="-lSM -lICE"
 +    case "$opsys" in
 +      ## Use libw.a along with X11R6 Xt.
 +      unixware) LIBXTR6="$LIBXTR6 -lw" ;;
 +    esac
 +  else
 +    { $as_echo "$as_me:${as_lineno-$LINENO}: result: before 6" >&5
 +$as_echo "before 6" >&6; }
 +  fi
 +
 +  OLDLIBS="$LIBS"
 +  if test x$HAVE_X11XTR6 = xyes; then
 +    LIBS="-lXt -lSM -lICE $LIBS"
 +  else
 +    LIBS="-lXt $LIBS"
 +  fi
 +  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for XmuConvertStandardSelection in -lXmu" >&5
 +$as_echo_n "checking for XmuConvertStandardSelection in -lXmu... " >&6; }
 +if ${ac_cv_lib_Xmu_XmuConvertStandardSelection+:} false; then :
    $as_echo_n "(cached) " >&6
  else
    ac_check_lib_save_LIBS=$LIBS
diff --cc configure.in
Simple merge
@@@ -1,23 -1,11 +1,31 @@@
 -2011-01-28  Chong Yidong  <cyd@stupidchicken.com>
++2011-01-31  Chong Yidong  <cyd@stupidchicken.com>
+       * search.texi (Regexps): Copyedits.  Mention character classes
+       (Bug#7809).
+       * files.texi (File Aliases): Restore explanatory text from Eli
+       Zaretskii, accidentally removed in 2011-01-08 commit.
 +2011-01-29  Eli Zaretskii  <eliz@gnu.org>
 +
 +      * makefile.w32-in (MAKEINFO): Remove options, leave only program name.
 +      (MAKEINFO_OPTS): New variable.
 +      (ENVADD, $(infodir)/emacs): Use $(MAKEINFO_OPTS).
 +      (emacs.html): New target.
 +      (clean): Remove emacs.html.
 +
 +2011-01-23  Werner Lemberg  <wl@gnu.org>
 +
 +      * Makefile.in (MAKEINFO): Now controlled by `configure'.
 +      (MAKEINFO_OPTS): New variable.  Use it where appropriate.
 +      (ENVADD): Updated.
 +
 +2011-01-18  Glenn Morris  <rgm@gnu.org>
 +
 +      * ack.texi, emacs.texi (Acknowledgments): Update for ERT addition.
 +
 +      * ack.texi (Acknowledgments): Remove mention of replaced prolog.el.
 +
  2011-01-15  Chong Yidong  <cyd@stupidchicken.com>
  
        * building.texi (Compilation): Improve instructions for running two
Simple merge
Simple merge
@@@ -1,12 -1,15 +1,23 @@@
 -2011-01-23  Chong Yidong  <cyd@stupidchicken.com>
+ 2011-01-28  Chong Yidong  <cyd@stupidchicken.com>
+       * vol1.texi (Top):
+       * vol2.texi (Top):
+       * elisp.texi (Top):
+       * display.texi (Display Property): Shorten the menu description of
+       the "Other Display Specs" node (Bug#7816).
+       * keymaps.texi (Defining Menus): Add "menu item" and "extended
+       menu item" concept index entries (Bug#7805).
 +2011-01-29  Eli Zaretskii  <eliz@gnu.org>
 +
 +      * makefile.w32-in (texinfodir): New variable.
 +      (usermanualdir): Remove as redundant with $(emacsdir).
 +      (MAKEINFO): Remove options, leave only program name.
 +      (MAKEINFO_OPTS): New variable.
 +      (texinputdir, $(infodir)/elisp): Use $(MAKEINFO_OPTS).
 +
 +2011-01-25  Chong Yidong  <cyd@stupidchicken.com>
              Richard Kim  <emacs18@gmail.com>
  
        * loading.texi (Library Search): Document list-load-path-shadows
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
diff --cc lisp/ChangeLog
 -2011-01-31  Deniz Dogan  <deniz.a.m.dogan@gmail.com>
 -
 -      * net/rcirc.el: Clean log filenames (Bug#7933).
 -      (rcirc-log-write): Use convert-standard-filename.
 -      (rcirc-log-filename-function): Documentation updates.
 -
+ 2011-01-31  Alan Mackenzie  <acm@muc.de>
+       * progmodes/cc-cmds.el (c-forward-over-illiterals): Continue
+       parsing if we encounter a naked # (Bug#7595).
+       (c-beginning-of-statement): Avoid loop in locating the beginning
+       of a macro.
+ 2011-01-31  Chong Yidong  <cyd@stupidchicken.com>
+       * files.el (copy-directory): Fix arguments to recursive call.
 -2011-01-29  Chong Yidong  <cyd@stupidchicken.com>
++2011-01-31  Chong Yidong  <cyd@stupidchicken.com>
+       * files.el (copy-directory): If destination is an existing
+       directory, copy into a subdirectory there.
 -2011-01-29  Andreas Schwab  <schwab@linux-m68k.org>
++2011-01-31  Andreas Schwab  <schwab@linux-m68k.org>
+       * emacs-lisp/shadow.el (load-path-shadows-find): Ignore leim-list
+       files.
 -2011-01-28  Chong Yidong  <cyd@stupidchicken.com>
++2011-01-31  Chong Yidong  <cyd@stupidchicken.com>
+       * image-dired.el (image-dired-mouse-display-image): No-op if no
+       file is found (Bug#7817).
+       * mouse.el (mouse-menu-non-singleton): Doc fix (Bug#7801).
 -2011-01-28  Kenichi Handa  <handa@m17n.org>
++2011-01-31  Kenichi Handa  <handa@m17n.org>
+       * international/quail.el (quail-keyboard-layout-alist): Remove
+       superfluous SPC for "pc105-uk" (bug#7927).
 -2011-01-27  Glenn Morris  <rgm@gnu.org>
++2011-01-31  Glenn Morris  <rgm@gnu.org>
+       * msb.el (msb-menu-bar-update-buffers): Update for changed
+       argument handling of menu-bar-select-frame.  (Bug#7902)
 -2011-01-27  Chong Yidong  <cyd@stupidchicken.com>
++2011-01-31  Chong Yidong  <cyd@stupidchicken.com>
+       * progmodes/cc-engine.el (c-forward-<>-arglist-recur): Set a limit
+       to the recursion depth (Bug#7722).
 -2011-01-26  Roy Liu  <carsomyr@gmail.com>  (tiny change)
++2011-01-31  Roy Liu  <carsomyr@gmail.com>  (tiny change)
+       * term/ns-win.el (ns-find-file): Expand ns-input-file with
+       command-line-default-directory (Bug#7872).
 +2011-01-31  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      * progmodes/compile.el (compilation--flush-directory-cache):
 +      New function, extracted from compilation--remove-properties.
 +      (compilation--remove-properties, compilation--parse-region): Use it.
 +      (compilation--previous-directory): Handle one more case.
 +      (compilation-enable-debug-messages): Remove.
 +      (compilation-parse-errors, compilation--flush-parse): Just remove the
 +      left over debug messages.
 +
 +2011-01-31  Sam Steingold  <sds@gnu.org>
 +
 +      * progmodes/compile.el (compilation-enable-debug-messages):
 +      Add a variable to make the parsing messages introduced in
 +      2011-01-28T22:12:05Z!monnier@iro.umontreal.ca optional.
 +      (compilation-parse-errors, compilation--flush-parse): Use it.
 +
 +2011-01-31  Deniz Dogan  <deniz.a.m.dogan@gmail.com>
 +
 +      * net/rcirc.el: New customizable nick completion format.
 +      (rcirc-nick-completion-format): New defcustom.
 +      (rcirc-complete): Use it.
 +
 +2011-01-31  Deniz Dogan  <deniz.a.m.dogan@gmail.com>
 +
 +      * net/rcirc.el: Clean log filenames (Bug#7933).
 +      (rcirc-log-write): Use convert-standard-filename.
 +      (rcirc-log-filename-function): Documentation updates.
 +
 +2011-01-30  Jan Djärv  <jan.h.d@swipnet.se>
 +
 +      * mail/emacsbug.el (report-emacs-bug-insert-to-mailer):
 +      Check report-emacs-bug-can-use-osx-open and use that if t.
 +      (report-emacs-bug-can-use-osx-open): New function.
 +      (report-emacs-bug): Rename can-xdg-email to can-insert-mail.
 +      Check report-emacs-bug-can-use-osx-open also for can-insert-mail.
 +
 +2011-01-29  Chong Yidong  <cyd@stupidchicken.com>
 +
 +      * vc/vc-dispatcher.el (vc-set-async-update): New function for
 +      updating Dired or VC-dir buffers after async command completes.
 +
 +      * vc/vc-bzr.el (vc-bzr-async-command): Return the process buffer.
 +      (vc-bzr-pull, vc-bzr-merge-branch): Use vc-set-async-update.
 +
 +      * vc/vc-git.el (vc-git-merge-branch): Add FETCH_HEAD to branch
 +      completions if it exists.  Use vc-set-async-update.
 +      (vc-git-pull): Use vc-set-async-update.
 +
 +      * vc/vc-hg.el (vc-hg-pull): Fix default-contents arg to
 +      read-shell-command.  Use vc-set-async-update.
 +      (vc-hg-merge-branch): Use vc-set-async-update.
 +
 +2011-01-29  Daiki Ueno  <ueno@unixuser.org>
 +
 +      * epg.el (epg--status-KEYEXPIRED, epg--status-KEYREVOKED):
 +      Don't presume KEYEXPIRED and KEYREVOKED to be a fatal error status
 +      (Bug#7931).
 +
 +2011-01-29  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      * progmodes/compile.el: Avoid an N² behavior in grep.
 +      (compilation--previous-directory): New fun.
 +      (compilation--previous-directory-cache): New var.
 +      (compilation--remove-properties): Flush it.
 +      (compilation-directory-properties, compilation-error-properties):
 +      Use the new fun to speed up looking for the current directory.
 +
 +2011-01-29  Chong Yidong  <cyd@stupidchicken.com>
 +
 +      * vc/vc-hg.el (vc-hg-history): New var.
 +      (vc-hg-pull): Perform default pull if called via Lisp by vc-pull.
 +      (vc-hg-merge-branch): New function.
 +
 +      * vc/vc.el (vc-pull): Make vc-update an alias for this, instead of
 +      the other way around.
 +
 +      * vc/vc-git.el (vc-git-branches, vc-git-pull)
 +      (vc-git-merge-branch): New functions.
 +      (vc-git-history): New var.
 +
 +2011-01-28  Chong Yidong  <cyd@stupidchicken.com>
 +
 +      * vc/vc-dispatcher.el (vc-do-async-command): New function.
 +
 +      * vc/vc-bzr.el (vc-bzr-async-command): Convert into a wrapper for
 +      vc-do-async-command.
 +
 +      * vc/vc-bzr.el (vc-bzr-pull, vc-bzr-merge-branch):
 +      Callers changed.
 +
 +2011-01-28  Leo  <sdl.web@gmail.com>
 +
 +      * emacs-lisp/advice.el (ad-make-advised-docstring): Don't apply
 +      highlighting to the "this function is advised" message.
 +
 +      * help-mode.el (help-mode-finish): Apply highlighting here, to
 +      avoid clobbering by substitute-command-keys (Bug#6304).
 +
 +2011-01-28  Chong Yidong  <cyd@stupidchicken.com>
 +
 +      * woman.el (woman0-roff-buffer): Process roff escape sequences
 +      occurring prior to the first request (Bug#7843).
 +
 +2011-01-28  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      * progmodes/compile.el: Don't use font-lock any more.
 +      (compilation-error-regexp-alist-alist): Change handling of makepp
 +      so it preserves the warning/error distinction on subsequent files.
 +      Simplify various rules.
 +      (compilation-directory-properties): Use font-lock-face.
 +      Add a compilation-message property.
 +      (compilation-internal-error-properties): Use font-lock-face.
 +      Don't set the compilation-debug property here.
 +      (compilation--put-prop, compilation--remove-properties)
 +      (compilation--parse-region, compilation--ensure-parse)
 +      (compilation--ensure-parse): New functions.
 +      (compilation-parse-errors): New function, largely inspired of
 +      compilation-mode-font-lock-keywords.  Set compilation-debug here.
 +      (compilation--parsed): New var.
 +      (compilation--flush-parse): Use compilation--ensure-parse.
 +      (compilation-start): Don't call font-lock.
 +      (compilation-turn-on-font-lock): Remove.
 +      (compilation-setup): Don't set font-lock-extra-managed-props not change
 +      other font-lock settings, other than keywords.
 +      Don't activate font-lock-mode.
 +      Set change-major-mode-hook and before-change-functions.
 +      (compilation--unsetup): Remove properties and hooks.
 +      (compilation-next-single-property-change): New function.
 +      (compilation-next-error): Use it to parse when needed.
 +      (compile-goto-error): Parse buffer as needed.
 +      (compilation--compat-error-properties): Don't need a dummy `face'
 +      property any more.
 +
 +2011-01-28  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      * progmodes/compile.el: Use accessors for clarity and fix omake hack.
 +      (compilation-process-setup-function): Fix docstring's false promises.
 +      (compilation-error-regexp-alist-alist): Catch omake's continuous
 +      recompilation message and avoid reuse of old markers.
 +      (compilation-parse-errors-function): Declare obsolete.
 +      (compilation-buffer-modtime): Remove.
 +      (compilation--make-cdrloc, compilation--loc->col)
 +      (compilation--loc->line, compilation--loc->file-struct)
 +      (compilation--loc->marker, compilation--loc->visited)
 +      (compilation--make-file-struct, compilation--file-struct->file-spec)
 +      (compilation--file-struct->formats)
 +      (compilation--file-struct->loc-tree): New macros.  Use them.
 +      (compilation--message): New defstruct.  Use them.
 +      (compilation-next-error-function): Don't mess with timestamps to try
 +      and guess when to reparse.
 +
 +2011-01-28  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      * textmodes/tex-mode.el: Get rid of compilation-parse-errors-function
 +      (tex-old-error-file-name): New function,
 +      extracted from tex-compilation-parse-errors.
 +      (tex-compilation-parse-errors): Remove.
 +      (tex-error-regexp-alist): New var.
 +      (tex-shell): Use it to avoid compilation-parse-errors-function.
 +
 +      * progmodes/grep.el (grep-regexp-alist): Tighten regexp.
 +      (grep-mode-font-lock-keywords): Remove regexp that seems like
 +      a left-over from before we used compile.el.
 +      (grep-mode-font-lock-keywords): Call syntax-ppss-flush-cache when
 +      modifying the buffer within with-silent-modifications.
 +
 +      * progmodes/compile.el: Cleanup text-properties namespace by using
 +      `compilation-message' instead of `message', `compilation-directory'
 +      instead of `directory', and `compilation-debug' instead of `debug'.
 +      (compilation-last-buffer, compilation-parsing-end)
 +      (compilation-error-list, compilation-old-error-list): Move to the
 +      compatibility part of the code.
 +      (compilation-error-properties): If `file' is a function, let it return
 +      a file name.
 +      (compilation-mode-font-lock-keywords): Be more conservative with the
 +      omake "^ *" pattern prefix, to try and minimize the risk of
 +      pathologically slow regexp matching.
 +      (compilation-start): Use inhibit-read-only.
 +      (compilation--unsetup): New function.
 +      (compilation-shell-minor-mode, compilation-minor-mode): Use it.
 +      (compilation-filter): Minor tweaks.
 +      (compilation-next-error-function): Try and avoid abusing variables.
 +      (compilation--flush-file-structure): New fun.
 +      (compilation-fake-loc): Use it to improve behavior when file is reused.
 +      (debug-ignored-errors): Add "Moved past last ...".
 +      (compilation--compat-error-properties)
 +      (compilation--compat-parse-errors): Rename by doubling the "-".
 +
 +      Port features from the previous prolog.el to the new one.
 +      * progmodes/prolog.el (prolog-system): Add GNU and ECLiPSe options.
 +      (prolog-program-name, prolog-program-switches, prolog-consult-string)
 +      (prolog-compile-string, prolog-prompt-regexp): Get rid of the <foo>-i
 +      variable and use a function to compute the value dynamically.
 +      (prolog-prompt-regexp): Add regexp for GNU Prolog.
 +      (prolog-continued-prompt-regexp): Remove, unused.
 +      (prolog-find-value-by-system): Try and use the value of prolog-system
 +      in the *prolog* buffer if it helps.
 +      (prolog-mode-keybindings-common): Bind C-c C-z unconditionally...
 +      (prolog-zip-on): ..and check prolog-system and version here instead.
 +      (prolog-inferior-self-insert-command): New command.
 +      (prolog-inferior-mode-map): Use it.
 +      (prolog-inferior-error-regexp-alist): New var.
 +      (prolog-inferior-mode): Use it, with compilation-shell-minor-mode.
 +      (prolog-input-filter): Use derived-mode-p.
 +      (prolog-inferior-guess-flavor): New function.
 +      (prolog-ensure-process): Use it.  Use make-comint-in-buffer rather than
 +      make-comint to avoid running comint-mode twice.
 +      (prolog-inferior-buffer): New fun.
 +      (prolog-old-process-region, prolog-old-process-file):
 +      Don't call prolog-bsts here...
 +      (prolog-build-prolog-command): ...do it here instead.
 +      (prolog-old-process-region, prolog-old-process-file):
 +      Use compilation-fake-loc and compilation-forget-errors.
 +      (prolog-consult-compile-region): Use bolp.
 +
 +2011-01-28  Chong Yidong  <cyd@stupidchicken.com>
 +
 +      * image-mode.el (image-display-size): Doc fix (Bug#7820).
 +
 +2011-01-27  Sam Steingold  <sds@gnu.org>
 +
 +      * midnight.el (clean-buffer-list-kill-never-buffer-names):
 +      Remove "*server*" which is never created by emacs server.
 +
 +2011-01-27  Deniz Dogan  <deniz.a.m.dogan@gmail.com>
 +
 +      * vc/vc-bzr.el (vc-bzr-diff): Don't pass --diff-options unless
 +      there are some diff switches.
 +
 +2011-01-27  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      * progmodes/ruby-mode.el (ruby-syntax-propertize-function):
 +      Copy change made to ruby-font-lock-syntactic-keywords.
 +
 +      * htmlfontify.el: Make it obey the font-lock-face text property.
 +      Miscellaneous cleanup such as:
 +      - Don't hide expressions after a closing paren.
 +      - Move initial setq into let.
 +      - Hoist common parts out of ifs.
 +      (hfy-p-to-face, hfy-p-to-face-lennart): Remove.
 +      (hfy-face-at): Use get-text-property instead.
 +      (hfy-prop-invisible-p): Use invisible-p if available.
 +      (htmlfontify-manual): Use \\[...].
 +      (hfy-html-quote-regex): Use [...].
 +      (hfy-combined-face-spec): Simplify.
 +      (hfy-compile-face-map): Don't presume point-min==1.
 +      (hfy-css-name, hfy-buffer, htmlfontify-buffer): Use \' rather than $ to
 +      match end of string.
 +      (hfy-text-p): η-reduce.
 +      (hfy-tags-for-file): Receive cache-hash directly.
 +      (hfy-mark-tag-names): Adjust call.
 +
 +2011-01-27  Glenn Morris  <rgm@gnu.org>
 +
 +      * msb.el (msb-after-load-hooks): Make it an obsolete alias.
 +      (msb-after-load-hook): Remove eval-after-load wackiness.
 +
 +2011-01-25  Sam Steingold  <sds@gnu.org>
 +
 +      * vc/vc-svn.el (vc-svn-diff): Use `diff-command' instead of the
 +      literal "diff" (important for windows-nt).
 +
  2011-01-25  Glenn Morris  <rgm@gnu.org>
  
 -      * comint.el (comint-mode): Doc fix.  (Bug#7897)
 +      * emacs-lisp/copyright.el (copyright-at-end-flag)
 +      (copyright-names-regexp): Add safety properties.
 +      (copyright-year-ranges): New option.
 +      (copyright-find-end): New function, split from copyright-update-year.
 +      (copyright-update-year): Use copyright-find-end.
 +      (copyright-fix-years): Optionally, convert years to ranges.
 +      Handle years continued over comment lines.
 +      Do not mess with the fill-prefix.
 +      Do not call copyright-update.
 +      (copyright-update-directory): Optionally, fix years rather than update.
 +      Skip directories.  Find files with only safe local vars.
  
 -2011-01-24  Stefan Monnier  <monnier@iro.umontreal.ca>
 +2011-01-25  Stefan Monnier  <monnier@iro.umontreal.ca>
  
        * files.el (file-name-non-special): Only change buffer-file-name after
        insert-file-contents if it's `visit'ing the file (bug#7854).
Simple merge
@@@ -1,18 -1,9 +1,23 @@@
 -2010-10-23  Julien Danjou  <julien@danjou.info>
+ 2011-01-31  Antoine Levitt  <antoine.levitt@gmail.com>  (tiny change)
+       * erc-track.el (track): Don't reset erc-modified-channels-object
+       each time erc-track-mode is activated.
 +2011-01-13  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      * erc.el (erc-mode):
 +      * erc-dcc.el (erc-dcc-chat-mode): Use define-derived-mode.
 +
 +2010-11-11  Glenn Morris  <rgm@gnu.org>
 +
 +      * erc-lang.el (erc-cmd-LANG): Fix what may have been a typo.
 +
 +2010-11-05  Lars Magne Ingebrigtsen  <larsi@gnus.org>
 +
 +      * erc-backend.el (erc-coding-system-precedence): New variable.
 +      (erc-decode-string-from-target): Use it.
 +
 +2010-10-24  Julien Danjou  <julien@danjou.info>
  
        * erc-backend.el (erc-server-JOIN): Set the correct target list on join.
  
Simple merge
diff --cc lisp/files.el
Simple merge
Simple merge
Simple merge
diff --cc lisp/mouse.el
Simple merge
diff --cc lisp/msb.el
Simple merge
Simple merge
@@@ -5368,9 -4393,8 +5368,11 @@@ comment at the start of cc-engine.el fo
        (goto-char safe-pos)
        t)))
  
 +;; cc-mode requires cc-fonts.
 +(declare-function c-fontify-recorded-types-and-refs "cc-fonts" ())
 +
+ (defvar c-forward-<>-arglist-recur-depth)
  (defun c-forward-<>-arglist (all-types)
    ;; The point is assumed to be at a "<".  Try to treat it as the open
    ;; paren of an angle bracket arglist and move forward to the
@@@ -487,10 -786,13 +487,12 @@@ unless the current buffer is a scratch 
  (defun ns-find-file ()
    "Do a `find-file' with the `ns-input-file' as argument."
    (interactive)
-   (let* ((f (file-truename (pop ns-input-file)))
 -  (let ((f) (file) (bufwin1) (bufwin2))
 -    (setq f (file-truename (expand-file-name (car ns-input-file)
 -                                           command-line-default-directory)))
 -    (setq ns-input-file (cdr ns-input-file))
 -    (setq file (find-file-noselect f))
 -    (setq bufwin1 (get-buffer-window file 'visible))
 -    (setq bufwin2 (get-buffer-window "*scratch*" 'visibile))
++  (let* ((f (file-truename
++           (expand-file-name (pop ns-input-file)
++                             command-line-default-directory)))
 +         (file (find-file-noselect f))
 +         (bufwin1 (get-buffer-window file 'visible))
 +         (bufwin2 (get-buffer-window "*scratch*" 'visibile)))
      (cond
       (bufwin1
        (select-frame (window-frame bufwin1))
diff --cc src/ChangeLog
 -2011-01-29  Andreas Schwab  <schwab@linux-m68k.org>
++2011-01-31  Andreas Schwab  <schwab@linux-m68k.org>
+       * image.c (DEF_IMGLIB_FN): Add parameter rettype, use it instead
+       of int.  All uses adjusted.
+       (PNG_JMPBUF, png_load, jpeg_load, tiff_load, gif_load)
+       (svg_load_image): Remove casts.
 -2011-01-29  Chong Yidong  <cyd@stupidchicken.com>
++2011-01-31  Chong Yidong  <cyd@stupidchicken.com>
+       * image.c (fn_png_longjmp, fn_png_set_longjmp_fn): New png
+       function definitions for compiling with libpng-1.5.
+       (PNG_LONGJMP, PNG_JMPBUF): New macros for libpng-1.5.
+       (my_png_error, png_load): Use them.  Suggested by Thomas Klausner
+       (Bug#7908).
 +2011-01-31  Eli Zaretskii  <eliz@gnu.org>
 +
 +      * s/ms-w32.h (HAVE_STRFTIME): Don't define.
 +
 +      * makefile.w32-in (OBJ2): Remove strftime.$(O).
 +      ($(BLD)/strftime.$(O)): Remove prerequisites.
 +
 +2011-01-31  Paul Eggert  <eggert@cs.ucla.edu>
 +
 +      src/emacs.c now gets version number from configure.in
 +      * emacs.c (emacs_version): Set to VERSION so that it
 +      is determined automatically from ../configure.in.
 +
 +2011-01-31  Jim Meyering  <meyering@redhat.com>
 +
 +      * charset.c (load_charset_map): Don't deref NULL on failed malloc.
 +      Use xmalloc rather than malloc.
 +
 +2011-01-30  Paul Eggert  <eggert@cs.ucla.edu>
 +
 +      strftime: import from gnulib
 +      * Makefile.in (obj): Remove strftime.o, as gnulib now does this for us.
 +      * deps.mk (strftime.o): Remove.
 +      * editfns.c: Include <strftime.h>, supplied by gnulib.
 +      (emacs_strftimeu): Remove decl.
 +      (emacs_memftimeu): Use nstrftime (the gnulib name) rather than
 +      emacs_strftimeu.
 +      * config.in: Regenerate.
 +      * strftime.c: Remove; we now use strftime from gnulib.
 +
 +      Use SSDATA when the context wants char *.
 +      * alloc.c, buffer.c, bytecode.c, callproc.c, dired.c:
 +      * dispnew.c, doc.c, editfns.c, emacs.c, fileio.c, filelock.c:
 +      * fns.c, font.c, frame.c, image.c, indent.c, keyboard.c:
 +      * lread.c, minibuf.c, print.c, process.c, search.c, widget.c:
 +      * xdisp.c, xfaces.c, xfns.c, xml.c, xselect.c, xterm.c:
 +      Use SSDATA (not SDATA) when the context of the expression wants
 +      char * (not unsigned char *).
 +
 +2011-01-30  Jan Djärv  <jan.h.d@swipnet.se>
 +
 +      * .gdbinit: Read global lisp variables as globals.f_V*.
 +
 +2011-01-30  Andreas Schwab  <schwab@linux-m68k.org>
 +
 +      * font.c (PROP_MATCH): Remove parameter N and use strlen instead.
 +      All uses changed.
 +      (PROP_SAVE): Likewise.
 +
 +2011-01-29  Chong Yidong  <cyd@stupidchicken.com>
 +
 +      * keyboard.c (make_lispy_position): Fix typo in last change
 +      (Bug#7935).
 +
 +2011-01-29  Eli Zaretskii  <eliz@gnu.org>
 +
 +      * s/ms-w32.h (HAVE_MKTIME): Remove.
 +
 +      * makefile.w32-in (LOCAL_FLAGS): Add -I../lib.
 +      (GNULIB): New variable.
 +      (LIBS): Add $(GNULIB).
 +      $(TEMACS): Depend on $(GNULIB).
 +      <top-level>: Fix font-lock disrupted by a lone `"'.
 +
 +2011-01-29  Jan Djärv  <jan.h.d@swipnet.se>
 +
 +      * nsselect.m (ns_string_from_pasteboard): Get length of string
 +      and use make_string instead of build_string (Bug#7934).
 +      (ns_string_to_pasteboard_internal): Use initWithBytesNoCopy
 +      instead of stringWithUTF8String  (Bug#7934).
 +
 +2011-01-29  Anders Lindgren  <andlind@gmail.com> (tiny change)
 +
 +        * nsfont.m (nsfont_open): Ensure that fonts with inexact
 +        descenders would not become one pixel too tall (Bug#7887).
 +
  2011-01-28  Chong Yidong  <cyd@stupidchicken.com>
  
 -      * m/intel386.h: Define NO_ARG_ARRAY.  Suggested by Dan Nicolaescu.
 +      * keyboard.c (make_lispy_position): For clicks on right fringe or
 +      margin, compute text position using the X coordinate relative to
 +      the left of the text area (Bug#7839).
 +
 +2011-01-28  Kenichi Handa  <handa@m17n.org>
 +
 +      * ftfont.c (ftfont_spec_pattern): Check each extra property
 +      value.
 +
 +2011-01-28  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      * xdisp.c (safe_eval_handler): Distinguish symbols and strings.
  
  2011-01-27  Chong Yidong  <cyd@stupidchicken.com>
  
diff --cc src/image.c
@@@ -1896,7 -1977,7 +1896,7 @@@ mark_image_cache (struct image_cache *c
  #ifdef HAVE_NTGUI
  
  /* Macro for defining functions that will be loaded from image DLLs.  */
- #define DEF_IMGLIB_FN(func,args) int (FAR CDECL *fn_##func)args
 -#define DEF_IMGLIB_FN(rettype, func) rettype (FAR CDECL *fn_##func)()
++#define DEF_IMGLIB_FN(rettype,func,args) rettype (FAR CDECL *fn_##func)args
  
  /* Macro for loading those image functions from the library.  */
  #define LOAD_IMGLIB_FN(lib,func) {                                    \
@@@ -3251,12 -3387,10 +3251,12 @@@ xpm_free_colors (Display *dpy, Colorma
  
  /* XPM library details.  */
  
- DEF_IMGLIB_FN (XpmFreeAttributes, (XpmAttributes *));
- DEF_IMGLIB_FN (XpmCreateImageFromBuffer, (Display *, char *, xpm_XImage **,
 -DEF_IMGLIB_FN (void, XpmFreeAttributes);
 -DEF_IMGLIB_FN (int, XpmCreateImageFromBuffer);
 -DEF_IMGLIB_FN (int, XpmReadFileToImage);
 -DEF_IMGLIB_FN (void, XImageFree);
++DEF_IMGLIB_FN (void, XpmFreeAttributes, (XpmAttributes *));
++DEF_IMGLIB_FN (int, XpmCreateImageFromBuffer, (Display *, char *, xpm_XImage **,
 +                                        xpm_XImage **, XpmAttributes *));
- DEF_IMGLIB_FN (XpmReadFileToImage, (Display *, char *, xpm_XImage **,
++DEF_IMGLIB_FN (int, XpmReadFileToImage, (Display *, char *, xpm_XImage **,
 +                                  xpm_XImage **, XpmAttributes *));
- DEF_IMGLIB_FN (XImageFree, (xpm_XImage *));
++DEF_IMGLIB_FN (void, XImageFree, (xpm_XImage *));
  
  static int
  init_xpm_functions (Lisp_Object libraries)
@@@ -5419,31 -5568,32 +5419,36 @@@ png_image_p (Lisp_Object object
  #ifdef HAVE_NTGUI
  /* PNG library details.  */
  
- DEF_IMGLIB_FN (png_get_io_ptr, (png_structp));
- DEF_IMGLIB_FN (png_sig_cmp, (png_bytep, png_size_t, png_size_t));
- DEF_IMGLIB_FN (png_create_read_struct, (png_const_charp, png_voidp,
-                                       png_error_ptr, png_error_ptr));
- DEF_IMGLIB_FN (png_create_info_struct, (png_structp));
- DEF_IMGLIB_FN (png_destroy_read_struct, (png_structpp, png_infopp, png_infopp));
- DEF_IMGLIB_FN (png_set_read_fn, (png_structp, png_voidp, png_rw_ptr));
- DEF_IMGLIB_FN (png_set_sig_bytes, (png_structp, int));
- DEF_IMGLIB_FN (png_read_info, (png_structp, png_infop));
- DEF_IMGLIB_FN (png_get_IHDR, (png_structp, png_infop,
 -DEF_IMGLIB_FN (png_voidp, png_get_io_ptr);
 -DEF_IMGLIB_FN (int, png_sig_cmp);
 -DEF_IMGLIB_FN (png_structp, png_create_read_struct);
 -DEF_IMGLIB_FN (png_infop, png_create_info_struct);
 -DEF_IMGLIB_FN (void, png_destroy_read_struct);
 -DEF_IMGLIB_FN (void, png_set_read_fn);
 -DEF_IMGLIB_FN (void, png_set_sig_bytes);
 -DEF_IMGLIB_FN (void, png_read_info);
 -DEF_IMGLIB_FN (png_uint_32, png_get_IHDR);
 -DEF_IMGLIB_FN (png_uint_32, png_get_valid);
 -DEF_IMGLIB_FN (void, png_set_strip_16);
 -DEF_IMGLIB_FN (void, png_set_expand);
 -DEF_IMGLIB_FN (void, png_set_gray_to_rgb);
 -DEF_IMGLIB_FN (void, png_set_background);
 -DEF_IMGLIB_FN (png_uint_32, png_get_bKGD);
 -DEF_IMGLIB_FN (void, png_read_update_info);
 -DEF_IMGLIB_FN (png_byte, png_get_channels);
 -DEF_IMGLIB_FN (png_size_t, png_get_rowbytes);
 -DEF_IMGLIB_FN (void, png_read_image);
 -DEF_IMGLIB_FN (void, png_read_end);
 -DEF_IMGLIB_FN (void, png_error);
++DEF_IMGLIB_FN (png_voidp, png_get_io_ptr, (png_structp));
++DEF_IMGLIB_FN (int, png_sig_cmp, (png_bytep, png_size_t, png_size_t));
++DEF_IMGLIB_FN (png_structp, png_create_read_struct, (png_const_charp, png_voidp,
++                                                   png_error_ptr, png_error_ptr));
++DEF_IMGLIB_FN (png_infop, png_create_info_struct, (png_structp));
++DEF_IMGLIB_FN (void, png_destroy_read_struct, (png_structpp, png_infopp, png_infopp));
++DEF_IMGLIB_FN (void, png_set_read_fn, (png_structp, png_voidp, png_rw_ptr));
++DEF_IMGLIB_FN (void, png_set_sig_bytes, (png_structp, int));
++DEF_IMGLIB_FN (void, png_read_info, (png_structp, png_infop));
++DEF_IMGLIB_FN (png_uint_32, png_get_IHDR, (png_structp, png_infop,
 +                            png_uint_32 *, png_uint_32 *,
 +                            int *, int *, int *, int *, int *));
- DEF_IMGLIB_FN (png_get_valid, (png_structp, png_infop, png_uint_32));
- DEF_IMGLIB_FN (png_set_strip_16, (png_structp));
- DEF_IMGLIB_FN (png_set_expand, (png_structp));
- DEF_IMGLIB_FN (png_set_gray_to_rgb, (png_structp));
- DEF_IMGLIB_FN (png_set_background, (png_structp, png_color_16p,
++DEF_IMGLIB_FN (png_uint_32, png_get_valid, (png_structp, png_infop, png_uint_32));
++DEF_IMGLIB_FN (void, png_set_strip_16, (png_structp));
++DEF_IMGLIB_FN (void, png_set_expand, (png_structp));
++DEF_IMGLIB_FN (void, png_set_gray_to_rgb, (png_structp));
++DEF_IMGLIB_FN (void, png_set_background, (png_structp, png_color_16p,
 +                                  int, int, double));
- DEF_IMGLIB_FN (png_get_bKGD, (png_structp, png_infop, png_color_16p *));
- DEF_IMGLIB_FN (png_read_update_info, (png_structp, png_infop));
- DEF_IMGLIB_FN (png_get_channels, (png_structp, png_infop));
- DEF_IMGLIB_FN (png_get_rowbytes, (png_structp, png_infop));
- DEF_IMGLIB_FN (png_read_image, (png_structp, png_bytepp));
- DEF_IMGLIB_FN (png_read_end, (png_structp, png_infop));
- DEF_IMGLIB_FN (png_error, (png_structp, png_const_charp));
++DEF_IMGLIB_FN (png_uint_32, png_get_bKGD, (png_structp, png_infop, png_color_16p *));
++DEF_IMGLIB_FN (void, png_read_update_info, (png_structp, png_infop));
++DEF_IMGLIB_FN (png_byte, png_get_channels, (png_structp, png_infop));
++DEF_IMGLIB_FN (png_size_t, png_get_rowbytes, (png_structp, png_infop));
++DEF_IMGLIB_FN (void, png_read_image, (png_structp, png_bytepp));
++DEF_IMGLIB_FN (void, png_read_end, (png_structp, png_infop));
++DEF_IMGLIB_FN (void, png_error, (png_structp, png_const_charp));
+ #if (PNG_LIBPNG_VER >= 10500)
 -DEF_IMGLIB_FN (void, png_longjmp);
 -DEF_IMGLIB_FN (jmp_buf *, png_set_longjmp_fn);
++DEF_IMGLIB_FN (void, png_longjmp, (png_structp, int));
++DEF_IMGLIB_FN (jmp_buf *, png_set_longjmp_fn, (png_structp, png_longjmp_ptr, size_t));
+ #endif /* libpng version >= 1.5 */
  
  static int
  init_png_functions (Lisp_Object libraries)
@@@ -6028,14 -6216,14 +6052,14 @@@ jpeg_image_p (Lisp_Object object
  #ifdef HAVE_NTGUI
  
  /* JPEG library details.  */
- DEF_IMGLIB_FN (jpeg_CreateDecompress, (j_decompress_ptr, int, size_t));
- DEF_IMGLIB_FN (jpeg_start_decompress, (j_decompress_ptr));
- DEF_IMGLIB_FN (jpeg_finish_decompress, (j_decompress_ptr));
- DEF_IMGLIB_FN (jpeg_destroy_decompress, (j_decompress_ptr));
- DEF_IMGLIB_FN (jpeg_read_header, (j_decompress_ptr, boolean));
- DEF_IMGLIB_FN (jpeg_read_scanlines, (j_decompress_ptr, JSAMPARRAY, JDIMENSION));
- DEF_IMGLIB_FN (jpeg_std_error, (struct jpeg_error_mgr *));
- DEF_IMGLIB_FN (jpeg_resync_to_restart, (j_decompress_ptr, int));
 -DEF_IMGLIB_FN (void, jpeg_CreateDecompress);
 -DEF_IMGLIB_FN (boolean, jpeg_start_decompress);
 -DEF_IMGLIB_FN (boolean, jpeg_finish_decompress);
 -DEF_IMGLIB_FN (void, jpeg_destroy_decompress);
 -DEF_IMGLIB_FN (int, jpeg_read_header);
 -DEF_IMGLIB_FN (JDIMENSION, jpeg_read_scanlines);
 -DEF_IMGLIB_FN (struct jpeg_error_mgr *, jpeg_std_error);
 -DEF_IMGLIB_FN (boolean, jpeg_resync_to_restart);
++DEF_IMGLIB_FN (void, jpeg_CreateDecompress, (j_decompress_ptr, int, size_t));
++DEF_IMGLIB_FN (boolean, jpeg_start_decompress, (j_decompress_ptr));
++DEF_IMGLIB_FN (boolean, jpeg_finish_decompress, (j_decompress_ptr));
++DEF_IMGLIB_FN (void, jpeg_destroy_decompress, (j_decompress_ptr));
++DEF_IMGLIB_FN (int, jpeg_read_header, (j_decompress_ptr, boolean));
++DEF_IMGLIB_FN (JDIMENSION, jpeg_read_scanlines, (j_decompress_ptr, JSAMPARRAY, JDIMENSION));
++DEF_IMGLIB_FN (struct jpeg_error_mgr *, jpeg_std_error, (struct jpeg_error_mgr *));
++DEF_IMGLIB_FN (boolean, jpeg_resync_to_restart, (j_decompress_ptr, int));
  
  static int
  init_jpeg_functions (Lisp_Object libraries)
@@@ -6328,16 -6538,11 +6352,15 @@@ jpeg_load (struct frame *f, struct imag
          return 0;
        }
      }
 +  else if (!STRINGP (specified_data))
 +    {
 +      image_error ("Invalid image data `%s'", specified_data, Qnil);
 +      return 0;
 +    }
  
    /* Customize libjpeg's error handling to call my_error_exit when an
-      error is detected.  This function will perform a longjmp.
-      Casting return value avoids a GCC warning on W32.  */
-   cinfo.err = (struct jpeg_error_mgr *)fn_jpeg_std_error (&mgr.pub);
+      error is detected.  This function will perform a longjmp.  */
+   cinfo.err = fn_jpeg_std_error (&mgr.pub);
    mgr.pub.error_exit = my_error_exit;
  
    if ((rc = setjmp (mgr.setjmp_buffer)) != 0)
@@@ -6561,17 -6770,14 +6584,17 @@@ tiff_image_p (Lisp_Object object
  #ifdef HAVE_NTGUI
  
  /* TIFF library details.  */
- DEF_IMGLIB_FN (TIFFSetErrorHandler, (TIFFErrorHandler));
- DEF_IMGLIB_FN (TIFFSetWarningHandler, (TIFFErrorHandler));
- DEF_IMGLIB_FN (TIFFOpen, (const char *, const char *));
- DEF_IMGLIB_FN (TIFFClientOpen, (const char *, const char *, thandle_t,
 -DEF_IMGLIB_FN (TIFFErrorHandler, TIFFSetErrorHandler);
 -DEF_IMGLIB_FN (TIFFErrorHandler, TIFFSetWarningHandler);
 -DEF_IMGLIB_FN (TIFF *, TIFFOpen);
 -DEF_IMGLIB_FN (TIFF *, TIFFClientOpen);
 -DEF_IMGLIB_FN (int, TIFFGetField);
 -DEF_IMGLIB_FN (int, TIFFReadRGBAImage);
 -DEF_IMGLIB_FN (void, TIFFClose);
 -DEF_IMGLIB_FN (int, TIFFSetDirectory);
++DEF_IMGLIB_FN (TIFFErrorHandler, TIFFSetErrorHandler, (TIFFErrorHandler));
++DEF_IMGLIB_FN (TIFFErrorHandler, TIFFSetWarningHandler, (TIFFErrorHandler));
++DEF_IMGLIB_FN (TIFF *, TIFFOpen, (const char *, const char *));
++DEF_IMGLIB_FN (TIFF *, TIFFClientOpen, (const char *, const char *, thandle_t,
 +                              TIFFReadWriteProc, TIFFReadWriteProc,
 +                              TIFFSeekProc, TIFFCloseProc, TIFFSizeProc,
 +                              TIFFMapFileProc, TIFFUnmapFileProc));
- DEF_IMGLIB_FN (TIFFGetField, (TIFF *, ttag_t, ...));
- DEF_IMGLIB_FN (TIFFReadRGBAImage, (TIFF *, uint32, uint32, uint32 *, int));
- DEF_IMGLIB_FN (TIFFClose, (TIFF *));
- DEF_IMGLIB_FN (TIFFSetDirectory, (TIFF *, tdir_t));
++DEF_IMGLIB_FN (int, TIFFGetField, (TIFF *, ttag_t, ...));
++DEF_IMGLIB_FN (int, TIFFReadRGBAImage, (TIFF *, uint32, uint32, uint32 *, int));
++DEF_IMGLIB_FN (void, TIFFClose, (TIFF *));
++DEF_IMGLIB_FN (int, TIFFSetDirectory, (TIFF *, tdir_t));
  
  static int
  init_tiff_functions (Lisp_Object libraries)
@@@ -7014,10 -7248,10 +7034,10 @@@ gif_image_p (Lisp_Object object
  #ifdef HAVE_NTGUI
  
  /* GIF library details.  */
- DEF_IMGLIB_FN (DGifCloseFile, (GifFileType *));
- DEF_IMGLIB_FN (DGifSlurp, (GifFileType *));
- DEF_IMGLIB_FN (DGifOpen, (void *, InputFunc));
- DEF_IMGLIB_FN (DGifOpenFileName, (const char *));
 -DEF_IMGLIB_FN (int, DGifCloseFile);
 -DEF_IMGLIB_FN (int, DGifSlurp);
 -DEF_IMGLIB_FN (GifFileType *, DGifOpen);
 -DEF_IMGLIB_FN (GifFileType *, DGifOpenFileName);
++DEF_IMGLIB_FN (int, DGifCloseFile, (GifFileType *));
++DEF_IMGLIB_FN (int, DGifSlurp, (GifFileType *));
++DEF_IMGLIB_FN (GifFileType *, DGifOpen, (void *, InputFunc));
++DEF_IMGLIB_FN (GifFileType *, DGifOpenFileName, (const char *));
  
  static int
  init_gif_functions (Lisp_Object libraries)