pg.ddx.io  pgsql-interfaces@postgresql.org mailing list archive  
help / color / mirror / Atom feed
From: Larry Rosenman <ler@lerctr.org>
To: Tom Lane <tgl@sss.pgh.pa.us>
To: pgsql-hackers@postgresql.org
To: pgsql-interfaces@postgresql.org
Subject: Re: Upgrading the backend's error-message infrastructure
Date: Thu, 13 Mar 2003 15:13:40 -0600
Message-ID: <73290000.1047590020@lerlaptop.lerctr.org> (raw)
In-Reply-To: <9168.1047588660@sss.pgh.pa.us>
References: <9168.1047588660@sss.pgh.pa.us>



--On Thursday, March 13, 2003 15:51:00 -0500 Tom Lane <tgl@sss.pgh.pa.us> 
wrote:


> (__FUNCTION__ is only used if we are compiling in gcc).  errstart() pushes
> an empty entry onto an error-data-collection stack and fills in the
> behind-the-scenes file/line entries.  errmsg() and friends stash values
> into the top-level stack entry.  Finally errfinish() assembles and emits
> the completed message, then pops the stack.  By using a stack, we can be
> assured that things will work correctly if a message is logged by some
> subroutine called in the parameters to ereport (not too unlikely when you
> think about formatting functions like format_type_be()).
>
__FUNCTION__ or an equivalent is MANDATED by C99, and available on 
UnixWare's native cc.

You might want to make a configure test for it.

I believe the __func__ is the C99 spelling (that's what's available on 
UnixWare):

$ cc -O -o testfunc testfunc.c
$ ./testfunc
function=main,file=testfunc.c,line=4
$ cat testfunc.c
#include <stdio.h>
int main(int argc,char **argv)
{
  printf("function=%s,file=%s,line=%d\n",__func__,__FILE__,__LINE__);
}
$

-- 
Larry Rosenman                     http://www.lerctr.org/~ler
Phone: +1 972-414-9812                 E-Mail: ler@lerctr.org
US Mail: 1905 Steamboat Springs Drive, Garland, TX 75044-6749






view thread (32+ messages)  latest in thread

Message-ID: <73290000.1047590020@lerlaptop.lerctr.org>
Permalink:  ../73290000.1047590020@lerlaptop.lerctr.org/
Also on:    postgresql.org/message-id/73290000.1047590020@lerlaptop.lerctr.org

 · 

reply

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Reply to all the recipients using the --to and --cc options:
  reply via email

  To: pgsql-interfaces@postgresql.org
  Cc: ler@lerctr.org, tgl@sss.pgh.pa.us, pgsql-hackers@postgresql.org
  Subject: Re: Upgrading the backend's error-message infrastructure
  In-Reply-To: <73290000.1047590020@lerlaptop.lerctr.org>

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

This inbox is served by DDX for PostgreSQL; see mirroring instructions
for how to clone and mirror all data and code used for this inbox