rpm  5.2.1
About: RPM is a powerful and mature command-line driven package management system capable of installing, uninstalling, verifying, querying, and updating Unix software packages ("no longer Linux-centric"). Hint: The RPM homepage may offer newer releases (but in rpm format).
  Fossies Dox: rpm-5.2.1.tar.gz  ("inofficial" and yet experimental doxygen-generated source code documentation)  

brew_db.h
Go to the documentation of this file.
1 /*-
2  * $Id: brew_db.in,v 1.5 2006/11/15 13:36:48 bostic Exp $
3  *
4  * The following provides the information necessary to build Berkeley DB
5  * on BREW.
6  */
7 
8 #include <AEEAppGen.h>
9 #include <AEEShell.h>
10 #include <AEEFile.h>
11 #include <AEEStdLib.h>
12 
13 #include "errno.h"
14 #include "db.h"
15 #include "clib_port.h"
16 
17 /*
18  * BREW doesn't have stdio.
19  */
20 #define EOF (-1) /* Declare stdio's EOF. */
21 #define stderr ((IFile *)1) /* Flag to call DBGPRINTF. */
22 #define stdout ((IFile *)1)
23 
24 /*
25  * POSIX time structure/function compatibility.
26  *
27  * !!!
28  * This is likely wrong, we should probably move all Berkeley DB time-specific
29  * functionality into os/.
30  */
31 struct tm {
32  int tm_sec; /* seconds after the minute - [0,59] */
33  int tm_min; /* minutes after the hour - [0,59] */
34  int tm_hour; /* hours since midnight - [0,23] */
35  int tm_mday; /* day of the month - [1,31] */
36  int tm_mon; /* months since January - [0,11] */
37  int tm_year; /* years since 1900 */
38  int tm_wday; /* days since Sunday - [0,6] */
39  int tm_yday; /* days since January 1 - [0,365] */
40  int tm_isdst; /* daylight savings time flag */
41  /*
42  * We don't provide tm_zone or tm_gmtoff because BREW doesn't
43  * provide them.
44  */
45 };
46 
47 /*
48 * The ctime() function converts the time pointed to by clock, representing
49 * time in seconds since the Epoch to local time in the form of a string.
50 *
51 * Berkeley DB uses POSIX time values internally.
52 *
53 * The POSIX time function returns seconds since the Epoch, which was
54 * 1970/01/01 00:00:00 UTC.
55 *
56 * BREW's GETUTCSECONDS() returns the number of seconds since
57 * 1980/01/06 00:00:00 UTC.
58 *
59 * To convert from BREW to POSIX, add the seconds between 1970 and 1980 plus
60 * 6 more days.
61 */
62 #define BREW_EPOCH_OFFSET (315964800L)
63 
64 /*
65  * Map ANSI C library functions to BREW specific APIs.
66  */
67 #define atoi(a) ATOI(a)
68 #define free(a) FREE(a)
69 #define malloc(a) MALLOC(a)
70 #define memcmp(a, b, c) MEMCMP(a, b, c)
71 #define memmove(a, b, c) MEMMOVE(a, b, c)
72 #define memset(a, b, c) MEMSET(a, b, c)
73 #define realloc(a, b) REALLOC(a, b)
74 #define snprintf SNPRINTF
75 #define sprintf SPRINTF
76 #define strcat(a, b) STRCAT(a, b)
77 #define strchr(a, b) STRCHR(a, b)
78 #define strcmp(a, b) STRCMP(a, b)
79 #define strcpy(a, b) STRCPY(a, b)
80 #define strdup(a) STRDUP(a)
81 #define strlen(a) STRLEN(a)
82 #define strncmp(a, b, c) STRNCMP(a, b, c)
83 #define strncpy(a, b, c) STRNCPY(a, b, c)
84 #define strrchr(a, b) STRRCHR(a, b)
85 #define strtoul(a, b, c) STRTOUL(a, b, c)
86 #define vsnprintf(a, b, c, d) VSNPRINTF(a, b, c, d)
87 
88 /*
89  * !!!
90  * Don't #define memcpy to MEMCPY, even though it exists, because that results
91  * in a C pre-processor loop and compile failure.
92  *
93  * Don't #define memcpy to MEMMOVE directly, that results in failure as well.
94  */
95 #define memcpy memmove
96 
97 /*
98  * BREW does not have concept of 'sync'.
99  *
100  * It depends on the implementation of the BREW on various platforms, but
101  * Mobilus confirms the version of BREW that ships to North America in 3G
102  * models has sync features guaranteeing safe physical writes whenever a
103  * write is performed using BREW API. Therefore, the issue is not on the
104  * applications running top of BREW, but the implementation of BREW itself
105  * that has to be checked in order to provide durability.
106  */
107 #define __os_fsync(a, b) (0)
108 #define fflush(a) (0)
109 
110 /*
111  * The ANSI C library functions for which we wrote local versions.
112  */
113 int fclose(FILE *);
114 int fgetc(FILE *);
115 char *fgets(char *, int, FILE *);
116 FILE *fopen(const char *, const char *);
117 size_t fwrite(const void *, size_t, size_t, FILE *);
118 char *getcwd(char *, size_t);
119 struct tm *localtime(const time_t *);
120 time_t time(time_t *);
121 
122 /*
123  * FILE_MANAGER_CREATE --
124  * Instantiate file manager instance.
125  */
126 #define FILE_MANAGER_CREATE(dbenv, mgr, ret) do { \
127  AEEApplet *__app = (AEEApplet *)GETAPPINSTANCE(); \
128  int __ret; \
129  if ((__ret = ISHELL_CreateInstance(__app->m_pIShell, \
130  AEECLSID_FILEMGR, (void **)&(mgr))) == SUCCESS) \
131  ret = 0; \
132  else { \
133  __db_syserr(dbenv, __ret, "ISHELL_CreateInstance"); \
134  ret = __os_posix_err(__ret); \
135  } \
136 } while (0)
137 
138 /*
139  * FILE_MANAGER_ERR --
140  * Handle file manager method error.
141  */
142 #define FILE_MANAGER_ERR(dbenv, mgr, name, op, ret) do { \
143  int __ret; \
144  __ret = IFILEMGR_GetLastError(mgr); \
145  if ((name) == NULL) \
146  __db_syserr(dbenv, __ret, "%s", op); \
147  else \
148  __db_syserr(dbenv, __ret, "%s: %s", name, op); \
149  (ret) = __os_posix_err(__ret); \
150 } while (0)
fgets
char * fgets(char *s, int n, FILE *fp)
Definition: fgets.c:21
fclose
int fclose(FILE *fp)
Definition: fclose.c:21
fopen
FILE * fopen(char *filename, char *mode) const
Definition: fopen.c:21
tm::tm_min
int tm_min
Definition: brew_db.h:33
time
time_t time(time_t *nowp)
Definition: time.c:21
tm::tm_wday
int tm_wday
Definition: brew_db.h:38
tm::tm_sec
int tm_sec
Definition: brew_db.h:32
tm::tm_mon
int tm_mon
Definition: brew_db.h:36
tm::tm_mday
int tm_mday
Definition: brew_db.h:35
tm::tm_hour
int tm_hour
Definition: brew_db.h:34
localtime
struct tm * localtime(time_t *tod) const
Definition: localtime.c:21
tm::tm_isdst
int tm_isdst
Definition: brew_db.h:40
fwrite
size_t fwrite(void *buf, size_t size, size_t count, FILE *fp) const
Definition: fwrite.c:21
fgetc
int fgetc(FILE *fp)
Definition: fgetc.c:21
errno.h
db.h
getcwd
#define getcwd
Definition: clib_port.h:184
time_t
long time_t
Definition: db.h:95
tm
Definition: brew_db.h:31
clib_port.h
tm::tm_year
int tm_year
Definition: brew_db.h:37
tm::tm_yday
int tm_yday
Definition: brew_db.h:39
FILE
IFile FILE
Definition: db.h:90