Teach psql's \lo slash commands to respect quiet mode, and to output
authorNeil Conway <neilc@samurai.com>
Sat, 20 Jan 2007 16:57:31 +0000 (16:57 +0000)
committerNeil Conway <neilc@samurai.com>
Sat, 20 Jan 2007 16:57:31 +0000 (16:57 +0000)
HTML in HTML mode. Patch from Jeremy Drake.

doc/src/sgml/ref/psql-ref.sgml
src/bin/psql/large_obj.c

index 60caaf5a59b0f2c6f9b1c1dfd6e73c2cde644ba6..6f9ee2ef4dc8818a00c11651aef4b3bac83bdb38 100644 (file)
@@ -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>
index 62f374e16763bb8de115baec36ed0ffbdd073f90..996ee6b65dd5fa5481f9c1e5b778a837fbfa2de2 100644 (file)
 #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;
 }