aboutsummaryrefslogtreecommitdiff
path: root/src/backend/commands/dbcommands.c
diff options
context:
space:
mode:
authorTatsuo Ishii <ishii@postgresql.org>2000-05-25 06:53:43 +0000
committerTatsuo Ishii <ishii@postgresql.org>2000-05-25 06:53:43 +0000
commit07d4d36aae79cf2ac365e381ed3e7ce62dcfa783 (patch)
treeaad3d92c19fc48a37cafc11ad9547b942dca724a /src/backend/commands/dbcommands.c
parentc439756ffdd69c1248d1c356f5205da7216950c4 (diff)
downloadpostgresql-07d4d36aae79cf2ac365e381ed3e7ce62dcfa783.tar.gz
postgresql-07d4d36aae79cf2ac365e381ed3e7ce62dcfa783.zip
On solaris, createdb/dropdb fails because of strange behavior of system().
(it returns error with errno ECHILD upon successful completion of commands). This fix ignores an error from system() if errno == ECHILD.
Diffstat (limited to 'src/backend/commands/dbcommands.c')
-rw-r--r--src/backend/commands/dbcommands.c14
1 files changed, 13 insertions, 1 deletions
diff --git a/src/backend/commands/dbcommands.c b/src/backend/commands/dbcommands.c
index d09973f5402..4458edafaf2 100644
--- a/src/backend/commands/dbcommands.c
+++ b/src/backend/commands/dbcommands.c
@@ -8,7 +8,7 @@
*
*
* IDENTIFICATION
- * $Header: /cvsroot/pgsql/src/backend/commands/dbcommands.c,v 1.53 2000/04/12 17:14:58 momjian Exp $
+ * $Header: /cvsroot/pgsql/src/backend/commands/dbcommands.c,v 1.54 2000/05/25 06:53:43 ishii Exp $
*
*-------------------------------------------------------------------------
*/
@@ -148,13 +148,21 @@ createdb(const char *dbname, const char *dbpath, int encoding)
snprintf(buf, sizeof(buf), "cp %s%cbase%ctemplate1%c* '%s'",
DataDir, SEP_CHAR, SEP_CHAR, SEP_CHAR, loc);
+#if defined(sun)
+ if (system(buf) != 0 && errno != ECHILD)
+#else
if (system(buf) != 0)
+#endif
{
int ret;
snprintf(buf, sizeof(buf), "rm -rf '%s'", loc);
ret = system(buf);
+#if defined(sun)
+ if (ret == 0 || errno == ECHILD)
+#else
if (ret == 0)
+#endif
elog(ERROR, "CREATE DATABASE: could not initialize database directory");
else
elog(ERROR, "CREATE DATABASE: Could not initialize database directory. Delete failed as well");
@@ -281,7 +289,11 @@ dropdb(const char *dbname)
* Remove the database's subdirectory and everything in it.
*/
snprintf(buf, sizeof(buf), "rm -rf '%s'", path);
+#if defined(sun)
+ if (system(buf) != 0 && errno != ECHILD)
+#else
if (system(buf) != 0)
+#endif
elog(NOTICE, "DROP DATABASE: The database directory '%s' could not be removed", path);
}