You are viewing a plain text version of this content. The canonical link for it is here.
Posted to modperl-cvs@perl.apache.org by do...@apache.org on 2001/09/16 02:56:15 UTC

cvs commit: modperl-2.0/src/modules/perl mod_perl.c modperl_perl.c modperl_perl.h

dougm       01/09/15 17:56:15

  Modified:    src/modules/perl mod_perl.c modperl_perl.c modperl_perl.h
  Log:
  init ids for ithread Perls
  
  Revision  Changes    Path
  1.69      +6 -2      modperl-2.0/src/modules/perl/mod_perl.c
  
  Index: mod_perl.c
  ===================================================================
  RCS file: /home/cvs/modperl-2.0/src/modules/perl/mod_perl.c,v
  retrieving revision 1.68
  retrieving revision 1.69
  diff -u -r1.68 -r1.69
  --- mod_perl.c	2001/09/15 22:26:57	1.68
  +++ mod_perl.c	2001/09/16 00:56:15	1.69
  @@ -354,10 +354,14 @@
   
   static void modperl_hook_child_init(apr_pool_t *p, server_rec *s)
   {
  +    modperl_perl_ids_t ids;
  +    modperl_perl_ids_get(&ids);
   #ifdef USE_ITHREADS
  -    /*XXX*/
  +     modperl_interp_mip_walk_servers(NULL, s,
  +                                     modperl_perl_init_ids_mip,
  +                                    (void*)&ids);
   #else
  -    modperl_perl_init_ids(aTHX);
  +    modperl_perl_init_ids(aTHX_ &ids);
   #endif
   }
   
  
  
  
  1.2       +28 -8     modperl-2.0/src/modules/perl/modperl_perl.c
  
  Index: modperl_perl.c
  ===================================================================
  RCS file: /home/cvs/modperl-2.0/src/modules/perl/modperl_perl.c,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- modperl_perl.c	2001/09/15 22:25:29	1.1
  +++ modperl_perl.c	2001/09/16 00:56:15	1.2
  @@ -4,17 +4,37 @@
    * others (larger tweaks) are in their own modules, e.g. modperl_env.c
    */
   
  -void modperl_perl_init_ids(pTHX)
  +void modperl_perl_ids_get(modperl_perl_ids_t *ids)
   {
  -    sv_setiv(GvSV(gv_fetchpv("$", TRUE, SVt_PV)), (I32)getpid());
  -
  +    ids->pid  = (I32)getpid();
   #ifndef WIN32
  -    PL_uid  = (int)getuid(); 
  -    PL_euid = (int)geteuid(); 
  -    PL_gid  = (int)getgid(); 
  -    PL_egid = (int)getegid(); 
  +    ids->uid  = getuid();
  +    ids->euid = geteuid(); 
  +    ids->gid  = getgid(); 
  +    ids->gid  = getegid(); 
  +
       MP_TRACE_g(MP_FUNC, 
                  "uid=%d, euid=%d, gid=%d, egid=%d\n",
  -               PL_uid, PL_euid, PL_gid, PL_egid);
  +               (int)ids->uid, (int)ids->euid,
  +               (int)ids->gid, (int)ids->egid);
   #endif
  +}
  +
  +void modperl_perl_init_ids(pTHX_ modperl_perl_ids_t *ids)
  +{
  +    sv_setiv(GvSV(gv_fetchpv("$", TRUE, SVt_PV)), ids->pid);
  +
  +#ifndef WIN32
  +    PL_uid  = ids->uid;
  +    PL_euid = ids->euid;
  +    PL_gid  = ids->gid;
  +    PL_egid = ids->egid;
  +#endif
  +}
  +
  +apr_status_t modperl_perl_init_ids_mip(pTHX_ modperl_interp_pool_t *mip,
  +                                       void *data)
  +{
  +    modperl_perl_init_ids(aTHX_ (modperl_perl_ids_t *)data);
  +    return APR_SUCCESS;
   }
  
  
  
  1.2       +12 -1     modperl-2.0/src/modules/perl/modperl_perl.h
  
  Index: modperl_perl.h
  ===================================================================
  RCS file: /home/cvs/modperl-2.0/src/modules/perl/modperl_perl.h,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- modperl_perl.h	2001/09/15 22:25:29	1.1
  +++ modperl_perl.h	2001/09/16 00:56:15	1.2
  @@ -1,6 +1,17 @@
   #ifndef MODPERL_PERL_H
   #define MODPERL_PERL_H
   
  -void modperl_perl_init_ids(pTHX);
  +typedef struct {
  +    I32 pid;
  +    Uid_t uid, euid;
  +    Gid_t gid, egid;
  +} modperl_perl_ids_t;
  +
  +void modperl_perl_ids_get(modperl_perl_ids_t *ids);
  +
  +void modperl_perl_init_ids(pTHX_ modperl_perl_ids_t *ids);
  +
  +apr_status_t modperl_perl_init_ids_mip(pTHX_ modperl_interp_pool_t *mip,
  +                                       void *data);
   
   #endif /* MODPERL_PERL_H */