1extern void exit (int);
2extern void abort (void);
3
4typedef unsigned int u_int32_t;
5typedef unsigned char u_int8_t;
6typedef int int32_t;
7
8typedef enum {
9        TXNLIST_DELETE,
10        TXNLIST_LSN,
11        TXNLIST_TXNID,
12        TXNLIST_PGNO
13} db_txnlist_type;
14
15struct __db_lsn; typedef struct __db_lsn DB_LSN;
16struct __db_lsn {
17        u_int32_t file;
18        u_int32_t offset;
19};
20struct __db_txnlist; typedef struct __db_txnlist DB_TXNLIST;
21
22struct __db_txnlist {
23        db_txnlist_type type;
24        struct { struct __db_txnlist *le_next; struct __db_txnlist **le_prev; } links;
25        union {
26                struct {
27                        u_int32_t txnid;
28                        int32_t generation;
29                        int32_t aborted;
30                } t;
31                struct {
32
33
34                        u_int32_t flags;
35                        int32_t fileid;
36                        u_int32_t count;
37                        char *fname;
38                } d;
39                struct {
40                        int32_t ntxns;
41                        int32_t maxn;
42                        DB_LSN *lsn_array;
43                } l;
44                struct {
45                        int32_t nentries;
46                        int32_t maxentry;
47                        char *fname;
48                        int32_t fileid;
49                        void *pgno_array;
50                        u_int8_t uid[20];
51                } p;
52        } u;
53};
54
55int log_compare (const DB_LSN *a, const DB_LSN *b)
56{
57  return 1;
58}
59
60
61int
62__db_txnlist_lsnadd(int val, DB_TXNLIST *elp, DB_LSN *lsnp, u_int32_t flags)
63{
64   int i;
65
66   for (i = 0; i < (!(flags & (0x1)) ? 1 : elp->u.l.ntxns); i++)
67     {
68	int __j;
69	DB_LSN __tmp;
70	val++;
71	for (__j = 0; __j < elp->u.l.ntxns - 1; __j++)
72	  if (log_compare(&elp->u.l.lsn_array[__j], &elp->u.l.lsn_array[__j + 1]) < 0)
73	  {
74	     __tmp = elp->u.l.lsn_array[__j];
75	     elp->u.l.lsn_array[__j] = elp->u.l.lsn_array[__j + 1];
76	     elp->u.l.lsn_array[__j + 1] = __tmp;
77	  }
78     }
79
80   *lsnp = elp->u.l.lsn_array[0];
81   return val;
82}
83
84#if defined (STACK_SIZE) && STACK_SIZE < 12350
85#define VLEN (STACK_SIZE/10)
86#else
87#define VLEN 1235
88#endif
89
90int main (void)
91{
92  DB_TXNLIST el;
93  DB_LSN lsn, lsn_a[VLEN];
94
95  el.u.l.ntxns = VLEN-1;
96  el.u.l.lsn_array = lsn_a;
97
98  if (__db_txnlist_lsnadd (0, &el, &lsn, 0) != 1)
99    abort ();
100
101  if (__db_txnlist_lsnadd (0, &el, &lsn, 1) != VLEN-1)
102    abort ();
103
104  exit (0);
105}
106