plan9port

fork of plan9port with libvec, libstr and libsdb
Log | Files | Refs | README | LICENSE

sdb_open.c (672B)


      1 #include "std.h"
      2 
      3 void
      4 sdb_Bopen(Sdb *db, Biobuf *b)
      5 {
      6 	Strinit(&db->ln);
      7 	Vecinitf(&db->r, sdbr_init, sdbr_close);
      8 	db->b = b;
      9 	db->n = 0;
     10 }
     11 
     12 void
     13 sdb_close(Sdb *db)
     14 {
     15 	Strclose(&db->ln);
     16 	Vecclose(&db->r);
     17 	Bterm(db->b);
     18 }
     19 
     20 void
     21 sdb_open(Sdb *db, char *file)
     22 {
     23 	Biobuf *b;
     24 
     25 	if (!file || file[0] == '\0')
     26 		b = Bfdopen(0, OREAD);
     27 	else
     28 		b = Bopen(file, OREAD);
     29 	if (!b)
     30 		sysfatal("Bopen(%s): %r", file);
     31 	sdb_Bopen(db, b);
     32 }
     33 
     34 void
     35 sdb_openf(Sdb *db, char *fmt, ...)
     36 {
     37 	va_list ap;
     38 	char *p;
     39 
     40 	va_start(ap, fmt);
     41 	p = vsmprint(fmt, ap);
     42 	va_end(ap);
     43 	sdb_open(db, p);
     44 	free(p);
     45 }
     46 
     47 ulong
     48 sdb_n(Sdb db)
     49 {
     50 	return Vecsiz(db.r);
     51 }
     52 
     53 void
     54 sdb_rewind(Sdb *db)
     55 {
     56 	db->n = 0;
     57 }