mirror of
git://git.sv.gnu.org/emacs.git
synced 2025-12-27 07:41:28 -08:00
Merge from trunk.
This commit is contained in:
commit
7403ff044d
23 changed files with 237 additions and 95 deletions
|
|
@ -1,3 +1,14 @@
|
|||
2011-07-18 Andreas Schwab <schwab@linux-m68k.org>
|
||||
|
||||
* charsets/GB180302.map: Update to 2005 edition.
|
||||
* charsets/GB180304.map: Likewise.
|
||||
|
||||
2011-07-17 Bill Wohler <wohler@newt.com>
|
||||
|
||||
Release MH-E version 8.2.93.
|
||||
|
||||
* NEWS, MH-E-NEWS: Update for MH-E release 8.2.93.
|
||||
|
||||
2011-07-16 Bill Wohler <wohler@newt.com>
|
||||
|
||||
Release MH-E version 8.2.92.
|
||||
|
|
|
|||
|
|
@ -3,6 +3,11 @@
|
|||
Copyright (C) 2001-2011 Free Software Foundation, Inc.
|
||||
See the end of the file for license conditions.
|
||||
|
||||
* Changes in MH-E 8.2.93
|
||||
|
||||
Version 8.2.93 reverts back to using `switch-to-buffer' which the
|
||||
Emacs developers decided was fine to call from programs after all.
|
||||
|
||||
* Changes in MH-E 8.2.92
|
||||
|
||||
Version 8.2.92 actually corrects the error in the modeline glyph when
|
||||
|
|
|
|||
7
etc/NEWS
7
etc/NEWS
|
|
@ -488,7 +488,7 @@ $ESHELL nor variable `explicit-shell-file-name' is set.
|
|||
|
||||
** MH-E
|
||||
|
||||
*** Upgraded to MH-E version 8.2.92. See MH-E-NEWS for details.
|
||||
*** Upgraded to MH-E version 8.2.93. See MH-E-NEWS for details.
|
||||
|
||||
** comint and modes derived from it use the generic completion code.
|
||||
|
||||
|
|
@ -1077,6 +1077,11 @@ syntactic rules.
|
|||
** Syntax tables support a new "comment style c" additionally to style b.
|
||||
** frame-local variables cannot be let-bound any more.
|
||||
** prog-mode is a new major-mode meant to be the parent of programming mode.
|
||||
The prog-mode-hook it defines can be used to enable features for
|
||||
programming modes. For example:
|
||||
(add-hook 'prog-mode-hook 'flyspell-prog-mode)
|
||||
enables on the fly spell checking for comments and strings for
|
||||
programming modes.
|
||||
** define-minor-mode accepts a new keyword :variable.
|
||||
|
||||
** `delete-file' and `delete-directory' now accept optional arg TRASH.
|
||||
|
|
|
|||
|
|
@ -2048,17 +2048,20 @@
|
|||
0xA6B9-0xA6C0 0xE785
|
||||
0xA6C1-0xA6D1 0x03B1
|
||||
0xA6D2-0xA6D8 0x03C3
|
||||
0xA6D9-0xA6DF 0xE78D
|
||||
0xA6D9 0xFE10
|
||||
0xA6DA 0xFE12
|
||||
0xA6DB 0xFE11
|
||||
0xA6DC-0xA6DF 0xFE13
|
||||
0xA6E0-0xA6E1 0xFE35
|
||||
0xA6E2-0xA6E3 0xFE39
|
||||
0xA6E4-0xA6E5 0xFE3F
|
||||
0xA6E6-0xA6E7 0xFE3D
|
||||
0xA6E8-0xA6EB 0xFE41
|
||||
0xA6EC-0xA6ED 0xE794
|
||||
0xA6EC-0xA6ED 0xFE17
|
||||
0xA6EE-0xA6EF 0xFE3B
|
||||
0xA6F0-0xA6F1 0xFE37
|
||||
0xA6F2 0xFE31
|
||||
0xA6F3 0xE796
|
||||
0xA6F3 0xFE19
|
||||
0xA6F4-0xA6F5 0xFE33
|
||||
0xA6F6-0xA6FE 0xE797
|
||||
0xA740-0xA77E 0xE706
|
||||
|
|
@ -2124,7 +2127,7 @@
|
|||
0xA8B9 0x00FC
|
||||
0xA8BA 0x00EA
|
||||
0xA8BB 0x0251
|
||||
0xA8BC 0xE7C7
|
||||
0xA8BC 0x1E3F
|
||||
0xA8BD 0x0144
|
||||
0xA8BE 0x0148
|
||||
0xA8BF 0x01F9
|
||||
|
|
@ -10385,13 +10388,15 @@
|
|||
0xFE4B-0xFE4C 0xFA23
|
||||
0xFE4D-0xFE4F 0xFA27
|
||||
0xFE50 0x2E81
|
||||
0xFE51-0xFE53 0xE816
|
||||
0xFE51 0x00020087
|
||||
0xFE52 0x00020089
|
||||
0xFE53 0x000200CC
|
||||
0xFE54 0x2E84
|
||||
0xFE55 0x3473
|
||||
0xFE56 0x3447
|
||||
0xFE57 0x2E88
|
||||
0xFE58 0x2E8B
|
||||
0xFE59 0xE81E
|
||||
0xFE59 0x9FB4
|
||||
0xFE5A 0x359E
|
||||
0xFE5B 0x361A
|
||||
0xFE5C 0x360E
|
||||
|
|
@ -10399,17 +10404,18 @@
|
|||
0xFE5E 0x2E97
|
||||
0xFE5F 0x396E
|
||||
0xFE60 0x3918
|
||||
0xFE61 0xE826
|
||||
0xFE61 0x9FB5
|
||||
0xFE62 0x39CF
|
||||
0xFE63 0x39DF
|
||||
0xFE64 0x3A73
|
||||
0xFE65 0x39D0
|
||||
0xFE66-0xFE67 0xE82B
|
||||
0xFE66-0xFE67 0x9FB6
|
||||
0xFE68 0x3B4E
|
||||
0xFE69 0x3C6E
|
||||
0xFE6A 0x3CE0
|
||||
0xFE6B 0x2EA7
|
||||
0xFE6C-0xFE6D 0xE831
|
||||
0xFE6C 0x000215D7
|
||||
0xFE6D 0x9FB8
|
||||
0xFE6E 0x2EAA
|
||||
0xFE6F 0x4056
|
||||
0xFE70 0x415F
|
||||
|
|
@ -10417,7 +10423,7 @@
|
|||
0xFE72 0x4337
|
||||
0xFE73 0x2EB3
|
||||
0xFE74-0xFE75 0x2EB6
|
||||
0xFE76 0xE83B
|
||||
0xFE76 0x0002298F
|
||||
0xFE77 0x43B1
|
||||
0xFE78 0x43AC
|
||||
0xFE79 0x2EBB
|
||||
|
|
@ -10425,7 +10431,7 @@
|
|||
0xFE7B 0x44D6
|
||||
0xFE7C 0x4661
|
||||
0xFE7D 0x464C
|
||||
0xFE7E 0xE843
|
||||
0xFE7E 0x9FB9
|
||||
0xFE80 0x4723
|
||||
0xFE81 0x4729
|
||||
0xFE82 0x477C
|
||||
|
|
@ -10440,12 +10446,13 @@
|
|||
0xFE8D 0x499B
|
||||
0xFE8E 0x49B7
|
||||
0xFE8F 0x49B6
|
||||
0xFE90-0xFE91 0xE854
|
||||
0xFE90 0x9FBA
|
||||
0xFE91 0x000241FE
|
||||
0xFE92 0x4CA3
|
||||
0xFE93-0xFE95 0x4C9F
|
||||
0xFE96 0x4C77
|
||||
0xFE97 0x4CA2
|
||||
0xFE98-0xFE9E 0x4D13
|
||||
0xFE9F 0x4DAE
|
||||
0xFEA0 0xE864
|
||||
0xFEA0 0x9FBB
|
||||
0xFEA1-0xFEFE 0xE468
|
||||
|
|
|
|||
|
|
@ -40,7 +40,8 @@
|
|||
0x8130CC30-0x8130D134 0x03CA
|
||||
0x8130D135-0x8130D238 0x0402
|
||||
0x8130D239 0x0450
|
||||
0x8130D330-0x8136A531 0x0452
|
||||
0x8130D330-0x8135F436 0x0452
|
||||
0x8135F438-0x8136A531 0x1E40
|
||||
0x8136A532-0x8136A533 0x2011
|
||||
0x8136A534 0x2017
|
||||
0x8136A535-0x8136A536 0x201A
|
||||
|
|
@ -171,8 +172,10 @@
|
|||
0x8234EB33-0x8234F633 0x4CA4
|
||||
0x8234F634-0x82358731 0x4D1A
|
||||
0x82358732-0x82358F32 0x4DAF
|
||||
0x82358F33-0x8336C738 0x9FA6
|
||||
0x82358F33-0x82359036 0x9FA6
|
||||
0x82359135-0x8336C738 0x9FBC
|
||||
0x8336C739 0xE76C
|
||||
0x8135F437 0xE7C7
|
||||
0x8336C830 0xE7C8
|
||||
0x8336C831-0x8336C933 0xE7E7
|
||||
0x8336C934 0xE815
|
||||
|
|
@ -196,7 +199,8 @@
|
|||
0x84309B39-0x84309C34 0xFA19
|
||||
0x84309C35 0xFA22
|
||||
0x84309C36-0x84309C37 0xFA25
|
||||
0x84309C38-0x84318537 0xFA2A
|
||||
0x84309C38-0x84318235 0xFA2A
|
||||
0x84318336-0x84318537 0xFE1A
|
||||
0x84318538 0xFE32
|
||||
0x84318539-0x84318632 0xFE45
|
||||
0x84318633 0xFE53
|
||||
|
|
|
|||
|
|
@ -1,5 +1,25 @@
|
|||
2011-07-18 Alan Mackenzie <acm@muc.de>
|
||||
|
||||
Fontify declarators properly when, e.g., a jit-lock chunk begins
|
||||
inside a declaration.
|
||||
|
||||
* progmodes/cc-langs.el (c-symbol-chars): Correct a typo.
|
||||
|
||||
* progmodes/cc-fonts.el (c-font-lock-enclosing-decls): New
|
||||
function.
|
||||
(c-complex-decl-matchers): Insert reference to
|
||||
c-font-lock-enclosing-decls.
|
||||
|
||||
* progmodes/cc-engine.el (c-backward-single-comment):
|
||||
(c-backward-comments): Bind open-paren-in-column-0-is-defun-start
|
||||
to nil around calls to (forward-comment -1).
|
||||
|
||||
2011-07-17 Lars Magne Ingebrigtsen <larsi@gnus.org>
|
||||
|
||||
* image.el (put-image): Doc typo fix.
|
||||
|
||||
* progmodes/etags.el (tags-search): Doc typo fix.
|
||||
|
||||
* mail/smtpmail.el (smtpmail-via-smtp): Query the user for
|
||||
password if we get errors 550 to 554.
|
||||
|
||||
|
|
|
|||
|
|
@ -282,7 +282,7 @@ Not documented
|
|||
;;;;;; flet progv psetq do-all-symbols do-symbols dotimes dolist
|
||||
;;;;;; do* do loop return-from return block etypecase typecase ecase
|
||||
;;;;;; case load-time-value eval-when destructuring-bind function*
|
||||
;;;;;; defmacro* defun* gentemp gensym) "cl-macs" "cl-macs.el" "2261724608e3223036b863d214f7dc0c")
|
||||
;;;;;; defmacro* defun* gentemp gensym) "cl-macs" "cl-macs.el" "9452c0e16fd960fce5c19e5c067a7160")
|
||||
;;; Generated autoloads from cl-macs.el
|
||||
|
||||
(autoload 'gensym "cl-macs" "\
|
||||
|
|
|
|||
|
|
@ -389,7 +389,7 @@ IMAGE must be an image created with `create-image' or `defimage'.
|
|||
IMAGE is displayed by putting an overlay into the current buffer with a
|
||||
`before-string' STRING that has a `display' property whose value is the
|
||||
image. STRING is defaulted if you omit it.
|
||||
The overlay created will have the `put-overlay' property set to t.
|
||||
The overlay created will have the `put-image' property set to t.
|
||||
POS may be an integer or marker.
|
||||
AREA is where to display the image. AREA nil or omitted means
|
||||
display it in the text area, a value of `left-margin' means
|
||||
|
|
|
|||
|
|
@ -1,3 +1,14 @@
|
|||
2011-07-17 Bill Wohler <wohler@newt.com>
|
||||
|
||||
Release MH-E version 8.2.93.
|
||||
|
||||
* mh-e.el (Version, mh-version): Update for release 8.2.93.
|
||||
|
||||
* mh-compat.el (mh-pop-to-buffer-same-window): Delete.
|
||||
* mh-folder.el (mh-inc-folder, mh-modify, mh-scan-folder)
|
||||
(mh-make-folder): Revert to switch-to-buffer, as the Emacs folks
|
||||
decided that it was fine to use it in programs.
|
||||
|
||||
2011-07-16 Bill Wohler <wohler@newt.com>
|
||||
|
||||
Release MH-E version 8.2.92.
|
||||
|
|
|
|||
|
|
@ -251,18 +251,6 @@ The argument STRING is ignored."
|
|||
(buffer-substring-no-properties
|
||||
(match-beginning num) (match-end num)))
|
||||
|
||||
(defun-mh mh-pop-to-buffer-same-window
|
||||
pop-to-buffer-same-window (&optional buffer-or-name norecord label)
|
||||
"Pop to buffer specified by BUFFER-OR-NAME in the selected window.
|
||||
Another window will be used only if the buffer can't be shown in
|
||||
the selected window, usually because it is dedicated to another
|
||||
buffer. Optional arguments BUFFER-OR-NAME, NORECORD and LABEL are
|
||||
as for `pop-to-buffer'. This macro is used by Emacs versions that
|
||||
lack the `pop-to-buffer-same-window' function, introduced in
|
||||
Emacs 24. The function `switch-to-buffer' is used instead and
|
||||
LABEL is ignored."
|
||||
(switch-to-buffer buffer-or-name norecord))
|
||||
|
||||
(defun-mh mh-replace-regexp-in-string replace-regexp-in-string
|
||||
(regexp rep string &optional fixedcase literal subexp start)
|
||||
"Replace REGEXP with REP everywhere in STRING and return result.
|
||||
|
|
|
|||
|
|
@ -5,7 +5,7 @@
|
|||
|
||||
;; Author: Bill Wohler <wohler@newt.com>
|
||||
;; Maintainer: Bill Wohler <wohler@newt.com>
|
||||
;; Version: 8.2.92
|
||||
;; Version: 8.2.93
|
||||
;; Keywords: mail
|
||||
|
||||
;; This file is part of GNU Emacs.
|
||||
|
|
@ -127,7 +127,7 @@
|
|||
;; Try to keep variables local to a single file. Provide accessors if
|
||||
;; variables are shared. Use this section as a last resort.
|
||||
|
||||
(defconst mh-version "8.2.92" "Version number of MH-E.")
|
||||
(defconst mh-version "8.2.93" "Version number of MH-E.")
|
||||
|
||||
;; Variants
|
||||
|
||||
|
|
|
|||
|
|
@ -795,7 +795,7 @@ instead."
|
|||
(setq threading-needed-flag mh-show-threads-flag)
|
||||
(setq mh-previous-window-config config))
|
||||
((not (eq (current-buffer) (get-buffer folder)))
|
||||
(mh-pop-to-buffer-same-window folder)
|
||||
(switch-to-buffer folder)
|
||||
(setq mh-previous-window-config config))))
|
||||
(mh-get-new-mail file)
|
||||
(when (and threading-needed-flag
|
||||
|
|
@ -855,7 +855,7 @@ From a program, edit MESSAGE; nil means edit current message."
|
|||
|
||||
;; Just show the edit buffer...
|
||||
(delete-other-windows)
|
||||
(mh-pop-to-buffer-same-window edit-buffer)))
|
||||
(switch-to-buffer edit-buffer)))
|
||||
|
||||
;;;###mh-autoload
|
||||
(defun mh-next-button (&optional backward-flag)
|
||||
|
|
@ -1705,7 +1705,7 @@ DONT-EXEC-PENDING is non-nil."
|
|||
(unless dont-exec-pending
|
||||
(mh-process-or-undo-commands folder)
|
||||
(mh-reset-threads-and-narrowing))
|
||||
(mh-pop-to-buffer-same-window folder)))
|
||||
(switch-to-buffer folder)))
|
||||
(mh-regenerate-headers range)
|
||||
(if (zerop (buffer-size))
|
||||
(if (equal range "all")
|
||||
|
|
@ -1786,7 +1786,7 @@ Also removes all content from the folder buffer."
|
|||
(defun mh-make-folder (name)
|
||||
"Create a new mail folder called NAME.
|
||||
Make it the current folder."
|
||||
(mh-pop-to-buffer-same-window name)
|
||||
(switch-to-buffer name)
|
||||
(setq buffer-read-only nil)
|
||||
(erase-buffer)
|
||||
(if mh-adaptive-cmd-note-flag
|
||||
|
|
|
|||
|
|
@ -1301,12 +1301,13 @@ This function does not do any hidden buffer changes."
|
|||
;; same line.
|
||||
(re-search-forward "\\=\\s *[\n\r]" start t)
|
||||
|
||||
(if (if (forward-comment -1)
|
||||
(if (if (let (open-paren-in-column-0-is-defun-start) (forward-comment -1))
|
||||
(if (eolp)
|
||||
;; If forward-comment above succeeded and we're at eol
|
||||
;; then the newline we moved over above didn't end a
|
||||
;; line comment, so we give it another go.
|
||||
(forward-comment -1)
|
||||
(let (open-paren-in-column-0-is-defun-start)
|
||||
(forward-comment -1))
|
||||
t))
|
||||
|
||||
;; Emacs <= 20 and XEmacs move back over the closer of a
|
||||
|
|
@ -1333,7 +1334,8 @@ comment at the start of cc-engine.el for more info."
|
|||
;; return t when moving backwards at bob.
|
||||
(not (bobp))
|
||||
|
||||
(if (forward-comment -1)
|
||||
(if (let (open-paren-in-column-0-is-defun-start)
|
||||
(forward-comment -1))
|
||||
(if (looking-at "\\*/")
|
||||
;; Emacs <= 20 and XEmacs move back over the
|
||||
;; closer of a block comment that lacks an opener.
|
||||
|
|
|
|||
|
|
@ -1346,6 +1346,50 @@ casts and declarations are fontified. Used on level 2 and higher."
|
|||
(c-font-lock-declarators limit t nil)))
|
||||
nil)
|
||||
|
||||
(defun c-font-lock-enclosing-decls (limit)
|
||||
;; Fontify the declarators of (nested) declarations we're in the middle of.
|
||||
;; This is mainly for when a jit-lock etc. chunk starts inside the brace
|
||||
;; block of a struct/union/class, etc.
|
||||
;;
|
||||
;; This function will be called from font-lock for a region bounded by POINT
|
||||
;; and LIMIT, as though it were to identify a keyword for
|
||||
;; font-lock-keyword-face. It always returns NIL to inhibit this and
|
||||
;; prevent a repeat invocation. See elisp/lispref page "Search-based
|
||||
;; Fontification".
|
||||
(let* ((paren-state (c-parse-state))
|
||||
(start (point))
|
||||
decl-context bo-decl in-typedef type-type ps-elt)
|
||||
|
||||
;; First, are we actually in a "local" declaration?
|
||||
(setq decl-context (c-beginning-of-decl-1)
|
||||
bo-decl (point)
|
||||
in-typedef (looking-at c-typedef-key))
|
||||
(if in-typedef (c-forward-token-2))
|
||||
(when (and (eq (car decl-context) 'same)
|
||||
(< bo-decl start))
|
||||
;; Are we genuinely at a type?
|
||||
(setq type-type (c-forward-type t))
|
||||
(if (and type-type
|
||||
(or (not (eq type-type 'maybe))
|
||||
(looking-at c-symbol-key)))
|
||||
(c-font-lock-declarators limit t in-typedef)))
|
||||
|
||||
;; Secondly, are we in any nested struct/union/class/etc. braces?
|
||||
(while paren-state
|
||||
(setq ps-elt (car paren-state)
|
||||
paren-state (cdr paren-state))
|
||||
(when (and (atom ps-elt)
|
||||
(eq (char-after ps-elt) ?\{))
|
||||
(goto-char ps-elt)
|
||||
(setq decl-context (c-beginning-of-decl-1)
|
||||
in-typedef (looking-at c-typedef-key))
|
||||
(if in-typedef (c-forward-token-2))
|
||||
(when (looking-at c-opt-block-decls-with-vars-key)
|
||||
(goto-char ps-elt)
|
||||
(when (c-safe (c-forward-sexp))
|
||||
(c-forward-syntactic-ws)
|
||||
(c-font-lock-declarators limit t in-typedef)))))))
|
||||
|
||||
(c-lang-defconst c-simple-decl-matchers
|
||||
"Simple font lock matchers for types and declarations. These are used
|
||||
on level 2 only and so aren't combined with `c-complex-decl-matchers'."
|
||||
|
|
@ -1452,6 +1496,9 @@ on level 2 only and so aren't combined with `c-complex-decl-matchers'."
|
|||
;; Fontify all declarations, casts and normal labels.
|
||||
c-font-lock-declarations
|
||||
|
||||
;; Fontify declarators when POINT is within their declaration.
|
||||
c-font-lock-enclosing-decls
|
||||
|
||||
;; Fontify angle bracket arglists like templates in C++.
|
||||
,@(when (c-lang-const c-recognize-<>-arglists)
|
||||
`(c-font-lock-<>-arglists))
|
||||
|
|
|
|||
|
|
@ -523,7 +523,7 @@ operator at the top level."
|
|||
|
||||
(c-lang-defconst c-symbol-chars
|
||||
"Set of characters that can be part of a symbol.
|
||||
This is on the form that fits inside [ ] in a regexp."
|
||||
This is of the form that fits inside [ ] in a regexp."
|
||||
;; Pike note: With the backquote identifiers this would include most
|
||||
;; operator chars too, but they are handled with other means instead.
|
||||
t (concat c-alnum "_$")
|
||||
|
|
|
|||
|
|
@ -1860,7 +1860,7 @@ nil, we exit; otherwise we scan the next file."
|
|||
Stops when a match is found.
|
||||
To continue searching for next match, use command \\[tags-loop-continue].
|
||||
|
||||
If `file-list-form' is non-nil, it should be a form that, when
|
||||
If FILE-LIST-FORM is non-nil, it should be a form that, when
|
||||
evaluated, will return a list of file names. The search will be
|
||||
restricted to these files.
|
||||
|
||||
|
|
|
|||
|
|
@ -29,8 +29,6 @@
|
|||
now that we have two such functions. All uses changed.
|
||||
(sanitize_char_width): New inline function.
|
||||
|
||||
2011-07-18 Paul Eggert <eggert@cs.ucla.edu>
|
||||
|
||||
Don't assume that tab-width fits in int.
|
||||
* character.h (sanitize_width): New inline function.
|
||||
(SANE_TAB_WIDTH): New macro.
|
||||
|
|
@ -46,8 +44,6 @@
|
|||
Remove unreachable code.
|
||||
(read_hex, load_charset_map_from_file): Check for integer overflow.
|
||||
|
||||
2011-07-17 Paul Eggert <eggert@cs.ucla.edu>
|
||||
|
||||
* xterm.c: don't go over XClientMessageEvent limit
|
||||
(scroll_bar_windows_size): Now ptrdiff_t, as we prefer signed.
|
||||
(x_send_scroll_bar_event): Likewise. Check that the size does not
|
||||
|
|
@ -110,8 +106,6 @@
|
|||
(gs_load): Use printmax_t to print the widest integers possible.
|
||||
Check for integer overflow when computing image height and width.
|
||||
|
||||
2011-07-17 Paul Eggert <eggert@cs.ucla.edu>
|
||||
|
||||
Integer signedness and overflow and related fixes. (Bug#9079)
|
||||
|
||||
* bidi.c: Integer size and overflow fixes.
|
||||
|
|
@ -309,6 +303,36 @@
|
|||
Use EMACS_INT, not EMACS_UINT, for sizes. The code works equally
|
||||
well either way, and we prefer signed to unsigned.
|
||||
|
||||
2011-07-18 Paul Eggert <eggert@cs.ucla.edu>
|
||||
|
||||
* fileio.c (Fcopy_file) [!MSDOS]: Tighten created file's mask.
|
||||
This fixes some race conditions on the permissions of any newly
|
||||
created file.
|
||||
|
||||
* alloc.c (valid_pointer_p): Use pipe, not open.
|
||||
This fixes some permissions issues when debugging.
|
||||
|
||||
* fileio.c (Fcopy_file): Adjust mode if fchown fails. (Bug#9002)
|
||||
If fchown fails to set both uid and gid, try to set just gid,
|
||||
as that is sometimes allowed. Adjust the file's mode to eliminate
|
||||
setuid or setgid bits that are inappropriate if fchown fails.
|
||||
|
||||
2011-07-18 Stefan Monnier <monnier@iro.umontreal.ca>
|
||||
|
||||
* xdisp.c (next_element_from_string, next_element_from_buffer): Use EQ
|
||||
to compare Lisp_Objects.
|
||||
* gnutls.c (syms_of_gnutls): Rename Vgnutls_log_level to
|
||||
global_gnutls_log_level, don't mistake it for a Lisp_Object.
|
||||
(init_gnutls_functions, emacs_gnutls_handle_error): Fix up uses.
|
||||
|
||||
2011-07-17 Andreas Schwab <schwab@linux-m68k.org>
|
||||
|
||||
* lread.c (read_integer): Unread even EOF character.
|
||||
(read1): Likewise. Properly record start position of symbol.
|
||||
|
||||
* lread.c (read1): Read `#:' as empty uninterned symbol if no
|
||||
symbol character follows.
|
||||
|
||||
2011-07-17 Paul Eggert <eggert@cs.ucla.edu>
|
||||
|
||||
* fileio.c (Fcopy_file): Pacify gcc re fchown. (Bug#9002)
|
||||
|
|
|
|||
10
src/alloc.c
10
src/alloc.c
|
|
@ -4430,18 +4430,18 @@ valid_pointer_p (void *p)
|
|||
#ifdef WINDOWSNT
|
||||
return w32_valid_pointer_p (p, 16);
|
||||
#else
|
||||
int fd;
|
||||
int fd[2];
|
||||
|
||||
/* Obviously, we cannot just access it (we would SEGV trying), so we
|
||||
trick the o/s to tell us whether p is a valid pointer.
|
||||
Unfortunately, we cannot use NULL_DEVICE here, as emacs_write may
|
||||
not validate p in that case. */
|
||||
|
||||
if ((fd = emacs_open ("__Valid__Lisp__Object__", O_CREAT | O_WRONLY | O_TRUNC, 0666)) >= 0)
|
||||
if (pipe (fd) == 0)
|
||||
{
|
||||
int valid = (emacs_write (fd, (char *)p, 16) == 16);
|
||||
emacs_close (fd);
|
||||
unlink ("__Valid__Lisp__Object__");
|
||||
int valid = (emacs_write (fd[1], (char *) p, 16) == 16);
|
||||
emacs_close (fd[1]);
|
||||
emacs_close (fd[0]);
|
||||
return valid;
|
||||
}
|
||||
|
||||
|
|
|
|||
35
src/fileio.c
35
src/fileio.c
|
|
@ -38,8 +38,6 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */
|
|||
#include <selinux/context.h>
|
||||
#endif
|
||||
|
||||
#include <ignore-value.h>
|
||||
|
||||
#include "lisp.h"
|
||||
#include "intervals.h"
|
||||
#include "buffer.h"
|
||||
|
|
@ -1939,10 +1937,19 @@ on the system, we copy the SELinux context of FILE to NEWNAME. */)
|
|||
| (NILP (ok_if_already_exists) ? O_EXCL : 0),
|
||||
S_IREAD | S_IWRITE);
|
||||
#else /* not MSDOS */
|
||||
ofd = emacs_open (SSDATA (encoded_newname),
|
||||
O_WRONLY | O_TRUNC | O_CREAT
|
||||
| (NILP (ok_if_already_exists) ? O_EXCL : 0),
|
||||
0666);
|
||||
{
|
||||
int new_mask = 0666;
|
||||
if (input_file_statable_p)
|
||||
{
|
||||
if (!NILP (preserve_uid_gid))
|
||||
new_mask = 0600;
|
||||
new_mask &= st.st_mode;
|
||||
}
|
||||
ofd = emacs_open (SSDATA (encoded_newname),
|
||||
(O_WRONLY | O_TRUNC | O_CREAT
|
||||
| (NILP (ok_if_already_exists) ? O_EXCL : 0)),
|
||||
new_mask);
|
||||
}
|
||||
#endif /* not MSDOS */
|
||||
if (ofd < 0)
|
||||
report_file_error ("Opening output file", Fcons (newname, Qnil));
|
||||
|
|
@ -1961,9 +1968,21 @@ on the system, we copy the SELinux context of FILE to NEWNAME. */)
|
|||
owner and group. */
|
||||
if (input_file_statable_p)
|
||||
{
|
||||
int mode_mask = 07777;
|
||||
if (!NILP (preserve_uid_gid))
|
||||
ignore_value (fchown (ofd, st.st_uid, st.st_gid));
|
||||
if (fchmod (ofd, st.st_mode & 07777) != 0)
|
||||
{
|
||||
/* Attempt to change owner and group. If that doesn't work
|
||||
attempt to change just the group, as that is sometimes allowed.
|
||||
Adjust the mode mask to eliminate setuid or setgid bits
|
||||
that are inappropriate if the owner and group are wrong. */
|
||||
if (fchown (ofd, st.st_uid, st.st_gid) != 0)
|
||||
{
|
||||
mode_mask &= ~06000;
|
||||
if (fchown (ofd, -1, st.st_gid) == 0)
|
||||
mode_mask |= 02000;
|
||||
}
|
||||
}
|
||||
if (fchmod (ofd, st.st_mode & mode_mask) != 0)
|
||||
report_file_error ("Doing chmod", Fcons (newname, Qnil));
|
||||
}
|
||||
#endif /* not MSDOS */
|
||||
|
|
|
|||
12
src/gnutls.c
12
src/gnutls.c
|
|
@ -193,8 +193,7 @@ init_gnutls_functions (Lisp_Object libraries)
|
|||
LOAD_GNUTLS_FN (library, gnutls_x509_crt_import);
|
||||
LOAD_GNUTLS_FN (library, gnutls_x509_crt_init);
|
||||
|
||||
if (NUMBERP (Vgnutls_log_level))
|
||||
max_log_level = XINT (Vgnutls_log_level);
|
||||
max_log_level = global_gnutls_log_level;
|
||||
|
||||
GNUTLS_LOG2 (1, max_log_level, "GnuTLS library loaded:",
|
||||
SDATA (Fget (Qgnutls_dll, QCloaded_from)));
|
||||
|
|
@ -406,8 +405,7 @@ emacs_gnutls_handle_error (gnutls_session_t session, int err)
|
|||
if (err >= 0)
|
||||
return 0;
|
||||
|
||||
if (NUMBERP (Vgnutls_log_level))
|
||||
max_log_level = XINT (Vgnutls_log_level);
|
||||
max_log_level = global_gnutls_log_level;
|
||||
|
||||
/* TODO: use gnutls-error-fatalp and gnutls-error-string. */
|
||||
|
||||
|
|
@ -1155,9 +1153,9 @@ syms_of_gnutls (void)
|
|||
defsubr (&Sgnutls_bye);
|
||||
defsubr (&Sgnutls_available_p);
|
||||
|
||||
DEFVAR_INT ("gnutls-log-level", Vgnutls_log_level,
|
||||
doc: /* Logging level used by the GnuTLS functions. */);
|
||||
Vgnutls_log_level = make_number (0);
|
||||
DEFVAR_INT ("gnutls-log-level", global_gnutls_log_level,
|
||||
doc: /* Logging level used by the GnuTLS functions. */);
|
||||
global_gnutls_log_level = 0;
|
||||
}
|
||||
|
||||
#endif /* HAVE_GNUTLS */
|
||||
|
|
|
|||
49
src/lread.c
49
src/lread.c
|
|
@ -2327,8 +2327,7 @@ read_integer (Lisp_Object readcharfun, EMACS_INT radix)
|
|||
c = READCHAR;
|
||||
}
|
||||
|
||||
if (c >= 0)
|
||||
UNREAD (c);
|
||||
UNREAD (c);
|
||||
*p = '\0';
|
||||
}
|
||||
|
||||
|
|
@ -2583,8 +2582,7 @@ read1 (register Lisp_Object readcharfun, int *pch, int first_in_list)
|
|||
nskip *= 10;
|
||||
nskip += c - '0';
|
||||
}
|
||||
if (c >= 0)
|
||||
UNREAD (c);
|
||||
UNREAD (c);
|
||||
|
||||
if (load_force_doc_strings
|
||||
&& (EQ (readcharfun, Qget_file_char)
|
||||
|
|
@ -2660,7 +2658,17 @@ read1 (register Lisp_Object readcharfun, int *pch, int first_in_list)
|
|||
{
|
||||
uninterned_symbol = 1;
|
||||
c = READCHAR;
|
||||
goto default_label;
|
||||
if (!(c > 040
|
||||
&& c != 0x8a0
|
||||
&& (c >= 0200
|
||||
|| strchr ("\"';()[]#`,", c) == NULL)))
|
||||
{
|
||||
/* No symbol character follows, this is the empty
|
||||
symbol. */
|
||||
UNREAD (c);
|
||||
return Fmake_symbol (build_string (""));
|
||||
}
|
||||
goto read_symbol;
|
||||
}
|
||||
/* Reader forms that can reuse previously read objects. */
|
||||
if (c >= '0' && c <= '9')
|
||||
|
|
@ -2841,7 +2849,7 @@ read1 (register Lisp_Object readcharfun, int *pch, int first_in_list)
|
|||
next_char = READCHAR;
|
||||
ok = (next_char <= 040
|
||||
|| (next_char < 0200
|
||||
&& (strchr ("\"';()[]#?`,.", next_char))));
|
||||
&& strchr ("\"';()[]#?`,.", next_char) != NULL));
|
||||
UNREAD (next_char);
|
||||
if (ok)
|
||||
return make_number (c);
|
||||
|
|
@ -2966,11 +2974,6 @@ read1 (register Lisp_Object readcharfun, int *pch, int first_in_list)
|
|||
/* Otherwise, READ_BUFFER contains only ASCII. */
|
||||
}
|
||||
|
||||
/* We want readchar_count to be the number of characters, not
|
||||
bytes. Hence we adjust for multibyte characters in the
|
||||
string. ... But it doesn't seem to be necessary, because
|
||||
READCHAR *does* read multibyte characters from buffers. */
|
||||
/* readchar_count -= (p - read_buffer) - nchars; */
|
||||
if (read_pure)
|
||||
return make_pure_string (read_buffer, nchars, p - read_buffer,
|
||||
(force_multibyte
|
||||
|
|
@ -2987,7 +2990,7 @@ read1 (register Lisp_Object readcharfun, int *pch, int first_in_list)
|
|||
|
||||
if (next_char <= 040
|
||||
|| (next_char < 0200
|
||||
&& (strchr ("\"';([#?`,", next_char))))
|
||||
&& strchr ("\"';([#?`,", next_char) != NULL))
|
||||
{
|
||||
*pch = c;
|
||||
return Qnil;
|
||||
|
|
@ -3002,9 +3005,12 @@ read1 (register Lisp_Object readcharfun, int *pch, int first_in_list)
|
|||
if (c <= 040) goto retry;
|
||||
if (c == 0x8a0) /* NBSP */
|
||||
goto retry;
|
||||
|
||||
read_symbol:
|
||||
{
|
||||
char *p = read_buffer;
|
||||
int quoted = 0;
|
||||
EMACS_INT start_position = readchar_count - 1;
|
||||
|
||||
{
|
||||
char *end = read_buffer + read_buffer_size;
|
||||
|
|
@ -3035,10 +3041,11 @@ read1 (register Lisp_Object readcharfun, int *pch, int first_in_list)
|
|||
else
|
||||
*p++ = c;
|
||||
c = READCHAR;
|
||||
} while (c > 040
|
||||
&& c != 0x8a0 /* NBSP */
|
||||
&& (c >= 0200
|
||||
|| !(strchr ("\"';()[]#`,", c))));
|
||||
}
|
||||
while (c > 040
|
||||
&& c != 0x8a0 /* NBSP */
|
||||
&& (c >= 0200
|
||||
|| strchr ("\"';()[]#`,", c) == NULL));
|
||||
|
||||
if (p == end)
|
||||
{
|
||||
|
|
@ -3051,8 +3058,7 @@ read1 (register Lisp_Object readcharfun, int *pch, int first_in_list)
|
|||
end = read_buffer + read_buffer_size;
|
||||
}
|
||||
*p = 0;
|
||||
if (c >= 0)
|
||||
UNREAD (c);
|
||||
UNREAD (c);
|
||||
}
|
||||
|
||||
if (!quoted && !uninterned_symbol)
|
||||
|
|
@ -3080,12 +3086,7 @@ read1 (register Lisp_Object readcharfun, int *pch, int first_in_list)
|
|||
if (EQ (Vread_with_symbol_positions, Qt)
|
||||
|| EQ (Vread_with_symbol_positions, readcharfun))
|
||||
Vread_symbol_positions_list =
|
||||
/* Kind of a hack; this will probably fail if characters
|
||||
in the symbol name were escaped. Not really a big
|
||||
deal, though. */
|
||||
Fcons (Fcons (result,
|
||||
make_number (readchar_count
|
||||
- XFASTINT (Flength (Fsymbol_name (result))))),
|
||||
Fcons (Fcons (result, make_number (start_position)),
|
||||
Vread_symbol_positions_list);
|
||||
return result;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -141,7 +141,7 @@ struct Lisp_Process
|
|||
/* Every field in the preceding structure except for the first two
|
||||
must be a Lisp_Object, for GC's sake. */
|
||||
|
||||
#define ChannelMask(n) (1<<(n))
|
||||
#define ChannelMask(n) (1 << (n))
|
||||
|
||||
/* True if we are about to fork off a synchronous process or if we
|
||||
are waiting for it. */
|
||||
|
|
|
|||
|
|
@ -6942,7 +6942,7 @@ next_element_from_string (struct it *it)
|
|||
struct text_pos position;
|
||||
|
||||
xassert (STRINGP (it->string));
|
||||
xassert (!it->bidi_p || it->string == it->bidi_it.string.lstring);
|
||||
xassert (!it->bidi_p || EQ (it->string, it->bidi_it.string.lstring));
|
||||
xassert (IT_STRING_CHARPOS (*it) >= 0);
|
||||
position = it->current.string_pos;
|
||||
|
||||
|
|
@ -7256,7 +7256,7 @@ next_element_from_buffer (struct it *it)
|
|||
xassert (IT_CHARPOS (*it) >= BEGV);
|
||||
xassert (NILP (it->string) && !it->s);
|
||||
xassert (!it->bidi_p
|
||||
|| (it->bidi_it.string.lstring == Qnil
|
||||
|| (EQ (it->bidi_it.string.lstring, Qnil)
|
||||
&& it->bidi_it.string.s == NULL));
|
||||
|
||||
/* With bidi reordering, the character to display might not be the
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue