static int dbdiff (const char *a, const char *b) { int n = 0; char *k, *v; const char *v2; Sdb *A = sdb_new (NULL, a, 0); Sdb *B = sdb_new (NULL, b, 0); sdb_dump_begin (A); while (sdb_dump_dupnext (A, &k, &v)) { v2 = sdb_const_get (B, k, 0); if (!v2) { printf ("%s=\n", k); n = 1; } } sdb_dump_begin (B); while (sdb_dump_dupnext (B, &k, &v)) { if (!v || !*v) continue; v2 = sdb_const_get (A, k, 0); if (!v2 || strcmp (v, v2)) { printf ("%s=%s\n", k, v2); n = 1; } } return n; }
static int dbdiff (const char *a, const char *b) { int n = 0; char *v; char k[SDB_MAX_KEY] = {0}; const char *v2; Sdb *A = sdb_new (NULL, a, 0); Sdb *B = sdb_new (NULL, b, 0); sdb_dump_begin (A); while (sdb_dump_dupnext (A, k, &v, NULL)) { v2 = sdb_const_get (B, k, 0); if (!v2) { printf ("%s=\n", k); n = 1; } } sdb_dump_begin (B); while (sdb_dump_dupnext (B, k, &v, NULL)) { if (!v || !*v) { continue; } v2 = sdb_const_get (A, k, 0); if (!v2 || strcmp (v, v2)) { printf ("%s=%s\n", k, v2); n = 1; } } sdb_free (A); sdb_free (B); free (v); return n; }
static int sdb_grep_dump(const char *db, int fmt, bool grep, const char *expgrep) { char *v; char k[SDB_MAX_KEY] = { 0 }; const char *comma = ""; Sdb *s = sdb_new (NULL, db, 0); if (!s) { return 1; } sdb_config (s, options); sdb_dump_begin (s); if (fmt == MODE_JSON) { printf ("{"); } while (sdb_dump_dupnext (s, k, &v, NULL)) { if (grep && !strstr (k, expgrep) && !strstr (v, expgrep)) { continue; } switch (fmt) { case MODE_JSON: if (!strcmp (v, "true") || !strcmp (v, "false")) { printf ("%s\"%s\":%s", comma, k, v); } else if (sdb_isnum (v)) { printf ("%s\"%s\":%llu", comma, k, sdb_atoi (v)); } else if (*v == '{' || *v == '[') { printf ("%s\"%s\":%s", comma, k, v); } else { printf ("%s\"%s\":\"%s\"", comma, k, v); } comma = ","; break; case MODE_ZERO: printf ("%s=%s", k, v); fwrite ("", 1, 1, stdout); break; default: printf ("%s=%s\n", k, v); break; } free (v); } switch (fmt) { case MODE_ZERO: fflush (stdout); write (1, "", 1); break; case MODE_JSON: printf ("}\n"); break; } sdb_free (s); return 0; }
static int sdb_dump (const char *db) { char k[SDB_KSZ]; char v[SDB_VSZ]; Sdb *s = sdb_new (db, 0); if (!s) return 1; sdb_dump_begin (s); while (sdb_dump_next (s, k, v)) printf ("%s=%s\n", k, v); sdb_free (s); s = NULL; return 0; }
static int sdb_dump (const char *db, int fmt) { char *k, *v; const char *comma = ""; Sdb *s = sdb_new (NULL, db, 0); if (!s) return 1; sdb_config (s, SDB_OPTION_FS | SDB_OPTION_NOSTAMP); sdb_dump_begin (s); if (fmt==MODE_JSON) printf ("{"); while (sdb_dump_dupnext (s, &k, &v, NULL)) { switch (fmt) { case MODE_JSON: if (!strcmp (v, "true") || !strcmp (v, "false")) { printf ("%s\"%s\":%s", comma, k, v); } else if (sdb_isnum (v)) { printf ("%s\"%s\":%llu", comma, k, sdb_atoi (v)); } else if (*v=='{' || *v=='[') { printf ("%s\"%s\":%s", comma, k, v); } else printf ("%s\"%s\":\"%s\"", comma, k, v); comma = ","; break; case MODE_ZERO: printf ("%s=%s", k, v); break; default: printf ("%s=%s\n", k, v); break; } #if 0 if (qf && strchr (v, SDB_RS)) { for (p=v; *p; p++) if (*p==SDB_RS) *p = ','; printf ("[]%s=%s\n", k, v); } else { printf ("%s=%s\n", k, v); } #endif free (k); free (v); } switch (fmt) { case MODE_ZERO: fflush (stdout); write (1, "", 1); break; case MODE_JSON: printf ("}\n"); break; } sdb_free (s); return 0; }
static int sdb_dump (const char *db, int json) { char *k, *v; const char *comma = ""; Sdb *s = sdb_new (NULL, db, 0); if (!s) return 1; sdb_config (s, SDB_OPTION_FS | SDB_OPTION_NOSTAMP); sdb_dump_begin (s); if (json) printf ("{"); while (sdb_dump_dupnext (s, &k, &v)) { if (json) { if (!strcmp (v, "true") || !strcmp (v, "false")) { printf ("%s\"%s\":%s", comma, k, v); } else if (sdb_isnum (v)) { printf ("%s\"%s\":%llu", comma, k, sdb_atoi (v)); } else if (*v=='{' || *v=='[') { printf ("%s\"%s\":%s", comma, k, v); } else printf ("%s\"%s\":\"%s\"", comma, k, v); comma = ","; } else { printf ("%s=%s\n", k, v); } #if 0 if (qf && strchr (v, SDB_RS)) { for (p=v; *p; p++) if (*p==SDB_RS) *p = ','; printf ("[]%s=%s\n", k, v); } else { printf ("%s=%s\n", k, v); } #endif free (k); free (v); } if (json) printf ("}\n"); sdb_free (s); return 0; }
static int sdb_dump (const char *db, int qf) { char *k, *v, *p; Sdb *s = sdb_new (NULL, db, 0); if (!s) return 1; sdb_dump_begin (s); while (sdb_dump_dupnext (s, &k, &v)) { if (qf && strchr (v, SDB_RS)) { for (p=v; *p; p++) if (*p==SDB_RS) *p = ','; printf ("[]%s=%s\n", k, v); } else { printf ("%s=%s\n", k, v); } free (k); free (v); } sdb_free (s); return 0; }
static int sdb_dump (const char *db, int qf) { char *k, *v; Sdb *s = sdb_new (NULL, db, 0); if (!s) return 1; sdb_config (s, SDB_OPTION_FS | SDB_OPTION_NOSTAMP); sdb_dump_begin (s); while (sdb_dump_dupnext (s, &k, &v)) { printf ("%s=%s\n", k, v); #if 0 if (qf && strchr (v, SDB_RS)) { for (p=v; *p; p++) if (*p==SDB_RS) *p = ','; printf ("[]%s=%s\n", k, v); } else { printf ("%s=%s\n", k, v); } #endif free (k); free (v); } sdb_free (s); return 0; }