dougm       00/03/29 16:52:11

  Modified:    src/modules/perl perl_util.c
  Log:
  more for win32 api stuff
  
  Revision  Changes    Path
  1.38      +56 -0     modperl/src/modules/perl/perl_util.c
  
  Index: perl_util.c
  ===================================================================
  RCS file: /home/cvs/modperl/src/modules/perl/perl_util.c,v
  retrieving revision 1.37
  retrieving revision 1.38
  diff -u -r1.37 -r1.38
  --- perl_util.c       2000/03/30 00:44:40     1.37
  +++ perl_util.c       2000/03/30 00:52:11     1.38
  @@ -885,3 +885,59 @@
   
   #endif
   
  +#if defined(WIN32) && defined(PERL_IS_5_6)
  +void
  +Perl_do_join(pTHX_ register SV *sv, SV *del, register SV **mark, register SV **sp)
  +{
  +    SV **oldmark = mark;
  +    register I32 items = sp - mark;
  +    register STRLEN len;
  +    STRLEN delimlen;
  +    register char *delim = SvPV(del, delimlen);
  +    STRLEN tmplen;
  +
  +    mark++;
  +    len = (items > 0 ? (delimlen * (items - 1) ) : 0);
  +    (void)SvUPGRADE(sv, SVt_PV);
  +    if (SvLEN(sv) < len + items) {   /* current length is way too short */
  +     while (items-- > 0) {
  +         if (*mark && !SvGMAGICAL(*mark) && SvOK(*mark)) {
  +             SvPV(*mark, tmplen);
  +             len += tmplen;
  +         }
  +         mark++;
  +     }
  +     SvGROW(sv, len + 1);            /* so try to pre-extend */
  +
  +     mark = oldmark;
  +     items = sp - mark;
  +     ++mark;
  +    }
  +
  +    if (items-- > 0) {
  +     char *s;
  +
  +     if (*mark) {
  +         s = SvPV(*mark, tmplen);
  +         sv_setpvn(sv, s, tmplen);
  +     }
  +     else
  +         sv_setpv(sv, "");
  +     mark++;
  +    }
  +    else
  +     sv_setpv(sv,"");
  +    len = delimlen;
  +    if (len) {
  +     for (; items > 0; items--,mark++) {
  +         sv_catpvn(sv,delim,len);
  +         sv_catsv(sv,*mark);
  +     }
  +    }
  +    else {
  +     for (; items > 0; items--,mark++)
  +         sv_catsv(sv,*mark);
  +    }
  +    SvSETMAGIC(sv);
  +}
  +#endif
  
  
  

Reply via email to