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

Reply via email to