/* * call-seq: * lrg.write( str ) * * Writes the string _str_ to the large object. * Returns the number of bytes written. */ static VALUE pglarge_write(obj, buffer) VALUE obj, buffer; { int n; PGlarge *pglarge = get_pglarge(obj); Check_Type(buffer, T_STRING); if( RSTRING(buffer)->len < 0) { rb_raise(rb_ePGError, "write buffer zero string"); } if((n = lo_write(pglarge->pgconn, pglarge->lo_fd, STR2CSTR(buffer), RSTRING(buffer)->len)) == -1) { rb_raise(rb_ePGError, "buffer truncated during write"); } return INT2FIX(n); }