Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
Skip to content

Commit 0195e5c

Browse files
committed
Clean up after recent pg_dump patches.
Fix entirely broken handling of va_list printing routines, update some out-of-date comments, fix some bogus inclusion orders, fix NLS declarations, fix missed realloc calls.
1 parent 2ff36ab commit 0195e5c

10 files changed

+62
-44
lines changed

src/bin/pg_dump/common.c

+3-4
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
/*-------------------------------------------------------------------------
22
*
33
* common.c
4-
* catalog routines used by pg_dump; long ago these were shared
4+
* Catalog routines used by pg_dump; long ago these were shared
55
* by another dump tool, but not anymore.
66
*
77
* Portions Copyright (c) 1996-2011, PostgreSQL Global Development Group
@@ -13,14 +13,13 @@
1313
*
1414
*-------------------------------------------------------------------------
1515
*/
16-
#include "postgres_fe.h"
16+
#include "pg_backup_archiver.h"
1717

1818
#include <ctype.h>
1919

2020
#include "catalog/pg_class.h"
21-
22-
#include "pg_backup_archiver.h"
2321
#include "dumpmem.h"
22+
#include "dumputils.h"
2423

2524

2625
/*

src/bin/pg_dump/dumpmem.c

+6-8
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,7 @@
11
/*-------------------------------------------------------------------------
22
*
33
* dumpmem.c
4-
* memory routines used by pg_dump and pg_restore (but not pg_dumpall
5-
* because there is no failure location to report).
4+
* Memory allocation routines used by pg_dump, pg_dumpall, and pg_restore
65
*
76
* Portions Copyright (c) 1996-2011, PostgreSQL Global Development Group
87
* Portions Copyright (c) 1994, Regents of the University of California
@@ -14,16 +13,15 @@
1413
*-------------------------------------------------------------------------
1514
*/
1615
#include "postgres_fe.h"
16+
1717
#include "dumputils.h"
1818
#include "dumpmem.h"
1919

20-
#include <ctype.h>
2120

2221
/*
2322
* Safer versions of some standard C library functions. If an
24-
* out-of-memory condition occurs, these functions will bail out
25-
* safely; therefore, their return value is guaranteed to be non-NULL.
26-
* We also report the program name and close the database connection.
23+
* out-of-memory condition occurs, these functions will bail out via exit();
24+
*therefore, their return value is guaranteed to be non-NULL.
2725
*/
2826

2927
char *
@@ -57,7 +55,7 @@ pg_calloc(size_t nmemb, size_t size)
5755

5856
tmp = calloc(nmemb, size);
5957
if (!tmp)
60-
exit_horribly(NULL, _("out of memory\n"));
58+
exit_horribly(NULL, "out of memory\n");
6159
return tmp;
6260
}
6361

@@ -68,6 +66,6 @@ pg_realloc(void *ptr, size_t size)
6866

6967
tmp = realloc(ptr, size);
7068
if (!tmp)
71-
exit_horribly(NULL, _("out of memory\n"));
69+
exit_horribly(NULL, "out of memory\n");
7270
return tmp;
7371
}

src/bin/pg_dump/dumpmem.h

+1-3
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
/*-------------------------------------------------------------------------
22
*
33
* dumpmem.h
4-
* Common header file for the pg_dump and pg_restore
4+
* Memory allocation routines used by pg_dump, pg_dumpall, and pg_restore
55
*
66
* Portions Copyright (c) 1996-2011, PostgreSQL Global Development Group
77
* Portions Copyright (c) 1994, Regents of the University of California
@@ -14,8 +14,6 @@
1414
#ifndef DUMPMEM_H
1515
#define DUMPMEM_H
1616

17-
#include "postgres_fe.h"
18-
1917
extern char *pg_strdup(const char *string);
2018
extern void *pg_malloc(size_t size);
2119
extern void *pg_calloc(size_t nmemb, size_t size);

src/bin/pg_dump/dumputils.c

+30-10
Original file line numberDiff line numberDiff line change
@@ -16,14 +16,14 @@
1616

1717
#include <ctype.h>
1818

19-
#include "dumpmem.h"
2019
#include "dumputils.h"
2120

2221
#include "parser/keywords.h"
2322

2423

24+
/* Globals exported by this file */
2525
int quote_all_identifiers = 0;
26-
const char *progname;
26+
const char *progname = NULL;
2727

2828

2929
#define supports_grant_options(version) ((version) >= 70400)
@@ -1214,31 +1214,51 @@ emitShSecLabels(PGconn *conn, PGresult *res, PQExpBuffer buffer,
12141214
}
12151215

12161216

1217+
/*
1218+
* Write a printf-style message to stderr.
1219+
*
1220+
* The program name is prepended, if "progname" has been set.
1221+
* Also, if modulename isn't NULL, that's included too.
1222+
* Note that we'll try to translate the modulename and the fmt string.
1223+
*/
12171224
void
12181225
write_msg(const char *modulename, const char *fmt,...)
12191226
{
12201227
va_list ap;
12211228

12221229
va_start(ap, fmt);
1223-
if (modulename)
1224-
fprintf(stderr, "%s: [%s] ", progname, _(modulename));
1225-
else
1226-
fprintf(stderr, "%s: ", progname);
1227-
vfprintf(stderr, _(fmt), ap);
1230+
vwrite_msg(modulename, fmt, ap);
12281231
va_end(ap);
12291232
}
12301233

1234+
/*
1235+
* As write_msg, but pass a va_list not variable arguments.
1236+
*/
1237+
void
1238+
vwrite_msg(const char *modulename, const char *fmt, va_list ap)
1239+
{
1240+
if (progname)
1241+
{
1242+
if (modulename)
1243+
fprintf(stderr, "%s: [%s] ", progname, _(modulename));
1244+
else
1245+
fprintf(stderr, "%s: ", progname);
1246+
}
1247+
vfprintf(stderr, _(fmt), ap);
1248+
}
1249+
12311250

1251+
/*
1252+
* Fail and die, with a message to stderr. Parameters as for write_msg.
1253+
*/
12321254
void
12331255
exit_horribly(const char *modulename, const char *fmt,...)
12341256
{
12351257
va_list ap;
12361258

12371259
va_start(ap, fmt);
1238-
write_msg(modulename, fmt, ap);
1260+
vwrite_msg(modulename, fmt, ap);
12391261
va_end(ap);
12401262

12411263
exit(1);
12421264
}
1243-
1244-

src/bin/pg_dump/dumputils.h

+3
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@
2020
#include "pqexpbuffer.h"
2121

2222
extern int quote_all_identifiers;
23+
extern const char *progname;
2324

2425
extern void init_parallel_dump_utils(void);
2526
extern const char *fmtId(const char *identifier);
@@ -53,6 +54,8 @@ extern void emitShSecLabels(PGconn *conn, PGresult *res,
5354
PQExpBuffer buffer, const char *target, const char *objname);
5455
extern void write_msg(const char *modulename, const char *fmt,...)
5556
__attribute__((format(PG_PRINTF_ATTRIBUTE, 2, 3)));
57+
extern void vwrite_msg(const char *modulename, const char *fmt, va_list ap)
58+
__attribute__((format(PG_PRINTF_ATTRIBUTE, 2, 0)));
5659
extern void exit_horribly(const char *modulename, const char *fmt,...)
5760
__attribute__((format(PG_PRINTF_ATTRIBUTE, 2, 3)));
5861

src/bin/pg_dump/nls.mk

+2-2
Original file line numberDiff line numberDiff line change
@@ -5,10 +5,10 @@ GETTEXT_FILES = pg_dump.c common.c pg_backup_archiver.c pg_backup_custom.c \
55
pg_backup_db.c pg_backup_files.c pg_backup_null.c \
66
pg_backup_tar.c pg_restore.c pg_dumpall.c \
77
../../port/exec.c
8-
GETTEXT_TRIGGERS = write_msg:2 die_horribly:3 exit_horribly:3 simple_prompt \
8+
GETTEXT_TRIGGERS = write_msg:2 die_horribly:3 exit_horribly:2 simple_prompt \
99
ExecuteSqlCommand:3 ahlog:3
1010
GETTEXT_FLAGS = \
1111
write_msg:2:c-format \
1212
die_horribly:3:c-format \
13-
exit_horribly:3:c-format \
13+
exit_horribly:2:c-format \
1414
ahlog:3:c-format

src/bin/pg_dump/pg_backup_archiver.c

+15-11
Original file line numberDiff line numberDiff line change
@@ -118,7 +118,9 @@ static int _discoverArchiveFormat(ArchiveHandle *AH);
118118

119119
static int RestoringToDB(ArchiveHandle *AH);
120120
static void dump_lo_buf(ArchiveHandle *AH);
121-
static void _die_horribly(ArchiveHandle *AH, const char *modulename, const char *fmt, va_list ap) __attribute__((format(PG_PRINTF_ATTRIBUTE, 3, 0)));
121+
static void vdie_horribly(ArchiveHandle *AH, const char *modulename,
122+
const char *fmt, va_list ap)
123+
__attribute__((format(PG_PRINTF_ATTRIBUTE, 3, 0)));
122124

123125
static void dumpTimestamp(ArchiveHandle *AH, const char *msg, time_t tim);
124126
static void SetOutput(ArchiveHandle *AH, char *filename, int compression);
@@ -1299,7 +1301,7 @@ ahlog(ArchiveHandle *AH, int level, const char *fmt,...)
12991301
return;
13001302

13011303
va_start(ap, fmt);
1302-
write_msg(NULL, fmt, ap);
1304+
vwrite_msg(NULL, fmt, ap);
13031305
va_end(ap);
13041306
}
13051307

@@ -1418,10 +1420,12 @@ ahwrite(const void *ptr, size_t size, size_t nmemb, ArchiveHandle *AH)
14181420
}
14191421

14201422

1423+
/* Report a fatal error and exit(1) */
14211424
static void
1422-
_die_horribly(ArchiveHandle *AH, const char *modulename, const char *fmt, va_list ap)
1425+
vdie_horribly(ArchiveHandle *AH, const char *modulename,
1426+
const char *fmt, va_list ap)
14231427
{
1424-
write_msg(modulename, fmt, ap);
1428+
vwrite_msg(modulename, fmt, ap);
14251429

14261430
if (AH)
14271431
{
@@ -1434,14 +1438,14 @@ _die_horribly(ArchiveHandle *AH, const char *modulename, const char *fmt, va_lis
14341438
exit(1);
14351439
}
14361440

1437-
/* Archiver use (just different arg declaration) */
1441+
/* As above, but with variable arg list */
14381442
void
14391443
die_horribly(ArchiveHandle *AH, const char *modulename, const char *fmt,...)
14401444
{
14411445
va_list ap;
14421446

14431447
va_start(ap, fmt);
1444-
_die_horribly(AH, modulename, fmt, ap);
1448+
vdie_horribly(AH, modulename, fmt, ap);
14451449
va_end(ap);
14461450
}
14471451

@@ -1486,10 +1490,10 @@ warn_or_die_horribly(ArchiveHandle *AH,
14861490

14871491
va_start(ap, fmt);
14881492
if (AH->public.exit_on_error)
1489-
_die_horribly(AH, modulename, fmt, ap);
1493+
vdie_horribly(AH, modulename, fmt, ap);
14901494
else
14911495
{
1492-
write_msg(modulename, fmt, ap);
1496+
vwrite_msg(modulename, fmt, ap);
14931497
AH->public.n_errors++;
14941498
}
14951499
va_end(ap);
@@ -2218,7 +2222,7 @@ ReadToc(ArchiveHandle *AH)
22182222
if (depIdx >= depSize)
22192223
{
22202224
depSize *= 2;
2221-
deps = (DumpId *) realloc(deps, sizeof(DumpId) * depSize);
2225+
deps = (DumpId *) pg_realloc(deps, sizeof(DumpId) * depSize);
22222226
}
22232227
sscanf(tmp, "%d", &deps[depIdx]);
22242228
free(tmp);
@@ -2227,7 +2231,7 @@ ReadToc(ArchiveHandle *AH)
22272231

22282232
if (depIdx > 0) /* We have a non-null entry */
22292233
{
2230-
deps = (DumpId *) realloc(deps, sizeof(DumpId) * depIdx);
2234+
deps = (DumpId *) pg_realloc(deps, sizeof(DumpId) * depIdx);
22312235
te->dependencies = deps;
22322236
te->nDeps = depIdx;
22332237
}
@@ -4062,7 +4066,7 @@ identify_locking_dependencies(TocEntry *te)
40624066
return;
40634067
}
40644068

4065-
te->lockDeps = realloc(lockids, nlockids * sizeof(DumpId));
4069+
te->lockDeps = pg_realloc(lockids, nlockids * sizeof(DumpId));
40664070
te->nLockDeps = nlockids;
40674071
}
40684072

src/bin/pg_dump/pg_backup_archiver.h

-2
Original file line numberDiff line numberDiff line change
@@ -298,8 +298,6 @@ typedef struct _tocEntry
298298
int nLockDeps; /* number of such dependencies */
299299
} TocEntry;
300300

301-
/* Used everywhere */
302-
extern const char *progname;
303301

304302
extern void die_horribly(ArchiveHandle *AH, const char *modulename, const char *fmt,...) __attribute__((format(PG_PRINTF_ATTRIBUTE, 3, 4)));
305303
extern void warn_or_die_horribly(ArchiveHandle *AH, const char *modulename, const char *fmt,...) __attribute__((format(PG_PRINTF_ATTRIBUTE, 3, 4)));

src/bin/pg_dump/pg_dumpall.c

-3
Original file line numberDiff line numberDiff line change
@@ -61,9 +61,6 @@ static PGconn *connectDatabase(const char *dbname, const char *pghost, const cha
6161
static PGresult *executeQuery(PGconn *conn, const char *query);
6262
static void executeCommand(PGconn *conn, const char *query);
6363

64-
char *pg_strdup(const char *string);
65-
void *pg_malloc(size_t size);
66-
6764
static char pg_dump_bin[MAXPGPATH];
6865
static PQExpBuffer pgdumpopts;
6966
static bool skip_acls = false;

src/bin/pg_dump/pg_restore.c

+2-1
Original file line numberDiff line numberDiff line change
@@ -39,8 +39,9 @@
3939
*-------------------------------------------------------------------------
4040
*/
4141

42-
#include "dumpmem.h"
4342
#include "pg_backup_archiver.h"
43+
44+
#include "dumpmem.h"
4445
#include "dumputils.h"
4546

4647
#include <ctype.h>

0 commit comments

Comments
 (0)