]> git.pld-linux.org Git - packages/nss_db.git/commitdiff
- add -makedb-atomic.patch from fc/centos AC-branch auto/ac/nss_db-2_2_3-0_pre1_10
authorElan Ruusamäe <glen@pld-linux.org>
Mon, 22 Feb 2010 17:36:13 +0000 (17:36 +0000)
committercvs2git <feedback@pld-linux.org>
Sun, 24 Jun 2012 12:13:13 +0000 (12:13 +0000)
Changed files:
    nss_db-makedb-atomic.patch -> 1.1
    nss_db.spec -> 1.40

nss_db-makedb-atomic.patch [new file with mode: 0644]
nss_db.spec

diff --git a/nss_db-makedb-atomic.patch b/nss_db-makedb-atomic.patch
new file mode 100644 (file)
index 0000000..55c2715
--- /dev/null
@@ -0,0 +1,57 @@
+from fc cvs:
+
+revision 1.1
+date: 2008/08/07 16:51:58;  author: nalin;  state: Exp;
+- create and populate new db files, moving them in place afterward (patch
+  from Kelsey Cummings, CentOS #1987)
+
+--- nss_db-2.2/src/makedb.c    2008-08-04 14:21:06.000000000 -0700
++++ nss_db-2.2/src/makedb.c    2008-08-04 14:24:08.000000000 -0700
+@@ -31,6 +31,7 @@
+ #include <stdlib.h>
+ #include <string.h>
+ #include <sys/stat.h>
++#include <unistd.h>
+ #ifdef SELINUX
+ #include <selinux/selinux.h>
+@@ -110,6 +111,7 @@
+ main (int argc, char *argv[])
+ {
+   const char *input_name;
++  char *output_name_temp;
+   FILE *input_file;
+   DB *db_file;
+   int status;
+@@ -184,10 +186,17 @@
+       mode = st.st_mode & ACCESSPERMS;
+     }
++  /* Get name for tempfile using output_name and pid */
++  status = asprintf(&output_name_temp,"%s.%s.%d",output_name,"tmp",getpid());
++  if ( status < 0 )
++  {
++     error (EXIT_FAILURE, 0, gettext ("cannot generate temp file name"));
++  }  
++
+   /* Open output file.  This must not be standard output so we don't
+      handle "-" and "/dev/stdout" special.  */
+   set_file_creation_context (output_name, mode);
+-  status = db_open (output_name, DB_BTREE, DB_CREATE | DB_TRUNCATE, mode,
++  status = db_open (output_name_temp, DB_BTREE, DB_CREATE | DB_TRUNCATE, mode,
+                   NULL, NULL, &db_file);
+   set_file_creation_context (NULL, 0);
+   if (status)
+@@ -203,6 +212,12 @@
+     fclose (input_file);
+   db_file->close (db_file, 0);
++  /* all done, move temp file over real file */
++  status = rename(output_name_temp,output_name);
++  if ( status < 0 )
++    error (EXIT_FAILURE, errno, gettext ("cannot rename `%s' to `%s'"),
++           output_name_temp, output_name);
++
+   return status;
+ }
index 69c4920176beb87e25816bd941a8f2d4c7b1c932..cf46b59114d9e2681c629985a46389559e6b9873 100644 (file)
@@ -27,6 +27,7 @@ Patch6:               %{name}-enoent.patch
 Patch7:                %{name}-uniqdb.patch
 Patch8:                %{name}-initialize.patch
 Patch9:                %{name}-selinux.patch
+Patch10:       %{name}-makedb-atomic.patch
 Patch101:      http://www.oracle.com/technology/products/berkeley-db/db/update/4.6.21/patch.4.6.21.1
 Patch102:      http://www.oracle.com/technology/products/berkeley-db/db/update/4.6.21/patch.4.6.21.2
 Patch103:      http://www.oracle.com/technology/products/berkeley-db/db/update/4.6.21/patch.4.6.21.3
@@ -65,6 +66,7 @@ glibc-2.2.x.
 %patch7 -p1
 %patch8 -p1
 %patch9 -p1
+%patch10 -p1
 
 mkdir db-build
 cd db-%{db_version}
This page took 0.062064 seconds and 4 git commands to generate.