summaryrefslogtreecommitdiff
path: root/contrib/adminpack
diff options
context:
space:
mode:
authorPavan Deolasee2017-06-14 05:42:18 +0000
committerPavan Deolasee2017-06-14 05:42:18 +0000
commit15dd5274c323fb93e4e3ea9ad2185aaaec10f79c (patch)
tree9dafb4c7f735d9429ea461dc792933af87493c33 /contrib/adminpack
parentdfbb88e3bbb526dcb204b456b9e5cfd9d10d0d0a (diff)
parentd5cb3bab564e0927ffac7c8729eacf181a12dd40 (diff)
Merge from PG master upto d5cb3bab564e0927ffac7c8729eacf181a12dd40
This is the result of the "git merge remotes/PGSQL/master" upto the said commit point. We have done some basic analysis, fixed compilation problems etc, but bulk of the logical problems in conflict resolution etc will be handled by subsequent commits.
Diffstat (limited to 'contrib/adminpack')
-rw-r--r--contrib/adminpack/adminpack.c33
1 files changed, 14 insertions, 19 deletions
diff --git a/contrib/adminpack/adminpack.c b/contrib/adminpack/adminpack.c
index ea781a0a5a..10338f951f 100644
--- a/contrib/adminpack/adminpack.c
+++ b/contrib/adminpack/adminpack.c
@@ -3,7 +3,7 @@
* adminpack.c
*
*
- * Copyright (c) 2002-2016, PostgreSQL Global Development Group
+ * Copyright (c) 2002-2017, PostgreSQL Global Development Group
*
* Author: Andreas Pflug <pgadmin@pse-consulting.de>
*
@@ -124,8 +124,8 @@ pg_file_write(PG_FUNCTION_ARGS)
requireSuperuser();
- filename = convert_and_check_filename(PG_GETARG_TEXT_P(0), false);
- data = PG_GETARG_TEXT_P(1);
+ filename = convert_and_check_filename(PG_GETARG_TEXT_PP(0), false);
+ data = PG_GETARG_TEXT_PP(1);
if (!PG_GETARG_BOOL(2))
{
@@ -136,10 +136,10 @@ pg_file_write(PG_FUNCTION_ARGS)
(ERRCODE_DUPLICATE_FILE,
errmsg("file \"%s\" exists", filename)));
- f = fopen(filename, "wb");
+ f = AllocateFile(filename, "wb");
}
else
- f = fopen(filename, "ab");
+ f = AllocateFile(filename, "ab");
if (!f)
ereport(ERROR,
@@ -147,16 +147,11 @@ pg_file_write(PG_FUNCTION_ARGS)
errmsg("could not open file \"%s\" for writing: %m",
filename)));
- if (VARSIZE(data) != 0)
- {
- count = fwrite(VARDATA(data), 1, VARSIZE(data) - VARHDRSZ, f);
-
- if (count != VARSIZE(data) - VARHDRSZ)
- ereport(ERROR,
- (errcode_for_file_access(),
- errmsg("could not write file \"%s\": %m", filename)));
- }
- fclose(f);
+ count = fwrite(VARDATA_ANY(data), 1, VARSIZE_ANY_EXHDR(data), f);
+ if (count != VARSIZE_ANY_EXHDR(data) || FreeFile(f))
+ ereport(ERROR,
+ (errcode_for_file_access(),
+ errmsg("could not write file \"%s\": %m", filename)));
PG_RETURN_INT64(count);
}
@@ -175,12 +170,12 @@ pg_file_rename(PG_FUNCTION_ARGS)
if (PG_ARGISNULL(0) || PG_ARGISNULL(1))
PG_RETURN_NULL();
- fn1 = convert_and_check_filename(PG_GETARG_TEXT_P(0), false);
- fn2 = convert_and_check_filename(PG_GETARG_TEXT_P(1), false);
+ fn1 = convert_and_check_filename(PG_GETARG_TEXT_PP(0), false);
+ fn2 = convert_and_check_filename(PG_GETARG_TEXT_PP(1), false);
if (PG_ARGISNULL(2))
fn3 = 0;
else
- fn3 = convert_and_check_filename(PG_GETARG_TEXT_P(2), false);
+ fn3 = convert_and_check_filename(PG_GETARG_TEXT_PP(2), false);
if (access(fn1, W_OK) < 0)
{
@@ -259,7 +254,7 @@ pg_file_unlink(PG_FUNCTION_ARGS)
requireSuperuser();
- filename = convert_and_check_filename(PG_GETARG_TEXT_P(0), false);
+ filename = convert_and_check_filename(PG_GETARG_TEXT_PP(0), false);
if (access(filename, W_OK) < 0)
{