Add PostgreSQL Global Development Group to the copyright notices, and remove a couple of no-longer-appropriate references to Red Hat. Unfortunately I can't undo Red Hat's choice of GPL licensing, but it is what it is. Also reduce the pain of version-stamping by coalescing references to the version into one pair of macros, and removing not-especially-useful change logs. IMO the commit logs serve that purpose just as well.
		
			
				
	
	
		
			119 lines
		
	
	
		
			4.2 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			119 lines
		
	
	
		
			4.2 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
| /*
 | |
|  * pg_filedump.h - PostgreSQL file dump utility for dumping and
 | |
|  *                 formatting heap (data), index and control files.
 | |
|  * 
 | |
|  * Copyright (c) 2002-2010 Red Hat, Inc.
 | |
|  * Copyright (c) 2011, PostgreSQL Global Development Group
 | |
|  *
 | |
|  * This program is free software; you can redistribute it and/or modify
 | |
|  * it under the terms of the GNU General Public License as published by
 | |
|  * the Free Software Foundation; either version 2 of the License, or
 | |
|  * (at your option) any later version.
 | |
|  *
 | |
|  * This program is distributed in the hope that it will be useful,
 | |
|  * but WITHOUT ANY WARRANTY; without even the implied warranty of
 | |
|  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 | |
|  * GNU General Public License for more details.
 | |
|  *
 | |
|  * You should have received a copy of the GNU General Public License
 | |
|  * along with this program; if not, write to the Free Software
 | |
|  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
 | |
|  *
 | |
|  * Original Author: Patrick Macdonald <patrickm@redhat.com> 
 | |
|  */
 | |
| 
 | |
| #define FD_VERSION	"9.0.0"			/* version ID of pg_filedump */
 | |
| #define FD_PG_VERSION	"PostgreSQL 9.0.x"	/* PG version it works with */
 | |
| 
 | |
| #include "postgres.h"
 | |
| 
 | |
| #include <time.h>
 | |
| #include <ctype.h>
 | |
| 
 | |
| #include "access/gin.h"
 | |
| #include "access/gist.h"
 | |
| #include "access/hash.h"
 | |
| #include "access/htup.h"
 | |
| #include "access/itup.h"
 | |
| #include "access/nbtree.h"
 | |
| #include "catalog/pg_control.h"
 | |
| #include "storage/bufpage.h"
 | |
| 
 | |
| // Options for Block formatting operations
 | |
| static unsigned int blockOptions = 0;
 | |
| typedef enum
 | |
| {
 | |
|   BLOCK_ABSOLUTE = 0x00000001,	// -a: Absolute (vs Relative) addressing
 | |
|   BLOCK_BINARY = 0x00000002,	// -b: Binary dump of block
 | |
|   BLOCK_FORMAT = 0x00000004,	// -f: Formatted dump of blocks / control file
 | |
|   BLOCK_FORCED = 0x00000008,	// -S: Block size forced
 | |
|   BLOCK_NO_INTR = 0x00000010,	// -d: Dump straight blocks
 | |
|   BLOCK_RANGE = 0x00000020	// -R: Specific block range to dump
 | |
| }
 | |
| blockSwitches;
 | |
| 
 | |
| static int blockStart = -1;	// -R [start]: Block range start 
 | |
| static int blockEnd = -1;	// -R [end]: Block range end
 | |
| 
 | |
| // Options for Item formatting operations
 | |
| static unsigned int itemOptions = 0;
 | |
| typedef enum
 | |
| {
 | |
|   ITEM_DETAIL = 0x00000001,	// -i: Display interpreted items    
 | |
|   ITEM_HEAP = 0x00000002,	// -y: Blocks contain heap items
 | |
|   ITEM_INDEX = 0x00000004	// -x: Blocks contain index items
 | |
| }
 | |
| itemSwitches;
 | |
| 
 | |
| // Options for Control File formatting operations
 | |
| static unsigned int controlOptions = 0;
 | |
| typedef enum
 | |
| {
 | |
|   CONTROL_DUMP = 0x00000001,	// -c: Dump control file
 | |
|   CONTROL_FORMAT = BLOCK_FORMAT,	// -f: Formatted dump of control file
 | |
|   CONTROL_FORCED = BLOCK_FORCED	// -S: Block size forced
 | |
| }
 | |
| controlSwitches;
 | |
| 
 | |
| // Possible value types for the Special Section
 | |
| typedef enum
 | |
| {
 | |
|   SPEC_SECT_NONE,		// No special section on block
 | |
|   SPEC_SECT_SEQUENCE,		// Sequence info in special section 
 | |
|   SPEC_SECT_INDEX_BTREE,	// BTree index info in special section
 | |
|   SPEC_SECT_INDEX_HASH,		// Hash index info in special section
 | |
|   SPEC_SECT_INDEX_GIST,		// GIST index info in special section
 | |
|   SPEC_SECT_INDEX_GIN,		// GIN index info in special section
 | |
|   SPEC_SECT_ERROR_UNKNOWN,	// Unknown error 
 | |
|   SPEC_SECT_ERROR_BOUNDARY	// Boundary error
 | |
| }
 | |
| specialSectionTypes;
 | |
| static unsigned int specialType = SPEC_SECT_NONE;
 | |
| 
 | |
| // Possible return codes from option validation routine.
 | |
| // pg_filedump doesn't do much with them now but maybe in
 | |
| // the future...
 | |
| typedef enum
 | |
| {
 | |
|   OPT_RC_VALID,			// All options are valid
 | |
|   OPT_RC_INVALID,		// Improper option string
 | |
|   OPT_RC_FILE,			// File problems
 | |
|   OPT_RC_DUPLICATE,		// Duplicate option encountered
 | |
|   OPT_RC_COPYRIGHT		// Copyright should be displayed
 | |
| }
 | |
| optionReturnCodes;
 | |
| 
 | |
| // Simple macro to check for duplicate options and then set
 | |
| // an option flag for later consumption 
 | |
| #define SET_OPTION(_x,_y,_z) if (_x & _y)               \
 | |
|                                {                        \
 | |
|                                  rc = OPT_RC_DUPLICATE; \
 | |
|                                  duplicateSwitch = _z;  \
 | |
|                                }                        \
 | |
|                              else                       \
 | |
|                                _x |= _y;
 | |
| 
 | |
| #define SEQUENCE_MAGIC 0x1717	// PostgreSQL defined magic number
 | |
| #define EOF_ENCOUNTERED (-1)	// Indicator for partial read
 | |
| #define BYTES_PER_LINE 16	// Format the binary 16 bytes per line
 |