aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorNatanael Copa <ncopa@alpinelinux.org>2009-07-07 11:12:24 +0200
committerNatanael Copa <ncopa@alpinelinux.org>2009-07-09 06:08:44 +0000
commit080fa825ddf932cf95ef38ffa2107e3a99d49610 (patch)
tree19692ca0e69738437c4b02feb9ee97ec5a77a202 /src
parentf1125dfcde748300846f9fba07f29791ec980c1a (diff)
downloadapk-tools-080fa825ddf932cf95ef38ffa2107e3a99d49610.tar.bz2
apk-tools-080fa825ddf932cf95ef38ffa2107e3a99d49610.tar.xz
implement --update-cache option
This will update the repository cache upon db_open.
Diffstat (limited to 'src')
-rw-r--r--src/apk.c4
-rw-r--r--src/apk_defines.h1
-rw-r--r--src/cache.c1
-rw-r--r--src/database.c8
4 files changed, 12 insertions, 2 deletions
diff --git a/src/apk.c b/src/apk.c
index 6e21072..93be9df 100644
--- a/src/apk.c
+++ b/src/apk.c
@@ -41,6 +41,7 @@ static struct apk_option generic_options[] = {
{ 'v', "verbose", "Print more information" },
{ 'V', "version", "Print program version and exit" },
{ 'f', "force", "Do what was asked even if it looks dangerous" },
+ { 'U', "update-cache", "Update the repository cache" },
{ 0x101, "progress", "Show a progress bar" },
{ 0x102, "clean-protected", "Do not create .apk-new files to "
"configuration dirs" },
@@ -324,6 +325,9 @@ int main(int argc, char **argv)
case 'f':
apk_flags |= APK_FORCE;
break;
+ case 'U':
+ apk_flags |= APK_UPDATE_CACHE;
+ break;
case 0x101:
apk_flags |= APK_PROGRESS;
break;
diff --git a/src/apk_defines.h b/src/apk_defines.h
index 09d2a80..755d971 100644
--- a/src/apk_defines.h
+++ b/src/apk_defines.h
@@ -46,6 +46,7 @@ extern unsigned int apk_flags;
#define APK_UPGRADE 0x0010
#define APK_RECURSIVE 0x0020
#define APK_PREFER_AVAILABLE 0x0040
+#define APK_UPDATE_CACHE 0x0080
#define apk_error(args...) apk_log("ERROR: ", args);
#define apk_warning(args...) if (apk_verbosity > 0) { apk_log("WARNING: ", args); }
diff --git a/src/cache.c b/src/cache.c
index 2e9dda7..6efbfe1 100644
--- a/src/cache.c
+++ b/src/cache.c
@@ -11,6 +11,7 @@
#include <dirent.h>
#include <unistd.h>
+#include <stdio.h>
#include "apk_defines.h"
#include "apk_applet.h"
diff --git a/src/database.c b/src/database.c
index 729d604..2b20c8f 100644
--- a/src/database.c
+++ b/src/database.c
@@ -1026,7 +1026,7 @@ int apk_db_add_repository(apk_database_t _db, apk_blob_t repository)
struct apk_istream *is = NULL;
struct apk_bstream *bs = NULL;
struct apk_repository *repo;
- int r, n;
+ int r, n = 1;
if (repository.ptr == NULL || *repository.ptr == '\0'
|| *repository.ptr == '#')
@@ -1045,9 +1045,13 @@ int apk_db_add_repository(apk_database_t _db, apk_blob_t repository)
if (apk_url_local_file(repo->url) == NULL) {
csum_blob(repository, repo->url_csum);
+ if (apk_flags & APK_UPDATE_CACHE)
+ n = apk_repository_update(db, repo);
+
bs = apk_db_cache_open(db, repo->url_csum, apk_index_gz);
if (bs == NULL) {
- n = apk_repository_update(db, repo);
+ if (n == 1)
+ n = apk_repository_update(db, repo);
if (n < 0)
return n;
bs = apk_db_cache_open(db, repo->url_csum,