I sent this in a while back, but never heard anything about it.
This patch makes psql's \lo_* commands respect the -q flag (or other
methods of setting quiet mode) as well as HTML output mode. This came in
very handy when writing a regression test which uses the \lo_import
command since it would otherwise output the OID of the new large object
which would be different every run.
Please let me know if it is ok, or if I need to do it differently.
--
Let me assure you that to us here at First National, you're not just a
number. You're two numbers, a dash, three more numbers, another dash
and another number.
-- James Estes
Index: src/bin/psql/large_obj.c
===================================================================
RCS file:
/home/jeremyd/local/postgres/cvsuproot/pgsql/src/bin/psql/large_obj.c,v
retrieving revision 1.46
diff -c -r1.46 large_obj.c
*** src/bin/psql/large_obj.c 29 Aug 2006 15:19:51 -0000 1.46
--- src/bin/psql/large_obj.c 25 Sep 2006 23:02:33 -0000
***************
*** 12,17 ****
--- 12,54 ----
#include "settings.h"
#include "common.h"
+ static void
+ print_lo_result(const char *fmt,...)
+ __attribute__((format(printf, 1, 2)));
+
+ static void
+ print_lo_result(const char *fmt,...)
+ {
+ va_list ap;
+
+ if (!pset.quiet)
+ {
+ if (pset.popt.topt.format == PRINT_HTML)
+ {
+ fputs("<p>", pset.queryFout);
+ // XXX should probably use html_escaped_print here
+ // but I know the strings have no bad chars
+ }
+
+ va_start(ap, fmt);
+ vfprintf(pset.queryFout, fmt, ap);
+ va_end(ap);
+
+ if (pset.popt.topt.format == PRINT_HTML)
+ fputs("</p>\n", pset.queryFout);
+ else
+ fputs("\n", pset.queryFout);
+ }
+
+ if (pset.logfile)
+ {
+ va_start(ap, fmt);
+ vfprintf(pset.logfile, fmt, ap);
+ va_end(ap);
+ fputs("\n", pset.logfile);
+ }
+ }
+
/*
* Prepare to do a large-object operation. We *must* be inside a
transaction
***************
*** 129,135 ****
if (!finish_lo_xact("\\lo_export", own_transaction))
return false;
! fprintf(pset.queryFout, "lo_export\n");
return true;
}
--- 166,172 ----
if (!finish_lo_xact("\\lo_export", own_transaction))
return false;
! print_lo_result("lo_export");
return true;
}
***************
*** 189,195 ****
if (!finish_lo_xact("\\lo_import", own_transaction))
return false;
! fprintf(pset.queryFout, "lo_import %u\n", loid);
sprintf(oidbuf, "%u", loid);
SetVariable(pset.vars, "LASTOID", oidbuf);
--- 226,233 ----
if (!finish_lo_xact("\\lo_import", own_transaction))
return false;
! print_lo_result("lo_import %u", loid);
!
sprintf(oidbuf, "%u", loid);
SetVariable(pset.vars, "LASTOID", oidbuf);
***************
*** 225,231 ****
if (!finish_lo_xact("\\lo_unlink", own_transaction))
return false;
! fprintf(pset.queryFout, "lo_unlink %u\n", loid);
return true;
}
--- 263,269 ----
if (!finish_lo_xact("\\lo_unlink", own_transaction))
return false;
! print_lo_result("lo_unlink %u", loid);
return true;
}
---------------------------(end of broadcast)---------------------------
TIP 3: Have you checked our extensive FAQ?
http://www.postgresql.org/docs/faq