s/qmail 4.2.29a
Next generation secure email transport
Loading...
Searching...
No Matches
prioq.c
Go to the documentation of this file.
1#include "alloc.h"
2#include "genalloc.h"
3#include "prioq.h"
4
5GEN_ALLOC_readyplus(prioq,struct prioq_elt,p,len,a,i,n,x,100,prioq_readyplus)
6
7int prioq_insert(prioq *pq, struct prioq_elt *pe)
8{
9 int i;
10 int j;
11
12 if (!prioq_readyplus(pq,1)) return 0;
13 j = pq->len++;
14 while (j) {
15 i = (j - 1)/2;
16 if (pq->p[i].dt <= pe->dt) break;
17 pq->p[j] = pq->p[i];
18 j = i;
19 }
20 pq->p[j] = *pe;
21 return 1;
22}
23
24int prioq_min(prioq *pq, struct prioq_elt *pe)
25{
26 if (!pq->p) return 0;
27 if (!pq->len) return 0;
28 *pe = pq->p[0];
29 return 1;
30}
31
32void prioq_delmin(prioq *pq)
33{
34 int i;
35 int j;
36 int n;
37
38 if (!pq->p) return;
39 n = pq->len;
40 if (!n) return;
41 i = 0;
42 --n;
43
44 for (;;) {
45 j = i + i + 2;
46 if (j > n) break;
47 if (pq->p[j - 1].dt <= pq->p[j].dt) --j;
48 if (pq->p[n].dt <= pq->p[j].dt) break;
49 pq->p[i] = pq->p[j];
50 i = j;
51 }
52 pq->p[i] = pq->p[n];
53 pq->len = n;
54}
void p(char *, char *, int, int, int)
Definition: install.c:39
prioq pq
Definition: maildir2mbox.c:24
GEN_ALLOC_readyplus(prioq, struct prioq_elt, p, len, a, i, n, x, 100, prioq_readyplus)
Definition: prioq.c:5
void prioq_delmin()
int prioq_min()
int j
Definition: qmail-send.c:920
Definition: prioq.h:7
datetime_sec dt
Definition: prioq.h:7