*
*
* IDENTIFICATION
- * $Header: /cvsroot/pgsql/src/backend/commands/copy.c,v 1.142 2001/10/25 05:49:24 momjian Exp $
+ * $Header: /cvsroot/pgsql/src/backend/commands/copy.c,v 1.143 2001/12/04 19:40:16 tgl Exp $
*
*-------------------------------------------------------------------------
*/
{
if (!fp)
{
- unsigned char ch;
+ int ch = pq_getbyte();
- if (pq_getbytes((char *) &ch, 1))
- {
+ if (ch == EOF)
fe_eof = true;
- return EOF;
- }
return ch;
}
else
if (pickup)
{
/*
- * We want to pick it up - just receive again into dummy
- * buffer
+ * We want to pick it up
*/
- char c;
-
- pq_getbytes(&c, 1);
+ (void) pq_getbyte();
}
/* If we didn't want to pick it up, just leave it where it sits */
}
* Portions Copyright (c) 1996-2001, PostgreSQL Global Development Group
* Portions Copyright (c) 1994, Regents of the University of California
*
- * $Id: pqcomm.c,v 1.124 2001/11/12 04:54:08 tgl Exp $
+ * $Id: pqcomm.c,v 1.125 2001/12/04 19:40:17 tgl Exp $
*
*-------------------------------------------------------------------------
*/
* low-level I/O:
* pq_getbytes - get a known number of bytes from connection
* pq_getstring - get a null terminated string from connection
+ * pq_getbyte - get next byte from connection
* pq_peekbyte - peek at next byte from connection
* pq_putbytes - send bytes to connection (not flushed until pq_flush)
* pq_flush - flush pending output
* pq_getbyte - get a single byte from connection, or return EOF
* --------------------------------
*/
-static int
+int
pq_getbyte(void)
{
while (PqRecvPointer >= PqRecvLength)
*
*
* IDENTIFICATION
- * $Header: /cvsroot/pgsql/src/backend/tcop/postgres.c,v 1.242 2001/11/10 23:51:14 tgl Exp $
+ * $Header: /cvsroot/pgsql/src/backend/tcop/postgres.c,v 1.243 2001/12/04 19:40:17 tgl Exp $
*
* NOTES
* this is the "main" module of the postgres backend and
static int
SocketBackend(StringInfo inBuf)
{
- char qtype;
- char result = '\0';
+ int qtype;
/*
* get input from the frontend
*/
- qtype = '?';
- if (pq_getbytes(&qtype, 1) == EOF)
- return EOF;
+ qtype = pq_getbyte();
switch (qtype)
{
+ case EOF:
+ /* frontend disconnected */
+ break;
+
/*
* 'Q': user entered a query
*/
case 'Q':
if (pq_getstr(inBuf))
return EOF;
- result = 'Q';
break;
/*
case 'F':
if (pq_getstr(inBuf))
return EOF; /* ignore "string" at start of F message */
- result = 'F';
break;
/*
* 'X': frontend is exiting
*/
case 'X':
- result = 'X';
break;
/*
elog(FATAL, "Socket command type %c unknown", qtype);
break;
}
- return result;
+
+ return qtype;
}
/* ----------------
if (!IsUnderPostmaster)
{
puts("\nPOSTGRES backend interactive interface ");
- puts("$Revision: 1.242 $ $Date: 2001/11/10 23:51:14 $\n");
+ puts("$Revision: 1.243 $ $Date: 2001/12/04 19:40:17 $\n");
}
/*
* Portions Copyright (c) 1996-2001, PostgreSQL Global Development Group
* Portions Copyright (c) 1994, Regents of the University of California
*
- * $Id: libpq.h,v 1.48 2001/11/05 17:46:33 momjian Exp $
+ * $Id: libpq.h,v 1.49 2001/12/04 19:40:17 tgl Exp $
*
*-------------------------------------------------------------------------
*/
extern void pq_init(void);
extern int pq_getbytes(char *s, size_t len);
extern int pq_getstring(StringInfo s);
+extern int pq_getbyte(void);
extern int pq_peekbyte(void);
extern int pq_putbytes(const char *s, size_t len);
extern int pq_flush(void);