eflags = (dbi->dbi_oeflags | dbi->dbi_eflags);
if (eflags & DB_JOINENV) eflags &= DB_JOINENV;
- if (dbfile)
+ if (dbfile) {
+ char *dbiflags = prDbiOpenFlags(eflags, 1);
rpmlog(RPMLOG_DEBUG, "opening db environment %s/%s %s\n",
- dbhome, dbfile, prDbiOpenFlags(eflags, 1));
+ dbhome, dbfile, dbiflags);
+ free(dbiflags);
+ }
/* XXX Can't do RPC w/o host. */
if (dbi->dbi_host == NULL)
}
}
- rpmlog(RPMLOG_DEBUG, "opening db index %s/%s %s mode=0x%x\n",
+ { char *dbiflags = prDbiOpenFlags(oflags, 0);
+ rpmlog(RPMLOG_DEBUG, "opening db index %s/%s %s mode=0x%x\n",
dbhome, (dbfile ? dbfile : rpmTagGetName(dbi->dbi_rpmtag)),
- prDbiOpenFlags(oflags, 0), dbi->dbi_mode);
+ dbiflags, dbi->dbi_mode);
+ free(dbiflags);
+ }
if (rc == 0) {
static int _lockdbfd = 0;
#include <rpm/rpmmacro.h>
#include <rpm/rpmstring.h>
#include <rpm/rpmlog.h>
+#include <rpm/argv.h>
#include "rpmdb/rpmdb_internal.h"
#include "debug.h"
return dbi;
}
-const char * prDbiOpenFlags(int dbflags, int print_dbenv_flags)
+char * prDbiOpenFlags(int dbflags, int print_dbenv_flags)
{
- static char buf[256];
+ ARGV_t flags = NULL;
struct poptOption *opt;
- char * oe;
+ char *buf;
- oe = buf;
- *oe = '\0';
for (opt = rdbOptions; opt->longName != NULL; opt++) {
if (opt->argInfo != POPT_BIT_SET)
continue;
}
if ((dbflags & opt->val) != opt->val)
continue;
- if (oe != buf)
- *oe++ = ':';
- oe = stpcpy(oe, opt->longName);
+ argvAdd(&flags, opt->longName);
dbflags &= ~opt->val;
}
if (dbflags) {
- if (oe != buf)
- *oe++ = ':';
- sprintf(oe, "0x%x", (unsigned)dbflags);
+ char *df = NULL;
+ rasprintf(&df, "0x%x", (unsigned)dbflags);
+ argvAdd(&flags, df);
+ free(df);
}
+ buf = argvJoin(flags, ":");
+ argvFree(flags);
+
return buf;
}
* Format db3 open flags for debugging print.
* @param dbflags db open flags
* @param print_dbenv_flags format db env flags instead?
- * @return formatted flags (static buffer)
+ * @return formatted flags (malloced)
*/
-const char * prDbiOpenFlags(int dbflags, int print_dbenv_flags);
+char * prDbiOpenFlags(int dbflags, int print_dbenv_flags);
/** \ingroup dbi
* Return handle for an index database.