I sent this in rather late in the 8.2 cycle, so now that 8.3 development
is underway I thought I'd try sending it again. This patch was necessary
in the development of a large object regression test, but is logically
seperate and reasonable even without that test, so I'm sending it in
seperately for independant consideration. I'll save my pushing on the
large object test until this one gets in ;)
-- Forwarded message --
Date: Thu, 26 Oct 2006 15:58:07 -0700 (PDT)
From: Jeremy Drake <[EMAIL PROTECTED]>
To: PostgreSQL Patches
Subject: [PATCHES] psql \lo_* quiet mode patch
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 EstesIndex: 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.c29 Aug 2006 15:19:51 - 1.46
--- src/bin/psql/large_obj.c25 Sep 2006 23:02:33 -
***
*** 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("", 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("\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 4: Have you searched our list archives?
http://archives.postgresql.org