db: make apk_wait a part of dbopts

cute-signatures
Natanael Copa 2010-03-06 19:22:01 +00:00
parent 7aed449427
commit 36d1bfb4ed
3 changed files with 8 additions and 8 deletions

View File

@ -235,7 +235,7 @@ int main(int argc, char **argv)
struct apk_applet *applet;
char short_options[256], *sopt;
struct option *opt, *all_options;
int r, optindex, num_options, apk_wait = 0;
int r, optindex, num_options;
void *ctx = NULL;
struct apk_repository_list *repo = NULL;
struct apk_database db;
@ -328,7 +328,7 @@ int main(int argc, char **argv)
apk_flags |= APK_PURGE;
break;
case 0x105:
apk_wait = atoi(optarg);
dbopts.lock_wait = atoi(optarg);
break;
case 0x109:
apk_flags |= APK_NO_NETWORK;
@ -356,7 +356,7 @@ int main(int argc, char **argv)
argv++;
}
r = apk_db_open(&db, &dbopts, apk_wait);
r = apk_db_open(&db, &dbopts);
if (r != 0) {
apk_error("Failed to open apk database: %s",
apk_error_str(r));

View File

@ -90,6 +90,7 @@ struct apk_repository_list {
};
struct apk_db_options {
int lock_wait;
unsigned long open_flags;
char *root;
char *keys_dir;
@ -155,7 +156,7 @@ struct apk_db_file *apk_db_file_query(struct apk_database *db,
APK_OPENF_NO_SCRIPTS | \
APK_OPENF_NO_WORLD)
int apk_db_open(struct apk_database *db, struct apk_db_options *dbopts, int apk_wait);
int apk_db_open(struct apk_database *db, struct apk_db_options *dbopts);
void apk_db_close(struct apk_database *db);
int apk_db_write_config(struct apk_database *db);
int apk_db_run_triggers(struct apk_database *db);

View File

@ -1025,8 +1025,7 @@ static void handle_alarm(int sig)
{
}
int apk_db_open(struct apk_database *db, struct apk_db_options *dbopts,
int apk_wait)
int apk_db_open(struct apk_database *db, struct apk_db_options *dbopts)
{
const char *msg = NULL;
struct apk_repository_list *repo = NULL;
@ -1086,7 +1085,7 @@ int apk_db_open(struct apk_database *db, struct apk_db_options *dbopts,
if (db->lock_fd < 0 ||
flock(db->lock_fd, LOCK_EX | LOCK_NB) < 0) {
msg = "Unable to lock database";
if (apk_wait) {
if (dbopts->lock_wait) {
struct sigaction sa, old_sa;
apk_message("Waiting for repository lock");
@ -1095,7 +1094,7 @@ int apk_db_open(struct apk_database *db, struct apk_db_options *dbopts,
sa.sa_flags = SA_ONESHOT;
sigaction(SIGALRM, &sa, &old_sa);
alarm(apk_wait);
alarm(dbopts->lock_wait);
if (flock(db->lock_fd, LOCK_EX) < 0)
goto ret_errno;