summaryrefslogtreecommitdiffstats
path: root/libopkg/pkg.c
diff options
context:
space:
mode:
authorgraham.gower <graham.gower@e8e0d7a0-c8d9-11dd-a880-a1081c7ac358>2009-11-12 00:02:35 (EST)
committer graham.gower <graham.gower@e8e0d7a0-c8d9-11dd-a880-a1081c7ac358>2009-11-12 00:02:35 (EST)
commit332947f2518b71342ebe3719899e83405a79c15d (patch)
tree259a02af63f8b85672a97579c2b779e1b14be506 /libopkg/pkg.c
parent4c22d4a7b34aeea993310a65c6c4c15a15df5646 (diff)
Cleanup version string handling.
git-svn-id: http://opkg.googlecode.com/svn/trunk@286 e8e0d7a0-c8d9-11dd-a880-a1081c7ac358
Diffstat (limited to 'libopkg/pkg.c')
-rw-r--r--libopkg/pkg.c43
1 files changed, 19 insertions, 24 deletions
diff --git a/libopkg/pkg.c b/libopkg/pkg.c
index b1f45dd..bb3da1e 100644
--- a/libopkg/pkg.c
+++ b/libopkg/pkg.c
@@ -945,32 +945,27 @@ int abstract_pkg_name_compare(const void *p1, const void *p2)
}
-char *pkg_version_str_alloc(pkg_t *pkg)
+char *
+pkg_version_str_alloc(pkg_t *pkg)
{
- char *complete_version;
- char *epoch_str;
- char *revision_str;
-
- if (pkg->epoch) {
- sprintf_alloc(&epoch_str, "%d:", pkg->epoch);
- } else {
- epoch_str = xstrdup("");
- }
-
- if (pkg->revision && strlen(pkg->revision)) {
- sprintf_alloc(&revision_str, "-%s", pkg->revision);
- } else {
- revision_str = xstrdup("");
- }
-
-
- sprintf_alloc(&complete_version, "%s%s%s",
- epoch_str, pkg->version, revision_str);
-
- free(epoch_str);
- free(revision_str);
+ char *version;
+
+ if (pkg->epoch) {
+ if (pkg->revision)
+ sprintf_alloc(&version, "%d:%s-%s",
+ pkg->epoch, pkg->version, pkg->revision);
+ else
+ sprintf_alloc(&version, "%d:%s",
+ pkg->epoch, pkg->version);
+ } else {
+ if (pkg->revision)
+ sprintf_alloc(&version, "%s-%s",
+ pkg->version, pkg->revision);
+ else
+ version = xstrdup(pkg->version);
+ }
- return complete_version;
+ return version;
}
str_list_t *pkg_get_installed_files(pkg_t *pkg)