OSDN Git Service

Fix case issues with quotes.
authorBruce Momjian <bruce@momjian.us>
Mon, 10 Nov 1997 05:10:50 +0000 (05:10 +0000)
committerBruce Momjian <bruce@momjian.us>
Mon, 10 Nov 1997 05:10:50 +0000 (05:10 +0000)
src/backend/postmaster/postmaster.c
src/include/c.h
src/interfaces/libpq/fe-connect.c
src/interfaces/libpq/fe-exec.c

index 2eef75c..65047f9 100644 (file)
@@ -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);
        }
 }
-
index 2aeb743..a3c85f5 100644 (file)
@@ -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) \
index f5ace69..e187022 100644 (file)
@@ -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);
index 483644e..2f1b55f 100644 (file)
@@ -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"
 
 #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