pike.git / src / modules / _Roxen / roxen.c

version» Context lines:

pike.git/src/modules/_Roxen/roxen.c:272:         static void f_html_encode_string( INT32 args )   {    struct pike_string *str;    int newlen;       if( args != 1 )    Pike_error("Wrong number of arguments to html_encode_string\n" );    -  if( Pike_sp[-args].type != PIKE_T_STRING ) +  switch( Pike_sp[-1].type )    {    struct pike_string *s;    void o_cast(struct pike_string *type, INT32 run_time_type); -  +  +  case PIKE_T_INT: +  /* Optimization, this is basically a inlined cast_int_to_string */ +  { +  char buf[21], *b = buf+19; +  int neg, i, j=0; +  i = Pike_sp[-1].u.integer; +  pop_stack(); +  if( i < 0 ) +  { +  neg = 1; +  i = -i; +  } +  else +  neg = 0; +  +  buf[20] = 0; +  +  while( i > 10 ) +  { +  b[ -j++ ] = '0'+(i%10); +  i /= 10; +  } +  b[ -j++ ] = '0'+(i%10); +  if( neg ) b[ -j++ ] = '-'; +  push_text( b-j+1 ); +  } +  return; +  +  case PIKE_T_FLOAT: +  /* Optimization, no need to check the resultstring for +  * unsafe characters. +  */    MAKE_CONSTANT_SHARED_STRING( s, tString );    o_cast(s, PIKE_T_STRING); -  +  return; +  +  default: +  MAKE_CONSTANT_SHARED_STRING( s, tString ); +  o_cast(s, PIKE_T_STRING); +  case PIKE_T_STRING: +  break;    }       str = Pike_sp[-1].u.string;    newlen = str->len;      #define COUNT(T) { \    T *s = (T *)str->str; \    int i; \    for( i = 0; i<str->len; i++ ) \    switch( s[i] ) \