summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/bin/pg_dump/pg_dump.c31
1 files changed, 29 insertions, 2 deletions
diff --git a/src/bin/pg_dump/pg_dump.c b/src/bin/pg_dump/pg_dump.c
index 0961e741a72..6ca2301c645 100644
--- a/src/bin/pg_dump/pg_dump.c
+++ b/src/bin/pg_dump/pg_dump.c
@@ -21,7 +21,7 @@
*
*
* IDENTIFICATION
- * $Header: /cvsroot/pgsql/src/bin/pg_dump/pg_dump.c,v 1.68 1998/04/07 16:41:11 momjian Exp $
+ * $Header: /cvsroot/pgsql/src/bin/pg_dump/pg_dump.c,v 1.69 1998/04/07 22:00:37 momjian Exp $
*
* Modifications - 6/10/96 - dave@bensoft.com - version 1.13.dhb
*
@@ -2507,7 +2507,34 @@ dumpTables(FILE *fout, TableInfo *tblinfo, int numTables,
fputs(q, fout);
if (acls)
- dumpACL(fout, tblinfo[i]);
+ {
+ ACLlist = ParseACL(tblinfo[i].relacl, &l);
+ if (ACLlist == (ACL *) NULL)
+ {
+ if (l == 0)
+ continue;
+ else
+ {
+ fprintf(stderr, "Could not parse ACL list for %s...Exiting!\n",
+ tblinfo[i].relname);
+ exit_nicely(g_conn);
+ }
+ }
+
+ /* Revoke Default permissions for PUBLIC */
+ fprintf(fout,
+ "REVOKE ALL on %s from PUBLIC;\n",
+ tblinfo[i].relname);
+
+ for (k = 0; k < l; k++)
+ {
+ if (ACLlist[k].privledges != (char *) NULL)
+ fprintf(fout,
+ "GRANT %s on %s to %s;\n",
+ ACLlist[k].privledges, tblinfo[i].relname,
+ ACLlist[k].user);
+ }
+ }
}
}
}