CVS User Account cvsuser
Fri Dec 23 09:20:57 PST 2005
Log Message:
-----------
Use pgport to find the share path. [Hiroshi Saito]

Modified Files:
--------------
    slony1-engine/src/slonik:
        Makefile (r1.21 -> r1.22)
        slonik.c (r1.54 -> r1.55)

-------------- next part --------------
Index: slonik.c
===================================================================
RCS file: /usr/local/cvsroot/slony1/slony1-engine/src/slonik/slonik.c,v
retrieving revision 1.54
retrieving revision 1.55
diff -Lsrc/slonik/slonik.c -Lsrc/slonik/slonik.c -u -w -r1.54 -r1.55
--- src/slonik/slonik.c
+++ src/slonik/slonik.c
@@ -23,10 +23,6 @@
 #else
 #define sleep(x) Sleep(x*1000)
 #define vsnprintf _vsnprintf
-#ifdef PGSHARE
-#undef PGSHARE
-#endif
-#define PGSHARE "share"
 #define INT64_FORMAT "%I64d"
 #endif
 #include <errno.h>
@@ -45,7 +41,11 @@
 SlonikScript *parser_script = NULL;
 int			parser_errors = 0;
 int			current_try_level;
-char		m_pgshare[1024];
+
+#ifdef WIN32
+static char myfull_path[MAXPGPATH];
+#endif
+static char share_path[MAXPGPATH];
 
 /*
  * Local functions
@@ -115,58 +115,6 @@
 
 }
 
-#ifdef WIN32
-/*
- * Attempt to locate share directory. Will add to path of exe,
- * except when the exe is in a "bin" directory, in which case
- * it goes to ../share.
- * This is a very simple view of things - perhaps it needs to be
- * expanded? If so there is more complete code available in the
- * PostgreSQL backend that could be adapted.
- */
-char *
-get_sharepath(const char *path)
-{
-	int			i;
-	char	   *result;
-
-	result = (char *)malloc(MAX_PATH + 1);
-	if (!result)
-	{
-		printf("memory allocation failure.\n");
-		exit(1);
-	}
-
-	memcpy(result, path, strlen(path));
-
-	for (i = strlen(path); i >= 0; i--)
-	{
-		if ((path[i] == '/') || (path[i] == '\\'))
-			break;
-		result[i] = '\0';
-	}
-
-	if (!result[0])
-	{
-		/* Nothing left, so assume subdir of current */
-		strcpy(result, PGSHARE);
-		return result;
-	}
-
-	/* Check if directory of exe is "bin" */
-	if (strlen(result) >= 3 &&
-		!strncasecmp(result + i - 3, "bin", 3) &&
-		(result[i] == '/' || result[i] == '\\'))
-	{
-		/* Strip off bin directory */
-		result[i - 3] = 0;
-	}
-
-	strcat(result, PGSHARE);
-	return result;
-}
-#endif
-
 /* ----------
  * main
  * ----------
@@ -200,10 +148,20 @@
 	if (parser_errors)
 		usage();
 #ifndef WIN32
-	strcpy(m_pgshare, PGSHARE);
+        strcpy(share_path, PGSHARE);
 #else
-	/* This begins to look for share. */
-	strcpy(m_pgshare, get_sharepath(argv[0]));
+	/*
+	 * We need to find a share directory like PostgreSQL. 
+	 */
+	if (find_my_exec(argv[0],myfull_path) < 0)
+	{
+		printf("full path was unacquirable. '%s'\n", argv[0]);
+		return -1;
+	}
+	else
+	{
+		get_share_path(myfull_path, share_path);
+	}
 #endif
 	if (optind < argc)
 	{
@@ -1942,15 +1900,15 @@
 	/* Load schema, DB version specific */
 	db_notice_silent = true;
 	if (load_sql_script(stmt, adminfo,
-					"%s/xxid.v%d%d.sql", m_pgshare, use_major, use_minor) < 0
+					"%s/xxid.v%d%d.sql", share_path, use_major, use_minor) < 0
 		|| load_sql_script(stmt, adminfo,
-						   "%s/slony1_base.sql", m_pgshare) < 0
+						   "%s/slony1_base.sql", share_path) < 0
 		|| load_sql_script(stmt, adminfo,
-			 "%s/slony1_base.v%d%d.sql", m_pgshare, use_major, use_minor) < 0
+			 "%s/slony1_base.v%d%d.sql", share_path, use_major, use_minor) < 0
 		|| load_sql_script(stmt, adminfo,
-						   "%s/slony1_funcs.sql", m_pgshare) < 0
+						   "%s/slony1_funcs.sql", share_path) < 0
 		|| load_sql_script(stmt, adminfo,
-		   "%s/slony1_funcs.v%d%d.sql", m_pgshare, use_major, use_minor) < 0)
+		   "%s/slony1_funcs.v%d%d.sql", share_path, use_major, use_minor) < 0)
 	{
 		db_notice_silent = false;
 		dstring_free(&query);
@@ -2031,9 +1989,9 @@
 	/* Load schema, DB version specific */
 	db_notice_silent = true;
 	if (load_sql_script(stmt, adminfo,
-						"%s/slony1_funcs.sql", m_pgshare) < 0
+						"%s/slony1_funcs.sql", share_path) < 0
 		|| load_sql_script(stmt, adminfo,
-		   "%s/slony1_funcs.v%d%d.sql", m_pgshare, use_major, use_minor) < 0)
+		   "%s/slony1_funcs.v%d%d.sql", share_path, use_major, use_minor) < 0)
 	{
 		db_notice_silent = false;
 		return -1;
Index: Makefile
===================================================================
RCS file: /usr/local/cvsroot/slony1/slony1-engine/src/slonik/Makefile,v
retrieving revision 1.21
retrieving revision 1.22
diff -Lsrc/slonik/Makefile -Lsrc/slonik/Makefile -u -w -r1.21 -r1.22
--- src/slonik/Makefile
+++ src/slonik/Makefile
@@ -22,9 +22,11 @@
 
 ifeq ($(PORTNAME), win)
 PROG            = slonik.exe
+LDFLAG		= $(LDFLAG) -lpgport
 endif
 ifeq ($(PORTNAME), win32)
 PROG            = slonik.exe
+LDFLAG		= $(LDFLAG) -lpgport
 endif
 
 OBJS		= 			\


More information about the Slony1-commit mailing list