pike.git / src / modules / _Stdio / buffer.cmod

version» Context lines:

pike.git/src/modules/_Stdio/buffer.cmod:430:    return -1;    }    if( bytes > (unsigned)l )    io_rewind( io, bytes-l );    }    return l;    }    return -1;    }    -  static void io_trigger_output( IOBuffer *io ) +  static void io_actually_trigger_output( IOBuffer *io ) +  ATTRIBUTE((noclone,noinline)); +  +  static void io_actually_trigger_output( IOBuffer *io )    { -  if( io->output && !io->output_triggered ) -  { +     struct my_file *fd;    if( (fd = get_storage( io->output, file_program )) )    {    io_set_events( io, fd, PIKE_BIT_FD_WRITE_OOB, PIKE_FD_WRITE );    io->output_triggered = 1;    }    else    io_call_write( io, io->output, MINIMUM( io_len(io), 100 ) );    } -  +  +  static void io_trigger_output( IOBuffer *io ) +  { +  if( UNLIKELY(io->output) && UNLIKELY(!io->output_triggered) ) +  io_actually_trigger_output(io);    }       static int io_range_error( IOBuffer *io, ptrdiff_t howmuch )    ATTRIBUTE((noclone,noinline));       static int io_range_error( IOBuffer *io, ptrdiff_t howmuch )    {    int res;    struct svalue *osp = Pike_sp;   
pike.git/src/modules/_Stdio/buffer.cmod:494:       if( (total/(size_t)each) < (size_t)len )    {    if( io_range_error( io, len+io->len-io->offset ) )    return io_avail_mul(io,len,each);    return 0;    }    return 1;    }    -  static size_t io_append( IOBuffer *io, const void *p, int bytes ) +  static void io_append( IOBuffer *io, const void *p, int bytes )    {    memcpy( io_add_space( io, bytes, 0 ), p, bytes );    io->len += bytes;    io_trigger_output( io ); -  return io_len(io); +     }       static size_t io_read( IOBuffer *io, void *to, size_t len )    {    if( !io_avail(io,len))    return 0;    memcpy( to, io_read_pointer(io), len );    io_consume( io, len );    return len;    }
pike.git/src/modules/_Stdio/buffer.cmod:1532:    *!    *! This is somewhat faster than add(sprintf(...)) since no    *! intermediate string is created.    */    PIKEFUN int(0..) sprintf(mixed ... ignored)    rawtype tFuncV(tAttr("strict_sprintf_format", tOr(tStr, tObj)),    tAttr("sprintf_args", tMix), tStr);    {    ONERROR _e;    struct string_builder tmp; -  INT_TYPE sz; +     init_string_builder(&tmp,0);    SET_ONERROR(_e, free_string_builder, &tmp);    low_f_sprintf(args, 0, &tmp );    if( tmp.s->size_shift )    Pike_error("IOBuffer only handles 8bit data\n"); -  sz = io_append( THIS, tmp.s->str, tmp.s->len ); +  io_append( THIS, tmp.s->str, tmp.s->len );    pop_n_elems(args);    CALL_AND_UNSET_ONERROR(_e);    ref_push_object(Pike_fp->current_object);    }       /*! @decl array sscanf(string(8bit) format)    *!    *! Reads data from the beginning of the buffer to match the    *! specifed format, then return an array with the matches.    *!