From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!not-for-mail From: Hugh Holbrook Newsgroups: gmane.emacs.devel Subject: patch for emacsclient to support GNU_NODE Date: Thu, 25 Feb 2010 22:58:36 -0800 Message-ID: <640a924a1002252258j57a6f80br9c54f9c31522f5a4@mail.gmail.com> NNTP-Posting-Host: lo.gmane.org Mime-Version: 1.0 Content-Type: multipart/mixed; boundary=0016369c8deeac042604807b6d00 X-Trace: dough.gmane.org 1267175497 3200 80.91.229.12 (26 Feb 2010 09:11:37 GMT) X-Complaints-To: usenet@dough.gmane.org NNTP-Posting-Date: Fri, 26 Feb 2010 09:11:37 +0000 (UTC) To: emacs-devel@gnu.org Original-X-From: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Fri Feb 26 10:11:34 2010 Return-path: Envelope-to: ged-emacs-devel@m.gmane.org Original-Received: from lists.gnu.org ([199.232.76.165]) by lo.gmane.org with esmtp (Exim 4.69) (envelope-from ) id 1NkwEN-0006tR-2r for ged-emacs-devel@m.gmane.org; Fri, 26 Feb 2010 10:11:31 +0100 Original-Received: from localhost ([127.0.0.1]:45513 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1NkwEM-0001fe-BB for ged-emacs-devel@m.gmane.org; Fri, 26 Feb 2010 04:11:30 -0500 Original-Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1Nku9p-00039C-Ej for emacs-devel@gnu.org; Fri, 26 Feb 2010 01:58:41 -0500 Original-Received: from [140.186.70.92] (port=52020 helo=eggs.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1Nku9m-000394-Sw for emacs-devel@gnu.org; Fri, 26 Feb 2010 01:58:39 -0500 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.69) (envelope-from ) id 1Nku9m-0001ed-3k for emacs-devel@gnu.org; Fri, 26 Feb 2010 01:58:38 -0500 Original-Received: from mail-vw0-f41.google.com ([209.85.212.41]:45578) by eggs.gnu.org with esmtp (Exim 4.69) (envelope-from ) id 1Nku9l-0001eU-RH for emacs-devel@gnu.org; Fri, 26 Feb 2010 01:58:38 -0500 Original-Received: by vws2 with SMTP id 2so788870vws.0 for ; Thu, 25 Feb 2010 22:58:36 -0800 (PST) Original-Received: by 10.220.127.97 with SMTP id f33mr598445vcs.47.1267167516164; Thu, 25 Feb 2010 22:58:36 -0800 (PST) X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.6 (newer, 2) X-Mailman-Approved-At: Fri, 26 Feb 2010 04:11:23 -0500 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Original-Sender: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Errors-To: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Xref: news.gmane.org gmane.emacs.devel:121386 Archived-At: --0016369c8deeac042604807b6d00 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable I'd like to offer the attached patch to emacs. =A0I have been using this for a while now and find it useful. The patch adds support for handling the GNU_NODE environment variable=A0in emacsclient, and documentation of it. When TCP connections are=A0used, any local filename sent to the server is absolutified and prefixed with the value of GNU_NODE, if set, before sending. The GNU_NODE_EXCLUDE environment variable is a PATH-style (colon-separated) list of directories to exclude from=A0GNU_NODE processing, which is useful if your home directory is mounted at the same place locally and on the server. This feature is inspired by similar support in=A0gnuclient from xemacs. =A0GNU_NODE_EXCLUDE is not present in gnuclient, to my knowledge. =A0I preserved the name=A0GNU_NODE to maintain compatibility. The patch attempts to support GNU_NODE when built for windows, but I will confess to not having tested this on windows. Thanks, -Hugh Holbrook --0016369c8deeac042604807b6d00 Content-Type: application/octet-stream; name=emacs-gnu-node-patch Content-Disposition: attachment; filename=emacs-gnu-node-patch Content-Transfer-Encoding: base64 X-Attachment-Id: f_g64mq4l41 MjAxMC0wMi0yNSAgSHVnaCBIb2xicm9vayAgPGhvbGJyb29rQGFyaXN0YW5ldHdvcmtzLmNvbT4K CgkqIG1pc2MudGV4aSAoZW1hY3NjbGllbnQgT3B0aW9ucyk6IEFkZCBHTlVfTk9ERSBhbmQgR05V X05PREVfRVhDTFVERS4KCmRpZmYgLXJjcCBlbWFjcy12YW5pbGxhL2VtYWNzLTIzLjEvZG9jL2Vt YWNzL21pc2MudGV4aSBlbWFjcy0yMy4xL2RvYy9lbWFjcy9taXNjLnRleGkKKioqIGVtYWNzLXZh bmlsbGEvZW1hY3MtMjMuMS9kb2MvZW1hY3MvbWlzYy50ZXhpCTIwMDktMDctMTUgMDc6MTM6MDgu MDAwMDAwMDAwIC0wNzAwCi0tLSBlbWFjcy0yMy4xL2RvYy9lbWFjcy9taXNjLnRleGkJMjAxMC0w Mi0yNCAyMzoyNTozMi4wMDAwMDAwMDAgLTA4MDAKKioqKioqKioqKioqKioqIHJ1bnMsIGFuZCAo aWkpIHByb3ZpZGUgQGNvbW1hbmR7ZW1hY3NjbGkKKioqIDE2NDcsMTY1MiAqKioqCi0tLSAxNjQ3 LDE2NjAgLS0tLQogIChPbmUgY29udmVuaWVudCB3YXkgdG8gZG8gdGhlIGxhdHRlciBpcyB0byBw dXQgdGhlIHNlcnZlciBmaWxlIG9uIGEKICBuZXR3b3JrZWQgZmlsZSBzeXN0ZW0gc3VjaCBhcyBO RlMuKQogIAorIFRoZSBAZW52e0dOVV9OT0RFfSBlbnZpcm9ubWVudCB2YXJpYWJsZSBtYXkgYmUg dXNlZnVsIGluIGNvbmp1bmN0aW9uCisgd2l0aCBUQ1AgY29ubmVjdGlvbnMuICBJZiBzZXQsIGl0 cyB2YWx1ZSBpcyB0cmVhdGVkIGFzIGEgcGF0aG5hbWUKKyBwcmVmaXggdGhhdCBpcyBwcmVwZW5k ZWQgdG8gdGhlIGFic29sdXRpemVkIHBhdGhuYW1lIG9mIHRoZSBsb2NhbCBmaWxlCisgYmVmb3Jl IHNlbmRpbmcgdG8gdGhlIHNlcnZlci4gIEBlbnZ7R05VX05PREVfRVhDTFVERX0gaXMgYSBsaXN0 IG9mCisgZmlsZXN5c3RlbSBwcmVmaXhlcyB0aGF0IHNob3VsZCBub3QgYmUgcHJlZml4ZWQgd2l0 aCBAZW52e0dOVV9OT0RFfS4KKyBUaGlzIGlzIHVzZWZ1bCBpZiB0aGVyZSBhcmUgZGlyZWN0b3Jp ZXMgdGhhdCBhcmUgbW91bnRlZCBhdCB0aGUgc2FtZQorIHBhdGggb24gdGhlIHNlcnZlciBhcyBs b2NhbGx5LgorIAogIEBpdGVtIC1uCiAgQGl0ZW14IC0tbm8td2FpdAogIExldCBAY29tbWFuZHtl bWFjc2NsaWVudH0gZXhpdCBpbW1lZGlhdGVseSwgaW5zdGVhZCBvZiB3YWl0aW5nIHVudGlsCgoK CjIwMTAtMDItMjUgIEh1Z2ggSG9sYnJvb2sgIDxob2xicm9va0BhcmlzdGFuZXR3b3Jrcy5jb20+ CgoJKiBlbWFjc2NsaWVudC4xOiBEb2N1bWVudCBHTlVfTk9ERSBhbmQgR05VX05PREVfRVhDTFVE RS4KCmRpZmYgLXJjcCBlbWFjcy12YW5pbGxhL2VtYWNzLTIzLjEvZG9jL21hbi9lbWFjc2NsaWVu dC4xIGVtYWNzLTIzLjEvZG9jL21hbi9lbWFjc2NsaWVudC4xCioqKiBlbWFjcy12YW5pbGxhL2Vt YWNzLTIzLjEvZG9jL21hbi9lbWFjc2NsaWVudC4xCTIwMDgtMTItMTIgMjA6MTQ6MjYuMDAwMDAw MDAwIC0wODAwCi0tLSBlbWFjcy0yMy4xL2RvYy9tYW4vZW1hY3NjbGllbnQuMQkyMDEwLTAyLTI0 IDIzOjE4OjU1LjAwMDAwMDAwMCAtMDgwMAoqKioqKioqKioqKioqKiogdXNlIHNvY2tldCBuYW1l ZCBGSUxFTkFNRSBmb3IgY29tbXVuaWNhdAoqKiogNjksNzQgKioqKgotLS0gNjksNzggLS0tLQog IC5CIFwtZiwgXC1cLXNlcnZlci1maWxlPUZJTEVOQU1FCiAgdXNlIFRDUCBjb25maWd1cmF0aW9u IGZpbGUgRklMRU5BTUUgZm9yIGNvbW11bmljYXRpb24uCiAgVGhpcyBjYW4gYWxzbyBiZSBzcGVj aWZpZWQgdmlhIHRoZSBgRU1BQ1NfU0VSVkVSX0ZJTEUnIGVudmlyb25tZW50IHZhcmlhYmxlLgor IFRoZSBgR05VX05PREVgIGVudmlyb25tZW50IHZhcmlhYmxlLCBpZiBzZXQsIGlzIHByZWZpeGVk IHRvIGFueSBmaWxlbmFtZQorIHNlbnQgdG8gdGhlIHNlcnZlci4gIFRoZSBgR05VX05PREVfRVhD TFVERWAgZW52aXJvbm1lbnQgdmFyaWFibGUgaXMgYQorIHNldCBvZiBkaXJlY3RvcnkgbmFtZXMg dG8gZXhjbHVkZSBmcm9tIGBHTlVfTk9ERWAgcHJlZml4aW5nLiAgSXQgdXNlcworIHRoZSBzYW1l IGZvcm1hdCBhcyBgUEFUSGAuCiAgLlRQCiAgLkIgXC1hLCBcLVwtYWx0ZXJuYXRlLWVkaXRvcj1F RElUT1IKICBpZiB0aGUgRW1hY3Mgc2VydmVyIGlzIG5vdCBydW5uaW5nLCBydW4gdGhlIHNwZWNp ZmllZCBlZGl0b3IgaW5zdGVhZC4KCgoKCjIwMTAtMDItMjUgIEh1Z2ggSG9sYnJvb2sgIDxob2xi cm9va0BhcmlzdGFuZXR3b3Jrcy5jb20+CgoJKiBlbWFjc2NsaWVudC5jIChtYWluKTogQWRkIEdO VV9OT0RFIGFuZCBHTlVfTk9ERV9FWENMVURFLgoJKGdldF90b2tlbikgTmV3IGZ1bmN0aW9uLgoK ZGlmZiAtcmNwIGVtYWNzLXZhbmlsbGEvZW1hY3MtMjMuMS9saWItc3JjL2VtYWNzY2xpZW50LmMg ZW1hY3MtMjMuMS9saWItc3JjL2VtYWNzY2xpZW50LmMKKioqIGVtYWNzLXZhbmlsbGEvZW1hY3Mt MjMuMS9saWItc3JjL2VtYWNzY2xpZW50LmMJMjAwOS0wNi0yMCAyMTozNzozNC4wMDAwMDAwMDAg LTA3MDAKLS0tIGVtYWNzLTIzLjEvbGliLXNyYy9lbWFjc2NsaWVudC5jCTIwMTAtMDItMjUgMjI6 MTg6MjQuMDAwMDAwMDAwIC0wODAwCioqKioqKioqKioqKioqKiB4c3RyZHVwIChjb25zdCBjaGFy ICpzKQoqKiogMjA2LDIxMyAqKioqCiAgICByZXR1cm4gcmVzdWx0OwogIH0KICAKISAvKiBGcm9t IHN5c2RlcC5jICovCiEgI2lmICFkZWZpbmVkIChIQVZFX0dFVF9DVVJSRU5UX0RJUl9OQU1FKSB8 fCBkZWZpbmVkIChCUk9LRU5fR0VUX0NVUlJFTlRfRElSX05BTUUpCiAgCiAgLyogRnJvbSBsaXNw LmggKi8KICAjaWZuZGVmIERJUkVDVE9SWV9TRVAKLS0tIDIwNiwyMTcgLS0tLQogICAgcmV0dXJu IHJlc3VsdDsKICB9CiAgCiEgLyogRnJvbSBlYnJvd3NlLmMgKi8KISAjaWYgZGVmaW5lZChfX01T RE9TX18pIHx8IGRlZmluZWQoV0lORE9XU05UKQohICNkZWZpbmUgUEFUSF9MSVNUX1NFUEFSQVRP UiAnOycKISAjZWxzZQohICNkZWZpbmUgUEFUSF9MSVNUX1NFUEFSQVRPUiAnOicKISAjZW5kaWYK ICAKICAvKiBGcm9tIGxpc3AuaCAqLwogICNpZm5kZWYgRElSRUNUT1JZX1NFUAoqKioqKioqKioq KioqKiogeHN0cmR1cCAoY29uc3QgY2hhciAqcykKKioqIDIyNywyMzIgKioqKgotLS0gMjMxLDIz OCAtLS0tCiAgI2RlZmluZSBJU19BTllfU0VQKF9jXykgKElTX0RJUkVDVE9SWV9TRVAgKF9jXykp CiAgI2VuZGlmCiAgCisgLyogRnJvbSBzeXNkZXAuYyAqLworICNpZiAhZGVmaW5lZCAoSEFWRV9H RVRfQ1VSUkVOVF9ESVJfTkFNRSkgfHwgZGVmaW5lZCAoQlJPS0VOX0dFVF9DVVJSRU5UX0RJUl9O QU1FKQogIAogIC8qIFJldHVybiB0aGUgY3VycmVudCB3b3JraW5nIGRpcmVjdG9yeS4gIFJldHVy bnMgTlVMTCBvbiBlcnJvcnMuCiAgICAgQW55IG90aGVyIHJldHVybmVkIHZhbHVlIG11c3QgYmUg ZnJlZWQgd2l0aCBmcmVlLiAgVGhpcyBpcyB1c2VkCioqKioqKioqKioqKioqKiBzdGFydF9kYWVt b25fYW5kX3JldHJ5X3NldF9zb2NrZXQgKHZvaWQpCioqKiAxNDg4LDE1MDAgKioqKgogICNlbmRp ZiAvKiBXSU5ET1dTTlQgKi8KICB9CiAgCiAgaW50CiAgbWFpbiAoYXJnYywgYXJndikKICAgICAg IGludCBhcmdjOwogICAgICAgY2hhciAqKmFyZ3Y7CiAgewogICAgaW50IGksIHJsLCBuZWVkbGYg PSAwOwohICAgY2hhciAqY3dkLCAqc3RyOwogICAgY2hhciBzdHJpbmdbQlVGU0laKzFdOwogICAg aW50IG51bGxfc29ja2V0X25hbWUsIG51bGxfc2VydmVyX2ZpbGUsIHN0YXJ0X2RhZW1vbl9pZl9u ZWVkZWQ7CiAgCi0tLSAxNDk0LDE1MjggLS0tLQogICNlbmRpZiAvKiBXSU5ET1dTTlQgKi8KICB9 CiAgCisgLyogR2V0IHRoZSBmaXJzdCB0b2tlbiBmcm9tIGEgbnVsbC10ZXJtaW5hdGVkIHN0cmlu ZyBzLCB3aGVyZSB0aGUKKyAgICB0b2tlbnMgYXJlIGRlbGltaXRlZCBieSB0aGUgc2VwYXJhdG9y IGNoYXIuICBUaGUgc2VwYXJhdG9yIGlzCisgICAgcmVwbGFjZWQgYnkgMCBpbiBwbGFjZSwgYW5k IHJlc3QgaXMgdXBkYXRlZCB0byBwb2ludCBhdCB0aGUgbmV4dAorICAgIGNoYXJhY3RlciBhZnRl ciB0aGUgc2VwYXJhdG9yLiAgcmVzdCBpcyBzZXQgdG8gMCB3aGVuIGFsbCB0b2tlbnMKKyAgICBo YXZlIGJlZW4gcmV0dXJuZWQuICovCisgY2hhciAqCisgZ2V0X3Rva2VuIChjaGFyICogcywgY2hh ciAqKiByZXN0LCBjaGFyIHNlcGFyYXRvcikKKyB7CisgICBjaGFyICogdGFpbDsKKyAgIGlmICgh cykKKyAgICAgcmV0dXJuIDA7CisgICAKKyAgIHRhaWwgPSBzdHJjaHIgKHMsIHNlcGFyYXRvcik7 CisgICBpZiAodGFpbCkKKyAgICAgeworICAgICAgICp0YWlsPTA7CisgICAgICAgdGFpbCsrOwor ICAgICB9CisgICAqcmVzdCA9IHRhaWw7CisgICByZXR1cm4gczsKKyB9CisgCiAgaW50CiAgbWFp biAoYXJnYywgYXJndikKICAgICAgIGludCBhcmdjOwogICAgICAgY2hhciAqKmFyZ3Y7CiAgewog ICAgaW50IGksIHJsLCBuZWVkbGYgPSAwOwohICAgY2hhciAqY3dkLCAqc3RyLCAqZ251X25vZGU7 CiAgICBjaGFyIHN0cmluZ1tCVUZTSVorMV07CiAgICBpbnQgbnVsbF9zb2NrZXRfbmFtZSwgbnVs bF9zZXJ2ZXJfZmlsZSwgc3RhcnRfZGFlbW9uX2lmX25lZWRlZDsKICAKKioqKioqKioqKioqKioq IG1haW4gKGFyZ2MsIGFyZ3YpCioqKiAxNjU2LDE2NjIgKioqKgotLS0gMTY4NCwxNzQzIC0tLS0K ICAJCWZyZWUgKGZpbGVuYW1lKTsKICAJICAgIH0KICAjZW5kaWYKKyAJICBpZiAoZ251X25vZGUg PSBlZ2V0ZW52ICgiR05VX05PREUiKSkKKyAJICAgIHsKKyAJICAgICAgaW50IGdudV9ub2RlX2xl biA9IHN0cmxlbiAoZ251X25vZGUpOworIAkgICAgICBpbnQgY3dkX2xlbiA9IHN0cmxlbiAoY3dk KTsKKyAJICAgICAgaW50IG9sZF9sZW4gPSBzdHJsZW4gKGFyZ3ZbaV0pOworIAkgICAgICBjaGFy ICpmaWxlbmFtZSA9IChjaGFyICopIHhtYWxsb2MgKGdudV9ub2RlX2xlbiArIGN3ZF9sZW4gKyBv bGRfbGVuICsgMyk7CisgCSAgICAgIGNoYXIgKmxvY2FsX2ZpbGVuYW1lID0gKGNoYXIgKikgeG1h bGxvYyAoY3dkX2xlbiArIG9sZF9sZW4gKyAxKTsKKyAJICAgICAgaW50IGFic29sdXRlID0gZmls ZV9uYW1lX2Fic29sdXRlX3AgKGFyZ3ZbaV0pOworIAkgICAgICBpbnQgbm9fcHJlZml4ID0gMDsK KyAKKyAJICAgICAgaWYgKCFhYnNvbHV0ZSkKKyAJCXsKKyAJCSAgc3RyY3B5IChsb2NhbF9maWxl bmFtZSwgY3dkKTsKKyAJCSAgbG9jYWxfZmlsZW5hbWVbY3dkX2xlbl0gPSBESVJFQ1RPUllfU0VQ OworIAkJICBzdHJjcHkgKGxvY2FsX2ZpbGVuYW1lICsgY3dkX2xlbiArIDEsIGFyZ3ZbaV0pOwor IAkJfQorIAkgICAgICBlbHNlCisgCQlsb2NhbF9maWxlbmFtZSA9IGFyZ3ZbaV07CiAgCisgCSAg ICAgIC8qIEdOVV9OT0RFX0VYQ0xVREUgaXMgYSBjb2xvbi1zZXBhcmF0ZWQgc2V0IG9mIHByZWZp eGVzIHRvCisgCQkgZXhjbHVkZSBmcm9tIEdOVV9OT0RFIHByZWZpeGluZy4gIEFueSBmaWxlbmFt ZQorIAkJIHN0YXJ0aW5nIHdpdGggb25lIG9mIHRoZSBlbGVtZW50cyBvZiB0aGUgR05VX05PREVf RVhDTFVERQorIAkJIGxpc3Qgd2lsbCBub3QgYmUgc2tpcHBlZC4gKi8KKyAJICAgICAgaWYgKGVn ZXRlbnYgKCJHTlVfTk9ERV9FWENMVURFIikpCisgCQl7CisgCQkgIGNoYXIgKnN0ciA9IHhzdHJk dXAgKGVnZXRlbnYgKCJHTlVfTk9ERV9FWENMVURFIikpOworIAkJICBjaGFyICpyZXN0OworIAkJ ICB3aGlsZSAoc3RyID0gZ2V0X3Rva2VuIChzdHIsICZyZXN0LCBQQVRIX0xJU1RfU0VQQVJBVE9S KSkKKyAJCSAgICB7CisgCQkgICAgICBpZiAoc3RycHJlZml4IChzdHIsIGxvY2FsX2ZpbGVuYW1l KSkKKyAJCQl7CisgCQkJICBjaGFyIGVuZCA9IGxvY2FsX2ZpbGVuYW1lW3N0cmxlbihzdHIpXTsK KyAJCQkgIGlmIChJU19ESVJFQ1RPUllfU0VQKGVuZCkgfHwgZW5kID09ICdcMCcpCisgCQkJICAg IHsKKyAJCQkgICAgICBub19wcmVmaXggPSAxOworIAkJCSAgICAgIGJyZWFrOworIAkJCSAgICB9 CisgCQkJfQorICAgICAgICAgICAgICAgICAgICAgICBzdHIgPSByZXN0OworIAkJICAgIH0KKyAJ CX0KKyAKKyAJICAgICAgaWYgKCFub19wcmVmaXgpCisgCQl7CisgCQkgIHN0cmNweSAoZmlsZW5h bWUsIGdudV9ub2RlKTsKKyAJCSAgc3RyY3B5IChmaWxlbmFtZSArIGdudV9ub2RlX2xlbiwgbG9j YWxfZmlsZW5hbWUpOworIAkJfQorIAkgICAgICBlbHNlCisgCQl7CisgCQkgIGZpbGVuYW1lID0g bG9jYWxfZmlsZW5hbWU7CisgCQl9CisgCSAgICAgIGFyZ3ZbaV0gPSBmaWxlbmFtZTsKKyAJICAg IH0KKyAJICAKICAgICAgICAgICAgc2VuZF90b19lbWFjcyAoZW1hY3Nfc29ja2V0LCAiLWZpbGUg Iik7CiAgICAgICAgICAgIHF1b3RlX2FyZ3VtZW50IChlbWFjc19zb2NrZXQsIGFyZ3ZbaV0pOwog ICAgICAgICAgICBzZW5kX3RvX2VtYWNzIChlbWFjc19zb2NrZXQsICIgIik7Cg== --0016369c8deeac042604807b6d00--