* compile.texi (Compilation Functions):
* files.texi (File Attributes, Changing Files):
Use current format for GNU 'ls' output.
(File Attributes): Fix problem introduced in previous change:
the link count is the number of hard links, not the number
of hard links + 1.
Problem reported by Vitalie Spinu in
<http://lists.gnu.org/archive/html/emacs-devel/2013-01/msg00411.html>.
* doc/lispref/files.texi (Reading from Files, Writing to Files):
Say that file offsets can be numbers, not just integers.
* src/fileio.c (emacs_lseek): Remove.
(file_offset): New function.
(Finsert_file_contents, Fwrite_region): Use it.
src/fileio.c (Fset_file_selinux_context, Fset_file_acl): Return t if
file's SELinux context or ACLs successfully set, nil otherwise.
lisp/files.el (backup-buffer-copy, basic-save-buffer-2): If
set-file-extended-attributes fails, fall back on set-file-modes
instead of signaling an error.
doc/lispref/files.texi (Changing Files): Document the return values of
set-file-selinux-context and set-file-acl.
doc/lispref/files.texi (File Attributes, Changing Files): Remove the details
about the text returned by file-acl. Instead, just document that
it is an opaque string meant to be used by set-file-acl.
src/w32.c: Include sddl.h and sys/acl.h.
(SDDL_REVISION_1): Define if not already defined.
(g_b_init_get_security_descriptor_dacl)
(g_b_init_convert_sd_to_sddl, g_b_init_convert_sddl_to_sd)
(g_b_init_is_valid_security_descriptor)
(g_b_init_set_file_security): New static flags.
(globals_of_w32): Initialize them to zero.
(SetFileSecurity_Name): New string constant.
(SetFileSecurity_Proc, GetSecurityDescriptorDacl_Proc)
(ConvertStringSecurityDescriptorToSecurityDescriptor_Proc)
(ConvertSecurityDescriptorToStringSecurityDescriptor_Proc)
(IsValidSecurityDescriptor_Proc): New typedefs.
(get_file_security, get_security_descriptor_owner)
(get_security_descriptor_group): Set errno to ENOTSUP.
(set_file_security, get_security_descriptor_dacl)
(is_valid_security_descriptor, convert_sd_to_sddl)
(convert_sddl_to_sd, acl_valid, acl_to_text, acl_from_text)
(acl_free, acl_get_file, acl_set_file): New functions.
src/fileio.c (Fcopy_file) [WINDOWSNT]: Support copying ACLs.
nt/inc/sys/acl.h: New file.
nt/inc/ms-w32.h (ENOTSUP): Define if undefined.
nt/config.nt (HAVE_POSIX_ACL): Define.
doc/lispref/files.texi (File Attributes, Changing Files): Update to include
MS-Windows support for ACLs.
* 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'.
* 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
Be more systematic about using "@." (not ".") at end of sentence that
ends in a capital letter, and about appending "@:" after non-ends of
sentences that end in a lower case letter followed by "." followed by
whitespace. Omit unnecessary use of "@:" and "@.". Similarly for "?"
and "!". Be more consistent about putting a comma after "i.e." and
"e.g."; this is the typical American style and it's easier to code in
Texinfo.
Fixes: debbugs:12973
These instances were missed the first time around.
Problem reported by Glenn Morris in <http://bugs.gnu.org/12706#25>.
* doc/lispintro/emacs-lisp-intro.texi (Files List):
* doc/lispref/buffers.texi (Modification Time):
* doc/lispref/files.texi (Testing Accessibility, File Attributes):
* doc/lispref/intro.texi (Version Info):
* doc/lispref/os.texi (Time of Day):
* doc/misc/emacs-mime.texi (time-date):
Update for new time stamp format (HIGH LOW MICROSEC PICOSEC).
* doc/misc/emacs-mime.texi (time-date):
Also, fix bogus time stamp and modernize a bit.
* 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.
* commands.texi (Recursive Editing): recursive-edit is a
command.
* compile.texi (Docs and Compilation):
byte-compile-dynamic-docstrings is an option.
* debugging.texi (Invoking the Debugger): debug is a command.
* display.texi (Progress): progress-reporter-update and
progress-reporter-force-update have VALUE argument optional.
(Animated Images): Use non-@code{nil} instead of non-nil.
* files.texi (Format Conversion Round-Trip): Use non-@code{nil}
instead of non-nil.
* frames.texi (Creating Frames): make-frame is a command.
(Input Focus): select-frame is a command.
(Pointer Shape): void-text-area-pointer is an option.
* help.texi (Describing Characters): read-kbd-macro is a
command.
(Help Functions): describe-prefix-bindings is a command.
* markers.texi (Creating Markers): Both arguments of copy-marker
are optional.
* minibuf.texi (Reading File Names): Use @kbd instead of @code.
* modes.texi (Mode Line Variables): mode-line-remote and
mode-line-client are not options.
(Imenu): imenu-add-to-menubar is a command.
(SMIE Indentation Helpers): Use non-@code{nil} instead of
non-nil.
* os.texi (Sound Output): play-sound-file is a command.
* package.texi (Package Archives): Use @key{RET} instead of
@kbd{RET}.
* processes.texi (Signals to Processes): Use @key{RET} instead
of @code{RET}.
(Signals to Processes): signal-process is a command.
* text.texi (Clickable Text): Use @key{RET} instead of
@kbd{RET}.
(Base 64): base64-encode-string is not a command while
base64-decode-region is.
* windows.texi (Switching Buffers): pop-to-buffer is a command.
It renders the same as @code, so in many cases this change is entirely cosmetic.
* doc/emacs/misc.texi (Gnus Startup):
* doc/lispref/files.texi, doc/lispref/frames.texi:
* doc/lispref/loading.texi, doc/lispref/os.texi, doc/lispref/processes.texi:
Use @env for environment variables.
Now return nil when one or both files doesn't exists.
(file-subdir-of-p): Now only top directory must exists,
return nil if it doesn't.
(copy-directory): No need to test with `file-subdir-of-p' after creating dir.
* tramp.el (tramp-file-name-for-operation): Rename `files-equal-p' to `file-equal-p'.
* files.texi: Rename `files-equal-p' to `file-equal-p'.