1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137
|
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN"
"http://www.w3.org/TR/html4/strict.dtd">
<html lang="en">
<head>
<title>
Autoconf Macro: ms_pgsql_priv_root
</title>
<link rel="stylesheet" type="text/css" href="ac-archive.css">
</head>
<body>
<table summary="web navigation" style="width:100%;">
<tbody>
<tr>
<td style="width:50%;" align="center">
<a href="http://autoconf-archive.cryp.to/ms_pgsql_priv_root.m4">Download
M4 Source</a>
</td>
<td style="width:50%;" align="center">
<a href="macros-by-category.html">Macro Index Page</a>
</td>
</tr>
</tbody>
</table>
<hr>
<h1>
ms_pgsql_priv_root
</h1>
<h2>
Synopsis
</h2>
<p class="indent" style="white-space:nowrap;">
<code>MS_PGSQL_PRIV_ROOT(DB, USER, [HOST], [PASSWORD], [ACTION_IF_FAILED],
[ACTION_IF_OK])</code>
</p>
<h2>
Description
</h2>
<div class="indent">
<p>
This macro checks wether the given PostgreSQL user has root privileges (can
create and drop databases) It is recommended to first call
MS_CHECK_PGSQL_DB, this makes it easier to locate the cause of error. The
macro MS_PROG_PGCLIENT is required by this one.
</p>
<p>
The variable $pgclient_root_call is set for later use in Makefiles, if
you'd like to make use of this, you must do
</p>
<pre>
AC_SUBST(pgclient_root_call)
</pre>
<p>
after having called MS_CHECK_PGSQL_PRIV_ROOT. You can then do something
like the following in your Makefile.am:
</p>
<pre>
@pgclient_root_call@ -f file.sql
</pre>
<p>
If you want the user to set the data, you should support something like
these configure options:
</p>
<pre>
AC_ARG_WITH(pgsql-host,
[ --with-pgsql-host=HOST server is running on HOST @<:@local socket@:>@],
[pg_host=$withval], [pg_host=])
AC_ARG_WITH(pgsql-db,
[ --with-pgsql-db=DBNAME use database DBNAME @<:@test@:>@],
[pg_db=$withval], [pg_db=test])
AC_ARG_WITH(pgsql-root-user,
[ --with-pgsql-root-user=USER use user USER, must have root (all) privileges @<:@postgres@:>@],
[pg_root_user=$withval], [pg_root_user=postgres])
AC_ARG_WITH(pgsql-password,
[ --with-pgsql-password=PASSWORD use password PASSWORD @<:@none@:>@],
[pg_password=$withval], [pg_password=""])
</pre>
<p>
You can then call the macro like this:
</p>
<pre>
MS_CHECK_PGSQL_PRIV_ROOT([$pg_db], [$pg_root_user], [$pg_host], [$pg_password], [AC_MSG_ERROR([We need root privileges on database!])])
</pre>
</div>
<h2>
Author
</h2>
<p class="indent">
Moritz Sinn <moritz@freesources.org>
</p>
<h2>
Last Modified
</h2>
<p class="indent">
2002-09-25
</p>
<h2>
M4 Source Code
</h2>
<div class="indent">
<pre class="m4source">
AC_DEFUN([MS_CHECK_PGSQL_PRIV_ROOT], [
AC_REQUIRE([MS_PROG_PGCLIENT])dnl
AC_REQUIRE([MS_CHECK_PGSQL_DB])dnl
AC_MSG_CHECKING([if PostgreSQL user $2 has root privileges])
pgclient_root_call="$pgclient"
if test "x$1" != "x"; then
pgclient_root_call="$pgclient_root_call dbname=$1";
fi
if test "x$2" != "x"; then
pgclient_root_call="$pgclient_root_call user=$2";
fi
if test "x$3" != "x"; then
pgclient_root_call="$pgclient_root_call host=$3";
fi
if test "x$4" != "x"; then
pgclient_root_call="$pgclient_root_call password=$4";
fi
testdb="test`date +%s`"
echo "CREATE DATABASE $testdb; DROP DATABASE $testdb;" | $pgclient_root_call > /dev/null 2>&1
if test "x$?" = "x0"; then
AC_MSG_RESULT([yes])
$6
else
AC_MSG_RESULT([no])
$5
fi;
])dnl
</pre>
</div>
</body>
</html>
|