Commit 4945a8fa authored by Neil Conway's avatar Neil Conway

Teach psql's \lo slash commands to respect quiet mode, and to output

HTML in HTML mode. Patch from Jeremy Drake.
parent 24ac4c96
<!--
$PostgreSQL: pgsql/doc/src/sgml/ref/psql-ref.sgml,v 1.179 2006/12/19 01:53:36 adunstan Exp $
$PostgreSQL: pgsql/doc/src/sgml/ref/psql-ref.sgml,v 1.180 2007/01/20 16:57:31 neilc Exp $
PostgreSQL documentation
-->
......@@ -1329,11 +1329,12 @@ Tue Oct 26 21:40:57 CEST 1999
foo=&gt; <userinput>\lo_import '/home/peter/pictures/photo.xcf' 'a picture of me'</userinput>
lo_import 152801
</programlisting>
The response indicates that the large object received object ID
152801 which one ought to remember if one wants to access the
object ever again. For that reason it is recommended to always
associate a human-readable comment with every object. Those can
then be seen with the <command>\lo_list</command> command.
The response indicates that the large object received object
ID 152801, which can be used to access the newly-created large
object in the future. For the sake of readability, it is
recommended to always associate a human-readable comment with
every object. Both OIDs and comments can be viewed with the
<command>\lo_list</command> command.
</para>
<para>
......
......@@ -3,7 +3,7 @@
*
* Copyright (c) 2000-2007, PostgreSQL Global Development Group
*
* $PostgreSQL: pgsql/src/bin/psql/large_obj.c,v 1.47 2007/01/05 22:19:49 momjian Exp $
* $PostgreSQL: pgsql/src/bin/psql/large_obj.c,v 1.48 2007/01/20 16:57:31 neilc Exp $
*/
#include "postgres_fe.h"
#include "large_obj.h"
......@@ -12,6 +12,39 @@
#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);
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,7 +162,7 @@ do_lo_export(const char *loid_arg, const char *filename_arg)
if (!finish_lo_xact("\\lo_export", own_transaction))
return false;
fprintf(pset.queryFout, "lo_export\n");
print_lo_result("lo_export");
return true;
}
......@@ -189,7 +222,8 @@ do_lo_import(const char *filename_arg, const char *comment_arg)
if (!finish_lo_xact("\\lo_import", own_transaction))
return false;
fprintf(pset.queryFout, "lo_import %u\n", loid);
print_lo_result("lo_import %u", loid);
sprintf(oidbuf, "%u", loid);
SetVariable(pset.vars, "LASTOID", oidbuf);
......@@ -225,7 +259,7 @@ do_lo_unlink(const char *loid_arg)
if (!finish_lo_xact("\\lo_unlink", own_transaction))
return false;
fprintf(pset.queryFout, "lo_unlink %u\n", loid);
print_lo_result("lo_unlink %u", loid);
return true;
}
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment