do not fork the uuidgen program, use kernel interface instead
authorMichael Andres <ma@suse.de>
Mon, 2 Jul 2012 15:09:54 +0000 (17:09 +0200)
committerMichael Andres <ma@suse.de>
Mon, 2 Jul 2012 15:09:54 +0000 (17:09 +0200)
libzypp.spec.cmake
zypp/target/TargetImpl.cc

index d93dd96..f9313d5 100644 (file)
@@ -93,7 +93,6 @@ Requires:       rpm
 
 %if 0%{?suse_version}
 BuildRequires:  rpm-devel
-Requires:       /usr/bin/uuidgen
 %endif
 
 %if 0%{?fedora_version} || 0%{?rhel_version} >= 600 || 0%{?centos_version} >= 600
@@ -105,8 +104,6 @@ BuildRequires:  rpm-devel
 %if 0%{?mandriva_version}
 BuildRequires:  glib2-devel
 BuildRequires:  librpm-devel
-# uuidgen
-Requires:       e2fsprogs
 %endif
 
 %if 0%{?suse_version}
index e72bc75..ec1744b 100644 (file)
@@ -669,29 +669,10 @@ namespace zypp
     /**
      * generates a random id using uuidgen
      */
-    static string generateRandomId()
+    static std::string generateRandomId()
     {
-      string id;
-      const char* argv[] =
-      {
-         "/usr/bin/uuidgen",
-         NULL
-      };
-
-      ExternalProgram prog( argv,
-                            ExternalProgram::Normal_Stderr,
-                            false, -1, true);
-      std::string line;
-      for(line = prog.receiveLine();
-          ! line.empty();
-          line = prog.receiveLine() )
-      {
-          MIL << line << endl;
-          id = line;
-          break;
-      }
-      prog.close();
-      return id;
+      std::ifstream uuidprovider( "/proc/sys/kernel/random/uuid" );
+      return iostr::getline( uuidprovider );
     }
 
     /**