]> granicus.if.org Git - vim/commitdiff
updated for version 7.2-294 v7.2.294
authorBram Moolenaar <Bram@vim.org>
Tue, 17 Nov 2009 11:08:52 +0000 (11:08 +0000)
committerBram Moolenaar <Bram@vim.org>
Tue, 17 Nov 2009 11:08:52 +0000 (11:08 +0000)
src/auto/configure
src/config.h.in
src/configure.in
src/fileio.c
src/version.c

index 85d7da56413514dea1dc2c2d78f267b9f7867f1e..eb683c14a5d31655b2d837a70b0687ef7ed6447d 100755 (executable)
 
 
 
+
 
 
 for ac_func in bcmp fchdir fchown fseeko fsync ftello getcwd getpseudotty \
        getpwnam getpwuid getrlimit gettimeofday getwd lstat memcmp \
-       memset nanosleep opendir putenv qsort readlink select setenv \
+       memset mkdtemp nanosleep opendir putenv qsort readlink select setenv \
        setpgid setsid sigaltstack sigstack sigset sigsetjmp sigaction \
        sigvec strcasecmp strerror strftime stricmp strncasecmp \
        strnicmp strpbrk strtol tgetent towlower towupper iswupper \
index b603c23c72f903688d8d988e77f97117bfd34601..0d39b438804f6a7ccf52e0597d2f47e3aa90f81c 100644 (file)
 #undef HAVE_LSTAT
 #undef HAVE_MEMCMP
 #undef HAVE_MEMSET
+#undef HAVE_MKDTEMP
 #undef HAVE_NANOSLEEP
 #undef HAVE_OPENDIR
 #undef HAVE_FLOAT_FUNCS
index fa58c6e75014df07a4ae96249aa76314f63a0e9b..f994677b82f426d60a5e2f17e076b864a442a2d9 100644 (file)
@@ -2635,7 +2635,7 @@ fi
 dnl Check for functions in one big call, to reduce the size of configure
 AC_CHECK_FUNCS(bcmp fchdir fchown fseeko fsync ftello getcwd getpseudotty \
        getpwnam getpwuid getrlimit gettimeofday getwd lstat memcmp \
-       memset nanosleep opendir putenv qsort readlink select setenv \
+       memset mkdtemp nanosleep opendir putenv qsort readlink select setenv \
        setpgid setsid sigaltstack sigstack sigset sigsetjmp sigaction \
        sigvec strcasecmp strerror strftime stricmp strncasecmp \
        strnicmp strpbrk strtol tgetent towlower towupper iswupper \
index 5deb1a3984f13c320dbe27623d1c568205d3e948..e7d1c75b4980e5d54fb16c55b9987410fc2e83bb 100644 (file)
@@ -146,6 +146,7 @@ static int get_mac_fio_flags __ARGS((char_u *ptr));
 # endif
 #endif
 static int move_lines __ARGS((buf_T *frombuf, buf_T *tobuf));
+static void vim_settempdir __ARGS((char_u *tempdir));
 #ifdef FEAT_AUTOCMD
 static char *e_auchangedbuf = N_("E812: Autocommands changed buffer or buffer name");
 #endif
@@ -6986,6 +6987,33 @@ vim_deltempdir()
 }
 #endif
 
+/*
+ * Directory "tempdir" was created.  Expand this name to a full path and put
+ * it in "vim_tempdir".  This avoids that using ":cd" would confuse us.
+ * "tempdir" must be no longer than MAXPATHL.
+ */
+    static void
+vim_settempdir(tempdir)
+    char_u     *tempdir;
+{
+    char_u     *buf;
+
+    buf = alloc((unsigned)MAXPATHL + 2);
+    if (buf != NULL)
+    {
+       if (vim_FullName(tempdir, buf, MAXPATHL, FALSE) == FAIL)
+           STRCPY(buf, tempdir);
+# ifdef __EMX__
+       if (vim_strchr(buf, '/') != NULL)
+           STRCAT(buf, "/");
+       else
+# endif
+           add_pathsep(buf);
+       vim_tempdir = vim_strsave(buf);
+       vim_free(buf);
+    }
+}
+
 /*
  * vim_tempname(): Return a unique name that can be used for a temp file.
  *
@@ -7007,8 +7035,6 @@ vim_tempname(extra_char)
 #ifdef TEMPDIRNAMES
     static char        *(tempdirs[]) = {TEMPDIRNAMES};
     int                i;
-    long       nr;
-    long       off;
 # ifndef EEXIST
     struct stat        st;
 # endif
@@ -7027,6 +7053,12 @@ vim_tempname(extra_char)
         */
        for (i = 0; i < (int)(sizeof(tempdirs) / sizeof(char *)); ++i)
        {
+           size_t      itmplen;
+# ifndef HAVE_MKDTEMP
+           long        nr;
+           long        off;
+# endif
+
            /* expand $TMP, leave room for "/v1100000/999999999" */
            expand_env((char_u *)tempdirs[i], itmp, TEMPNAMELEN - 20);
            if (mch_isdir(itmp))                /* directory exists */
@@ -7040,7 +7072,14 @@ vim_tempname(extra_char)
                else
 # endif
                    add_pathsep(itmp);
+               itmplen = STRLEN(itmp);
 
+# ifdef HAVE_MKDTEMP
+               /* Leave room for filename */
+               STRCAT(itmp, "vXXXXXX");
+               if (mkdtemp((char *)itmp) != NULL)
+                   vim_settempdir(itmp);
+# else
                /* Get an arbitrary number of up to 6 digits.  When it's
                 * unlikely that it already exists it will be faster,
                 * otherwise it doesn't matter.  The use of mkdir() avoids any
@@ -7052,59 +7091,41 @@ vim_tempname(extra_char)
                for (off = 0; off < 10000L; ++off)
                {
                    int         r;
-#if defined(UNIX) || defined(VMS)
+#  if defined(UNIX) || defined(VMS)
                    mode_t      umask_save;
-#endif
+#  endif
 
-                   sprintf((char *)itmp + STRLEN(itmp), "v%ld", nr + off);
-# ifndef EEXIST
+                   sprintf((char *)itmp + itmplen, "v%ld", nr + off);
+#  ifndef EEXIST
                    /* If mkdir() does not set errno to EEXIST, check for
                     * existing file here.  There is a race condition then,
                     * although it's fail-safe. */
                    if (mch_stat((char *)itmp, &st) >= 0)
                        continue;
-# endif
-#if defined(UNIX) || defined(VMS)
+#  endif
+#  if defined(UNIX) || defined(VMS)
                    /* Make sure the umask doesn't remove the executable bit.
                     * "repl" has been reported to use "177". */
                    umask_save = umask(077);
-#endif
+#  endif
                    r = vim_mkdir(itmp, 0700);
-#if defined(UNIX) || defined(VMS)
+#  if defined(UNIX) || defined(VMS)
                    (void)umask(umask_save);
-#endif
+#  endif
                    if (r == 0)
                    {
-                       char_u  *buf;
-
-                       /* Directory was created, use this name.
-                        * Expand to full path; When using the current
-                        * directory a ":cd" would confuse us. */
-                       buf = alloc((unsigned)MAXPATHL + 1);
-                       if (buf != NULL)
-                       {
-                           if (vim_FullName(itmp, buf, MAXPATHL, FALSE)
-                                                                     == FAIL)
-                               STRCPY(buf, itmp);
-# ifdef __EMX__
-                           if (vim_strchr(buf, '/') != NULL)
-                               STRCAT(buf, "/");
-                           else
-# endif
-                               add_pathsep(buf);
-                           vim_tempdir = vim_strsave(buf);
-                           vim_free(buf);
-                       }
+                       vim_settempdir(itmp);
                        break;
                    }
-# ifdef EEXIST
+#  ifdef EEXIST
                    /* If the mkdir() didn't fail because the file/dir exists,
                     * we probably can't create any dir here, try another
                     * place. */
                    if (errno != EEXIST)
-# endif
+#  endif
                        break;
                }
+# endif /* HAVE_MKDTEMP */
                if (vim_tempdir != NULL)
                    break;
            }
index 2ee84208fc9ca1e1bf52e9f4bc76c1ec12f56100..e98bda8a81a0c976ef98c4e94041907753389cfb 100644 (file)
@@ -681,6 +681,8 @@ static char *(features[]) =
 
 static int included_patches[] =
 {   /* Add new patch number below this line */
+/**/
+    294,
 /**/
     293,
 /**/