diff options
Diffstat (limited to 'source3')
-rw-r--r-- | source3/printing/nt_printing.c | 5 | ||||
-rw-r--r-- | source3/registry/reg_db.c | 26 |
2 files changed, 17 insertions, 14 deletions
diff --git a/source3/printing/nt_printing.c b/source3/printing/nt_printing.c index 75473c39f2..2146448ae3 100644 --- a/source3/printing/nt_printing.c +++ b/source3/printing/nt_printing.c @@ -412,12 +412,11 @@ static BOOL upgrade_to_version_4(void) BOOL nt_printing_init(void) { - static pid_t local_pid; const char *vstring = "INFO/version"; WERROR win_rc; uint32 vers_id; - if (tdb_drivers && tdb_printers && tdb_forms && local_pid == sys_getpid()) + if ( tdb_drivers && tdb_printers && tdb_forms ) return True; if (tdb_drivers) @@ -447,8 +446,6 @@ BOOL nt_printing_init(void) return False; } - local_pid = sys_getpid(); - /* handle a Samba upgrade */ tdb_lock_bystring(tdb_drivers, vstring, 0); diff --git a/source3/registry/reg_db.c b/source3/registry/reg_db.c index a459aa5f5f..ce44e490ab 100644 --- a/source3/registry/reg_db.c +++ b/source3/registry/reg_db.c @@ -55,6 +55,8 @@ static const char *builtin_registry_paths[] = { "HKU", "HKCR", NULL }; + +#define REGVER_V1 1 /* first db version with write support */ /*********************************************************************** Open the registry data in the tdb @@ -125,15 +127,15 @@ static BOOL init_registry_data( void ) BOOL init_registry_db( void ) { - static pid_t local_pid; + const char *vstring = "INFO/version"; + uint32 vers_id; - if (tdb_reg && local_pid == sys_getpid()) + if ( tdb_reg ) return True; /* placeholder tdb; reinit upon startup */ - tdb_reg = tdb_open_log(lock_path("registry.tdb"), 0, TDB_DEFAULT|TDB_CLEAR_IF_FIRST, O_RDWR, 0600); - if ( !tdb_reg ) + if ( !(tdb_reg = tdb_open_log(lock_path("registry.tdb"), 0, TDB_DEFAULT, O_RDWR, 0600)) ) { tdb_reg = tdb_open_log(lock_path("registry.tdb"), 0, TDB_DEFAULT, O_RDWR|O_CREAT, 0600); if ( !tdb_reg ) { @@ -145,15 +147,19 @@ BOOL init_registry_db( void ) DEBUG(10,("init_registry: Successfully created registry tdb\n")); } - /* create the registry here */ - if ( !init_registry_data() ) { - DEBUG(0,("init_registry: Failed to initiailize data in registry!\n")); - return False; + vers_id = tdb_fetch_int32(tdb_reg, vstring); + + if ( vers_id != REGVER_V1 ) { + + /* create the registry here */ + + if ( !init_registry_data() ) { + DEBUG(0,("init_registry: Failed to initiailize data in registry!\n")); + return False; + } } - local_pid = sys_getpid(); - return True; } |