/*
* call-seq:
* PGconn.conndefaults() -> Array
*
* Returns an array of hashes. Each hash has the keys:
* * +:keyword+ - the name of the option
* * +:envvar+ - the environment variable to fall back to
* * +:compiled+ - the compiled in option as a secondary fallback
* * +:val+ - the option's current value, or +nil+ if not known
* * +:label+ - the label for the field
* * +:dispchar+ - "" for normal, "D" for debug, and "*" for password
* * +:dispsize+ - field size
*/
static VALUE
pgconn_s_conndefaults(VALUE self)
{
PQconninfoOption *options = PQconndefaults();
VALUE ary = rb_ary_new();
VALUE hash;
int i = 0;
for(i = 0; options[i].keyword != NULL; i++) {
hash = rb_hash_new();
if(options[i].keyword)
rb_hash_aset(hash, ID2SYM(rb_intern("keyword")),
rb_str_new2(options[i].keyword));
if(options[i].envvar)
rb_hash_aset(hash, ID2SYM(rb_intern("envvar")),
rb_str_new2(options[i].envvar));
if(options[i].compiled)
rb_hash_aset(hash, ID2SYM(rb_intern("compiled")),
rb_str_new2(options[i].compiled));
if(options[i].val)
rb_hash_aset(hash, ID2SYM(rb_intern("val")),
rb_str_new2(options[i].val));
if(options[i].label)
rb_hash_aset(hash, ID2SYM(rb_intern("label")),
rb_str_new2(options[i].label));
if(options[i].dispchar)
rb_hash_aset(hash, ID2SYM(rb_intern("dispchar")),
rb_str_new2(options[i].dispchar));
rb_hash_aset(hash, ID2SYM(rb_intern("dispsize")),
INT2NUM(options[i].dispsize));
rb_ary_push(ary, hash);
}
PQconninfoFree(options);
return ary;
}