This file is part of GNU Emacs.
-GNU Emacs is free software; you can redistribute it and/or modify
+GNU Emacs is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 3, or (at your option)
-any later version.
+the Free Software Foundation, either version 3 of the License, or
+(at your option) any later version.
GNU Emacs is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
-along with GNU Emacs; see the file COPYING. If not, write to
-the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
-Boston, MA 02110-1301, USA. */
+along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */
#ifdef HAVE_CONFIG_H
#include <unistd.h>
#endif
-#ifdef VMS
-# include "vms-pwd.h"
-#else /* not VMS */
#ifdef WINDOWSNT
# include <io.h>
#else /* not WINDOWSNT */
# include <pwd.h>
#endif /* not WINDOWSNT */
-#endif /* not VMS */
#include <sys/stat.h>
#include <signal.h>
#ifndef NO_RETURN
#define NO_RETURN
#endif
+
+/* Additional space when allocating buffers for filenames, etc. */
+#define EXTRA_SPACE 100
+
\f
/* Name used to invoke this program. */
char *progname;
{ "help", no_argument, NULL, 'H' },
{ "version", no_argument, NULL, 'V' },
{ "tty", no_argument, NULL, 't' },
+ { "nw", no_argument, NULL, 't' },
{ "create-frame", no_argument, NULL, 'c' },
{ "alternate-editor", required_argument, NULL, 'a' },
#ifndef NO_SOCKETS_IN_FILE_SYSTEM
{
result = (char *) xmalloc (cbData);
- if ((RegQueryValueEx (hrootkey, key, NULL, type, result, &cbData) != ERROR_SUCCESS) ||
- (*result == 0))
+ if ((RegQueryValueEx (hrootkey, key, NULL, type, result, &cbData) != ERROR_SUCCESS)
+ || (*result == 0))
{
free (result);
result = NULL;
while (1)
{
- int opt = getopt_long (argc, argv,
+ int opt = getopt_long_only (argc, argv,
#ifndef NO_SOCKETS_IN_FILE_SYSTEM
"VHnea:s:f:d:tc",
#else
if (!tty && display)
window_system = 1;
-#if !defined (WINDOWSNT) && !defined (HAVE_CARBON)
+#if !defined (WINDOWSNT)
else if (!current_frame)
tty = 1;
#endif
The following OPTIONS are accepted:\n\
-V, --version Just print version info and return\n\
-H, --help Print this usage information message\n\
--t, --tty Open a new Emacs frame on the current terminal\n\
+-nw, -t, --tty Open a new Emacs frame on the current terminal\n\
-c, --create-frame Create a new frame instead of trying to\n\
use the current Emacs frame\n\
-e, --eval Evaluate the FILE arguments as ELisp expressions\n\
if (home)
{
- char *path = alloca (32 + strlen (home) + strlen (server_file));
+ char *path = alloca (strlen (home) + strlen (server_file)
+ + EXTRA_SPACE);
sprintf (path, "%s/.emacs.d/server/%s", home, server_file);
config = fopen (path, "rb");
}
#ifdef WINDOWSNT
if (!config && (home = egetenv ("APPDATA")))
{
- char *path = alloca (32 + strlen (home) + strlen (server_file));
+ char *path = alloca (strlen (home) + strlen (server_file)
+ + EXTRA_SPACE);
sprintf (path, "%s/.emacs.d/server/%s", home, server_file);
config = fopen (path, "rb");
}
int default_sock = !socket_name;
int saved_errno = 0;
char *server_name = "server";
+ char *tmpdir;
if (socket_name && !index (socket_name, '/') && !index (socket_name, '\\'))
{ /* socket_name is a file name component. */
if (default_sock)
{
- socket_name = alloca (100 + strlen (server_name));
- sprintf (socket_name, "/tmp/emacs%d/%s",
- (int) geteuid (), server_name);
+ tmpdir = egetenv ("TMPDIR");
+ if (!tmpdir)
+ tmpdir = "/tmp";
+ socket_name = alloca (strlen (tmpdir) + strlen (server_name)
+ + EXTRA_SPACE);
+ sprintf (socket_name, "%s/emacs%d/%s",
+ tmpdir, (int) geteuid (), server_name);
}
if (strlen (socket_name) < sizeof (server.sun_path))
if (pw && (pw->pw_uid != geteuid ()))
{
/* We're running under su, apparently. */
- socket_name = alloca (100 + strlen (server_name));
- sprintf (socket_name, "/tmp/emacs%d/%s",
- (int) pw->pw_uid, server_name);
+ socket_name = alloca (strlen (tmpdir) + strlen (server_name)
+ + EXTRA_SPACE);
+ sprintf (socket_name, "%s/emacs%d/%s",
+ tmpdir, (int) pw->pw_uid, server_name);
if (strlen (socket_name) < sizeof (server.sun_path))
strcpy (server.sun_path, socket_name);
char *type = egetenv ("TERM");
char *tty_name = NULL;
#ifndef WINDOWSNT
- tty_name = ttyname (fileno (stdin));
+ tty_name = ttyname (fileno (stdout));
#endif
if (! tty_name)
file:stream, and treated as absolute.
The user can still pass a file:stream if desired (for example,
.\X:Y), but it is not very useful, as Emacs currently does a
- very bad job of dealing wih NTFS streams. */
+ very bad job of dealing with NTFS streams. */
{
char *filename = (char *) xmalloc (MAX_PATH);
DWORD size;