[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: extensions for emacsclient (CVS version)
From: |
Richard Stallman |
Subject: |
Re: extensions for emacsclient (CVS version) |
Date: |
Thu, 11 Sep 2003 09:16:38 -0400 |
This change would be good, but it has a bug: if the argument
is too long, the sprintf will clobber something.
Here's a version that fixes that problem in a clean way.
Does it work?
cd ~/emacs/lib-src/
diff -c /home/rms/emacs/lib-src/emacsclient.c.\~1\~
/home/rms/emacs/lib-src/emacsclient.c
***************
*** 67,72 ****
--- 67,75 ----
is not running. --alternate-editor. */
const char * alternate_editor = NULL;
+ /* If non-NULL, thefilename of the UNIX socket */
+ char *socket_name = NULL;
+
void print_help_and_exit ();
struct option longopts[] =
***************
*** 76,81 ****
--- 79,85 ----
{ "help", no_argument, NULL, 'H' },
{ "version", no_argument, NULL, 'V' },
{ "alternate-editor", required_argument, NULL, 'a' },
+ { "socket-name", required_argument, NULL, 's' },
{ "display", required_argument, NULL, 'd' },
{ 0, 0, 0, 0 }
};
***************
*** 91,97 ****
while (1)
{
int opt = getopt_long (argc, argv,
! "VHnea:d:", longopts, 0);
if (opt == EOF)
break;
--- 95,101 ----
while (1)
{
int opt = getopt_long (argc, argv,
! "VHnea:s:d:", longopts, 0);
if (opt == EOF)
break;
***************
*** 109,114 ****
--- 113,122 ----
alternate_editor = optarg;
break;
+ case 's':
+ socket_name = optarg;
+ break;
+
case 'd':
display = optarg;
break;
***************
*** 136,155 ****
void
print_help_and_exit ()
{
! fprintf (stderr,
! "Usage: %s [OPTIONS] FILE...\n\
Tell the Emacs server to visit the specified files.\n\
Every FILE can be either just a FILENAME or [+LINE[:COLUMN]] FILENAME.\n\
The following OPTIONS are accepted:\n\
-V, --version Just print a version info and return\n\
-H, --help Print this usage information message\n\
-n, --no-wait Don't wait for the server to return\n\
-e, --eval Evaluate the FILE arguments as ELisp expressions\n\
-d, --display=DISPLAY Visit the file in the given display\n\
-a, --alternate-editor=EDITOR\n\
Editor to fallback to if the server is not running\n\
Report bugs to address@hidden", progname);
! exit (1);
}
/* Return a copy of NAME, inserting a &
--- 149,172 ----
void
print_help_and_exit ()
{
! printf (
! "Usage: %s [OPTIONS] FILE...\n\
Tell the Emacs server to visit the specified files.\n\
Every FILE can be either just a FILENAME or [+LINE[:COLUMN]] FILENAME.\n\
+ \n\
The following OPTIONS are accepted:\n\
-V, --version Just print a version info and return\n\
-H, --help Print this usage information message\n\
-n, --no-wait Don't wait for the server to return\n\
-e, --eval Evaluate the FILE arguments as ELisp expressions\n\
-d, --display=DISPLAY Visit the file in the given display\n\
+ -s, --socket-name=FILENAME\n\
+ Set the filename of the UNIX socket for
communication\n\
-a, --alternate-editor=EDITOR\n\
Editor to fallback to if the server is not running\n\
+ \n\
Report bugs to address@hidden", progname);
! exit (0);
}
/* Return a copy of NAME, inserting a &
***************
*** 336,342 ****
{
int sock_status = 0;
! sprintf (server.sun_path, "/tmp/esrv%d-%s", (int) geteuid (),
system_name);
/* See if the socket exists, and if it's owned by us. */
sock_status = socket_status (server.sun_path);
--- 357,374 ----
{
int sock_status = 0;
! if (! socket_name)
! {
! socket_name = alloca (system_name_length + 100);
! sprintf (socket_name, "/tmp/emacs%d-%s/server",
! (int) geteuid (), system_name);
! }
!
! if (strlen (socket_name) < sizeof (server.sun_path))
! strcpy (server.sun_path, socket_name);
! else
! fprintf (stderr, "%s: socket-name %s too long",
! argv[0], socket_name);
/* See if the socket exists, and if it's owned by us. */
sock_status = socket_status (server.sun_path);
- Re: extensions for emacsclient (CVS version), (continued)
- Re: extensions for emacsclient (CVS version), Alex Schroeder, 2003/09/12
- Re: extensions for emacsclient (CVS version), Richard Stallman, 2003/09/13
- Re: extensions for emacsclient (CVS version), Miles Bader, 2003/09/10
- Re: extensions for emacsclient (CVS version), Andreas Büsching, 2003/09/10
- Re: extensions for emacsclient (CVS version), Miles Bader, 2003/09/10
- Re: extensions for emacsclient (CVS version), Andreas Büsching, 2003/09/11
- Re: extensions for emacsclient (CVS version), Richard Stallman, 2003/09/11
- Re: extensions for emacsclient (CVS version), Andreas Buesching, 2003/09/12
- Re: extensions for emacsclient (CVS version), Richard Stallman, 2003/09/12
- Re: extensions for emacsclient (CVS version), Andreas Büsching, 2003/09/12
Re: extensions for emacsclient (CVS version),
Richard Stallman <=