sdb_next.c (602B)
1 #include "std.h" 2 3 int 4 sdb_next(Sdb *db) 5 { 6 String s; 7 ulong n; 8 char c; 9 10 if (db->n + 1 < Vecsiz(db->r)) 11 return ++db->n; 12 if (!db->ln.n) 13 for (;;) { 14 if (!Strgets(&db->ln, db->b)) 15 return 0; 16 for (n = 0; n < db->ln.n 17 && isspace(db->ln.s[n]); ++n); 18 if (n < db->ln.n && db->ln.s[n] != '#') 19 break; 20 } 21 if (Vecsiz(db->r) && Vecsiz(db->r[db->n].attr)) 22 ++db->n; 23 Strinit(&s); 24 for (;;) { 25 Stradds(&s, db->ln); 26 if (!Strgets(&db->ln, db->b)) 27 break; 28 c = db->ln.s[0]; 29 if (!isspace(c) && c != '#') 30 break; 31 } 32 sdbr_str2r(Vecadd(&db->r), s); 33 Strclose(&s); 34 return db->n + 1; 35 }