1. 16 Dec, 2012 1 commit
    • Romain Francoise's avatar
      Add support for preserving ACL entries of files. · 7c3d167f
      Romain Francoise authored
      	* configure.ac (acl): New option.
      	(HAVE_POSIX_ACL): Test for POSIX ACL support.  This is typically
      	provided by libacl on GNU/Linux.
      
      	* fileio.c (Ffile_acl, Fset_file_acl): New functions.
      	(Fcopy_file): Change last arg to `preserve_extended_attributes'
      	and copy ACL entries of file in addition to SELinux context if
      	set.
      	(syms_of_fileio): Add `file-acl' and `set-file-acl'.
      
      	* Makefile.in (LIBACL_LIBS): New macro.
      	(LIBES): Use it.
      
      	* files.el (file-extended-attributes)
      	(set-file-extended-attributes): New functions.
      	(backup-buffer): Use them to handle both SELinux context and ACL
      	entries.
      	(backup-buffer-copy): Work with an alist of extended attributes,
      	rather than an SELinux context.
      	(basic-save-buffer-2): Ditto.
      
      	* files.texi (File Attributes): Document ACL support and new
      	`file-acl' function.
      	(Changing Files): Mention argument name change of `copy-file' and
      	document new function `set-file-acl'.
      7c3d167f
  2. 14 Dec, 2012 1 commit
    • Paul Eggert's avatar
      Fix permissions bugs with setgid directories etc. · 97976f9f
      Paul Eggert authored
      * configure.ac (BSD4_2): Remove; no longer needed.
      * admin/CPP-DEFINES (BSD4_2): Remove.
      * doc/lispintro/emacs-lisp-intro.texi (Files List):
      directory-files-and-attributes now outputs t for attribute that's
      now a placeholder.
      * doc/lispref/files.texi (Testing Accessibility): Document GROUP arg
      of file-ownership-preserved-p.
      (File Attributes): Document that 9th element is now
      just a placeholder.
      * doc/lispref/os.texi (User Identification): Document new functions group-gid,
      group-real-gid.
      * etc/NEWS: Document changes to file-attributes,
      file-ownership-preserved-p.
      Mention new functions group-gid, group-real-gid.
      * lisp/files.el (backup-buffer): Don't rely on 9th output of
      file-attributes, as it's now a placeholder.  Instead, use the new
      optional arg of file-ownership-preserved-p.
      (file-ownership-preserved-p): New optional arg GROUP.
      Fix mishandling of setuid directories that would cause this
      function to return t when it should have returned nil.
      Document what happens if the file does not exist, and when
      it's not known whether the ownership will be preserved.
      * lisp/net/tramp-sh.el (tramp-sh-handle-file-ownership-preserved-p):
      Likewise.
      (tramp-get-local-gid): Use group-gid for integer, as that's
      faster and more reliable.
      * src/dired.c (Ffile_attributes): Return t as the 9th attribute,
      to mark it as a placeholder.  The old value was often wrong.
      The only user of this attribute has been changed to use
      file-ownership-preserved-p instead, with its new group arg.
      * src/editfns.c (Fgroup_gid, Fgroup_real_gid): New functions.
      
      Fixes: debbugs:13125
      97976f9f
  3. 01 Dec, 2012 2 commits
  4. 29 Nov, 2012 2 commits
  5. 19 Nov, 2012 1 commit
  6. 18 Nov, 2012 1 commit
    • Paul Eggert's avatar
      Minor cleanup for times as lists of four integers. · 0c93aa38
      Paul Eggert authored
      * doc/lispref/os.texi (Time Parsing): Time values can now be four integers.
      * lisp/files.el (dir-locals-directory-cache):
      * lisp/ps-bdf.el (bdf-file-mod-time, bdf-read-font-info):
      Doc fixes.
      * lisp/net/tramp-sh.el (tramp-do-file-attributes-with-ls):
      * lisp/ps-bdf.el (bdf-file-newer-than-time):
      Process four-integers time stamps, not two.  Doc fixes.
      0c93aa38
  7. 08 Nov, 2012 1 commit
  8. 29 Oct, 2012 1 commit
  9. 06 Oct, 2012 1 commit
  10. 05 Oct, 2012 1 commit
  11. 01 Oct, 2012 1 commit
  12. 30 Sep, 2012 1 commit
    • Paul Eggert's avatar
      file-attributes has a new optional arg FOLLOW-SYMLINKS. · e7a2937b
      Paul Eggert authored
      * doc/lispref/files.texi (File Attributes): Describe it.
      (Magic File Names): Use it.
      * etc/NEWS: Document the change.
      * lisp/files.el (remote-file-name-inhibit-cache):
      * lisp/time.el (display-time-file-nonempty-p): Use it.
      * lisp/files.el (after-find-file): Don't chase links before calling
      file-exists-p, as file-exists-p already does the right thing.
      * src/dired.c (directory_files_internal, Ffile_attributes):
      New arg follow_symlinks.  All uses changed.
      e7a2937b
  13. 25 Sep, 2012 1 commit
    • Chong Yidong's avatar
      Use declare forms, where possible, to mark obsolete functions. · 59f7af81
      Chong Yidong authored
      * lisp/allout.el (allout-passphrase-hint-string): Likewise.
      (allout-init): Use a declare form to mark obsolete.
      
      * lisp/calendar/calendar.el (calendar-version):
      * lisp/calendar/icalendar.el (icalendar-extract-ical-from-buffer)
      (icalendar-convert-diary-to-ical):
      * lisp/cus-edit.el (custom-mode):
      * lisp/ansi-color.el (ansi-color-unfontify-region):
      * lisp/international/latin1-disp.el (latin1-char-displayable-p):
      * lisp/progmodes/cwarn.el (turn-on-cwarn-mode):
      * lisp/progmodes/which-func.el (which-func-update-1): Use
      define-obsolete-function-alias.
      
      * lisp/bookmark.el (bookmark-jump-noselect): Use a declare form to mark
      this function obsolete.
      
      * lisp/calendar/cal-x.el (calendar-two-frame-setup)
      (calendar-only-one-frame-setup, calendar-one-frame-setup):
      * lisp/calendar/calendar.el (american-calendar, european-calendar)
      (calendar-for-loop):
      * lisp/comint.el (comint-dynamic-simple-complete)
      (comint-dynamic-complete-as-filename, comint-unquote-filename):
      * lisp/desktop.el (desktop-load-default):
      * lisp/dired-x.el (dired-omit-here-always)
      (dired-hack-local-variables, dired-default-directory):
      * lisp/emacs-lisp/derived.el (derived-mode-class):
      * lisp/emacs-lisp/timer.el (timer-set-time-with-usecs):
      * lisp/emacs-lock.el (toggle-emacs-lock):
      * lisp/epa.el (epa-display-verify-result):
      * lisp/epg.el (epg-sign-keys, epg-start-sign-keys)
      (epg-passphrase-callback-function):
      * lisp/eshell/esh-util.el (eshell-for):
      * lisp/eshell/eshell.el (eshell-remove-from-window-buffer-names)
      (eshell-add-to-window-buffer-names):
      * lisp/files.el (locate-file-completion):
      * lisp/imenu.el (imenu-example--create-c-index)
      (imenu-example--create-lisp-index)
      (imenu-example--lisp-extract-index-name)
      (imenu-example--name-and-position):
      * lisp/international/mule-cmds.el (princ-list):
      * lisp/international/mule-diag.el (decode-codepage-char):
      * lisp/international/mule-util.el (detect-coding-with-priority):
      * lisp/iswitchb.el (iswitchb-read-buffer):
      * lisp/mail/mailalias.el (mail-complete):
      * lisp/mail/sendmail.el (mail-sent-via):
      * lisp/mouse.el (mouse-popup-menubar-stuff, mouse-popup-menubar)
      (mouse-major-mode-menu):
      * lisp/password-cache.el (password-read-and-add):
      * lisp/pcomplete.el (pcomplete-parse-comint-arguments):
      * lisp/progmodes/sh-script.el (sh-maybe-here-document):
      * lisp/replace.el (query-replace-regexp-eval):
      * lisp/savehist.el (savehist-load):
      * lisp/simple.el (choose-completion-delete-max-match):
      * lisp/term.el (term-dynamic-simple-complete):
      * lisp/vc/ediff-init.el (ediff-check-version):
      * lisp/vc/ediff-wind.el (ediff-choose-window-setup-function-automatically):
      * lisp/vc/vc.el (vc-diff-switches-list):
      * lisp/view.el (view-return-to-alist-update): Likewise.
      
      * lisp/iswitchb.el (iswitchb-read-buffer): Move code of
      iswitchb-define-mode-map here, and delete that obsolete function.
      
      * lisp/subr.el (eval-next-after-load, makehash, insert-string)
      (assoc-ignore-representation, assoc-ignore-case): Use declare to
      mark obsolete.
      (mode-line-inverse-video): Variable deleted.
      
      * lisp/emacs-lisp/byte-run.el (make-obsolete): Doc fix; emphasize that
      this applies to functions.
      
      * lisp/erc/erc.el (erc-send-command): Use define-obsolete-function-alias.
      
      * lisp/international/mule-util.el (string-to-sequence): Remove.
      
      * lisp/net/newst-backend.el (newsticker-cache-filename):
      * lisp/net/newst-treeview.el (newsticker-groups-filename): Fix
      incorrect obsolescence declaration.
      
      * lisp/net/snmp-mode.el (snmp-font-lock-keywords-3): Don't use obsolete
      font-lock-reference-face.
      
      * lisp/url/url-parse.el (url-recreate-url-attributes):
      * lisp/url/url-util.el (url-generate-unique-filename): Use declare to mark
      obsolete.
      
      * src/xdisp.c (mode_line_inverse_video): Delete obsolete variable.
      59f7af81
  14. 22 Sep, 2012 1 commit
  15. 16 Sep, 2012 1 commit
  16. 09 Sep, 2012 1 commit
  17. 07 Sep, 2012 1 commit
  18. 03 Sep, 2012 1 commit
    • Martin Rudalics's avatar
      New macro with-temp-buffer-window and related fixes. · c5e28e39
      Martin Rudalics authored
      * buffer.c (Fdelete_all_overlays): New function.
      
      * window.el (temp-buffer-window-setup-hook)
      (temp-buffer-window-show-hook): New hooks.
      (temp-buffer-window-setup, temp-buffer-window-show)
      (with-temp-buffer-window): New functions.
      (fit-window-to-buffer): Remove unused optional argument
      OVERRIDE.
      (special-display-popup-frame): Make sure the window used shows
      BUFFER.
      
      * help.el (temp-buffer-resize-mode): Fix doc-string.
      (resize-temp-buffer-window): New optional argument WINDOW.
      
      * files.el (recover-file, save-buffers-kill-emacs):
      * dired.el (dired-mark-pop-up): Use with-temp-buffer-window.
      c5e28e39
  19. 29 Aug, 2012 2 commits
  20. 23 Aug, 2012 1 commit
  21. 15 Aug, 2012 1 commit
  22. 13 Aug, 2012 1 commit
  23. 08 Aug, 2012 1 commit
  24. 07 Aug, 2012 1 commit
    • Glenn Morris's avatar
      hack-local-variables-filter fix for bug#12155 · f40b9f10
      Glenn Morris authored
      * lisp/files.el (hack-local-variables-filter): If an eval: form is not
      known to be safe, and enable-local-variables is :safe, then ignore
      the form totally, as is done for non-eval forms.
      f40b9f10
  25. 05 Aug, 2012 2 commits
  26. 03 Aug, 2012 1 commit
    • Eli Zaretskii's avatar
      Support symlinks on latest versions of MS-Windows. · 6dad7178
      Eli Zaretskii authored
       src/w32.c: Include winioctl.h and aclapi.h.
       (is_symlink, chase_symlinks, enable_privilege, restore_privilege)
       (revert_to_self): Forward declarations of static functions.
       <static BOOL g_b_init_get_security_info>:
       <g_b_init_create_symbolic_link>: New static flags.
       (globals_of_w32): Initialize them to zero.
       (GetSecurityInfo_Proc, CreateSymbolicLink_Proc): New typedefs.
       (map_w32_filename): Improve commentary.  Simplify switch.
       (SYMBOLIC_LINK_FLAG_DIRECTORY): Define if not defined in system
       headers (most versions of MinGW w32api don't).
       (get_security_info, create_symbolic_link)
       (get_file_security_desc_by_handle, is_symlink, chase_symlinks):
       New functions.
       (sys_access, sys_chmod): Call 'chase_symlinks' to resolve symlinks
       in the argument file name.
       (sys_access): Call unc_volume_file_attributes only if
       GetFileAttributes fails with network-related error codes.
       (sys_rename): Diagnose renaming of a symlink when the user doesn't
       have the required privileges.
       (get_file_security_desc_by_name): Renamed from
       get_file_security_desc.
       (stat_worker): New function, with most of the guts of 'stat', and
       with addition of handling of symlinks and support for 'lstat'.  If
       possible, get file's attributes and security information by
       handle, not by name.  Produce S_IFLNK bit for symlinks, when
       called from 'lstat'.
       (stat, lstat): New functions, call 'stat_worker'.
       (symlink, readlink, careadlinkat): Rewritten to create and resolve
       symlinks when the underlying filesystem supports them.
      
       lib/src/ntlib.c (lstat): New function, calls 'stat'.
      
       nt/inc/sys/stat.h (S_IFLNK): Define.
       (S_ISLNK): A non-trivial definition.
       (lstat): Prototype instead of a macro that redirects to 'stat'.
      
       lisp/files.el (file-truename): Don't skip symlink-chasing part on
       windows-nt.  Incorporate the resolution of 8+3 short aliases on
       Windows into the loop that recursively chases symlinks.  Compare
       directory and its parent case-insensitively on MS-Windows and
       MS-DOS.
      
       etc/NEWS: Announce the symlink support on MS-Windows.
      6dad7178
  27. 13 Jul, 2012 1 commit
    • Chong Yidong's avatar
      Don't warn on toggle-read-only calls. · b68b3337
      Chong Yidong authored
      Clarify the documentation of toggle-read-only, and audit the code tree
      for uses of toggle-read-only; where appropriate, switch to setting the
      variable buffer-read-only or calling toggle-read-only with a (new)
      second arg.
      
      * lisp/files.el (toggle-read-only): Doc fix and code cleanup.  New arg
      to allow printing the message when called from Lisp.
      
      * lisp/emacs-lisp/bytecomp.el (byte-compile-interactive-only-functions):
      Remove toggle-read-only.
      
      * lisp/bindings.el (mode-line-toggle-read-only):
      * lisp/dired.el (dired-toggle-read-only):
      * lisp/ibuffer.el (ibuffer-do-toggle-read-only): Call toggle-read-only
      with non-nil second arg.
      
      * lisp/bs.el (bs-toggle-readonly):
      * lisp/buff-menu.el (Buffer-menu-toggle-read-only): Remove
      with-no-warnings around toggle-read-only.
      
      * lisp/ffap.el (ffap--toggle-read-only): Accept a list of buffers.
      Remove with-no-warnings around toggle-read-only.
      (ffap-read-only, ffap-read-only-other-window)
      (ffap-read-only-other-frame): Callers changed.
      
      * lisp/help-mode.el: Don't require view package.
      (help-mode-finish): Set buffer-read-only instead of calling
      toggle-read-only.
      
      * lisp/emacs-lisp/eieio-custom.el (eieio-customize-object):
      * lisp/vc/ediff.el (ediff-set-read-only-in-buf-A): Set buffer-read-only
      directly.
      
      * lisp/gnus/smime.el (smime-certificate-info): Set buffer-read-only directly,
      instead of calling toggle-read-only with a (bogus) argument.
      
      * doc/emacs/buffers.texi (Misc Buffer): Document view-read-only.
      
      * doc/lispref/buffers.texi (Read Only Buffers): Document toggle-read-only
      changes.  Reword to account for the fact that read-only is currently not
      supported in overlay properties.
      b68b3337
  28. 06 Jul, 2012 1 commit
  29. 04 Jul, 2012 1 commit
  30. 01 Jul, 2012 1 commit
  31. 26 Jun, 2012 1 commit
    • Sam Steingold's avatar
      * lisp/files.el (file-name-base): New convenience function. · d2c32364
      Sam Steingold authored
      * lisp/autoinsert.el, lisp/cus-dep.el, lisp/doc-view.el, lisp/image-dired.el,
      * lisp/woman.el, lisp/eshell/esh-cmd.el, lisp/progmodes/ada-xref.el,
      * lisp/progmodes/cc-defs.el, lisp/progmodes/cperl-mode.el,
      * lisp/progmodes/flymake.el, lisp/progmodes/gud.el, lisp/progmodes/idlwave.el,
      * lisp/textmodes/ispell.el, lisp/textmodes/reftex-ref.el,
      * lisp/textmodes/tex-mode.el: Use it.
      Did not touch cedet and org because they are maintained elsewhere.
      d2c32364
  32. 22 Jun, 2012 3 commits
    • Stefan Monnier's avatar
      Further GV/CL cleanups. · 36cec983
      Stefan Monnier authored
      * lisp/emacs-lisp/gv.el (gv-get): Autoload functions to find their
      gv-expander.
      (gv--defun-declaration): New function.
      (defun-declarations-alist): Use it.
      (gv-define-modify-macro, gv-pushnew!, gv-inc!, gv-dec!): Remove.
      (gv-place): Autoload.
      * lisp/emacs-lisp/cl.el (cl--dotimes, cl--dolist): Remember subr.el's
      original definition of dotimes and dolist.
      * lisp/emacs-lisp/cl-macs.el (cl-expr-access-order): Remove unused.
      (cl-dolist, cl-dotimes): Use `dolist' and `dotimes'.
      * lisp/emacs-lisp/cl-lib.el: Move gv handlers from cl-macs to here.
      (cl-fifth, cl-sixth, cl-seventh, cl-eighth)
      (cl-ninth, cl-tenth): Move gv handler to the function's definition.
      * lisp/emacs-lisp/cl-extra.el (cl-subseq, cl-get, cl-getf): Move gv handler
      to the function's definition.
      * lisp/Makefile.in (COMPILE_FIRST): Re-order to speed it up by about 50%.
      * lisp/window.el:
      * lisp/files.el:
      * lisp/faces.el:
      * lisp/env.el: Don't use CL.
      36cec983
    • Bastien Guerry's avatar
      Fix bug #11726 -- send a message after `toggle-read-only'. · 76386c5a
      Bastien Guerry authored
      Thanks to Drew Adam for reporting this.
      76386c5a
    • Stefan Monnier's avatar
      Provide generalized variables in core Elisp. · 2ee3d7f0
      Stefan Monnier authored
      * lisp/emacs-lisp/gv.el: New file.
      * lisp/subr.el (push, pop): Extend to generalized variables.
      * lisp/loadup.el (macroexp): Unload if preloaded and uncompiled.
      * lisp/emacs-lisp/cl-lib.el (cl-pop, cl-push, cl--set-nthcdr): Remove.
      * lisp/emacs-lisp/cl-macs.el: Require gv.  Use gv-define-setter,
      gv-define-simple-setter, and gv-define-expander.
      Remove setf-methods defined in gv.  Rename cl-setf -> setf.
      (cl-setf, cl-do-pop, cl-get-setf-method): Remove.
      (cl-letf, cl-letf*, cl-define-modify-macro, cl-defsetf)
      (cl-define-setf-expander, cl-struct-setf-expander): Move to cl.el.
      (cl-remf, cl-shiftf, cl-rotatef, cl-callf, cl-callf2): Rewrite with
      gv-letplace.
      (cl-defstruct): Don't define setf-method any more.
      * lisp/emacs-lisp/cl.el (flet): Don't autoload.
      (cl--letf, letf, cl--letf*, letf*, cl--gv-adapt)
      (define-setf-expander, defsetf, define-modify-macro)
      (cl-struct-setf-expander): Move from cl-lib.el.
      * lisp/emacs-lisp/syntax.el:
      * lisp/emacs-lisp/ewoc.el:
      * lisp/emacs-lisp/smie.el:
      * lisp/emacs-lisp/cconv.el:
      * lisp/emacs-lisp/timer.el: Rename cl-setf -> setf, cl-push -> push.
      (timer--time): Use gv-define-simple-setter.
      * lisp/emacs-lisp/macroexp.el (macroexp-let2): Rename from macroexp-let²
      to avoid coding-system problems in subr.el.  Adjust all users.
      (macroexp--maxsize, macroexp-small-p): New functions.
      * lisp/emacs-lisp/bytecomp.el (byte-compile-file): Don't use cl-letf.
      * lisp/scroll-bar.el (scroll-bar-mode):
      * lisp/simple.el (auto-fill-mode, overwrite-mode, binary-overwrite-mode)
      (normal-erase-is-backspace-mode): Don't use the `eq' place.
      * lisp/winner.el (winner-configuration, winner-make-point-alist)
      (winner-set-conf, winner-get-point, winner-set): Don't abuse letf.
      * lisp/files.el (locate-file-completion-table): Avoid list*.
      
      Fixes: debbugs:11657
      2ee3d7f0
  33. 14 Jun, 2012 1 commit
  34. 13 Jun, 2012 1 commit