emacs-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Emacs-diffs] emacs/src callproc.c


From: Chong Yidong
Subject: [Emacs-diffs] emacs/src callproc.c
Date: Fri, 30 Jan 2009 05:17:33 +0000

CVSROOT:        /sources/emacs
Module name:    emacs
Changes by:     Chong Yidong <cyd>      09/01/30 05:17:33

Modified files:
        src            : callproc.c 

Log message:
        (Vtemp_file_name_pattern): Remove DEFVAR_LISP.
        Initialize it as a relative filename pattern.
        (init_callproc): Don't initialize Vtemp_file_name_pattern here.
        (Fcall_process_region): Simplify temp file creation using
        temporary-file-directory.

CVSWeb URLs:
http://cvs.savannah.gnu.org/viewcvs/emacs/src/callproc.c?cvsroot=emacs&r1=1.244&r2=1.245

Patches:
Index: callproc.c
===================================================================
RCS file: /sources/emacs/emacs/src/callproc.c,v
retrieving revision 1.244
retrieving revision 1.245
diff -u -b -r1.244 -r1.245
--- callproc.c  18 Jan 2009 03:28:36 -0000      1.244
+++ callproc.c  30 Jan 2009 05:17:33 -0000      1.245
@@ -104,7 +104,11 @@
 Lisp_Object Vexec_path, Vexec_directory, Vexec_suffixes;
 Lisp_Object Vdata_directory, Vdoc_directory;
 Lisp_Object Vconfigure_info_directory, Vshared_game_score_directory;
-Lisp_Object Vtemp_file_name_pattern;
+
+/* Pattern used by call-process-region to make temp files.  */
+static Lisp_Object Vtemp_file_name_pattern;
+
+extern Lisp_Object Vtemporary_file_directory;
 
 Lisp_Object Vshell_file_name;
 
@@ -882,36 +886,32 @@
   Lisp_Object coding_systems;
   Lisp_Object val, *args2;
   int i;
-#ifdef DOS_NT
   char *tempfile;
-  char *outf = '\0';
+  Lisp_Object tmpdir, pattern;
 
+  if (STRINGP (Vtemporary_file_directory))
+    tmpdir = Vtemporary_file_directory;
+  else
+    {
+#ifndef DOS_NT
+      if (getenv ("TMPDIR"))
+       tmpdir = build_string (getenv ("TMPDIR"));
+      else
+       tmpdir = build_string ("/tmp/");
+#else /* DOS_NT */
+      char *outf;
   if ((outf = egetenv ("TMPDIR"))
       || (outf = egetenv ("TMP"))
       || (outf = egetenv ("TEMP")))
-    strcpy (tempfile = alloca (strlen (outf) + 20), outf);
-  else
-    {
-      tempfile = alloca (20);
-      *tempfile = '\0';
-    }
-  if (!IS_DIRECTORY_SEP (tempfile[strlen (tempfile) - 1]))
-    strcat (tempfile, "/");
-  if ('/' == DIRECTORY_SEP)
-    dostounix_filename (tempfile);
+       tmpdir = build_string (outf);
   else
-    unixtodos_filename (tempfile);
-#ifdef WINDOWSNT
-  strcat (tempfile, "emXXXXXX");
-#else
-  strcat (tempfile, "detmp.XXX");
+       tmpdir = Ffile_name_as_directory (build_string ("c:/temp"));
 #endif
-#else /* not DOS_NT */
-  char *tempfile = (char *) alloca (SBYTES (Vtemp_file_name_pattern) + 1);
-  bcopy (SDATA (Vtemp_file_name_pattern), tempfile,
-        SBYTES (Vtemp_file_name_pattern) + 1);
-#endif /* not DOS_NT */
+    }
 
+  pattern = Fexpand_file_name (Vtemp_file_name_pattern, tmpdir);
+  tempfile = (char *) alloca (SBYTES (pattern) + 1);
+  bcopy (SDATA (pattern), tempfile, SBYTES (pattern) + 1);
   coding_systems = Qt;
 
 #ifdef HAVE_MKSTEMP
@@ -1537,16 +1537,6 @@
   sh = (char *) getenv ("SHELL");
   Vshell_file_name = build_string (sh ? sh : "/bin/sh");
 
-  if (getenv ("TMPDIR"))
-    {
-      char *dir = getenv ("TMPDIR");
-      Vtemp_file_name_pattern
-       = Fexpand_file_name (build_string ("emacsXXXXXX"),
-                            build_string (dir));
-    }
-  else
-    Vtemp_file_name_pattern = build_string ("/tmp/emacsXXXXXX");
-
 #ifdef DOS_NT
   Vshared_game_score_directory = Qnil;
 #else
@@ -1584,6 +1574,15 @@
   staticpro (&Qbuffer_file_type);
 #endif /* DOS_NT */
 
+#ifndef DOS_NT
+  Vtemp_file_name_pattern = build_string ("emacsXXXXXX");
+#elif defined (WINDOWSNT)
+  Vtemp_file_name_pattern = build_string ("emXXXXXX");
+#else
+  Vtemp_file_name_pattern = build_string ("detmp.XXX");
+#endif
+  staticpro (&Vtemp_file_name_pattern);
+
   DEFVAR_LISP ("shell-file-name", &Vshell_file_name,
               doc: /* *File name to load inferior shells from.
 Initialized from the SHELL environment variable, or to a system-dependent
@@ -1627,11 +1626,6 @@
   Vshared_game_score_directory = build_string (PATH_GAME);
 #endif
 
-  DEFVAR_LISP ("temp-file-name-pattern", &Vtemp_file_name_pattern,
-              doc: /* Pattern for making names for temporary files.
-This is used by `call-process-region'.  */);
-  /* This variable is initialized in init_callproc.  */
-
   DEFVAR_LISP ("initial-environment", &Vinitial_environment,
               doc: /* List of environment variables inherited from the parent 
process.
 Each element should be a string of the form ENVVARNAME=VALUE.




reply via email to

[Prev in Thread] Current Thread [Next in Thread]