question on some code.

Поиск
Список
Период
Сортировка
От Chris Bowlby
Тема question on some code.
Дата
Msg-id 6.2.1.2.0.20050719142034.01bdc428@mail.dreadnet.org
обсуждение исходный текст
Ответы Re: question on some code.  (Korry <korry@starband.net>)
Re: question on some code.  (Tom Lane <tgl@sss.pgh.pa.us>)
Список pgsql-hackers
Hi All,
 I've been doing a code audit (review) for my own personal use of the 
7.4.x series code base and have come across something that I'd like to get 
more details on, if it is possible to do so.
 I've been going over the communications section and am curious how this 
segment of code is actually working:


/* -------------------------------- *              pq_sendint              - append a binary integer to a 
StringInfo buffer * -------------------------------- */
void
pq_sendint(StringInfo buf, int i, int b)
{        unsigned char n8;        uint16          n16;        uint32          n32;
        switch (b)        {                case 1:                        n8 = (unsigned char) i;
appendBinaryStringInfo(buf, (char *) &n8, 1);                        break;                case 2:
 n16 = htons((uint16) i);                        appendBinaryStringInfo(buf, (char *) &n16, 2);
break;               case 4:                        n32 = htonl((uint32) i);
appendBinaryStringInfo(buf,(char *) &n32, 4);                        break;                default:
  elog(ERROR, "unsupported integer size %d", b);                        break;        }
 
}

I understand the concept of the code, to append binary values to a string 
buffer (char *), but, under my compiler on FreeBSD 5.4.x (gcc (GCC) 3.4.2 
[FreeBSD] 20040728) I see a few issues that have cropped up.
 If I understand the code right, your trying to pass in to 
appendBinaryStringInfo an "address" or reference to the n8, n16, or n32 
variables and cast them so that a char * pointer can access that address 
space. Through some testing that I've been doing (outputting the values in 
the appendBinaryStringInfo function), I never seem to see any data, The 
variable pointer that references the "n8, n16, or n32" value is not holding 
any data in the appendBinaryStringInfo function.
 This might be my miss-understanding of the function and was hoping 
someone would be willing to clearify it for me?



В списке pgsql-hackers по дате отправления:

Предыдущее
От: Larry Rosenman
Дата:
Сообщение: config.sub/config.guess.
Следующее
От: Korry
Дата:
Сообщение: Re: question on some code.