[PATCH] inspection: deb: Seperate epoch field from version
Return it in the app2_epoch field of the guestfs_application2 struct Signed-off-by: Nikos Skalkotos <skalkoto@gmail.com> --- src/inspect-apps.c | 25 +++++++++++++++++-------- 1 file changed, 17 insertions(+), 8 deletions(-) diff --git a/src/inspect-apps.c b/src/inspect-apps.c index 8e645b7..bd4e6c1 100644 --- a/src/inspect-apps.c +++ b/src/inspect-apps.c @@ -439,6 +439,7 @@ list_applications_deb (guestfs_h *g, struct inspect_fs *fs) FILE *fp; char line[1024]; size_t len; + int32_t epoch = 0; CLEANUP_FREE char *name = NULL, *version = NULL, *release = NULL, *arch = NULL; int installed_flag = 0; @@ -482,23 +483,31 @@ list_applications_deb (guestfs_h *g, struct inspect_fs *fs) else if (STRPREFIX (line, "Version: ")) { free (version); free (release); - char *p = strchr (&line[9], '-'); - if (p) { - *p = '\0'; - version = safe_strdup (g, &line[9]); - release = safe_strdup (g, p+1); + char *p1, *p2; + p1 = strchr (&line[9], ':'); + if (p1) { + *p1++ = '\0'; + epoch = guestfs___parse_unsigned_int (g, &line[9]); /* -1 on error */ + } else { + p1 = &line[9]; + epoch = 0; + } + p2 = strchr (p1, '-'); + if (p2) { + *p2++ = '\0'; + release = safe_strdup (g, p2); } else { - version = safe_strdup (g, &line[9]); release = NULL; } + version = safe_strdup (g, p1); } else if (STRPREFIX (line, "Architecture: ")) { free (arch); arch = safe_strdup (g, &line[14]); } else if (STREQ (line, "")) { - if (installed_flag && name && version) - add_application (g, apps, name, "", 0, version, release ? : "", + if (installed_flag && name && version && (epoch >= 0)) + add_application (g, apps, name, "", epoch, version, release ? : "", arch ? : "", "", "", "", ""); free (name); free (version); -- 2.1.3
On Mon, Nov 17, 2014 at 10:48:01PM +0000, Nikos Skalkotos wrote:
Return it in the app2_epoch field of the guestfs_application2 struct
Signed-off-by: Nikos Skalkotos <skalkoto@gmail.com> --- src/inspect-apps.c | 25 +++++++++++++++++-------- 1 file changed, 17 insertions(+), 8 deletions(-)
diff --git a/src/inspect-apps.c b/src/inspect-apps.c index 8e645b7..bd4e6c1 100644 --- a/src/inspect-apps.c +++ b/src/inspect-apps.c @@ -439,6 +439,7 @@ list_applications_deb (guestfs_h *g, struct inspect_fs *fs) FILE *fp; char line[1024]; size_t len; + int32_t epoch = 0; CLEANUP_FREE char *name = NULL, *version = NULL, *release = NULL, *arch = NULL; int installed_flag = 0;
@@ -482,23 +483,31 @@ list_applications_deb (guestfs_h *g, struct inspect_fs *fs) else if (STRPREFIX (line, "Version: ")) { free (version); free (release); - char *p = strchr (&line[9], '-'); - if (p) { - *p = '\0'; - version = safe_strdup (g, &line[9]); - release = safe_strdup (g, p+1); + char *p1, *p2; + p1 = strchr (&line[9], ':'); + if (p1) { + *p1++ = '\0'; + epoch = guestfs___parse_unsigned_int (g, &line[9]); /* -1 on error */ + } else { + p1 = &line[9]; + epoch = 0; + } + p2 = strchr (p1, '-'); + if (p2) { + *p2++ = '\0'; + release = safe_strdup (g, p2); } else { - version = safe_strdup (g, &line[9]); release = NULL; } + version = safe_strdup (g, p1); } else if (STRPREFIX (line, "Architecture: ")) { free (arch); arch = safe_strdup (g, &line[14]); } else if (STREQ (line, "")) { - if (installed_flag && name && version) - add_application (g, apps, name, "", 0, version, release ? : "", + if (installed_flag && name && version && (epoch >= 0)) + add_application (g, apps, name, "", epoch, version, release ? : "", arch ? : "", "", "", "", ""); free (name); free (version);
Thanks - I have pushed this. Rich. -- Richard Jones, Virtualization Group, Red Hat http://people.redhat.com/~rjones Read my programming and virtualization blog: http://rwmj.wordpress.com virt-builder quickly builds VMs from scratch http://libguestfs.org/virt-builder.1.html
participants (2)
-
Nikos Skalkotos -
Richard W.M. Jones