[Groonga-commit] groonga/groonga [master] Define GRN_MKOSTEMP.

Back to archive index

null+****@clear***** null+****@clear*****
2012年 2月 24日 (金) 07:05:43 JST


Daijiro MORI	2012-02-24 07:05:43 +0900 (Fri, 24 Feb 2012)

  New Revision: 17036219086403106190a4716d3ed4fcdbddbe0e

  Log:
    Define GRN_MKOSTEMP.

  Modified files:
    lib/groonga_in.h
    lib/ii.c

  Modified: lib/groonga_in.h (+15 -1)
===================================================================
--- lib/groonga_in.h    2012-02-23 20:44:15 +0900 (6a02b6a)
+++ lib/groonga_in.h    2012-02-24 07:05:43 +0900 (8cd9e16)
@@ -375,7 +375,7 @@ typedef int grn_cond;
 #endif /* WIN32 */
 
 #ifdef __GNUC__
-
+# include <features.h>
 # if (defined(__i386__) || defined(__x86_64__)) /* ATOMIC ADD */
 #  define GRN_ATOMIC_ADD_EX(p,i,r) \
   __asm__ __volatile__ ("lock; xaddl %0,%1" : "=r"(r), "=m"(*p) : "0"(i), "m" (*p))
@@ -414,6 +414,13 @@ typedef int grn_cond;
   (void)atomic_swap_64(p, v)
 # endif /* ATOMIC 64BIT SET */
 
+# if __GNUC_PREREQ(2, 7)
+#  define GRN_MKOSTEMP mkostemp
+# else /* __GNUC_PREREQ(2, 7) */
+#  define GRN_MKOSTEMP(template,flags) \
+  (mktemp(template), open((template),flags))
+# endif /* __GNUC_PREREQ(2, 7) */
+
 #elif (defined(WIN32) || defined (_WIN64)) /* __GNUC__ */
 
 # define GRN_ATOMIC_ADD_EX(p,i,r) \
@@ -444,6 +451,9 @@ typedef int grn_cond;
 # define GRN_BIT_SCAN_REV(v,r)   for (r = 31; r && !((1 << r) & v); r--)
 # define GRN_BIT_SCAN_REV0 GRN_BIT_SCAN_REV
 
+# define GRN_MKOSTEMP(template,flags) \
+  (mktemp(template), open((template),((flags)|O_BINARY)))
+
 #else /* __GNUC__ */
 
 # if (defined(__sun) && defined(__SVR4)) /* ATOMIC ADD */
@@ -461,6 +471,10 @@ typedef int grn_cond;
 /* todo */
 # define GRN_BIT_SCAN_REV(v,r)   for (r = 31; r && !((1 << r) & v); r--)
 # define GRN_BIT_SCAN_REV0 GRN_BIT_SCAN_REV
+
+# define GRN_MKOSTEMP(template,flags) \
+  (mktemp(template), open((template),flags))
+
 #endif /* __GNUC__ */
 
 typedef uint8_t byte;

  Modified: lib/ii.c (+2 -8)
===================================================================
--- lib/ii.c    2012-02-23 20:44:15 +0900 (f4e2031)
+++ lib/ii.c    2012-02-24 07:05:43 +0900 (e41bc97)
@@ -7097,14 +7097,8 @@ grn_ii_buffer_open(grn_ctx *ctx, grn_ii *ii,
           snprintf(ii_buffer->tmpfpath, PATH_MAX,
                    "%sXXXXXX", grn_io_path(ii->seg));
           ii_buffer->block_buf_size = II_BUFFER_BLOCK_SIZE;
-#ifdef WIN32
-          mktemp(ii_buffer->tmpfpath);
-          ii_buffer->tmpfd = open(ii_buffer->tmpfpath,
-                                  O_WRONLY|O_CREAT|O_TRUNC|O_BINARY);
-#else /* WIN32 */
-          ii_buffer->tmpfd = mkostemp(ii_buffer->tmpfpath,
-                                      O_WRONLY|O_CREAT|O_TRUNC);
-#endif /* WIN32 */
+          ii_buffer->tmpfd = GRN_MKOSTEMP(ii_buffer->tmpfpath,
+                                          O_WRONLY|O_CREAT|O_TRUNC);
           if (ii_buffer->tmpfd != -1) {
             grn_obj_flags flags;
             grn_table_get_info(ctx, ii->lexicon, &flags, NULL, NULL);




Groonga-commit メーリングリストの案内
Back to archive index