commit:     9b91c470b01b140c71d1cad71460c63c50faa342
Author:     Fabian Groffen <grobian <AT> gentoo <DOT> org>
AuthorDate: Sat Mar 31 18:27:19 2018 +0000
Commit:     Fabian Groffen <grobian <AT> gentoo <DOT> org>
CommitDate: Sat Mar 31 18:27:19 2018 +0000
URL:        https://gitweb.gentoo.org/proj/portage-utils.git/commit/?id=9b91c470

qlop: document and format to fit on 80 chars, some style

 qlop.c                 | 99 +++++++++++++++++++++++++++++++-------------------
 tests/qlop/aborts.log  | 71 ++++++++++++++++++++++++++++++++++++
 tests/qlop/list09.good |  3 ++
 3 files changed, 136 insertions(+), 37 deletions(-)

diff --git a/qlop.c b/qlop.c
index c01b3be..c7ad42f 100644
--- a/qlop.c
+++ b/qlop.c
@@ -89,6 +89,7 @@ show_merge_times(char *package, const char *logfile, int 
average, char human_rea
        count = merge_time = 0;
        cat[0] = 0;
 
+       /* setup cat and pkg vars */
        if ((p = strchr(package, '/')) != NULL) {
                pkg = p + 1;
                strncpy(cat, package, sizeof(cat));
@@ -103,51 +104,62 @@ show_merge_times(char *package, const char *logfile, int 
average, char human_rea
                return 1;
        }
 
+       /* loop over lines searching for cat/pkg */
        while (fgets(buf[0], sizeof(buf[0]), fp) != NULL) {
-               if (strstr(buf[0], pkg) == NULL)
-                       continue;
-
                if ((p = strchr(buf[0], '\n')) != NULL)
-                       *p = 0;
+                       *p = '\0';
                if ((p = strchr(buf[0], ':')) == NULL)
                        continue;
-               *p = 0;
+               *p++ = '\0';
+               if (strstr(p, pkg) == NULL)
+                       continue;
+
                t[0] = atol(buf[0]);
                if (t[0] < start_time || t[0] > end_time)
                        continue;
-               strcpy(buf[1], p + 1);
+
+               /* copy message (stripping timestamp) */
+               strncpy(buf[1], p, BUFSIZ);
                rmspace(buf[1]);
                if (strncmp(buf[1], ">>> emerge (", 12) == 0) {
+                       /* construct the matching end marker */
                        snprintf(ep, BUFSIZ, "completed %s", &buf[1][4]);
 
-                       char matched = 0;
-                       if ((p = strchr(buf[1], ')')) == NULL)
+                       /* skip over "(X of Y)" */
+                       if ((p = strchr(buf[1], ')')) == NULL) {
+                               *ep = '\0';
                                continue;
-                       *p = 0;
-                       strcpy(buf[0], p + 1);
+                       }
+                       *p++ = '\0';
+
+                       /* get the package as atom */
+                       strncpy(buf[0], p, BUFSIZ);
                        rmspace(buf[0]);
-                       if ((p = strchr(buf[0], ' ')) == NULL)
+                       if ((p = strchr(buf[0], ' ')) == NULL) {
+                               *ep = '\0';
                                continue;
-                       *p = 0;
-                       if ((atom = atom_explode(buf[0])) == NULL)
+                       }
+                       *p = '\0';
+                       if ((atom = atom_explode(buf[0])) == NULL) {
+                               *ep = '\0';
                                continue;
+                       }
 
-                       if (*cat) {
-                               if ((strcmp(cat, atom->CATEGORY) == 0) && 
(strcmp(pkg, atom->PN) == 0))
-                                       matched = 1;
-                       } else if (strcmp(pkg, atom->PN) == 0)
-                               matched = 1;
-
-                       if (matched) {
+                       /* match atom against our search */
+                       if ((*cat && ((strcmp(cat, atom->CATEGORY) == 0) &&
+                                                       (strcmp(pkg, atom->PN) 
== 0))) ||
+                                       (strcmp(pkg, atom->PN) == 0))
+                       {
                                parallel_emerge = 0;
                                while (fgets(buf[0], sizeof(buf[0]), fp) != 
NULL) {
                                        if ((p = strchr(buf[0], '\n')) != NULL)
-                                               *p = 0;
+                                               *p = '\0';
                                        if ((p = strchr(buf[0], ':')) == NULL)
                                                continue;
-                                       *p = 0;
+                                       *p++ = '\0';
+
                                        t[1] = atol(buf[0]);
-                                       strcpy(buf[1], p + 1);
+                                       strcpy(buf[1], p);
                                        rmspace(buf[1]);
 
                                        if (strncmp(buf[1], "Started emerge 
on:", 18) == 0) {
@@ -166,19 +178,25 @@ show_merge_times(char *package, const char *logfile, int 
average, char human_rea
                                                        break;
                                        }
 
-                                       /*
-                                        * pay attention to malformed log files 
(when the end of an emerge process
-                                        * is not indicated by the line '*** 
terminating'). We assume than the log is
-                                        * malformed when we find a parallel 
emerge process which is trying to
-                                        * emerge the same package
+                                       /* pay attention to malformed log files 
(when the
+                                        * end of an emerge process is not 
indicated by the
+                                        * line '*** terminating'). We assume 
than the log
+                                        * is malformed when we find a parallel 
emerge
+                                        * process which is trying to emerge 
the same
+                                        * package
                                         */
-                                       if (strncmp(buf[1], ">>> emerge (", 12) 
== 0 && parallel_emerge > 0) {
+                                       if (strncmp(buf[1], ">>> emerge (", 12) 
== 0 &&
+                                                       parallel_emerge > 0)
+                                       {
+                                               /* find package name */
                                                p = strchr(buf[1], ')');
                                                q = strchr(ep, ')');
                                                if (!p || !q)
                                                        continue;
 
-                                               if (!strcmp(p, q)) {
+                                               /* is this emerge doing the 
same thing as we're
+                                                * looking for? that means we 
failed */
+                                               if (strcmp(p, q) == 0) {
                                                        parallel_emerge--;
                                                        /* update the main 
emerge reference data */
                                                        snprintf(ep, BUFSIZ, 
"completed %s", &buf[1][4]);
@@ -186,21 +204,28 @@ show_merge_times(char *package, const char *logfile, int 
average, char human_rea
                                                }
                                        }
 
-                                       if (strncmp(&buf[1][4], ep, BUFSIZ) == 
0) {
+                                       /* if this line matches "completed 
emerge (X of Y) ..."
+                                        * we're finally somewhere */
+                                       if (strncmp(&buf[1][4], ep, BUFSIZ - 4) 
== 0) {
                                                if (!average) {
-                                                       strcpy(buf[1], "");
+                                                       buf[1][0] = '\0';
                                                        if (verbose) {
                                                                if 
(atom->PR_int)
-                                                                       
snprintf(buf[1], sizeof(buf[1]), "-%s-r%i", atom->PV,  atom->PR_int);
+                                                                       
snprintf(buf[1], sizeof(buf[1]),
+                                                                               
        "-%s-r%i", atom->PV,  atom->PR_int);
                                                                else
-                                                                       
snprintf(buf[1], sizeof(buf[1]), "-%s", atom->PV);
+                                                                       
snprintf(buf[1], sizeof(buf[1]),
+                                                                               
        "-%s", atom->PV);
                                                        }
-                                                       printf("%s%s%s%s: %s: 
", BLUE, atom->PN, buf[1], NORM, chop_ctime(t[0]));
+                                                       printf("%s%s%s%s: %s: ",
+                                                                       BLUE, 
atom->PN, buf[1], NORM,
+                                                                       
chop_ctime(t[0]));
                                                        if (human_readable)
                                                                
print_seconds_for_earthlings(t[1] - t[0]);
                                                        else
-                                                               
printf("%s%"PRIu64"%s seconds", GREEN, (uint64_t)(t[1] - t[0]), NORM);
-                                                       puts("");
+                                                               
printf("%s%"PRIu64"%s seconds",
+                                                                               
GREEN, (uint64_t)(t[1] - t[0]), NORM);
+                                                       printf("\n");
                                                }
                                                merge_time += (t[1] - t[0]);
                                                count++;

diff --git a/tests/qlop/aborts.log b/tests/qlop/aborts.log
new file mode 100644
index 0000000..1808cc6
--- /dev/null
+++ b/tests/qlop/aborts.log
@@ -0,0 +1,71 @@
+1364819649:  >>> emerge (6 of 12) sys-devel/automake-1.11.6 to /
+1364819649:  === (6 of 12) Cleaning 
(sys-devel/automake-1.11.6::/usr/portage/sys-devel/automake/automake-1.11.6.ebuild)
+1364819649:  === (6 of 12) Compiling/Merging 
(sys-devel/automake-1.11.6::/usr/portage/sys-devel/automake/automake-1.11.6.ebuild)
+1364822878:  === (6 of 12) Merging 
(sys-devel/automake-1.11.6::/usr/portage/sys-devel/automake/automake-1.11.6.ebuild)
+1364822879:  >>> AUTOCLEAN: sys-devel/automake:1.11
+1364822879:  === Unmerging... (sys-devel/automake-1.11.6)
+1364822879:  >>> unmerge success: sys-devel/automake-1.11.6
+1364822881:  === (6 of 12) Post-Build Cleaning 
(sys-devel/automake-1.11.6::/usr/portage/sys-devel/automake/automake-1.11.6.ebuild)
+1364822881:  ::: completed emerge (6 of 12) sys-devel/automake-1.11.6 to /
+1364822881:  >>> emerge (7 of 12) sys-devel/automake-1.9.6-r3 to /
+1364822881:  === (7 of 12) Cleaning 
(sys-devel/automake-1.9.6-r3::/usr/portage/sys-devel/automake/automake-1.9.6-r3.ebuild)
+1364822881:  === (7 of 12) Compiling/Merging 
(sys-devel/automake-1.9.6-r3::/usr/portage/sys-devel/automake/automake-1.9.6-r3.ebuild)
+1364823762: Started emerge on: Apr 01, 2013 15:42:41
+1364823762:  *** emerge --update --verbose --rebuild-if-new-rev --newuse 
--complete-graph --with-bdeps=y --deep world
+1364823859:  >>> emerge (1 of 3) app-arch/libarchive-3.1.2-r1 to /
+1364823859:  === (1 of 3) Cleaning 
(app-arch/libarchive-3.1.2-r1::/usr/portage/app-arch/libarchive/libarchive-3.1.2-r1.ebuild)
+1364823860:  === (1 of 3) Compiling/Merging 
(app-arch/libarchive-3.1.2-r1::/usr/portage/app-arch/libarchive/libarchive-3.1.2-r1.ebuild)
+1364823988:  === (1 of 3) Merging 
(app-arch/libarchive-3.1.2-r1::/usr/portage/app-arch/libarchive/libarchive-3.1.2-r1.ebuild)
+1364823989:  >>> AUTOCLEAN: app-arch/libarchive:0
+1364823989:  === Unmerging... (app-arch/libarchive-3.0.4-r1)
+1364823991:  >>> unmerge success: app-arch/libarchive-3.0.4-r1
+1364823992:  === (1 of 3) Post-Build Cleaning 
(app-arch/libarchive-3.1.2-r1::/usr/portage/app-arch/libarchive/libarchive-3.1.2-r1.ebuild)
+1364823992:  ::: completed emerge (1 of 3) app-arch/libarchive-3.1.2-r1 to /
+1364823992:  >>> emerge (2 of 3) app-emulation/winetricks-947 to /
+1364823992:  === (2 of 3) Cleaning 
(app-emulation/winetricks-947::/usr/portage/app-emulation/winetricks/winetricks-947.ebuild)
+1364823992:  === (2 of 3) Compiling/Merging 
(app-emulation/winetricks-947::/usr/portage/app-emulation/winetricks/winetricks-947.ebuild)
+1364823995:  === (2 of 3) Merging 
(app-emulation/winetricks-947::/usr/portage/app-emulation/winetricks/winetricks-947.ebuild)
+1364823996:  >>> AUTOCLEAN: app-emulation/winetricks:0
+1364823996:  === Unmerging... (app-emulation/winetricks-941)
+1364823996:  >>> unmerge success: app-emulation/winetricks-941
+1364823997:  === (2 of 3) Post-Build Cleaning 
(app-emulation/winetricks-947::/usr/portage/app-emulation/winetricks/winetricks-947.ebuild)
+1364823997:  ::: completed emerge (2 of 3) app-emulation/winetricks-947 to /
+1364823997:  >>> emerge (3 of 3) dev-util/cmake-2.8.9 to /
+1364823997:  === (3 of 3) Cleaning 
(dev-util/cmake-2.8.9::/usr/portage/dev-util/cmake/cmake-2.8.9.ebuild)
+1364823997:  === (3 of 3) Compiling/Merging 
(dev-util/cmake-2.8.9::/usr/portage/dev-util/cmake/cmake-2.8.9.ebuild)
+1364824573:  === (3 of 3) Merging 
(dev-util/cmake-2.8.9::/usr/portage/dev-util/cmake/cmake-2.8.9.ebuild)
+1364824576:  >>> AUTOCLEAN: dev-util/cmake:0
+1364824576:  === Unmerging... (dev-util/cmake-2.8.9)
+1364824577:  >>> unmerge success: dev-util/cmake-2.8.9
+1364824578:  === (3 of 3) Post-Build Cleaning 
(dev-util/cmake-2.8.9::/usr/portage/dev-util/cmake/cmake-2.8.9.ebuild)
+1364824578:  ::: completed emerge (3 of 3) dev-util/cmake-2.8.9 to /
+1364824578:  *** Finished. Cleaning up...
+1364824580:  *** exiting successfully.
+1364824580:  *** terminating.
+1368795479: Started emerge on: May 17, 2013 14:57:59
+1368795479:  *** emerge --update --verbose --rebuild-if-new-rev --newuse 
--complete-graph --with-bdeps=y --deep world
+1368795519:  >>> emerge (1 of 2) sys-devel/automake-1.9.6-r3 to /
+1368795519:  === (1 of 2) Cleaning 
(sys-devel/automake-1.9.6-r3::/usr/portage/sys-devel/automake/automake-1.9.6-r3.ebuild)
+1368795519:  === (1 of 2) Compiling/Merging 
(sys-devel/automake-1.9.6-r3::/usr/portage/sys-devel/automake/automake-1.9.6-r3.ebuild)
+1368796964:  === (1 of 2) Merging 
(sys-devel/automake-1.9.6-r3::/usr/portage/sys-devel/automake/automake-1.9.6-r3.ebuild)
+1368796965:  >>> AUTOCLEAN: sys-devel/automake:1.9
+1368796966:  === (1 of 2) Post-Build Cleaning 
(sys-devel/automake-1.9.6-r3::/usr/portage/sys-devel/automake/automake-1.9.6-r3.ebuild)
+1368796966:  ::: completed emerge (1 of 2) sys-devel/automake-1.9.6-r3 to /
+1368796966:  >>> emerge (2 of 2) app-mobilephone/obexftp-0.23-r1 to /
+1368796966:  === (2 of 2) Cleaning 
(app-mobilephone/obexftp-0.23-r1::/usr/portage/app-mobilephone/obexftp/obexftp-0.23-r1.ebuild)
+1368796966:  === (2 of 2) Compiling/Merging 
(app-mobilephone/obexftp-0.23-r1::/usr/portage/app-mobilephone/obexftp/obexftp-0.23-r1.ebuild)
+1368796985:  === (2 of 2) Merging 
(app-mobilephone/obexftp-0.23-r1::/usr/portage/app-mobilephone/obexftp/obexftp-0.23-r1.ebuild)
+1368796986:  >>> AUTOCLEAN: app-mobilephone/obexftp:0
+1368796986:  === Unmerging... (app-mobilephone/obexftp-0.23-r1)
+1368796987:  >>> unmerge success: app-mobilephone/obexftp-0.23-r1
+1368796988:  === (2 of 2) Post-Build Cleaning 
(app-mobilephone/obexftp-0.23-r1::/usr/portage/app-mobilephone/obexftp/obexftp-0.23-r1.ebuild)
+1368796988:  ::: completed emerge (2 of 2) app-mobilephone/obexftp-0.23-r1 to /
+1368796988:  *** Finished. Cleaning up...
+1368796990:  *** exiting successfully.
+1368796990:  *** terminating.
+1368799175: Started emerge on: May 17, 2013 15:59:35
+1368799175:  *** emerge --oneshot automake:1.12 automake:1.11 automake:1.9 
libtool:2 binutils glibc:2.2 gcc:4.6
+1368799182:  >>> emerge (1 of 7) sys-devel/automake-1.12.6 to /
+1368799182:  === (1 of 7) Cleaning 
(sys-devel/automake-1.12.6::/usr/portage/sys-devel/automake/automake-1.12.6.ebuild)
+1368799183:  === (1 of 7) Compiling/Merging 
(sys-devel/automake-1.12.6::/usr/portage/sys-devel/automake/automake-1.12.6.ebuild)
+1368799266:  *** terminating.

diff --git a/tests/qlop/list09.good b/tests/qlop/list09.good
new file mode 100644
index 0000000..333d7ad
--- /dev/null
+++ b/tests/qlop/list09.good
@@ -0,0 +1,3 @@
+automake-1.11.6: Mon Apr  1 12:34:09 2013: 53 minutes, 52 seconds
+automake-1.9.6-r3: Fri May 17 12:58:39 2013: 24 minutes, 7 seconds
+automake: 2 times

Reply via email to