plan9port

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

commit d5fd5c61e34c1b9af1c2f61ebe0cc810a976ea64
parent f0bd771b3a03309ea3ba0bff0c8bba377bc1afa9
Author: ssnf <ssnf@ssnf.xyz>
Date:   Thu, 28 Aug 2025 21:53:08 +0000

fix sdb comment handling

Diffstat:
Msrc/libsdb/sdb_next.c | 16+++++-----------
Msrc/libsdbr/sdbr_print.c | 1-
Msrc/libsdbr/sdbr_str2r.c | 11+++++++----
3 files changed, 12 insertions(+), 16 deletions(-)

diff --git a/src/libsdb/sdb_next.c b/src/libsdb/sdb_next.c @@ -5,10 +5,11 @@ sdb_next(Sdb *db) { String s; ulong n; + char c; if (db->n + 1 < Vecsiz(db->r)) return ++db->n; - if (!db->ln.n) { + if (!db->ln.n) for (;;) { if (!Strgets(&db->ln, db->b)) return 0; @@ -17,22 +18,15 @@ sdb_next(Sdb *db) if (n < db->ln.n && db->ln.s[n] != '#') break; } - } if (Vecsiz(db->r) && Vecsiz(db->r[db->n].attr)) ++db->n; Strinit(&s); for (;;) { - for (n = 0; n < db->ln.n; ++n) - if (db->ln.s[n] == '#') { - Strdelete(&db->ln, n, db->ln.n); - break; - } Stradds(&s, db->ln); - if (!Strgets(&db->ln, db->b)) { - Strzero(&db->ln); + if (!Strgets(&db->ln, db->b)) break; - } - if (!isspace(db->ln.s[0])) + c = db->ln.s[0]; + if (!isspace(c) && c != '#') break; } sdbr_str2r(Vecadd(&db->r), s); diff --git a/src/libsdbr/sdbr_print.c b/src/libsdbr/sdbr_print.c @@ -4,7 +4,6 @@ void sdbr_print(Sdbr r) { String s; - ulong i; if (!Vecsiz(r.attr)) sysfatal("sdbr_print: empty record"); diff --git a/src/libsdbr/sdbr_str2r.c b/src/libsdbr/sdbr_str2r.c @@ -4,11 +4,12 @@ static char* parsetuple(char *p, Sdbr *r) { char *k, *v, *q; - ulong vn; for (;isspace(*p); ++p); k = p; - for (;*p && !isspace(*p) && *p != '='; ++p); + for (;*p && !isspace(*p) && *p != '='; ++p) + if (*p == '#') + *p-- = '\0'; if (!*p || *p != '=') { if (k != p) sdbr_add(r, Strn(k, p - k), Str(nil)); @@ -17,7 +18,9 @@ parsetuple(char *p, Sdbr *r) *p++ = '\0'; if (*p != '"') { v = p; - for (;*p && !isspace(*p); ++p); + for (;*p && !isspace(*p); ++p) + if (*p == '#') + *p-- = '\0'; if (v != p) sdbr_add(r, Str(k), Strn(v, p - v)); else @@ -47,7 +50,7 @@ void sdbr_str2r(Sdbr *sr, String s) { String t; - char *p, *q; + char *p; Strinit(&t); Strdup(&t, s);