}
/****************************************************************************
-open the group mapping tdb
+ Open the group mapping tdb.
****************************************************************************/
+
BOOL init_group_mapping(void)
{
static pid_t local_pid;
char *vstring = "INFO/version";
-
- if (tdb && local_pid == sys_getpid()) return True;
+ int32 vers_id;
+
+ if (tdb && local_pid == sys_getpid())
+ return True;
tdb = tdb_open_log(lock_path("group_mapping.tdb"), 0, TDB_DEFAULT, O_RDWR|O_CREAT, 0600);
if (!tdb) {
DEBUG(0,("Failed to open group mapping database\n"));
/* handle a Samba upgrade */
tdb_lock_bystring(tdb, vstring);
- if (tdb_fetch_int(tdb, vstring) != DATABASE_VERSION) {
+
+ /* Cope with byte-reversed older versions of the db. */
+ vers_id = tdb_fetch_int32(tdb, vstring);
+ if ((vers_id != DATABASE_VERSION) && (IREV(vers_id) == DATABASE_VERSION)) {
+ /* Written on a bigendian machine with old fetch_int code. Save as le. */
+ tdb_store_int32(tdb, vstring, DATABASE_VERSION);
+ vers_id = DATABASE_VERSION;
+ }
+
+ if (vers_id != DATABASE_VERSION) {
tdb_traverse(tdb, tdb_traverse_delete_fn, NULL);
- tdb_store_int(tdb, vstring, DATABASE_VERSION);
+ tdb_store_int32(tdb, vstring, DATABASE_VERSION);
}
+
tdb_unlock_bystring(tdb, vstring);
/* write a list of default groups */
free(path);
- loadtime = tdb_fetch_int(tdb, "/LOADTIME/");
+ loadtime = tdb_fetch_int32(tdb, "/LOADTIME/");
if (loadtime == -1 || loadtime < st.st_mtime) {
load_msg(msg_path);
- tdb_store_int(tdb, "/LOADTIME/", (int)time(NULL));
+ tdb_store_int32(tdb, "/LOADTIME/", (int)time(NULL));
}
free(msg_path);
#define DATABASE_VERSION 1
/****************************************************************************
-open the account policy tdb
+ Open the account policy tdb.
****************************************************************************/
+
BOOL init_account_policy(void)
{
static pid_t local_pid;
char *vstring = "INFO/version";
- if (tdb && local_pid == sys_getpid()) return True;
+ if (tdb && local_pid == sys_getpid())
+ return True;
tdb = tdb_open_log(lock_path("account_policy.tdb"), 0, TDB_DEFAULT, O_RDWR|O_CREAT, 0600);
if (!tdb) {
DEBUG(0,("Failed to open account policy database\n"));
/* handle a Samba upgrade */
tdb_lock_bystring(tdb, vstring);
- if (tdb_fetch_int(tdb, vstring) != DATABASE_VERSION) {
+ if (tdb_fetch_int32(tdb, vstring) != DATABASE_VERSION) {
tdb_traverse(tdb, tdb_traverse_delete_fn, NULL);
- tdb_store_int(tdb, vstring, DATABASE_VERSION);
+ tdb_store_int32(tdb, vstring, DATABASE_VERSION);
account_policy_set(AP_MIN_PASSWORD_LEN, MINPASSWDLENGTH); /* 5 chars minimum */
account_policy_set(AP_PASSWORD_HISTORY, 0); /* don't keep any old password */
}
tdb_unlock_bystring(tdb, vstring);
-
return True;
}
init_account_policy();
fstrcpy(name, decode_account_policy_name(field));
- *value=tdb_fetch_int(tdb, name);
+ *value=tdb_fetch_int32(tdb, name);
DEBUG(10,("account_policy_get: %s:%d\n", name, *value));
return True;
}
init_account_policy();
fstrcpy(name, decode_account_policy_name(field));
- if ( tdb_store_int(tdb, name, value)== -1)
+ if ( tdb_store_int32(tdb, name, value)== -1)
return False;
DEBUG(10,("account_policy_set: %s:%d\n", name, value));
/* handle a Samba upgrade */
tdb_lock_bystring(tdb_drivers, vstring);
- if (tdb_fetch_int(tdb_drivers, vstring) != NTDRIVERS_DATABASE_VERSION) {
-
- if (tdb_fetch_int(tdb_drivers, vstring) == NTDRIVERS_DATABASE_VERSION_1) {
- if (!upgrade_to_version_2())
- return False;
- } else
- tdb_traverse(tdb_drivers, tdb_traverse_delete_fn, NULL);
+ {
+ int32 vers_id;
+
+ /* Cope with byte-reversed older versions of the db. */
+ vers_id = tdb_fetch_int32(tdb_drivers, vstring);
+ if ((vers_id != NTDRIVERS_DATABASE_VERSION) && (IREV(vers_id) == NTDRIVERS_DATABASE_VERSION)) {
+ /* Written on a bigendian machine with old fetch_int code. Save as le. */
+ tdb_store_int32(tdb_drivers, vstring, NTDRIVERS_DATABASE_VERSION);
+ vers_id = NTDRIVERS_DATABASE_VERSION;
+ }
+
+ if (vers_id != NTDRIVERS_DATABASE_VERSION) {
- tdb_store_int(tdb_drivers, vstring, NTDRIVERS_DATABASE_VERSION);
+ if ((vers_id == NTDRIVERS_DATABASE_VERSION_1) || (IREV(vers_id) == NTDRIVERS_DATABASE_VERSION_1)) {
+ if (!upgrade_to_version_2())
+ return False;
+ } else
+ tdb_traverse(tdb_drivers, tdb_traverse_delete_fn, NULL);
+
+ tdb_store_int32(tdb_drivers, vstring, NTDRIVERS_DATABASE_VERSION);
+ }
}
tdb_unlock_bystring(tdb_drivers, vstring);
static int get_queue_status(int, print_status_struct *);
/****************************************************************************
-initialise the printing backend. Called once at startup.
-Does not survive a fork
+ Initialise the printing backend. Called once at startup.
+ Does not survive a fork
****************************************************************************/
+
BOOL print_backend_init(void)
{
char *sversion = "INFO/version";
/* handle a Samba upgrade */
tdb_lock_bystring(tdb, sversion);
- if (tdb_fetch_int(tdb, sversion) != PRINT_DATABASE_VERSION) {
+ if (tdb_fetch_int32(tdb, sversion) != PRINT_DATABASE_VERSION) {
tdb_traverse(tdb, tdb_traverse_delete_fn, NULL);
- tdb_store_int(tdb, sversion, PRINT_DATABASE_VERSION);
+ tdb_store_int32(tdb, sversion, PRINT_DATABASE_VERSION);
}
tdb_unlock_bystring(tdb, sversion);
{
fstring key;
slprintf(key, sizeof(key)-1, "CACHE/%s", lp_servicename(snum));
- tdb_store_int(tdb, key, -1);
+ tdb_store_int32(tdb, key, -1);
}
/****************************************************************************
*/
slprintf(cachestr, sizeof(cachestr)-1, "CACHE/%s", printer_name);
- tdb_store_int(tdb, cachestr, (int)time(NULL));
+ tdb_store_int32(tdb, cachestr, (int)time(NULL));
/* get the current queue using the appropriate interface */
ZERO_STRUCT(status);
safe_free(tstruct.queue);
- tdb_store_int(tdb, "INFO/total_jobs", tstruct.total_jobs);
+ tdb_store_int32(tdb, "INFO/total_jobs", tstruct.total_jobs);
/*
* Get the old print status. We will use this to compare the
*/
slprintf(keystr, sizeof(keystr)-1, "CACHE/%s", printer_name);
- tdb_store_int(tdb, keystr, (int)time(NULL));
+ tdb_store_int32(tdb, keystr, (int)time(NULL));
/* Delete our pid from the db. */
set_updating_pid(printer_name, True);
time_t t2, t = time(NULL);
slprintf(key, sizeof(key)-1, "CACHE/%s", lp_servicename(snum));
- t2 = tdb_fetch_int(tdb, key);
+ t2 = tdb_fetch_int32(tdb, key);
if (t2 == ((time_t)-1) || (t - t2) >= lp_lpqcachetime()) {
DEBUG(3, ("print cache expired for queue %s \
(last_cache = %d, time now = %d, qcachetime = %d)\n", lp_servicename(snum),
/* make sure the database is up to date */
if (print_cache_expired(snum)) print_queue_update(snum);
- total_jobs = tdb_fetch_int(tdb, "INFO/total_jobs");
+ total_jobs = tdb_fetch_int32(tdb, "INFO/total_jobs");
if (total_jobs >0)
return total_jobs;
else
/* lock the database */
tdb_lock_bystring(tdb, "INFO/nextjob");
- next_jobid = tdb_fetch_int(tdb, "INFO/nextjob");
+ next_jobid = tdb_fetch_int32(tdb, "INFO/nextjob");
if (next_jobid == -1)
next_jobid = 1;
goto fail;
}
- tdb_store_int(tdb, "INFO/nextjob", jobid);
+ tdb_store_int32(tdb, "INFO/nextjob", jobid);
/* we have a job entry - now create the spool file */
slprintf(pjob.filename, sizeof(pjob.filename)-1, "%s/%s%.6d.XXXXXX",
BOOL share_info_db_init(void)
{
- static pid_t local_pid;
- char *vstring = "INFO/version";
+ static pid_t local_pid;
+ char *vstring = "INFO/version";
+ int32 vers_id;
- if (share_tdb && local_pid == sys_getpid()) return True;
- share_tdb = tdb_open_log(lock_path("share_info.tdb"), 0, TDB_DEFAULT, O_RDWR|O_CREAT, 0600);
- if (!share_tdb) {
- DEBUG(0,("Failed to open share info database %s (%s)\n",
- lock_path("share_info.tdb"), strerror(errno) ));
- return False;
- }
+ if (share_tdb && local_pid == sys_getpid())
+ return True;
+ share_tdb = tdb_open_log(lock_path("share_info.tdb"), 0, TDB_DEFAULT, O_RDWR|O_CREAT, 0600);
+ if (!share_tdb) {
+ DEBUG(0,("Failed to open share info database %s (%s)\n",
+ lock_path("share_info.tdb"), strerror(errno) ));
+ return False;
+ }
- local_pid = sys_getpid();
+ local_pid = sys_getpid();
- /* handle a Samba upgrade */
- tdb_lock_bystring(share_tdb, vstring);
- if (tdb_fetch_int(share_tdb, vstring) != SHARE_DATABASE_VERSION) {
- tdb_traverse(share_tdb, tdb_traverse_delete_fn, NULL);
- tdb_store_int(share_tdb, vstring, SHARE_DATABASE_VERSION);
- }
- tdb_unlock_bystring(share_tdb, vstring);
+ /* handle a Samba upgrade */
+ tdb_lock_bystring(share_tdb, vstring);
+
+ /* Cope with byte-reversed older versions of the db. */
+ vers_id = tdb_fetch_int32(share_tdb, vstring);
+ if ((vers_id != SHARE_DATABASE_VERSION) && (IREV(vers_id) == SHARE_DATABASE_VERSION)) {
+ /* Written on a bigendian machine with old fetch_int code. Save as le. */
+ tdb_store_int32(share_tdb, vstring, SHARE_DATABASE_VERSION);
+ vers_id = SHARE_DATABASE_VERSION;
+ }
+
+ if (vers_id != SHARE_DATABASE_VERSION) {
+ tdb_traverse(share_tdb, tdb_traverse_delete_fn, NULL);
+ tdb_store_int32(share_tdb, vstring, SHARE_DATABASE_VERSION);
+ }
+ tdb_unlock_bystring(share_tdb, vstring);
message_register(MSG_SMB_CONF_UPDATED, smb_conf_updated);
- return True;
+ return True;
}
/*******************************************************************