]> granicus.if.org Git - postgresql/blob - src/backend/utils/adt/tid.c
Update #include cleanups
[postgresql] / src / backend / utils / adt / tid.c
1 /*-------------------------------------------------------------------------
2  *
3  * tid.c
4  *        Functions for the built-in type tuple id
5  *
6  * Copyright (c) 1994, Regents of the University of California
7  *
8  *
9  * IDENTIFICATION
10  *        $Header: /cvsroot/pgsql/src/backend/utils/adt/tid.c,v 1.10 1999/07/16 03:14:11 momjian Exp $
11  *
12  * NOTES
13  *        input routine largely stolen from boxin().
14  *
15  *-------------------------------------------------------------------------
16  */
17 #include <stdio.h>
18 #include <string.h>
19 #include "postgres.h"
20
21 #include "utils/builtins.h"
22
23 #define LDELIM                  '('
24 #define RDELIM                  ')'
25 #define DELIM                   ','
26 #define NTIDARGS                2
27
28 /* ----------------------------------------------------------------
29  *              tidin
30  * ----------------------------------------------------------------
31  */
32 ItemPointer
33 tidin(char *str)
34 {
35         char       *p,
36                            *coord[NTIDARGS];
37         int                     i;
38         ItemPointer result;
39
40         BlockNumber blockNumber;
41         OffsetNumber offsetNumber;
42
43         if (str == NULL)
44                 return NULL;
45
46         for (i = 0, p = str; *p && i < NTIDARGS && *p != RDELIM; p++)
47                 if (*p == DELIM || (*p == LDELIM && !i))
48                         coord[i++] = p + 1;
49
50         if (i < NTIDARGS - 1)
51                 return NULL;
52
53         blockNumber = (BlockNumber) atoi(coord[0]);
54         offsetNumber = (OffsetNumber) atoi(coord[1]);
55
56         result = (ItemPointer) palloc(sizeof(ItemPointerData));
57
58         ItemPointerSet(result, blockNumber, offsetNumber);
59
60         return result;
61 }
62
63 /* ----------------------------------------------------------------
64  *              tidout
65  * ----------------------------------------------------------------
66  */
67 char *
68 tidout(ItemPointer itemPtr)
69 {
70         BlockNumber blockNumber;
71         OffsetNumber offsetNumber;
72         BlockId         blockId;
73         char            buf[32];
74         char       *str;
75
76         blockId = &(itemPtr->ip_blkid);
77
78         blockNumber = BlockIdGetBlockNumber(blockId);
79         offsetNumber = itemPtr->ip_posid;
80
81         sprintf(buf, "(%d,%d)", blockNumber, offsetNumber);
82
83         str = (char *) palloc(strlen(buf) + 1);
84         strcpy(str, buf);
85
86         return str;
87 }