summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTimo Teras <timo.teras@iki.fi>2009-01-20 14:30:07 +0200
committerTimo Teras <timo.teras@iki.fi>2009-01-20 14:30:07 +0200
commit46430ceb5607ac9e395432648c6a8c1a7cbceaf1 (patch)
tree21c8b479a06ac2809612f8919cc9c5acf28a0703
parentaee61d0a0b37e56457d1c4cfd48c04552e9ed315 (diff)
downloadapk-tools-46430ceb5607ac9e395432648c6a8c1a7cbceaf1.tar.gz
apk-tools-46430ceb5607ac9e395432648c6a8c1a7cbceaf1.tar.bz2
apk-tools-46430ceb5607ac9e395432648c6a8c1a7cbceaf1.tar.xz
apk-tools-46430ceb5607ac9e395432648c6a8c1a7cbceaf1.zip
pkg: use absolute filenames for packages
-rw-r--r--src/package.c9
1 files changed, 7 insertions, 2 deletions
diff --git a/src/package.c b/src/package.c
index d4147ff..25f09d6 100644
--- a/src/package.c
+++ b/src/package.c
@@ -13,6 +13,7 @@
#include <fcntl.h>
#include <ctype.h>
#include <stdio.h>
+#include <limits.h>
#include <malloc.h>
#include <string.h>
#include <stdlib.h>
@@ -325,12 +326,16 @@ struct apk_package *apk_pkg_read(struct apk_database *db, const char *file)
{
struct read_info_ctx ctx;
struct apk_bstream *bs;
+ char realfile[PATH_MAX];
+
+ if (realpath(file, realfile) < 0)
+ return NULL;
ctx.pkg = apk_pkg_new();
if (ctx.pkg == NULL)
return NULL;
- bs = apk_bstream_from_file(file);
+ bs = apk_bstream_from_file(realfile);
if (bs == NULL)
goto err;
@@ -355,7 +360,7 @@ struct apk_package *apk_pkg_read(struct apk_database *db, const char *file)
};
apk_deps_add(&ctx.pkg->depends, &dep);
}
- ctx.pkg->filename = strdup(file);
+ ctx.pkg->filename = strdup(realfile);
return ctx.pkg;
err: