aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorBruce Momjian <bruce@momjian.us>1997-11-10 05:10:50 +0000
committerBruce Momjian <bruce@momjian.us>1997-11-10 05:10:50 +0000
commitbaeb8790ac976c12abba26766aba25344d29888d (patch)
tree9605bb2b47a297b52843837fc17ee596a0beaa94 /src
parent0f367cf8c8c07eefc8f9957d4c5328f0d26e9720 (diff)
downloadpostgresql-baeb8790ac976c12abba26766aba25344d29888d.tar.gz
postgresql-baeb8790ac976c12abba26766aba25344d29888d.zip
Fix case issues with quotes.
Diffstat (limited to 'src')
-rw-r--r--src/backend/postmaster/postmaster.c81
-rw-r--r--src/include/c.h8
-rw-r--r--src/interfaces/libpq/fe-connect.c65
-rw-r--r--src/interfaces/libpq/fe-exec.c24
4 files changed, 106 insertions, 72 deletions
diff --git a/src/backend/postmaster/postmaster.c b/src/backend/postmaster/postmaster.c
index 2eef75ca5e9..65047f9c8ea 100644
--- a/src/backend/postmaster/postmaster.c
+++ b/src/backend/postmaster/postmaster.c
@@ -10,7 +10,7 @@
*
*
* IDENTIFICATION
- * $Header: /cvsroot/pgsql/src/backend/postmaster/postmaster.c,v 1.60 1997/11/07 20:51:47 momjian Exp $
+ * $Header: /cvsroot/pgsql/src/backend/postmaster/postmaster.c,v 1.61 1997/11/10 05:10:21 momjian Exp $
*
* NOTES
*
@@ -131,8 +131,8 @@ static char *progname = (char *) NULL;
*/
static char Execfile[MAXPATHLEN] = "";
-static int ServerSock_INET = INVALID_SOCK; /* stream socket server */
-static int ServerSock_UNIX = INVALID_SOCK; /* stream socket server */
+static int ServerSock_INET = INVALID_SOCK; /* stream socket server */
+static int ServerSock_UNIX = INVALID_SOCK; /* stream socket server */
/*
* Set by the -o option
@@ -149,8 +149,8 @@ static char ExtraOptions[ARGV_SIZE] = "";
static int Reinit = 1;
static int SendStop = 0;
-static int NetServer = 0; /* if not zero, postmaster listen for
- non-local connections */
+static int NetServer = 0; /* if not zero, postmaster listen for
+ * non-local connections */
static int MultiplexedBackends = 0;
static int MultiplexedBackendPort;
@@ -318,8 +318,8 @@ PostmasterMain(int argc, char *argv[])
else
DebugLvl = 1;
break;
- case 'i':
- NetServer = 1;
+ case 'i':
+ NetServer = 1;
break;
case 'm':
MultiplexedBackends = 1;
@@ -394,15 +394,15 @@ PostmasterMain(int argc, char *argv[])
}
if (NetServer)
- {
- status = StreamServerPort(hostName, PostPortName, &ServerSock_INET);
- if (status != STATUS_OK)
- {
- fprintf(stderr, "%s: cannot create INET stream port\n",
- progname);
- exit(1);
- }
- }
+ {
+ status = StreamServerPort(hostName, PostPortName, &ServerSock_INET);
+ if (status != STATUS_OK)
+ {
+ fprintf(stderr, "%s: cannot create INET stream port\n",
+ progname);
+ exit(1);
+ }
+ }
status = StreamServerPort(NULL, PostPortName, &ServerSock_UNIX);
if (status != STATUS_OK)
{
@@ -487,11 +487,13 @@ usage(const char *progname)
static int
ServerLoop(void)
{
- fd_set rmask, basemask;
+ fd_set rmask,
+ basemask;
int nSockets,
nSelected,
status,
- oldFd, newFd;
+ oldFd,
+ newFd;
Dlelem *next,
*curr;
@@ -511,11 +513,11 @@ ServerLoop(void)
FD_SET(ServerSock_UNIX, &basemask);
nSockets = ServerSock_UNIX;
if (ServerSock_INET != INVALID_SOCK)
- {
- FD_SET(ServerSock_INET, &basemask);
- if (ServerSock_INET > ServerSock_UNIX)
- nSockets = ServerSock_INET;
- }
+ {
+ FD_SET(ServerSock_INET, &basemask);
+ if (ServerSock_INET > ServerSock_UNIX)
+ nSockets = ServerSock_INET;
+ }
nSockets++;
#ifdef HAVE_SIGPROCMASK
@@ -563,14 +565,14 @@ ServerLoop(void)
/* new connection pending on our well-known port's socket */
oldFd = -1;
- if (FD_ISSET(ServerSock_UNIX, &rmask))
- oldFd = ServerSock_UNIX;
- else if (ServerSock_INET != INVALID_SOCK &&
- FD_ISSET(ServerSock_INET, &rmask))
- oldFd = ServerSock_INET;
+ if (FD_ISSET(ServerSock_UNIX, &rmask))
+ oldFd = ServerSock_UNIX;
+ else if (ServerSock_INET != INVALID_SOCK &&
+ FD_ISSET(ServerSock_INET, &rmask))
+ oldFd = ServerSock_INET;
if (oldFd >= 0)
{
-
+
/*
* connect and make an addition to PortList. If the
* connection dies and we notice it, just forget about the
@@ -587,9 +589,9 @@ ServerLoop(void)
progname, newFd);
}
else if (DebugLvl)
- fprintf(stderr,
- "%s: ServerLoop: connect failed: (%d) %s\n",
- progname, errno, strerror(errno));
+ fprintf(stderr,
+ "%s: ServerLoop: connect failed: (%d) %s\n",
+ progname, errno, strerror(errno));
--nSelected;
FD_CLR(oldFd, &rmask);
}
@@ -823,7 +825,7 @@ ConnStartup(Port *port, int *status,
static void
send_error_reply(Port *port, const char *errormsg)
{
- int rc; /* return code from write */
+ int rc; /* return code from write */
char *reply;
/*
@@ -1299,8 +1301,10 @@ ExitPostmaster(int status)
* Not sure of the semantics here. When the Postmaster dies, should
* the backends all be killed? probably not.
*/
- if (ServerSock_INET != INVALID_SOCK) close(ServerSock_INET);
- if (ServerSock_UNIX != INVALID_SOCK) close(ServerSock_UNIX);
+ if (ServerSock_INET != INVALID_SOCK)
+ close(ServerSock_INET);
+ if (ServerSock_UNIX != INVALID_SOCK)
+ close(ServerSock_UNIX);
exitpg(status);
}
@@ -1315,10 +1319,9 @@ dumpstatus(SIGNAL_ARGS)
fprintf(stderr, "%s: dumpstatus:\n", progname);
fprintf(stderr, "\tsock %d: nBytes=%d, laddr=0x%lx, raddr=0x%lx\n",
- port->sock, port->nBytes,
- (long int) port->laddr.in.sin_addr.s_addr,
- (long int) port->raddr.in.sin_addr.s_addr);
+ port->sock, port->nBytes,
+ (long int) port->laddr.in.sin_addr.s_addr,
+ (long int) port->raddr.in.sin_addr.s_addr);
curr = DLGetSucc(curr);
}
}
-
diff --git a/src/include/c.h b/src/include/c.h
index 2aeb743f9a0..a3c85f584cc 100644
--- a/src/include/c.h
+++ b/src/include/c.h
@@ -7,7 +7,7 @@
*
* Copyright (c) 1994, Regents of the University of California
*
- * $Id: c.h,v 1.26 1997/10/30 23:36:56 momjian Exp $
+ * $Id: c.h,v 1.27 1997/11/10 05:10:34 momjian Exp $
*
*-------------------------------------------------------------------------
*/
@@ -697,8 +697,8 @@ typedef struct Exception
#define INT_ALIGN_MASK (sizeof(int32) - 1)
/* This function gets call too often, so we inline it if we can */
-#define MemSet(start, val, len) do \
- { /* are we aligned for int32? */ \
+#define MemSet(start, val, len) do \
+ { /* are we aligned for int32? */ \
/* We have to cast the pointer to int \
so we can do the AND */ \
if (((int)(start) & INT_ALIGN_MASK) == 0 && \
@@ -707,7 +707,7 @@ typedef struct Exception
/* \
* We got this number by testing this \
* against the stock memset() on \
- * bsd/os 3.0. Larger values were \
+ * bsd/os 3.0. Larger values were \
* slower. \
*/ \
(len) <= 64) \
diff --git a/src/interfaces/libpq/fe-connect.c b/src/interfaces/libpq/fe-connect.c
index f5ace69dc07..e1870228281 100644
--- a/src/interfaces/libpq/fe-connect.c
+++ b/src/interfaces/libpq/fe-connect.c
@@ -7,7 +7,7 @@
*
*
* IDENTIFICATION
- * $Header: /cvsroot/pgsql/src/interfaces/libpq/fe-connect.c,v 1.43 1997/11/07 20:52:15 momjian Exp $
+ * $Header: /cvsroot/pgsql/src/interfaces/libpq/fe-connect.c,v 1.44 1997/11/10 05:10:45 momjian Exp $
*
*-------------------------------------------------------------------------
*/
@@ -340,8 +340,9 @@ PQsetdb(const char *pghost, const char *pgport, const char *pgoptions, const cha
if (!pghost || pghost[0] == '\0')
{
- conn->pghost = NULL;
- if (tmp = getenv("PGHOST")) conn->pghost = strdup(tmp);
+ conn->pghost = NULL;
+ if (tmp = getenv("PGHOST"))
+ conn->pghost = strdup(tmp);
}
else
conn->pghost = strdup(pghost);
@@ -413,14 +414,23 @@ PQsetdb(const char *pghost, const char *pgport, const char *pgoptions, const cha
{
if (((tmp = (char *) dbName) && (dbName[0] != '\0')) ||
((tmp = getenv("PGDATABASE"))))
- {
conn->dbName = strdup(tmp);
- }
else
conn->dbName = strdup(conn->pguser);
- for (i = 0; conn->dbName[i]; i++)
- if (isupper(conn->dbName[i]))
- conn->dbName[i] = tolower(conn->dbName[i]);
+
+ /*
+ * if the table name is surrounded by double-quotes, then
+ * don't convert case
+ */
+ if (*conn->dbName == '"')
+ {
+ strcpy(conn->dbName, conn->dbName + 1);
+ *(conn->dbName + strlen(conn->dbName) - 1) = '\0';
+ }
+ else
+ for (i = 0; conn->dbName[i]; i++)
+ if (isupper(conn->dbName[i]))
+ conn->dbName[i] = tolower(conn->dbName[i]);
}
else
conn->dbName = NULL;
@@ -470,7 +480,9 @@ connectDB(PGconn *conn)
MsgType msgtype;
int laddrlen = sizeof(struct sockaddr);
Port *port = conn->port;
- int portno, family, len;
+ int portno,
+ family,
+ len;
/*
* Initialize the startup packet.
@@ -498,8 +510,8 @@ connectDB(PGconn *conn)
port = (Port *) malloc(sizeof(Port));
MemSet((char *) port, 0, sizeof(Port));
- if (conn->pghost &&
- (!(hp = gethostbyname(conn->pghost)) || hp->h_addrtype != AF_INET))
+ if (conn->pghost &&
+ (!(hp = gethostbyname(conn->pghost)) || hp->h_addrtype != AF_INET))
{
(void) sprintf(conn->errorMessage,
"connectDB() -- unknown hostname: %s\n",
@@ -510,17 +522,17 @@ connectDB(PGconn *conn)
portno = atoi(conn->pgport);
port->raddr.in.sin_family = family = conn->pghost ? AF_INET : AF_UNIX;
if (family == AF_INET)
- {
- memmove((char *) &(port->raddr.in.sin_addr),
- (char *) hp->h_addr,
- hp->h_length);
- port->raddr.in.sin_port = htons((unsigned short) (portno));
- len = sizeof(struct sockaddr_in);
- }
+ {
+ memmove((char *) &(port->raddr.in.sin_addr),
+ (char *) hp->h_addr,
+ hp->h_length);
+ port->raddr.in.sin_port = htons((unsigned short) (portno));
+ len = sizeof(struct sockaddr_in);
+ }
else
- {
- len = UNIXSOCK_PATH(port->raddr.un,portno);
- }
+ {
+ len = UNIXSOCK_PATH(port->raddr.un, portno);
+ }
/* connect to the server */
if ((port->sock = socket(family, SOCK_STREAM, 0)) < 0)
{
@@ -529,12 +541,12 @@ connectDB(PGconn *conn)
errno, strerror(errno));
goto connect_errReturn;
}
- if (connect(port->sock, (struct sockaddr *) &port->raddr, len) < 0)
+ if (connect(port->sock, (struct sockaddr *) & port->raddr, len) < 0)
{
(void) sprintf(conn->errorMessage,
- "connectDB() failed: Is the postmaster running at '%s' on port '%s'?\n",
- conn->pghost ? conn->pghost : "UNIX Socket",
- conn->pgport);
+ "connectDB() failed: Is the postmaster running at '%s' on port '%s'?\n",
+ conn->pghost ? conn->pghost : "UNIX Socket",
+ conn->pgport);
goto connect_errReturn;
}
if (family == AF_INET)
@@ -779,7 +791,8 @@ packetSend(Port *port,
PacketLen len,
bool nonBlocking)
{
- PacketLen doneLen = write(port->sock, buf, len);
+ PacketLen doneLen = write(port->sock, buf, len);
+
if (doneLen < len)
{
return (STATUS_ERROR);
diff --git a/src/interfaces/libpq/fe-exec.c b/src/interfaces/libpq/fe-exec.c
index 483644e7457..2f1b55fbd12 100644
--- a/src/interfaces/libpq/fe-exec.c
+++ b/src/interfaces/libpq/fe-exec.c
@@ -7,7 +7,7 @@
*
*
* IDENTIFICATION
- * $Header: /cvsroot/pgsql/src/interfaces/libpq/fe-exec.c,v 1.39 1997/11/03 04:21:49 momjian Exp $
+ * $Header: /cvsroot/pgsql/src/interfaces/libpq/fe-exec.c,v 1.40 1997/11/10 05:10:50 momjian Exp $
*
*-------------------------------------------------------------------------
*/
@@ -17,6 +17,7 @@
#include <signal.h>
#include <string.h>
#include <errno.h>
+#include <ctype.h>
#include "postgres.h"
#include "libpq/pqcomm.h"
#include "libpq/pqsignal.h"
@@ -31,12 +32,14 @@
#ifdef TIOCGWINSZ
struct winsize screen_size;
+
#else
struct winsize
{
int ws_row;
int ws_col;
} screen_size;
+
#endif
/* the rows array in a PGresGroup has to grow to accommodate the rows */
@@ -1674,6 +1677,7 @@ int
PQfnumber(PGresult *res, const char *field_name)
{
int i;
+ char *field_case;
if (!res)
{
@@ -1686,13 +1690,27 @@ PQfnumber(PGresult *res, const char *field_name)
res->attDescs == NULL)
return -1;
+ field_case = strdup(field_name);
+ if (*field_case == '"')
+ {
+ strcpy(field_case, field_case + 1);
+ *(field_case + strlen(field_case) - 1) = '\0';
+ }
+ else
+ for (i = 0; field_case; i++)
+ if (isupper(field_case[i]))
+ field_case[i] = tolower(field_case[i]);
+
for (i = 0; i < res->numAttributes; i++)
{
- if (strcasecmp(field_name, res->attDescs[i].name) == 0)
+ if (strcmp(field_name, res->attDescs[i].name) == 0)
+ {
+ free(field_case);
return i;
+ }
}
+ free(field_case);
return -1;
-
}
Oid