]> granicus.if.org Git - postgresql/commitdiff
Fix compilation problem with assert checking enabled for recent xlog
authorThomas G. Lockhart <lockhart@fourpalms.org>
Mon, 5 Aug 2002 01:24:16 +0000 (01:24 +0000)
committerThomas G. Lockhart <lockhart@fourpalms.org>
Mon, 5 Aug 2002 01:24:16 +0000 (01:24 +0000)
 location feature.

src/backend/access/transam/xlog.c
src/include/access/xlog.h

index fa9cc90dd53cfd02d156e3c38b3daa508d083f76..872722b856c7009f950dc95d69c0232238feac74 100644 (file)
@@ -7,7 +7,7 @@
  * Portions Copyright (c) 1996-2002, PostgreSQL Global Development Group
  * Portions Copyright (c) 1994, Regents of the University of California
  *
- * $Header: /cvsroot/pgsql/src/backend/access/transam/xlog.c,v 1.99 2002/08/04 06:53:10 thomas Exp $
+ * $Header: /cvsroot/pgsql/src/backend/access/transam/xlog.c,v 1.100 2002/08/05 01:24:13 thomas Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -389,7 +389,8 @@ static ControlFileData *ControlFile = NULL;
 
 
 /* File path names */
-static char XLogDir[MAXPGPATH] = "";
+char *XLogDir = NULL;
+
 static char ControlFilePath[MAXPGPATH];
 
 /*
@@ -2068,16 +2069,17 @@ ValidXLOGHeader(XLogPageHeader hdr, int emode, bool checkSUI)
 void
 SetXLogDir(char *path)
 {
+       char *xsubdir = "/pg_xlog";
+
        if (path != NULL)
        {
-               if (strlen(path) >= MAXPGPATH)
-                       elog(FATAL, "XLOG path '%s' is too long"
-                                "; maximum length is %d characters", path, MAXPGPATH-1);
+               XLogDir = malloc(strlen(path)+1);
                strcpy(XLogDir, path);
        }
        else
        {
-               snprintf(XLogDir, MAXPGPATH, "%s/pg_xlog", DataDir);
+               XLogDir = malloc(strlen(DataDir)+strlen(xsubdir)+1);
+               snprintf(XLogDir, MAXPGPATH, "%s%s", DataDir, xsubdir);
        }
 }
 
@@ -2085,7 +2087,7 @@ void
 XLOGPathInit(void)
 {
        /* Init XLOG file paths */
-       if (strlen(XLogDir) <= 0)
+       if (XLogDir == NULL)
                SetXLogDir(NULL);
        snprintf(ControlFilePath, MAXPGPATH, "%s/global/pg_control", DataDir);
 }
index 19ff8dd2ce8cf3b588dcc699d391e35f581eb251..4b661f53d3249ad8d370133e8724f8d556282210 100644 (file)
@@ -6,7 +6,7 @@
  * Portions Copyright (c) 1996-2002, PostgreSQL Global Development Group
  * Portions Copyright (c) 1994, Regents of the University of California
  *
- * $Id: xlog.h,v 1.32 2002/08/04 06:26:38 thomas Exp $
+ * $Id: xlog.h,v 1.33 2002/08/05 01:24:16 thomas Exp $
  */
 #ifndef XLOG_H
 #define XLOG_H
@@ -176,7 +176,7 @@ typedef struct XLogRecData
 } XLogRecData;
 
 /* XLOG directory name */
-extern char XLogDir[];
+extern char *XLogDir;
 
 extern StartUpID ThisStartUpID; /* current SUI */
 extern bool InRecovery;