gozer       2004/08/22 13:47:37

  Modified:    .        Changes
               src/modules/perl modperl_util.c modperl_util.h
               t/response/TestAPI request_rec.pm
               todo     release
               xs/Apache/RequestRec Apache__RequestRec.h
               xs/maps  apache_structures.map modperl_functions.map
               xs/tables/current/ModPerl FunctionTable.pm
  Log:
  Added $r->content_languages in Apache::RequestRec
  
  Revision  Changes    Path
  1.460     +2 -0      modperl-2.0/Changes
  
  Index: Changes
  ===================================================================
  RCS file: /home/cvs/modperl-2.0/Changes,v
  retrieving revision 1.459
  retrieving revision 1.460
  diff -u -r1.459 -r1.460
  --- Changes   20 Aug 2004 21:11:00 -0000      1.459
  +++ Changes   22 Aug 2004 20:47:37 -0000      1.460
  @@ -12,6 +12,8 @@
   
   =item 1.99_16-dev
   
  +Added $r->content_languages in Apache::RequestRec [Gozer]
  +
   APR::Bucket: add delete() and destroy() methods [Stas]
   
   
  
  
  
  1.76      +37 -0     modperl-2.0/src/modules/perl/modperl_util.c
  
  Index: modperl_util.c
  ===================================================================
  RCS file: /home/cvs/modperl-2.0/src/modules/perl/modperl_util.c,v
  retrieving revision 1.75
  retrieving revision 1.76
  diff -u -r1.75 -r1.76
  --- modperl_util.c    15 Aug 2004 20:06:51 -0000      1.75
  +++ modperl_util.c    22 Aug 2004 20:47:37 -0000      1.76
  @@ -713,3 +713,40 @@
   
       return text;
   }
  +
  +SV *modperl_apr_array_header2avrv(pTHX_ apr_array_header_t *array)
  +{
  +    AV *av = newAV(); 
  +
  +    if (array) {
  +        int i; 
  +        for (i = 0; i < array->nelts; i++) {
  +            av_push(av, newSVpv(((char **)array->elts)[i], 0));
  +        }
  +    }
  +    return newRV_noinc((SV*)av);
  +}
  +
  +apr_array_header_t *modperl_avrv2apr_array_header(pTHX_ apr_pool_t *p,
  +                                                  SV *avrv)
  +{
  +    AV *av;
  +    apr_array_header_t *array;
  +    int i, av_size;
  +    
  +    if (!(SvROK(avrv) && (SvTYPE(SvRV(avrv)) == SVt_PVAV))) {
  +        Perl_croak(aTHX_ "Not an array reference");
  +    }
  +    
  +    av = (AV*)SvRV(avrv);
  +    av_size = av_len(av);
  +    array = apr_array_make(p, av_size+1, sizeof(char *));
  +    
  +    for (i = 0; i <= av_size; i++) {
  +        SV *sv = *av_fetch(av, i, FALSE);
  +        char **entry = (char **)apr_array_push(array);
  +        *entry = apr_pstrdup(p, SvPV(sv, PL_na));
  +    }
  +
  +    return array;
  +}
  
  
  
  1.66      +3 -0      modperl-2.0/src/modules/perl/modperl_util.h
  
  Index: modperl_util.h
  ===================================================================
  RCS file: /home/cvs/modperl-2.0/src/modules/perl/modperl_util.h,v
  retrieving revision 1.65
  retrieving revision 1.66
  diff -u -r1.65 -r1.66
  --- modperl_util.h    15 Aug 2004 20:06:51 -0000      1.65
  +++ modperl_util.h    22 Aug 2004 20:47:37 -0000      1.66
  @@ -106,6 +106,9 @@
    */
   char *modperl_coderef2text(pTHX_ apr_pool_t *p, CV *cv);
   
  +SV *modperl_apr_array_header2avrv(pTHX_ apr_array_header_t *array);
  +apr_array_header_t *modperl_avrv2apr_array_header(pTHX_ apr_pool_t *p,
  +                                                  SV *avrv);
   #if defined(MP_TRACE) && defined(APR_HAS_THREADS)
   #define MP_TRACEf_TID   "/tid 0x%lx"
   #define MP_TRACEv_TID   (unsigned long)apr_os_thread_current()
  
  
  
  1.31      +14 -2     modperl-2.0/t/response/TestAPI/request_rec.pm
  
  Index: request_rec.pm
  ===================================================================
  RCS file: /home/cvs/modperl-2.0/t/response/TestAPI/request_rec.pm,v
  retrieving revision 1.30
  retrieving revision 1.31
  diff -u -r1.30 -r1.31
  --- request_rec.pm    8 Aug 2004 21:32:00 -0000       1.30
  +++ request_rec.pm    22 Aug 2004 20:47:37 -0000      1.31
  @@ -23,7 +23,7 @@
   sub handler {
       my $r = shift;
   
  -    plan $r, tests => 45;
  +    plan $r, tests => 49;
   
       #Apache->request($r); #PerlOptions +GlobalRequest takes care
       my $gr = Apache->request;
  @@ -164,7 +164,19 @@
           ok $r->allowed & (1 << Apache::M_PUT);
       }
   
  +    # content_languages
  +    {
  +        my $def = [qw(fr)];       #default value
  +        my $l   = [qw(fr us cn)]; #new value
   
  +        ok t_cmp $r->content_languages, $def, '$r->content_languages';
  +        ok t_cmp $r->content_languages($l), $def, '$r->content_languages';
  +        ok t_cmp $r->content_languages, $l, '$r->content_languages';
  +
  +        eval { $r->content_languages({}) };
  +        ok t_cmp $@, qr/Not an array reference/,
  +                '$r->content_languages(invalid)';
  +    }
       # tested in other tests
       # - input_filters:    TestAPI::in_out_filters
       # - output_filters:   TestAPI::in_out_filters
  @@ -174,7 +186,6 @@
   
       # XXX: untested
       # - request_config
  -    # - content_languages
       # - allowed_xmethods
       # - allowed_methods
   
  @@ -184,3 +195,4 @@
   1;
   __END__
   PerlOptions +GlobalRequest
  +DefaultLanguage fr
  
  
  
  1.51      +0 -2      modperl-2.0/todo/release
  
  Index: release
  ===================================================================
  RCS file: /home/cvs/modperl-2.0/todo/release,v
  retrieving revision 1.50
  retrieving revision 1.51
  diff -u -r1.50 -r1.51
  --- release   19 Aug 2004 00:57:32 -0000      1.50
  +++ release   22 Aug 2004 20:47:37 -0000      1.51
  @@ -14,8 +14,6 @@
   
   * APR::URI missing $uri->rpath (was in mp1)
   
  -* Apache::RequestRec's $r->content_languages is missing (was in mp1)
  -
   * check other todo/features_missing items (some of them might be
     critical for 2.0 release, since missing methods might be a problem
     for migration)
  
  
  
  1.16      +14 -0     modperl-2.0/xs/Apache/RequestRec/Apache__RequestRec.h
  
  Index: Apache__RequestRec.h
  ===================================================================
  RCS file: /home/cvs/modperl-2.0/xs/Apache/RequestRec/Apache__RequestRec.h,v
  retrieving revision 1.15
  retrieving revision 1.16
  diff -u -r1.15 -r1.16
  --- Apache__RequestRec.h      16 Jul 2004 01:10:46 -0000      1.15
  +++ Apache__RequestRec.h      22 Aug 2004 20:47:37 -0000      1.16
  @@ -31,6 +31,20 @@
   }
   
   static MP_INLINE
  +SV *mpxs_Apache__RequestRec_content_languages(pTHX_ request_rec *r,
  +                                              SV *languages)
  +{
  +    SV *retval = modperl_apr_array_header2avrv(aTHX_ 
  +                                               r->content_languages);
  +    if (languages) {
  +        r->content_languages = modperl_avrv2apr_array_header(aTHX_ 
  +                                                             r->pool,
  +                                                             languages);
  +    }
  +    return retval;
  +}
  +
  +static MP_INLINE
   int mpxs_Apache__RequestRec_proxyreq(pTHX_ request_rec *r, SV *val)
   {
       int retval = r->proxyreq;
  
  
  
  1.46      +1 -1      modperl-2.0/xs/maps/apache_structures.map
  
  Index: apache_structures.map
  ===================================================================
  RCS file: /home/cvs/modperl-2.0/xs/maps/apache_structures.map,v
  retrieving revision 1.45
  retrieving revision 1.46
  diff -u -r1.45 -r1.46
  --- apache_structures.map     17 Aug 2004 23:40:41 -0000      1.45
  +++ apache_structures.map     22 Aug 2004 20:47:37 -0000      1.46
  @@ -46,7 +46,7 @@
   ~  content_type
   ~  handler
      content_encoding
  -   content_languages
  +~  content_languages
   >  vlist_validator
      user
      ap_auth_type
  
  
  
  1.84      +1 -1      modperl-2.0/xs/maps/modperl_functions.map
  
  Index: modperl_functions.map
  ===================================================================
  RCS file: /home/cvs/modperl-2.0/xs/maps/modperl_functions.map,v
  retrieving revision 1.83
  retrieving revision 1.84
  diff -u -r1.83 -r1.84
  --- modperl_functions.map     17 Aug 2004 23:40:41 -0000      1.83
  +++ modperl_functions.map     22 Aug 2004 20:47:37 -0000      1.84
  @@ -21,7 +21,7 @@
    mpxs_Apache__RequestRec_subprocess_env | | r, key=NULL, val=Nullsv
    mpxs_Apache__RequestRec_finfo | | r, finfo=NULL
    mpxs_Apache__RequestRec_handler | | ...
  -
  + mpxs_Apache__RequestRec_content_languages | | r, languages=Nullsv
   
   MODULE=Apache::RequestUtil   PACKAGE=guess
    mpxs_Apache__RequestRec_push_handlers
  
  
  
  1.175     +50 -0     modperl-2.0/xs/tables/current/ModPerl/FunctionTable.pm
  
  Index: FunctionTable.pm
  ===================================================================
  RCS file: /home/cvs/modperl-2.0/xs/tables/current/ModPerl/FunctionTable.pm,v
  retrieving revision 1.174
  retrieving revision 1.175
  diff -u -r1.174 -r1.175
  --- FunctionTable.pm  20 Aug 2004 21:00:19 -0000      1.174
  +++ FunctionTable.pm  22 Aug 2004 20:47:37 -0000      1.175
  @@ -18,6 +18,20 @@
       ]
     },
     {
  +    'return_type' => 'SV *',
  +    'name' => 'modperl_apr_array_header2avrv',
  +    'args' => [
  +      {
  +        'type' => 'PerlInterpreter *',
  +        'name' => 'my_perl'
  +      },
  +      {
  +        'type' => 'apr_array_header_t *',
  +        'name' => 'array'
  +      }
  +    ]
  +  },
  +  {
       'return_type' => 'int',
       'name' => 'modperl_authen_handler',
       'args' => [
  @@ -38,6 +52,24 @@
       ]
     },
     {
  +    'return_type' => 'apr_array_header_t *',
  +    'name' => 'modperl_avrv2apr_array_header',
  +    'args' => [
  +      {
  +        'type' => 'PerlInterpreter *',
  +        'name' => 'my_perl'
  +      },
  +      {
  +        'type' => 'apr_pool_t *',
  +        'name' => 'p'
  +      },
  +      {
  +        'type' => 'SV *',
  +        'name' => 'avrv'
  +      }
  +    ]
  +  },
  +  {
       'return_type' => 'void',
       'name' => 'modperl_brigade_dump',
       'args' => [
  @@ -6265,6 +6297,24 @@
         {
           'type' => 'char *',
           'name' => 'type'
  +      }
  +    ]
  +  },
  +  {
  +    'return_type' => 'SV *',
  +    'name' => 'mpxs_Apache__RequestRec_content_languages',
  +    'args' => [
  +      {
  +        'type' => 'PerlInterpreter *',
  +        'name' => 'my_perl'
  +      },
  +      {
  +        'type' => 'request_rec *',
  +        'name' => 'r'
  +      },
  +      {
  +        'type' => 'SV *',
  +        'name' => 'languages'
         }
       ]
     },
  
  
  

Reply via email to