|
From: | Lennart Borgman |
Subject: | Re: emacsclient: support `/' directory separator on w32 |
Date: | Wed, 29 Nov 2006 00:12:00 +0100 |
User-agent: | Thunderbird 1.5.0.8 (Windows/20061025) |
Eli Zaretskii wrote:
Date: Tue, 28 Nov 2006 16:43:18 +0100 From: Lennart Borgman <address@hidden> Cc: Juanma Barranquero <address@hidden>, address@hiddenEmacsclient knows which args are file names and sends cwd just before the file name so it seems easy to fix. I am going to try later today.No, please don't! This is an obscure and little-used case; rocking the pretest boat for its sake is entirely inappropriate!
I decided to test since I consider it a bug. It is easy to fix once you understand the pretty obscure code in emacsclient.c. I have tested a little change like this:
if ((argc - optind > 0)) { for (i = optind; i < argc; i++) { int is_file; is_file = 0; if (eval) ; /* Don't prepend any cwd or anything like that. */ else if (*argv[i] == '+') { char *p = argv[i] + 1; while (isdigit ((unsigned char) *p) || *p == ':') p++; if (*p != 0) { trace("+ obscure path\n"); SEND_QUOTED (cwd); SEND_STRING ("/"); } } else //if (! file_name_absolute_p (argv[i])) { //SEND_QUOTED (cwd); //SEND_STRING ("/"); /* It is a file name, expand it! */ trace("file path\n"); is_file = 1; expand_file_name(cwd, argv[i], srvfile); } trace("is_file=%d\n", is_file); if (is_file) SEND_QUOTED (srvfile); else SEND_QUOTED (argv[i]); SEND_STRING (" "); } }The only important change here is that the expanding to an absolute file name is made explicit and therefore is easier to understand and to make system independent. You can see what I have commented out and the call to expand_file_name (which I just wrote, nothing special, just what we just wrote about for w32 and the same as above for other systems).
This works pretty well I believe. I will distribute it with my patched version and would be glad if we used it in the official version.
Gnuclient also had this bug before and I was quite disturbed of by it.
[Prev in Thread] | Current Thread | [Next in Thread] |