File: ms_pgsql_priv_root.html

package info (click to toggle)
autoconf-archive 20041123-1
  • links: PTS
  • area: main
  • in suites: sarge
  • size: 2,336 kB
  • ctags: 2
  • sloc: makefile: 29
file content (139 lines) | stat: -rw-r--r-- 3,987 bytes parent folder | download
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
138
139
<!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="index.html">Macro Index
        Page</a>]</td>

        <td style="width:50%;" align="center">[<a href=
        "../m4source/ms_pgsql_priv_root.m4">Download M4 Source</a>]</td>
      </tr>
    </tbody>
  </table>
  <hr>

  <h1>ms_pgsql_priv_root</h1>

  <h2>Synopsis</h2>

  <div class="indent">
    <p style="text-align:left; white-space:nowrap;">
    <code>MS_PGSQL_PRIV_ROOT(DB, USER, [HOST], [PASSWORD], [ACTION_IF_FAILED],
    [ACTION_IF_OK])</code></p>
  </div>

  <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 @&lt;:@local socket@:&gt;@],
            [pg_host=$withval], [pg_host=])
</pre>
    <pre>
    AC_ARG_WITH(pgsql-db,
            [  --with-pgsql-db=DBNAME               use database DBNAME @&lt;:@test@:&gt;@],
            [pg_db=$withval], [pg_db=test])
</pre>
    <pre>
    AC_ARG_WITH(pgsql-root-user,
            [  --with-pgsql-root-user=USER          use user USER, must have root (all) privileges @&lt;:@postgres@:&gt;@],
            [pg_root_user=$withval], [pg_root_user=postgres])
</pre>
    <pre>
    AC_ARG_WITH(pgsql-password,
            [  --with-pgsql-password=PASSWORD       use password PASSWORD @&lt;:@none@:&gt;@],
            [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>Version</h2>

  <div class="indent">
    <p>1.1 (last modified: 2002-09-25)</p>
  </div>

  <h2>Author</h2>

  <div class="indent">
    <p>Moritz Sinn &lt;moritz@freesources.org&gt;</p>
  </div>

  <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  &gt; /dev/null 2&gt;&amp;1
if test "x$?" = "x0"; then
        AC_MSG_RESULT([yes])
        $6
else
        AC_MSG_RESULT([no])
        $5
fi;
])dnl
</pre>
  </div>

  <h2>Copyright</h2>

  <div class="indent">
    <a href="COPYING.html">GNU General Public License</a> with this special
    <a href="COPYING-Exception.html">exception</a>.
  </div>
</body>
</html>