summaryrefslogtreecommitdiff
blob: d5439586388ca9b5ffb74c12bb218b0aa61cc3c3 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
Index: lib/query.c
===================================================================
RCS file: /cvs/devel/rpm/lib/query.c,v
retrieving revision 2.173.2.15
retrieving revision 2.173.2.16
diff -a -u -r2.173.2.15 -r2.173.2.16
--- lib/query.c	8 Oct 2006 21:41:45 -0000	2.173.2.15
+++ lib/query.c	30 Oct 2006 02:50:53 -0000	2.173.2.16
@@ -124,6 +124,28 @@
     return str;
 }
 
+/**
+ */
+static void flushBuffer(char ** tp, char ** tep, int nonewline)
+	/*@ modifies *tp, *tep @*/
+{
+    char *t, *te;
+
+    t = *tp;
+    te = *tep;
+    if (te > t) {
+	if (!nonewline) {
+	    *te++ = '\n';
+	    *te = '\0';
+	}
+	rpmMessage(RPMMESS_NORMAL, "%s", t);
+	te = t;
+	*t = '\0';
+    }
+    *tp = t;
+    *tep = te;
+}
+
 int showQueryPackage(QVA_t qva, rpmts ts, Header h)
 {
     int scareMem = 0;
@@ -131,7 +153,6 @@
     char * t, * te;
     char * prefix = NULL;
     int rc = 0;		/* XXX FIXME: need real return code */
-    int nonewline = 0;
     int i;
 
     te = t = xmalloc(BUFSIZ);
@@ -141,7 +162,6 @@
 
     if (qva->qva_queryFormat != NULL) {
 	const char * str = queryHeader(h, qva->qva_queryFormat);
-	nonewline = 1;
 	/*@-branchstate@*/
 	if (str) {
 	    size_t tb = (te - t);
@@ -157,6 +177,7 @@
 	    /*@=usereleased@*/
 /*@=boundswrite@*/
 	    str = _free(str);
+	    flushBuffer(&t, &te, 1);
 	}
 	/*@=branchstate@*/
     }
@@ -312,31 +333,13 @@
 			_("package has neither file owner or id lists\n"));
 	    }
 	}
-/*@-branchstate@*/
-	if (te > t) {
-/*@-boundswrite@*/
-	    *te++ = '\n';
-	    *te = '\0';
-	    rpmMessage(RPMMESS_NORMAL, "%s", t);
-	    te = t;
-	    *t = '\0';
-/*@=boundswrite@*/
-	}
-/*@=branchstate@*/
+	flushBuffer(&t, &te, 0);
     }
 	    
     rc = 0;
 
 exit:
-    if (te > t) {
-	if (!nonewline) {
-/*@-boundswrite@*/
-	    *te++ = '\n';
-	    *te = '\0';
-/*@=boundswrite@*/
-	}
-	rpmMessage(RPMMESS_NORMAL, "%s", t);
-    }
+    flushBuffer(&t, &te, 0);
     t = _free(t);
 
     fi = rpmfiFree(fi);