1.1 --- a/src/rpm.c Fri Jul 03 19:06:29 2009 +0100
1.2 +++ b/src/rpm.c Sat Feb 11 09:34:40 2012 +0000
1.3 @@ -1,7 +1,7 @@
1.4 /*
1.5 * Copyright (C) 2008 Kristian Høgsberg <krh@redhat.com>
1.6 * Copyright (C) 2008 Red Hat, Inc
1.7 - * Copyright (C) 2009 J. Ali Harlow <ali@juiblex.co.uk>
1.8 + * Copyright (C) 2009, 2011 J. Ali Harlow <ali@juiblex.co.uk>
1.9 *
1.10 * This program is free software; you can redistribute it and/or modify
1.11 * it under the terms of the GNU General Public License as published by
1.12 @@ -441,13 +441,16 @@
1.13 create_set_from_command_line(int argc, const char *argv[])
1.14 {
1.15 struct razor_importer *importer;
1.16 + struct razor_atomic *atomic;
1.17 struct razor_rpm *rpm;
1.18 int i;
1.19
1.20 importer = razor_importer_create();
1.21
1.22 for (i = 0; i < argc; i++) {
1.23 - rpm = razor_rpm_open(argv[i]);
1.24 + atomic = razor_atomic_open("Read RPM");
1.25 + rpm = razor_rpm_open(argv[i], atomic);
1.26 + razor_atomic_destroy(atomic);
1.27 if (rpm == NULL)
1.28 continue;
1.29 if (razor_importer_add_rpm(importer, rpm))
1.30 @@ -462,17 +465,25 @@
1.31 static void
1.32 command_query(int argc, const char *argv[])
1.33 {
1.34 + struct razor_atomic *atomic;
1.35 struct razor_set *set;
1.36 struct razor_package_iterator *pi;
1.37 struct razor_package *package;
1.38 const char *name, *version, *arch;
1.39
1.40 + atomic = razor_atomic_open("Query packages");
1.41 if (option_package) {
1.42 set = create_set_from_command_line(argc, argv);
1.43 argc = 0;
1.44 option_all = 1;
1.45 } else {
1.46 - set = razor_root_open_read_only(option_root);
1.47 + set = razor_root_open_read_only(option_root, atomic);
1.48 + if (!set) {
1.49 + fprintf(stderr, "%s\n",
1.50 + razor_atomic_get_error_msg(atomic));
1.51 + razor_atomic_destroy(atomic);
1.52 + return;
1.53 + }
1.54 }
1.55
1.56 pi = get_query_packages(set, argc, argv);
1.57 @@ -509,25 +520,32 @@
1.58
1.59 razor_package_iterator_destroy(pi);
1.60
1.61 - razor_set_destroy(set);
1.62 -
1.63 - return;
1.64 + razor_set_unref(set);
1.65 + razor_atomic_destroy(atomic);
1.66 }
1.67
1.68 static void
1.69 command_verify(int argc, const char *argv[])
1.70 {
1.71 + struct razor_atomic *atomic;
1.72 struct razor_set *set;
1.73 struct razor_package_iterator *pi;
1.74 struct razor_package *package;
1.75 const char *name, *version, *arch;
1.76
1.77 + atomic = razor_atomic_open("Verify packages");
1.78 if (option_package) {
1.79 set = create_set_from_command_line(argc, argv);
1.80 argc = 0;
1.81 option_all = 1;
1.82 } else {
1.83 - set = razor_root_open_read_only(option_root);
1.84 + set = razor_root_open_read_only(option_root, atomic);
1.85 + if (!set) {
1.86 + fprintf(stderr, "%s\n",
1.87 + razor_atomic_get_error_msg(atomic));
1.88 + razor_atomic_destroy(atomic);
1.89 + return;
1.90 + }
1.91 }
1.92
1.93 pi = get_query_packages(set, argc, argv);
1.94 @@ -542,6 +560,7 @@
1.95 }
1.96
1.97 razor_package_iterator_destroy(pi);
1.98 + razor_atomic_destroy(atomic);
1.99 }
1.100
1.101 static void
1.102 @@ -561,6 +580,7 @@
1.103 static void
1.104 command_erase(int argc, const char *argv[])
1.105 {
1.106 + struct razor_atomic *atomic;
1.107 struct razor_set *set, *upstream, *next;
1.108 struct razor_transaction *trans;
1.109 struct razor_package_query *query;
1.110 @@ -572,7 +592,15 @@
1.111 exit(1);
1.112 }
1.113
1.114 - set = razor_set_open(repo_filename);
1.115 + atomic = razor_atomic_open("Erase packages");
1.116 +
1.117 + set = razor_set_open(repo_filename, atomic);
1.118 + if (!set || razor_atomic_commit(atomic)) {
1.119 + fprintf(stderr, "%s\n", razor_atomic_get_error_msg(atomic));
1.120 + razor_atomic_destroy(atomic);
1.121 + exit(1);
1.122 + }
1.123 + razor_atomic_destroy(atomic);
1.124 upstream = razor_set_create();
1.125
1.126 trans = razor_transaction_create(set, upstream);
1.127 @@ -602,15 +630,16 @@
1.128 razor_set_diff(set, next, update_package, NULL);
1.129
1.130 razor_transaction_destroy(trans);
1.131 - razor_set_destroy(set);
1.132 - razor_set_destroy(upstream);
1.133 + razor_set_unref(set);
1.134 + razor_set_unref(upstream);
1.135
1.136 - razor_set_destroy(next);
1.137 + razor_set_unref(next);
1.138 }
1.139
1.140 static void
1.141 command_install(int argc, const char *argv[])
1.142 {
1.143 + struct razor_atomic *atomic;
1.144 struct razor_set *set, *upstream, *next;
1.145 struct razor_transaction *trans;
1.146 struct razor_package_iterator *pi;
1.147 @@ -621,7 +650,14 @@
1.148 exit(1);
1.149 }
1.150
1.151 - set = razor_set_open(repo_filename);
1.152 + atomic = razor_atomic_open("Install packages");
1.153 +
1.154 + set = razor_set_open(repo_filename, atomic);
1.155 + if (!set || razor_atomic_commit(atomic)) {
1.156 + fprintf(stderr, "%s\n", razor_atomic_get_error_msg(atomic));
1.157 + razor_atomic_destroy(atomic);
1.158 + }
1.159 + razor_atomic_destroy(atomic);
1.160 upstream = create_set_from_command_line(argc, argv);
1.161
1.162 trans = razor_transaction_create(set, upstream);
1.163 @@ -648,15 +684,16 @@
1.164 razor_set_diff(set, next, update_package, NULL);
1.165
1.166 razor_transaction_destroy(trans);
1.167 - razor_set_destroy(set);
1.168 - razor_set_destroy(upstream);
1.169 + razor_set_unref(set);
1.170 + razor_set_unref(upstream);
1.171
1.172 - razor_set_destroy(next);
1.173 + razor_set_unref(next);
1.174 }
1.175
1.176 static void
1.177 command_update(int argc, const char *argv[])
1.178 {
1.179 + struct razor_atomic *atomic;
1.180 struct razor_set *set, *upstream, *next;
1.181 struct razor_transaction *trans;
1.182 struct razor_package_iterator *pi;
1.183 @@ -667,7 +704,14 @@
1.184 exit(1);
1.185 }
1.186
1.187 - set = razor_set_open(repo_filename);
1.188 + atomic = razor_atomic_open("Update packages");
1.189 +
1.190 + set = razor_set_open(repo_filename, atomic);
1.191 + if (!set || razor_atomic_commit(atomic)) {
1.192 + fprintf(stderr, "%s\n", razor_atomic_get_error_msg(atomic));
1.193 + razor_atomic_destroy(atomic);
1.194 + }
1.195 + razor_atomic_destroy(atomic);
1.196 upstream = create_set_from_command_line(argc, argv);
1.197
1.198 trans = razor_transaction_create(set, upstream);
1.199 @@ -694,10 +738,10 @@
1.200 razor_set_diff(set, next, update_package, NULL);
1.201
1.202 razor_transaction_destroy(trans);
1.203 - razor_set_destroy(set);
1.204 - razor_set_destroy(upstream);
1.205 + razor_set_unref(set);
1.206 + razor_set_unref(upstream);
1.207
1.208 - razor_set_destroy(next);
1.209 + razor_set_unref(next);
1.210 }
1.211
1.212 static int