summaryrefslogtreecommitdiffstats
path: root/src/update.c
diff options
context:
space:
mode:
authorTimo Teras <timo.teras@iki.fi>2009-04-16 20:05:22 +0300
committerTimo Teras <timo.teras@iki.fi>2009-04-16 20:05:22 +0300
commit4c2bfd9dedab2533cbfc9c2bf4f827eb5f5f51a6 (patch)
tree6d58d85eda5acf760e1dc6d19bbaa3cd68b00baf /src/update.c
parentaaa3c227b85756dd5c338c2cd156935c12a4a013 (diff)
downloadapk-tools-4c2bfd9dedab2533cbfc9c2bf4f827eb5f5f51a6.tar.bz2
apk-tools-4c2bfd9dedab2533cbfc9c2bf4f827eb5f5f51a6.tar.xz
db: cache index files, 'update' applet
Cache non-local index files always locally. Introduce 'update' applet to force refresh of cached index files. Fixes #19.
Diffstat (limited to 'src/update.c')
-rw-r--r--src/update.c41
1 files changed, 41 insertions, 0 deletions
diff --git a/src/update.c b/src/update.c
new file mode 100644
index 0000000..4351653
--- /dev/null
+++ b/src/update.c
@@ -0,0 +1,41 @@
+/* update.c - Alpine Package Keeper (APK)
+ *
+ * Copyright (C) 2005-2008 Natanael Copa <n@tanael.org>
+ * Copyright (C) 2008 Timo Teräs <timo.teras@iki.fi>
+ * All rights reserved.
+ *
+ * This program is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 as published
+ * by the Free Software Foundation. See http://www.gnu.org/ for details.
+ */
+
+#include <stdio.h>
+#include "apk_defines.h"
+#include "apk_applet.h"
+#include "apk_database.h"
+#include "apk_version.h"
+
+static int update_main(void *ctx, int argc, char **argv)
+{
+ struct apk_database db;
+ int i;
+
+ if (apk_db_open(&db, apk_root, APK_OPENF_READ) < 0)
+ return -1;
+
+ for (i = 0; i < db.num_repos; i++)
+ apk_repository_update(&db, &db.repos[i]);
+
+ apk_db_close(&db);
+
+ return 0;
+}
+
+static struct apk_applet apk_update = {
+ .name = "update",
+ .usage = "",
+ .main = update_main,
+};
+
+APK_DEFINE_APPLET(apk_update);
+