diff options
Diffstat (limited to 'src/include')
-rw-r--r-- | src/include/c.h | 5 | ||||
-rw-r--r-- | src/include/storage/bufpage.h | 43 |
2 files changed, 40 insertions, 8 deletions
diff --git a/src/include/c.h b/src/include/c.h index eaf1ee7b03a..f56f1ea5da0 100644 --- a/src/include/c.h +++ b/src/include/c.h @@ -7,7 +7,7 @@ * * Copyright (c) 1994, Regents of the University of California * - * $Id: c.h,v 1.14 1997/08/12 20:16:17 momjian Exp $ + * $Id: c.h,v 1.15 1997/08/24 23:07:56 momjian Exp $ * *------------------------------------------------------------------------- */ @@ -686,8 +686,7 @@ typedef struct Exception { * Does string copy, and forces terminating NULL */ /* we do this so if the macro is used in an if action, it will work */ -#define strNcpy(dest,src,len) do \ - {strncpy((dest),(src),(len));*((dest) + (len)) = '\0';} while (0) +#define strNcpy(dst,src,len) (strncpy((dst),(src),(len)),*((dst)+(len))='\0',dst) /* ---------------------------------------------------------------- * Section 9: externs diff --git a/src/include/storage/bufpage.h b/src/include/storage/bufpage.h index 7304b6115aa..b0408106ef7 100644 --- a/src/include/storage/bufpage.h +++ b/src/include/storage/bufpage.h @@ -6,7 +6,7 @@ * * Copyright (c) 1994, Regents of the University of California * - * $Id: bufpage.h,v 1.8 1997/08/19 21:39:47 momjian Exp $ + * $Id: bufpage.h,v 1.9 1997/08/24 23:08:01 momjian Exp $ * *------------------------------------------------------------------------- */ @@ -233,17 +233,50 @@ typedef enum { #define PageGetSpecialPointer(page) \ (AssertMacro(PageIsValid(page)) ? \ (char *) ((char *) (page) + ((PageHeader) (page))->pd_special) \ - : (char *) 0) + : (char *)0 ) +/* + * PageGetItem -- + * Retrieves an item on the given page. + * + * Note: + * This does change the status of any of the resources passed. + * The semantics may change in the future. + */ +#define PageGetItem(page, itemId) \ + (AssertMacro(PageIsValid(page)) ? \ + AssertMacro(itemId->lp_flags & LP_USED) ? \ + (Item)(((char *)page) + itemId->lp_off) : false : false) + +/* + * BufferGetPageSize -- + * Returns the page size within a buffer. + * + * Notes: + * Assumes buffer is valid. + * + * The buffer can be a raw disk block and need not contain a valid + * (formatted) disk page. + */ +/* XXX dig out of buffer descriptor */ +#define BufferGetPageSize(buffer) \ + (AssertMacro(BufferIsValid(buffer)) ? \ + AssertMacro(PageSizeIsValid(pageSize)) ? \ + ((Size)BLCKSZ) : false : false) + +/* + * BufferGetPage -- + * Returns the page associated with a buffer. + */ +#define BufferGetPage(buffer) ((Page)BufferGetBlock(buffer)) + + /* ---------------------------------------------------------------- * extern declarations * ---------------------------------------------------------------- */ -extern Size BufferGetPageSize(Buffer buffer); -extern Page BufferGetPage(Buffer buffer); extern void PageInit(Page page, Size pageSize, Size specialSize); -extern Item PageGetItem(Page page, ItemId itemId); extern OffsetNumber PageAddItem(Page page, Item item, Size size, OffsetNumber offsetNumber, ItemIdFlags flags); extern Page PageGetTempPage(Page page, Size specialSize); |