/*
* call-seq:
* res.print( file, options )
*
* Prints out all the rows and, optionally, the column names to the
* specified _file_ output stream.
*
* An example using this method can be found in <tt>samples/psql.rb</tt>
* in the postgres source code
*
* For more information, see
* PQprint[http://www.postgresql.org/docs/7.4/static/libpq-exec.html#LIBPQ-EXEC-SELECT-INFO]
* which is called internally by this method.
*/
static VALUE
pgresult_print(obj, file, opt)
VALUE obj, file, opt;
{
VALUE value;
ID mem;
OpenFile* fp;
PQprintOpt po;
Check_Type(file, T_FILE);
Check_Type(opt, T_STRUCT);
GetOpenFile(file, fp);
memset(&po, 0, sizeof(po));
mem = rb_intern("header");
value = rb_struct_getmember(opt, mem);
po.header = value == Qtrue ? 1 : 0;
mem = rb_intern("align");
value = rb_struct_getmember(opt, mem);
po.align = value == Qtrue ? 1 : 0;
mem = rb_intern("standard");
value = rb_struct_getmember(opt, mem);
po.standard = value == Qtrue ? 1 : 0;
mem = rb_intern("html3");
value = rb_struct_getmember(opt, mem);
po.html3 = value == Qtrue ? 1 : 0;
mem = rb_intern("expanded");
value = rb_struct_getmember(opt, mem);
po.expanded = value == Qtrue ? 1 : 0;
mem = rb_intern("pager");
value = rb_struct_getmember(opt, mem);
po.pager = value == Qtrue ? 1 : 0;
mem = rb_intern("fieldSep");
value = rb_struct_getmember(opt, mem);
if (!NIL_P(value)) {
Check_Type(value, T_STRING);
po.fieldSep = STR2CSTR(value);
}
mem = rb_intern("tableOpt");
value = rb_struct_getmember(opt, mem);
if (!NIL_P(value)) {
Check_Type(value, T_STRING);
po.tableOpt = STR2CSTR(value);
}
mem = rb_intern("caption");
value = rb_struct_getmember(opt, mem);
if (!NIL_P(value)) {
Check_Type(value, T_STRING);
po.caption = STR2CSTR(value);
}
PQprint(fp->f2?fp->f2:fp->f, get_pgresult(obj), &po);
return obj;
}