-static Z_Records *dummy_database_records (int start, int no_requested,
- int *no_returned,
- int preferredMessageSize)
-{
- static Z_Records rec;
- static int no_records = 0;
- static Z_NamePlusRecordList z_nprl;
- int i, size;
- static Z_NamePlusRecord **records;
-
- rec.which = Z_Records_DBOSD;
- rec.u.databaseOrSurDiagnostics = &z_nprl;
- if (!no_records)
- {
- FILE *inf;
- char *buf;
- Odr_external *oep;
-
- inf = fopen ("dummy-records", "r");
- if (!inf)
- return NULL;
- records = malloc (sizeof(*records) * 50);
- assert (records);
- for (i=0; i<50; i++)
- {
- buf = iso2709_read (inf);
- if (!buf)
- break;
- records[i] = malloc (sizeof(**records));
- assert (records[i]);
- records[i]->databaseName = NULL;
- records[i]->which = Z_NamePlusRecord_databaseRecord;
- oep = records[i]->u.databaseRecord =
- malloc (sizeof(*oep));
- assert (oep);
- oep->direct_reference = NULL;
- oep->indirect_reference = NULL;
- oep->descriptor = NULL;
- oep->which = ODR_EXTERNAL_octet;
- oep->u.octet_aligned = malloc (sizeof(*oep->u.octet_aligned));
- assert (oep->u.octet_aligned);
- oep->u.octet_aligned->size = oep->u.octet_aligned->len
- = strlen(buf);
- oep->u.octet_aligned->buf = buf;
- }
- no_records = i;
- fclose (inf);
- }
- if (no_records < start + no_requested)
- return NULL;
-
- z_nprl.records = records + start -1;
- for (size = 0, i = 0; i<no_requested; i++)
- {
- if (z_nprl.records[i]->which == Z_NamePlusRecord_databaseRecord)
- size += z_nprl.records[i]->u.databaseRecord->u.octet_aligned->size;
- printf ("size=%d\n", size);
- if (size > preferredMessageSize)
- break;
- }
- if (i == 0)
- return NULL;
- z_nprl.num_records = *no_returned = i;
- return &rec;
-}
-