#include <config.h>
#include "lisp.h"
-#ifdef HAVE_UNISTD_H
-#include <unistd.h>
-#endif
#include "buffer.h"
#include "commands.h"
\f
DEFUN ("temp-directory", Ftemp_directory, 0, 0, 0, /*
Return the pathname to the directory to use for temporary files.
-On NT/MSDOS, this is obtained from the TEMP or TMP environment variables,
+On MS Windows, this is obtained from the TEMP or TMP environment variables,
defaulting to / if they are both undefined.
On Unix it is obtained from TMPDIR, with /tmp as the default
*/
())
{
char *tmpdir;
-#if defined(WINDOWSNT) || defined(MSDOS)
+#if defined(WIN32_NATIVE)
tmpdir = getenv ("TEMP");
if (!tmpdir)
tmpdir = getenv ("TMP");
if (!tmpdir)
tmpdir = "/";
-#else /* WINDOWSNT || MSDOS */
+#else /* WIN32_NATIVE */
tmpdir = getenv ("TMPDIR");
if (!tmpdir)
tmpdir = "/tmp";
char *user_name = getenv ("LOGNAME");
if (!user_name)
user_name = getenv (
-#ifdef WINDOWSNT
+#ifdef WIN32_NATIVE
"USERNAME" /* it's USERNAME on NT */
#else
"USER"
else
{
struct passwd *pw = getpwuid (geteuid ());
-#ifdef __CYGWIN32__
+#ifdef CYGWIN
/* Since the Cygwin environment may not have an /etc/passwd,
return "unknown" instead of the null if the username
cannot be determined.
struct passwd *pw = getpwuid (getuid ());
/* #### - I believe this should return nil instead of "unknown" when pw==0 */
-#ifdef MSDOS
- /* We let the real user name default to "root" because that's quite
- accurate on MSDOG and because it lets Emacs find the init file.
- (The DVX libraries override the Djgpp libraries here.) */
- Lisp_Object tem = build_string (pw ? pw->pw_name : "root");/* no gettext */
-#else
Lisp_Object tem = build_string (pw ? pw->pw_name : "unknown");/* no gettext */
-#endif
return tem;
}
of a few bytes */
}
+/* !!#### not Mule correct. */
+
/* Returns the home directory, in external format */
Extbyte *
get_home_directory (void)
{
+ /* !!#### this is hopelessly bogus. Rule #1: Do not make any assumptions
+ about what format an external string is in. Could be Unicode, for all
+ we know, and then all the operations below are totally bogus.
+ Instead, convert all data to internal format *right* at the juncture
+ between XEmacs and the outside world, the very moment we first get
+ the data. --ben */
int output_home_warning = 0;
if (cached_home_directory == NULL)
{
if ((cached_home_directory = (Extbyte *) getenv("HOME")) == NULL)
{
-#if defined(WINDOWSNT) && !defined(__CYGWIN32__)
+#if defined(WIN32_NATIVE)
char *homedrive, *homepath;
if ((homedrive = getenv("HOMEDRIVE")) != NULL &&
}
else
{
-# if 1
+# if 0 /* changed by ben. This behavior absolutely stinks, and the
+ possibility being addressed here occurs quite commonly.
+ Using the current directory makes absolutely no sense. */
/*
* Use the current directory.
* This preserves the existing XEmacs behavior, but is different
output_home_warning = 1;
# endif
}
-#else /* !WINDOWSNT */
+#else /* !WIN32_NATIVE */
/*
* Unix, typically.
* Using "/" isn't quite right, but what should we do?
*/
cached_home_directory = (Extbyte *) "/";
output_home_warning = 1;
-#endif /* !WINDOWSNT */
+#endif /* !WIN32_NATIVE */
}
if (initialized && output_home_warning)
{