Object
static VALUE fcgi_stream_addstr(VALUE out, VALUE str) { fcgi_stream_write(out, str); return out; }
static VALUE fcgi_stream_binmode(VALUE self) { if (rb_safe_level() >= 4 && !OBJ_TAINTED(self)) { rb_raise(rb_eSecurityError, "Insecure: operation on untainted IO"); } return self; }
static VALUE fcgi_stream_close(VALUE self) { FCGX_Stream *stream; if (rb_safe_level() >= 4 && !OBJ_TAINTED(self)) { rb_raise(rb_eSecurityError, "Insecure: can't close"); } Data_Get_Struct(self, FCGX_Stream, stream); if (FCGX_FClose(stream) == EOF) CHECK_STREAM_ERROR(stream); return Qnil; }
static VALUE fcgi_stream_closed(VALUE self) { FCGX_Stream *stream; Data_Get_Struct(self, FCGX_Stream, stream); return stream->isClosed ? Qtrue : Qfalse; }
static VALUE fcgi_stream_eof(VALUE self) { FCGX_Stream *stream; if (rb_safe_level() >= 4 && !OBJ_TAINTED(self)) { rb_raise(rb_eSecurityError, "Insecure: operation on untainted IO"); } Data_Get_Struct(self, FCGX_Stream, stream); return FCGX_HasSeenEOF(stream) ? Qtrue : Qfalse; }
static VALUE fcgi_stream_eof(VALUE self) { FCGX_Stream *stream; if (rb_safe_level() >= 4 && !OBJ_TAINTED(self)) { rb_raise(rb_eSecurityError, "Insecure: operation on untainted IO"); } Data_Get_Struct(self, FCGX_Stream, stream); return FCGX_HasSeenEOF(stream) ? Qtrue : Qfalse; }
static VALUE fcgi_stream_flush(VALUE self) { FCGX_Stream *stream; Data_Get_Struct(self, FCGX_Stream, stream); if (FCGX_FFlush(stream) == EOF) CHECK_STREAM_ERROR(stream); return Qnil; }
static VALUE fcgi_stream_getc(VALUE self) { FCGX_Stream *stream; int c; Data_Get_Struct(self, FCGX_Stream, stream); if ((c = FCGX_GetChar(stream)) == EOF) { CHECK_STREAM_ERROR(stream); return Qnil; } else { return INT2NUM(c); } }
static VALUE fcgi_stream_gets(VALUE self) { FCGX_Stream *stream; char buff[BUFSIZ]; VALUE str = rb_str_new("", 0); OBJ_TAINT(str); if (rb_safe_level() >= 4 && !OBJ_TAINTED(self)) { rb_raise(rb_eSecurityError, "Insecure: operation on untainted IO"); } Data_Get_Struct(self, FCGX_Stream, stream); for (;;) { if (FCGX_GetLine(buff, BUFSIZ, stream) == NULL) { CHECK_STREAM_ERROR(stream); break; } rb_str_cat(str, buff, strlen(buff)); if (strchr(buff, '\n')) break; } if (RSTRING_LEN(str) > 0) return str; else return Qnil; }
static VALUE fcgi_stream_isatty(VALUE self) { if (rb_safe_level() >= 4 && !OBJ_TAINTED(self)) { rb_raise(rb_eSecurityError, "Insecure: operation on untainted IO"); } return Qfalse; }
static VALUE fcgi_stream_print(int argc, VALUE *argv, VALUE out) { int i; VALUE line; /* if no argument given, print `$_' */ if (argc == 0) { argc = 1; line = rb_lastline_get(); argv = &line; } for (i=0; i<argc; i++) { if (!NIL_P(rb_output_fs) && i>0) { fcgi_stream_write(out, rb_output_fs); } switch (TYPE(argv[i])) { case T_NIL: fcgi_stream_write(out, rb_str_new2("nil")); break; default: fcgi_stream_write(out, argv[i]); break; } } if (!NIL_P(rb_output_rs)) { fcgi_stream_write(out, rb_output_rs); } return Qnil; }
static VALUE fcgi_stream_printf(int argc, VALUE *argv, VALUE out) { fcgi_stream_write(out, rb_f_sprintf(argc, argv)); return Qnil; }
static VALUE fcgi_stream_putc(VALUE self, VALUE ch) { FCGX_Stream *stream; int c; rb_secure(4); Data_Get_Struct(self, FCGX_Stream, stream); if ((c = FCGX_PutChar(NUM2INT(ch), stream)) == EOF) CHECK_STREAM_ERROR(stream); return INT2NUM(c); }
static VALUE fcgi_stream_puts(int argc, VALUE *argv, VALUE out) { int i; VALUE line; /* if no argument given, print newline. */ if (argc == 0) { fcgi_stream_write(out, rb_default_rs); return Qnil; } for (i=0; i<argc; i++) { switch (TYPE(argv[i])) { case T_NIL: line = rb_str_new2("nil"); break; case T_ARRAY: rb_exec_recursive(fcgi_stream_puts_ary, argv[i], out); continue; default: line = argv[i]; break; } line = rb_obj_as_string(line); fcgi_stream_write(out, line); if (RSTRING_PTR(line)[RSTRING_LEN(line)-1] != '\n') { fcgi_stream_write(out, rb_default_rs); } } return Qnil; }
static VALUE fcgi_stream_read(int argc, VALUE *argv, VALUE self) { VALUE num,str; FCGX_Stream *stream; char *buff; int n; if (rb_safe_level() >= 4 && !OBJ_TAINTED(self)) { rb_raise(rb_eSecurityError, "Insecure: operation on untainted IO"); } Data_Get_Struct(self, FCGX_Stream, stream); if (argc==0) { buff = ALLOC_N(char, 16384); n = FCGX_GetStr(buff, 16384, stream); CHECK_STREAM_ERROR(stream); if (n == 0) { free(buff); return Qnil; } str = rb_str_new(buff, n); OBJ_TAINT(str); while(!FCGX_HasSeenEOF(stream)) { n = FCGX_GetStr(buff, 16384, stream); CHECK_STREAM_ERROR(stream); if (n > 0) { rb_str_cat(str, buff, n); } else { free(buff); return Qnil; } } free(buff); return str; } num = argv[0]; n = NUM2INT(num); buff = ALLOC_N(char, n); n = FCGX_GetStr(buff, n, stream); CHECK_STREAM_ERROR(stream); if (n > 0) { str = rb_str_new(buff, n); OBJ_TAINT(str); free(buff); return str; } else { free(buff); return Qnil; } }
static VALUE fcgi_stream_sync(VALUE self) { if (rb_safe_level() >= 4 && !OBJ_TAINTED(self)) { rb_raise(rb_eSecurityError, "Insecure: operation on untainted IO"); } return Qfalse; }
static VALUE fcgi_stream_setsync(VALUE self,VALUE sync) { if (rb_safe_level() >= 4 && !OBJ_TAINTED(self)) { rb_raise(rb_eSecurityError, "Insecure: operation on untainted IO"); } return Qfalse; }
static VALUE fcgi_stream_isatty(VALUE self) { if (rb_safe_level() >= 4 && !OBJ_TAINTED(self)) { rb_raise(rb_eSecurityError, "Insecure: operation on untainted IO"); } return Qfalse; }
static VALUE fcgi_stream_ungetc(VALUE self, VALUE ch) { FCGX_Stream *stream; int c; if (rb_safe_level() >= 4 && !OBJ_TAINTED(self)) { rb_raise(rb_eSecurityError, "Insecure: operation on untainted IO"); } Data_Get_Struct(self, FCGX_Stream, stream); c = FCGX_UnGetChar(NUM2INT(ch), stream); CHECK_STREAM_ERROR(stream); return INT2NUM(c); }
static VALUE fcgi_stream_write(VALUE self, VALUE str) { FCGX_Stream *stream; int len; rb_secure(4); Data_Get_Struct(self, FCGX_Stream, stream); str = rb_obj_as_string(str); len = FCGX_PutStr(RSTRING_PTR(str), RSTRING_LEN(str), stream); if (len == EOF) CHECK_STREAM_ERROR(stream); return INT2NUM(len); }
Generated with the Darkfish Rdoc Generator 2.