RPM Package Manager, CVS Repository
  http://rpm5.org/cvs/
  ____________________________________________________________________________

  Server: rpm5.org                         Name:   Jeff Johnson
  Root:   /v/rpm/cvs                       Email:  j...@rpm5.org
  Module: rpm                              Date:   08-Apr-2009 08:09:59
  Branch: HEAD                             Handle: 2009040806095801

  Modified files:
    rpm                     CHANGES
    rpm/rpmio               poptIO.c rpmio.c rpmlua.c rpmlua.h

  Log:
    - yarn: convert rpmluav to usage mutex with refcounts
    - yarn: convert rpmlua to usage mutex with refcounts

  Summary:
    Revision    Changes     Path
    1.2909      +2  -0      rpm/CHANGES
    1.40        +7  -1      rpm/rpmio/poptIO.c
    1.184       +6  -0      rpm/rpmio/rpmio.c
    2.69        +65 -26     rpm/rpmio/rpmlua.c
    2.16        +2  -0      rpm/rpmio/rpmlua.h
  ____________________________________________________________________________

  patch -p0 <<'@@ .'
  Index: rpm/CHANGES
  ============================================================================
  $ cvs diff -u -r1.2908 -r1.2909 CHANGES
  --- rpm/CHANGES       7 Apr 2009 23:32:59 -0000       1.2908
  +++ rpm/CHANGES       8 Apr 2009 06:09:58 -0000       1.2909
  @@ -1,5 +1,7 @@
   
   5.2a3 -> 5.2a4:
  +    - jbj: yarn: convert rpmluav to usage mutex with refcounts
  +    - jbj: yarn: convert rpmlua to usage mutex with refcounts
       - jbj: python: wire-up %post -p <python>. arg1/arg2, persistent interp, 
todo++.
       - jbj: python: wire-up %{python:...}. the string result is bogus, todo++.
       - jbj: python: add --with-pythonembed for embedding python.
  @@ .
  patch -p0 <<'@@ .'
  Index: rpm/rpmio/poptIO.c
  ============================================================================
  $ cvs diff -u -r1.39 -r1.40 poptIO.c
  --- rpm/rpmio/poptIO.c        7 Apr 2009 22:57:48 -0000       1.39
  +++ rpm/rpmio/poptIO.c        8 Apr 2009 06:09:59 -0000       1.40
  @@ -66,6 +66,8 @@
   /*...@unchecked@*/
   extern int _rpmiob_debug;
   /*...@unchecked@*/
  +extern int _rpmlua_debug;
  +/*...@unchecked@*/
   extern int _rpmperl_debug;
   /*...@unchecked@*/
   extern int _rpmpython_debug;
  @@ -411,13 +413,17 @@
        N_("Debug rpmio I/O"), NULL},
    { "rpmiobdebug", '\0', POPT_ARG_VAL|POPT_ARGFLAG_DOC_HIDDEN, 
&_rpmiob_debug, -1,
        N_("Debug rpmio I/O buffers"), NULL},
  +#ifdef WITH_LUA
  + { "rpmluadebug", '\0', POPT_ARG_VAL|POPT_ARGFLAG_DOC_HIDDEN, 
&_rpmlua_debug, -1,
  +     N_("Debug embedded Lua interpreter"), NULL},
  +#endif
    { "rpmmgdebug", '\0', POPT_ARG_VAL|POPT_ARGFLAG_DOC_HIDDEN, &_rpmmg_debug, 
-1,
        N_("Debug rpmmg magic"), NULL},
   #ifdef WITH_PERLEMBED
    { "rpmperldebug", '\0', POPT_ARG_VAL|POPT_ARGFLAG_DOC_HIDDEN, 
&_rpmperl_debug, -1,
        N_("Debug embedded Perl interpreter"), NULL},
   #endif
  -#ifdef WITH_PYTHON
  +#ifdef WITH_PYTHONEMBED
    { "rpmpythondebug", '\0', POPT_ARG_VAL|POPT_ARGFLAG_DOC_HIDDEN, 
&_rpmpython_debug, -1,
        N_("Debug embedded Python interpreter"), NULL},
   #endif
  @@ .
  patch -p0 <<'@@ .'
  Index: rpm/rpmio/rpmio.c
  ============================================================================
  $ cvs diff -u -r1.183 -r1.184 rpmio.c
  --- rpm/rpmio/rpmio.c 7 Apr 2009 23:33:00 -0000       1.183
  +++ rpm/rpmio/rpmio.c 8 Apr 2009 06:09:59 -0000       1.184
  @@ -3127,6 +3127,8 @@
       extern rpmioPool _htPool;
   /*...@=shadow@*/
       extern rpmioPool _rpmmgPool;
  +    extern rpmioPool _rpmluavPool;
  +    extern rpmioPool _rpmluaPool;
       extern rpmioPool _rpmtclPool;
       extern rpmioPool _rpmperlPool;
       extern rpmioPool _rpmpythonPool;
  @@ -3155,6 +3157,10 @@
   #if defined(WITH_TCL)
       _rpmtclPool = rpmioFreePool(_rpmtclPool);
   #endif
  +#if defined(WITH_LUA)
  +    _rpmluavPool = rpmioFreePool(_rpmluavPool);
  +    _rpmluaPool = rpmioFreePool(_rpmluaPool);
  +#endif
       _mirePool = rpmioFreePool(_mirePool);
       _rpmmgPool = rpmioFreePool(_rpmmgPool);
       _htPool = rpmioFreePool(_htPool);
  @@ .
  patch -p0 <<'@@ .'
  Index: rpm/rpmio/rpmlua.c
  ============================================================================
  $ cvs diff -u -r2.68 -r2.69 rpmlua.c
  --- rpm/rpmio/rpmlua.c        1 Apr 2009 15:11:35 -0000       2.68
  +++ rpm/rpmio/rpmlua.c        8 Apr 2009 06:09:59 -0000       2.69
  @@ -45,6 +45,9 @@
   
   /*...@access rpmiob @*/
   
  +/*...@unchecked@*/
  +int _rpmlua_debug = 0;
  +
   #if !defined(HAVE_VSNPRINTF)
   static inline int vsnprintf(char * buf, /*...@unused@*/ size_t nb,
                            const char * fmt, va_list ap)
  @@ -83,10 +86,46 @@
   /*...@=globstate@*/
   }
   
  +void rpmluaFini(void * _lua)
  +     /*...@globals globalLuaState @*/
  +     /*...@modifies globalLuaState @*/
  +{
  +    rpmlua lua = _lua;
  +
  +    if (lua->L) lua_close(lua->L);
  +    lua->L = NULL;
  +    lua->printbuf = _free(lua->printbuf);
  +}
  +
  +/*...@unchecked@*/ /*...@only@*/ /*...@null@*/
  +rpmioPool _rpmluaPool;
  +
  +static rpmlua rpmluaGetPool(/*...@null@*/ rpmioPool pool)
  +        /*...@globals _rpmluaPool, fileSystem @*/
  +        /*...@modifies pool, _rpmluaPool, fileSystem @*/
  +{
  +    rpmlua lua;
  +
  +    if (_rpmluaPool == NULL) {
  +        _rpmluaPool = rpmioNewPool("lua", sizeof(*lua), -1, _rpmlua_debug,
  +                        NULL, NULL, rpmluaFini);
  +        pool = _rpmluaPool;
  +    }
  +    return (rpmlua) rpmioGetPool(pool, sizeof(*lua));
  +}
  +
  +void *rpmluaFree(rpmlua lua)
  +{
  +    if (lua == NULL) lua = globalLuaState;
  +    (void)rpmioFreePoolItem((rpmioItem)lua, __FUNCTION__, __FILE__, 
__LINE__);
  +    if (lua == globalLuaState) globalLuaState = NULL;
  +    return NULL;
  +}
  +
   /*...@-globs -m...@*/        /* XXX hide rpmGlobalMacroContext mods for now. 
*/
  -rpmlua rpmluaNew()
  +rpmlua rpmluaNew(void)
   {
  -    rpmlua lua = (rpmlua) xcalloc(1, sizeof(*lua));
  +    rpmlua lua = rpmluaGetPool(_rpmluaPool);
       lua_State *L = lua_open();
       /*...@-readonlytrans -nullassign @*/
       /*...@observer@*/ /*...@unchecked@*/
  @@ -193,27 +232,10 @@
       }
       path_buf = _free(path_buf);
   
  -    return lua;
  +    return ((rpmlua)rpmioLinkPoolItem((rpmioItem)lua, __FUNCTION__, 
__FILE__, __LINE__));
   }
   /*...@=globs =m...@*/
   
  -void *rpmluaFree(rpmlua lua)
  -     /*...@globals globalLuaState @*/
  -     /*...@modifies globalLuaState @*/
  -{
  -    if (lua == NULL)
  -     lua = globalLuaState;
  -    if (lua) {
  -     if (lua->L) lua_close(lua->L);
  -     lua->printbuf = _free(lua->printbuf);
  -     if (lua == globalLuaState) globalLuaState = NULL;
  -     lua = _free(lua);
  -    }
  -/*...@-globstate@*/
  -    return NULL;
  -/*...@=globstate@*/
  -}
  -
   void rpmluaSetData(rpmlua _lua, const char *key, const void *data)
   {
       INITSTATE(_lua, lua);
  @@ -452,16 +474,33 @@
       lua_pop(lua->L, 1);
   }
   
  -rpmluav rpmluavNew(void)
  +void *rpmluavFree(rpmluav var)
   {
  -    rpmluav var = (rpmluav) xcalloc(1, sizeof(*var));
  -    return var;
  +    (void)rpmioFreePoolItem((rpmioItem)var, __FUNCTION__, __FILE__, 
__LINE__);
  +    return NULL;
   }
   
  -void *rpmluavFree(rpmluav var)
  +/*...@unchecked@*/ /*...@only@*/ /*...@null@*/
  +rpmioPool _rpmluavPool;
  +
  +static rpmluav rpmluavGetPool(/*...@null@*/ rpmioPool pool)
  +        /*...@globals _rpmluavPool, fileSystem @*/
  +        /*...@modifies pool, _rpmluavPool, fileSystem @*/
   {
  -    var = _free(var);
  -    return NULL;
  +    rpmluav luav;
  +
  +    if (_rpmluavPool == NULL) {
  +        _rpmluavPool = rpmioNewPool("luav", sizeof(*luav), -1, _rpmlua_debug,
  +                        NULL, NULL, NULL);
  +        pool = _rpmluavPool;
  +    }
  +    return (rpmluav) rpmioGetPool(pool, sizeof(*luav));
  +}
  +
  +rpmluav rpmluavNew(void)
  +{
  +    rpmluav var = rpmluavGetPool(_rpmluavPool);
  +    return ((rpmluav)rpmioLinkPoolItem((rpmioItem)var, __FUNCTION__, 
__FILE__, __LINE__));
   }
   
   void rpmluavSetListMode(rpmluav var, int flag)
  @@ .
  patch -p0 <<'@@ .'
  Index: rpm/rpmio/rpmlua.h
  ============================================================================
  $ cvs diff -u -r2.15 -r2.16 rpmlua.h
  --- rpm/rpmio/rpmlua.h        11 Dec 2008 21:55:14 -0000      2.15
  +++ rpm/rpmio/rpmlua.h        8 Apr 2009 06:09:59 -0000       2.16
  @@ -13,6 +13,7 @@
   #include <lua.h>
   
   struct rpmlua_s {
  +    struct rpmioItem_s _item;        /*!< usage mutex and pool identifier. */
       lua_State *L;
       int pushsize;
       int storeprint;
  @@ -23,6 +24,7 @@
   };
   
   struct rpmluav_s {
  +    struct rpmioItem_s _item;        /*!< usage mutex and pool identifier. */
       rpmluavType keyType;
       rpmluavType valueType;
       union {
  @@ .
______________________________________________________________________
RPM Package Manager                                    http://rpm5.org
CVS Sources Repository                                rpm-cvs@rpm5.org

Reply via email to