rpm  5.4.15
rpmcvs.c
Go to the documentation of this file.
1 
5 #include "system.h"
6 
7 #include <rpmiotypes.h>
8 #include <rpmio.h> /* for *Pool methods */
9 #include <rpmlog.h>
10 #include <rpmurl.h>
11 #define _RPMCVS_INTERNAL
12 #include <rpmcvs.h>
13 
14 #include "debug.h"
15 
16 /*@unchecked@*/
17 int _rpmcvs_debug = 0;
18 
19 static void rpmcvsFini(void * _cvs)
20  /*@globals fileSystem @*/
21  /*@modifies *_cvs, fileSystem @*/
22 {
23  rpmcvs cvs = (rpmcvs) _cvs;
24 
25  cvs->fn = _free(cvs->fn);
26 }
27 
28 /*@unchecked@*/ /*@only@*/ /*@null@*/
30 
31 static rpmcvs rpmcvsGetPool(/*@null@*/ rpmioPool pool)
32  /*@globals _rpmcvsPool, fileSystem @*/
33  /*@modifies pool, _rpmcvsPool, fileSystem @*/
34 {
35  rpmcvs cvs;
36 
37  if (_rpmcvsPool == NULL) {
38  _rpmcvsPool = rpmioNewPool("cvs", sizeof(*cvs), -1, _rpmcvs_debug,
39  NULL, NULL, rpmcvsFini);
40  pool = _rpmcvsPool;
41  }
42  cvs = (rpmcvs) rpmioGetPool(pool, sizeof(*cvs));
43  memset(((char *)cvs)+sizeof(cvs->_item), 0, sizeof(*cvs)-sizeof(cvs->_item));
44  return cvs;
45 }
46 
47 rpmcvs rpmcvsNew(const char * fn, int flags)
48 {
49  rpmcvs cvs = rpmcvsGetPool(_rpmcvsPool);
50 
51  if (fn)
52  cvs->fn = xstrdup(fn);
53 
54  return rpmcvsLink(cvs);
55 }
rpmioPool _rpmcvsPool
Definition: rpmcvs.c:29
char * xstrdup(const char *str)
Definition: rpmmalloc.c:321
static void rpmcvsFini(void *_cvs)
Definition: rpmcvs.c:19
rpmcvs rpmcvsLink(rpmcvs cvs)
Reference a cvs wrapper instance.
Yet Another syslog(3) API clone.
rpmioItem rpmioGetPool(rpmioPool pool, size_t size)
Get unused item from pool, or alloc a new item.
Definition: rpmmalloc.c:220
static rpmcvs rpmcvsGetPool(rpmioPool pool)
Definition: rpmcvs.c:31
const char const bson int mongo_write_concern int flags
Definition: mongo.h:485
int _rpmcvs_debug
Definition: rpmcvs.c:17
rpmioPool rpmioNewPool(const char *name, size_t size, int limit, int flags, char *(*dbg)(void *item), void(*init)(void *item), void(*fini)(void *item))
Create a memory pool.
Definition: rpmmalloc.c:109
static void * _free(const void *p)
Wrapper to free(3), hides const compilation noise, permit NULL, return NULL.
Definition: rpmiotypes.h:756
rpmcvs rpmcvsNew(const char *fn, int flags)
Create and load a cvs wrapper.
Definition: rpmcvs.c:47
struct rpmcvs_s * rpmcvs
Definition: rpmcvs.h:15