commit: Don't call substitute-in-file-name haphazardly.
16 years, 11 months
Michael Sperber
changeset: 4385:7a8c613ee2836d4803753fca5731d45222a92449
tag: tip
user: Mike Sperber <sperber(a)deinprogramm.de>
date: Sat Jan 05 16:19:37 2008 +0100
files: lisp/ChangeLog lisp/code-files.el
description:
Don't call substitute-in-file-name haphazardly.
2008-01-04 Michael Sperber <mike(a)xemacs.org>
* code-files.el (insert-file-contents):
(load): Don't call `substitute-in-file-name' on the file name.
diff -r c7e65155cb355f52c9766b4dc292402297383fda -r 7a8c613ee2836d4803753fca5731d45222a92449 lisp/ChangeLog
--- a/lisp/ChangeLog Sat Jan 05 16:13:04 2008 +0100
+++ b/lisp/ChangeLog Sat Jan 05 16:19:37 2008 +0100
@@ -1,3 +1,8 @@ 2008-01-03 Aidan Kehoe <kehoea@parhasa
+2008-01-04 Michael Sperber <mike(a)xemacs.org>
+
+ * code-files.el (insert-file-contents):
+ (load): Don't call `substitute-in-file-name' on the file name.
+
2008-01-03 Aidan Kehoe <kehoea(a)parhasard.net>
* cus-edit.el (custom-save-all):
diff -r c7e65155cb355f52c9766b4dc292402297383fda -r 7a8c613ee2836d4803753fca5731d45222a92449 lisp/code-files.el
--- a/lisp/code-files.el Sat Jan 05 16:13:04 2008 +0100
+++ b/lisp/code-files.el Sat Jan 05 16:19:37 2008 +0100
@@ -235,10 +235,10 @@ object (the entry specified a coding sys
;(defun convert-mbox-coding-system (filename visit start end) ...)
-(defun load (file &optional noerror nomessage nosuffix)
- "Execute a file of Lisp code named FILE, or load a binary module.
-First tries to find a Lisp FILE with .elc appended, then with .el, then with
- FILE unmodified. If unsuccessful, tries to find a binary module FILE with
+(defun load (filename &optional noerror nomessage nosuffix)
+ "Execute a file of Lisp code named FILENAME, or load a binary module.
+First tries to find a Lisp file FILENAME with .elc appended, then with .el, then with
+ FILENAME unmodified. If unsuccessful, tries to find a binary module FILE with
the elements of `module-extensions' appended, one at a time.
Searches directories in load-path for Lisp files, and in `module-load-path'
for binary modules.
@@ -250,9 +250,8 @@ If optional fourth arg NOSUFFIX is non-n
.elc, .el, or elements of `module-extensions' to the specified name FILE.
Return t if file exists."
(declare (special load-modules-quietly))
- (let* ((filename (substitute-in-file-name file))
- (handler (find-file-name-handler filename 'load))
- (path nil))
+ (let ((handler (find-file-name-handler filename 'load))
+ (path nil))
(if handler
(funcall handler 'load filename noerror nomessage nosuffix)
;; First try to load a Lisp file
@@ -262,10 +261,10 @@ Return t if file exists."
'(".elc" ".el" "")))))
;; now use the internal load to actually load the file.
(load-internal
- file noerror nomessage nosuffix
+ filename noerror nomessage nosuffix
(let ((elc ; use string= instead of string-match to keep match-data.
- (equalp ".elc" (substring path -4))))
- (or (and (not elc) coding-system-for-read) ;prefer for source file
+ (equalp ".elc" (substring path -4))))
+ (or (and (not elc) coding-system-for-read) ;prefer for source file
;; find magic-cookie
(let ((codesys
(find-coding-system-magic-cookie-in-file path)))
@@ -401,8 +400,7 @@ See also `insert-file-contents-access-ho
See also `insert-file-contents-access-hook',
`insert-file-contents-pre-hook', `insert-file-contents-error-hook',
and `insert-file-contents-post-hook'."
- (let* ((expanded (substitute-in-file-name filename))
- (handler (find-file-name-handler expanded 'insert-file-contents)))
+ (let ((handler (find-file-name-handler filename 'insert-file-contents)))
(if handler
(funcall handler 'insert-file-contents filename visit start end replace)
(let (return-val coding-system used-codesys)
_______________________________________________
XEmacs-Patches mailing list
XEmacs-Patches(a)xemacs.org
http://calypso.tux.org/cgi-bin/mailman/listinfo/xemacs-patches
commit: Improve upon previous patch to minibuf.el.
16 years, 11 months
Michael Sperber
changeset: 4384:c7e65155cb355f52c9766b4dc292402297383fda
user: Mike Sperber <sperber(a)deinprogramm.de>
date: Sat Jan 05 16:13:04 2008 +0100
files: lisp/ChangeLog lisp/minibuf.el
description:
Improve upon previous patch to minibuf.el.
2008-01-02 Mike Sperber <mike(a)xemacs.org>
* minibuf.el (mouse-read-file-name-1): Use `window-height' instead
of `frame-height' to be consistent with `split-window''s
calculations. Bind `window-min-height' to 1 for the entire
interaction to avoid various "window-too-small"-type problems.
diff -r 1e04b9c8125bd4bcd89d56b366d3990bc1032adf -r c7e65155cb355f52c9766b4dc292402297383fda lisp/ChangeLog
--- a/lisp/ChangeLog Thu Jan 03 22:36:04 2008 +0100
+++ b/lisp/ChangeLog Sat Jan 05 16:13:04 2008 +0100
@@ -20,6 +20,13 @@ 2008-01-02 Aidan Kehoe <kehoea@parhasa
* gtk-iso8859-1.el: Removed.
These haven't been used in a year and a half. No need to keep them
around.
+
+2008-01-02 Mike Sperber <mike(a)xemacs.org>
+
+ * minibuf.el (mouse-read-file-name-1): Use `window-height' instead
+ of `frame-height' to be consistent with `split-window''s
+ calculations. Bind `window-min-height' for the whole thing to
+ avoid geometry problems with the buttons window.
2008-01-02 Mike Sperber <mike(a)xemacs.org>
diff -r 1e04b9c8125bd4bcd89d56b366d3990bc1032adf -r c7e65155cb355f52c9766b4dc292402297383fda lisp/minibuf.el
--- a/lisp/minibuf.el Thu Jan 03 22:36:04 2008 +0100
+++ b/lisp/minibuf.el Sat Jan 05 16:13:04 2008 +0100
@@ -2060,18 +2060,15 @@ whether it is a file(/result) or a direc
(butbuf (generate-new-buffer " *mouse-read-file-buttons*"))
(frame (make-dialog-frame))
filewin dirwin
- user-data)
+ user-data
+ (window-min-height 1)) ; allow button window to be height 2
(unwind-protect
(progn
(reset-buffer filebuf)
;; set up the frame.
(focus-frame frame)
- ;; We really need `window-min-height' lines for the button
- ;; buffer, as otherwise the button buffer might get
- ;; inadvertently deleted when other window-size changes
- ;; happen (such as through resize-minibuffer-mode).
- (split-window nil (- (frame-height frame) window-min-height))
+ (split-window nil (- (window-height) 2))
(if file-p
(progn
(split-window-horizontally 16)
_______________________________________________
XEmacs-Patches mailing list
XEmacs-Patches(a)xemacs.org
http://calypso.tux.org/cgi-bin/mailman/listinfo/xemacs-patches
[PATCH] Update `tramp-handle-file-remote-p'
16 years, 11 months
Michael Sperber
Hi there,
I'd like to synch our implementation of `file-remote-p' with GNU Emacs's
(I know Michael suggested this years ago---sorry for dropping the ball).
I'd like to adopt the recent changes in the function's argument
conventions (additional `identification' and `connected' parameters).
Could the attached patch (which simply copies the function from the
latest Tramp to ours) be approved and/or committed?
2008-01-03 Michael Sperber <mike(a)xemacs.org>
* lisp/tramp.el (tramp-handle-file-remote-p): Synch with latest
Tramp, to support the latest changes in argument conventions.
--
Cheers =8-} Mike
Friede, Völkerverständigung und überhaupt blabla
Index: lisp/tramp.el
===================================================================
RCS file: /pack/xemacscvs/XEmacs/packages/xemacs-packages/tramp/lisp/tramp.el,v
retrieving revision 1.42
diff -u -r1.42 tramp.el
--- lisp/tramp.el 28 May 2007 10:53:37 -0000 1.42
+++ lisp/tramp.el 3 Jan 2008 08:24:56 -0000
@@ -3868,11 +3868,19 @@
(t (error "Wrong method specification for `%s'" method)))
tmpfil)))
-(defun tramp-handle-file-remote-p (filename)
- "Like `file-remote-p' for tramp files."
+(defun tramp-handle-file-remote-p (filename &optional identification connected)
+ "Like `file-remote-p' for Tramp files."
(when (tramp-tramp-file-p filename)
(with-parsed-tramp-file-name filename nil
- (vector multi-method method user host ""))))
+ (and (or (not connected)
+ (let ((p (tramp-get-connection-process v)))
+ (and p (processp p) (memq (process-status p) '(run open)))))
+ (cond
+ ((eq identification 'method) method)
+ ((eq identification 'user) user)
+ ((eq identification 'host) host)
+ ((eq identification 'localname) localname)
+ (t (tramp-make-tramp-file-name method user host "")))))))
(defun tramp-handle-insert-file-contents
(filename &optional visit beg end replace)
_______________________________________________
XEmacs-Patches mailing list
XEmacs-Patches(a)xemacs.org
http://calypso.tux.org/cgi-bin/mailman/listinfo/xemacs-patches
commit: Correct the make-temp-name docstring.
16 years, 11 months
Aidan Kehoe
changeset: 4383:1e04b9c8125bd4bcd89d56b366d3990bc1032adf
tag: tip
user: Aidan Kehoe <kehoea(a)parhasard.net>
date: Thu Jan 03 22:36:04 2008 +0100
files: src/ChangeLog src/fileio.c
description:
Correct the make-temp-name docstring.
Take the opportunity to correct the format of ChangeLog.
2008-01-03 Aidan Kehoe <kehoea(a)parhasard.net>
* fileio.c (Fmake_temp_name): Correct the comment to cross
reference to make-temp-file, and not to this function.
diff -r 12ff8dc2b57efb9adce6e948572be056d629c5ee -r 1e04b9c8125bd4bcd89d56b366d3990bc1032adf src/ChangeLog
--- a/src/ChangeLog Thu Jan 03 12:45:44 2008 +0100
+++ b/src/ChangeLog Thu Jan 03 22:36:04 2008 +0100
@@ -1,3 +1,8 @@ 2008-01-03 Stephen J. Turnbull <stephe
+2008-01-03 Aidan Kehoe <kehoea(a)parhasard.net>
+
+ * fileio.c (Fmake_temp_name): Correct the comment to cross
+ reference to make-temp-file, and not to this function.
+
2008-01-03 Stephen J. Turnbull <stephen(a)xemacs.org>
* doc.c (Fbuilt_in_symbol_file): Improve style.
@@ -10,7 +15,6 @@ 2008-01-02 Aidan Kehoe <kehoea@parhasa
* console-gtk.c (gtk_perhaps_init_unseen_key_defaults):
Correct the initialisation of the hash table, on the model of the
MSW and TTY builds.
-
2008-01-02 Aidan Kehoe <kehoea(a)parhasard.net>
diff -r 12ff8dc2b57efb9adce6e948572be056d629c5ee -r 1e04b9c8125bd4bcd89d56b366d3990bc1032adf src/fileio.c
--- a/src/fileio.c Thu Jan 03 12:45:44 2008 +0100
+++ b/src/fileio.c Thu Jan 03 22:36:04 2008 +0100
@@ -628,7 +628,7 @@ be an absolute file name.
This function is analagous to mktemp(3) under POSIX, and as with it, there
exists a race condition between the test for the existence of the new file
-and its creation. See `make-temp-name' for a function which avoids this
+and its creation. See `make-temp-file' for a function which avoids this
race condition by specifying the appropriate flags to `write-region'.
*/
(prefix))
_______________________________________________
XEmacs-Patches mailing list
XEmacs-Patches(a)xemacs.org
http://calypso.tux.org/cgi-bin/mailman/listinfo/xemacs-patches
Re: [Q] support for the OS X keychain
16 years, 11 months
Aidan Kehoe
Ar an ceathrú lá de mí Eanair, scríobh Stephen J. Turnbull:
> Aidan Kehoe writes:
>
> > > I couldn't figure out how to convert the string with macros of 21.4 yet
> > > --- maybe one of the 21.4 developers could give me some advice?
> >
> > UTF-8 is not available as a coding system by default on 21.4. One
> > awkward way to work around that would be to check for non-ASCII in the
> > strings, and only do the translation if a) there are non-ASCII
> > characters and b) Ffind_coding_system (intern ("utf-8")) gives
> > non-nil.
>
> Does this actually work correctly? That is, HFS+ will use a NK?FD
> string for the file name. I think the file system code will normalize
> if you pass it any valid UTF-8 string (this needs to be checked),
It does.
> but XEmacs will not be able to round-trip. We should check that that will
> not cause problems.
It will cause problems; it’s Mule-UCS, its mapping is incomplete. See every
third message Uwe Brauer has been sending to -beta.
On reflection, though, the 21.4 init code is not sensible in this respect,
and file-name-coding-system will not normally be anything other than binary.
It, or the file-name coding system alias, should be used, not utf-8.
--
¿Dónde estará ahora mi sobrino Yoghurtu Nghé, que tuvo que huir
precipitadamente de la aldea por culpa de la escasez de rinocerontes?
_______________________________________________
XEmacs-Patches mailing list
XEmacs-Patches(a)xemacs.org
http://calypso.tux.org/cgi-bin/mailman/listinfo/xemacs-patches
commit: Create the containing directory for the custom and init files if necessary.
16 years, 11 months
Aidan Kehoe
changeset: 4382:12ff8dc2b57efb9adce6e948572be056d629c5ee
tag: tip
user: Aidan Kehoe <kehoea(a)parhasard.net>
date: Thu Jan 03 12:45:44 2008 +0100
files: lisp/ChangeLog lisp/cus-edit.el lisp/menubar-items.el
description:
Create the containing directory for the custom and init files if necessary.
2008-01-03 Aidan Kehoe <kehoea(a)parhasard.net>
* cus-edit.el (custom-save-all):
If the directory containing the custom file doesn't exist, try to
create it. Fixes Nick's Crabtree's bug of
5fb265820712140145w512fa3bbh355cf76f7e2cf792(a)mail.gmail.com ;
thank you Nick.
* menubar-items.el (default-menubar):
In the code to edit the user's init file, try to create the
containing directory if it doesn't exist.
diff -r 3906442b491b42211630c8b8cd8a8cc05060ce4a -r 12ff8dc2b57efb9adce6e948572be056d629c5ee lisp/ChangeLog
--- a/lisp/ChangeLog Thu Jan 03 01:33:59 2008 -0800
+++ b/lisp/ChangeLog Thu Jan 03 12:45:44 2008 +0100
@@ -1,3 +1,14 @@ 2008-01-02 Aidan Kehoe <kehoea@parhasa
+2008-01-03 Aidan Kehoe <kehoea(a)parhasard.net>
+
+ * cus-edit.el (custom-save-all):
+ If the directory containing the custom file doesn't exist, try to
+ create it. Fixes Nick's Crabtree's bug of
+ 5fb265820712140145w512fa3bbh355cf76f7e2cf792(a)mail.gmail.com ;
+ thank you Nick.
+ * menubar-items.el (default-menubar):
+ In the code to edit the user's init file, try to create the
+ containing directory if it doesn't exist.
+
2008-01-02 Aidan Kehoe <kehoea(a)parhasard.net>
* gtk-init.el (init-post-gtk-win):
diff -r 3906442b491b42211630c8b8cd8a8cc05060ce4a -r 12ff8dc2b57efb9adce6e948572be056d629c5ee lisp/cus-edit.el
--- a/lisp/cus-edit.el Thu Jan 03 01:33:59 2008 -0800
+++ b/lisp/cus-edit.el Thu Jan 03 12:45:44 2008 +0100
@@ -3766,7 +3766,13 @@ Hashes several heavily used functions fo
(custom-save-variables)
(custom-save-faces)
(let ((find-file-hooks nil)
- (auto-mode-alist))
+ (auto-mode-alist)
+ custom-file-directory)
+ (unless (file-directory-p (setq custom-file-directory
+ (file-name-directory custom-file)))
+ (message "Creating %s... " custom-file-directory)
+ (make-directory custom-file-directory t)
+ (message "Creating %s... done." custom-file-directory))
(with-current-buffer (find-file-noselect custom-file)
(save-buffer)))))
diff -r 3906442b491b42211630c8b8cd8a8cc05060ce4a -r 12ff8dc2b57efb9adce6e948572be056d629c5ee lisp/menubar-items.el
--- a/lisp/menubar-items.el Thu Jan 03 01:33:59 2008 -0800
+++ b/lisp/menubar-items.el Thu Jan 03 12:45:44 2008 +0100
@@ -1441,10 +1441,16 @@ Write your filter like this:
["Edit I%_nit File"
;; #### there should be something that holds the name that the init
;; file should be created as, when it's not present.
- (let ((el-file (or user-init-file "~/.xemacs/init.el")))
+ (let ((el-file (or user-init-file "~/.xemacs/init.el"))
+ el-file-directory)
(if (string-match "\\.elc$" el-file)
(setq el-file
(substring user-init-file 0 (1- (length el-file)))))
+ (unless (file-directory-p
+ (setq el-file-directory (file-name-directory el-file)))
+ (message "Creating %s... " el-file-directory)
+ (make-directory el-file-directory t)
+ (message "Creating %s... done." el-file-directory))
(find-file el-file)
(or (eq major-mode 'emacs-lisp-mode)
(emacs-lisp-mode)))]
_______________________________________________
XEmacs-Patches mailing list
XEmacs-Patches(a)xemacs.org
http://calypso.tux.org/cgi-bin/mailman/listinfo/xemacs-patches
patch: support for the OS X keychain
16 years, 11 months
Eric Knauel
Here is a small dynamic module that adds support for the OS X keychain
to XEmacs.
The OS X keychain is a mechanism that stores application passwords
(and other secret information) in encrypted file on the disk. This is
quite useful: For example, if the user unlocks his keychain on login,
applications may fetch passwords from the keychain to access some
server without having to ask for the server password.
I always wanted Gnus to use the keychain to store my IMAP server
passwords instead of the plain text ~/.netrc or ~/.authinfo files.
So, here is a small patch that adds a module that wraps Carbon API to
keychain into Lisp functions: KEYCHAIN-FIND, KEYCHAIN-REMOVE, and
KEYCHAIN-ADD. The functions are pretty simple to use.
The call
(keychain-add "imap:foo@bar.org" "geheim")
adds the password "geheim" to the (user's default) keychain identified
by string "imap:foo@bar.org". To retrieve this password, simply call:
(keychain-find "imap:foo@bar.org")
-Eric
--
"Excuse me --- Di Du Du Duuuuh Di Dii --- Huh Weeeheeee" (Albert King)
_______________________________________________
XEmacs-Patches mailing list
XEmacs-Patches(a)xemacs.org
http://calypso.tux.org/cgi-bin/mailman/listinfo/xemacs-patches
[PATCH] Fix Tramp build
16 years, 11 months
Michael Sperber
Right now, the default build for the Tramp package creates a tramp.elc
that bombs when edebug is available. Could one of you approve, commit,
or otherwise fix?
Michael, Kai, Norbert: It seems Michael is the person mostly doing the
commits, yet we list Kai as the package maintainer. Is this right?
2008-01-03 Michael Sperber <mike(a)xemacs.org>
* Makefile (REQUIRES): Add `edebug', which is needed to generate a
tramp.elc that loads in the presence of edebug.
--
Cheers =8-} Mike
Friede, Völkerverständigung und überhaupt blabla
Index: Makefile
===================================================================
RCS file: /pack/xemacscvs/XEmacs/packages/xemacs-packages/tramp/Makefile,v
retrieving revision 1.71
diff -u -r1.71 Makefile
--- Makefile 16 Sep 2007 13:06:59 -0000 1.71
+++ Makefile 3 Jan 2008 08:18:41 -0000
@@ -22,7 +22,7 @@
MAINTAINER = Kai Großjohann <kai.grossjohann(a)gmx.net>
PACKAGE = tramp
PKG_TYPE = regular
-REQUIRES = tramp xemacs-base vc efs dired mail-lib gnus ediff sh-script
+REQUIRES = tramp xemacs-base vc efs dired mail-lib gnus ediff sh-script edebug
CATEGORY = standard
include ../../Local.rules.inc
_______________________________________________
XEmacs-Patches mailing list
XEmacs-Patches(a)xemacs.org
http://calypso.tux.org/cgi-bin/mailman/listinfo/xemacs-patches
commit: Improve style and add tests for 'built-in-symbol-file'.
16 years, 11 months
Stephen Turnbull
changeset: 4381:3906442b491b42211630c8b8cd8a8cc05060ce4a
tag: tip
user: Stephen J. Turnbull <stephen(a)xemacs.org>
date: Thu Jan 03 01:33:59 2008 -0800
files: src/ChangeLog src/doc.c tests/ChangeLog tests/automated/symbol-tests.el
description:
Improve style and add tests for 'built-in-symbol-file'.
diff -r 461fdb92f3b61866f7787d1922376603c9cc4c96 -r 3906442b491b42211630c8b8cd8a8cc05060ce4a src/ChangeLog
--- a/src/ChangeLog Wed Jan 02 22:11:03 2008 +0100
+++ b/src/ChangeLog Thu Jan 03 01:33:59 2008 -0800
@@ -1,3 +1,7 @@ 2008-01-02 Aidan Kehoe <kehoea@parhasa
+2008-01-03 Stephen J. Turnbull <stephen(a)xemacs.org>
+
+ * doc.c (Fbuilt_in_symbol_file): Improve style.
+
2008-01-02 Aidan Kehoe <kehoea(a)parhasard.net>
* emacs.c (main_1):
diff -r 461fdb92f3b61866f7787d1922376603c9cc4c96 -r 3906442b491b42211630c8b8cd8a8cc05060ce4a src/doc.c
--- a/src/doc.c Wed Jan 02 22:11:03 2008 +0100
+++ b/src/doc.c Thu Jan 03 01:33:59 2008 -0800
@@ -519,8 +519,7 @@ If TYPE is `defvar', then variable defin
fun = Findirect_function (symbol);
if (SUBRP (fun) || (CONSP(fun) && (EQ (Qmacro, Fcar_safe (fun)))
- && !NILP(fun = Fcdr_safe (fun))
- && (SUBRP (fun))))
+ && (fun = Fcdr_safe (fun), SUBRP (fun))))
{
if (XSUBR (fun)->doc == 0)
return Qnil;
diff -r 461fdb92f3b61866f7787d1922376603c9cc4c96 -r 3906442b491b42211630c8b8cd8a8cc05060ce4a tests/ChangeLog
--- a/tests/ChangeLog Wed Jan 02 22:11:03 2008 +0100
+++ b/tests/ChangeLog Thu Jan 03 01:33:59 2008 -0800
@@ -1,3 +1,8 @@ 2007-12-29 Stephen J. Turnbull <stephe
+2008-01-03 Stephen J. Turnbull <stephen(a)xemacs.org>
+
+ * automated/symbol-tests.el (Symbol documentation): Add tests to
+ check documentation extraction.
+
2007-12-29 Stephen J. Turnbull <stephen(a)xemacs.org>
* automated/test-harness.el (test-harness-test-compiled):
diff -r 461fdb92f3b61866f7787d1922376603c9cc4c96 -r 3906442b491b42211630c8b8cd8a8cc05060ce4a tests/automated/symbol-tests.el
--- a/tests/automated/symbol-tests.el Wed Jan 02 22:11:03 2008 +0100
+++ b/tests/automated/symbol-tests.el Thu Jan 03 01:33:59 2008 -0800
@@ -332,3 +332,23 @@
; (Assert (equal (catch 'test-tag
; (set mysym 'foo))
; `(,mysym (foo) make-local nil nil))))
+
+;; ----------------------------------------------------------------
+;; Symbol documentation
+;; ----------------------------------------------------------------
+
+;; built-in variable documentation
+(Assert (string= (built-in-symbol-file 'internal-doc-file-name)
+ "doc.c"))
+
+;; built-in function documentation
+(Assert (string= (built-in-symbol-file 'built-in-symbol-file)
+ "doc.c"))
+
+;; built-in macro documentation
+(Assert (string= (built-in-symbol-file 'when)
+ "eval.c"))
+
+;; #### we should handle symbols defined in Lisp, dumped, autoloaded,
+;; and required, too.
+
_______________________________________________
XEmacs-Patches mailing list
XEmacs-Patches(a)xemacs.org
http://calypso.tux.org/cgi-bin/mailman/listinfo/xemacs-patches