struct pvm_object pvm_get_class_name( struct pvm_object o ) { struct pvm_object c = o.data->_class; if(c.data->_flags & PHANTOM_OBJECT_STORAGE_FLAG_IS_CLASS) { struct data_area_4_class *da = (struct data_area_4_class *)&(c.data->da); ref_inc_o( da->class_name ); return da->class_name; } else return pvm_create_string_object("(class corrupt?)"); }
static pvm_object_t cn_url_blocking_syscall_worker( pvm_object_t conn, struct data_area_4_thread *tc, int nmethod, pvm_object_t arg ) { (void) conn; (void) tc; (void) arg; struct data_area_4_connection *c = pvm_object_da( conn, connection ); //struct cn_url_volatile *vp = c->v_kernel_state; struct cn_url_persistent *pp = c->p_kernel_state; char buf[4096]; errno_t e = 0; switch( nmethod ) { default: case CONN_OP_READ: e = net_curl( pp->url, buf, sizeof(buf) ); break; case CONN_OP_WRITE: case CONN_OP_BIND: e = ENOSYS; break; } //ret: if( e ) { SHOW_ERROR( 1, "err %d", e ); // err_ret: return pvm_create_string_object(""); } char *bp = buf; // Skip HTTP headers for( ; *bp ; bp++ ) { if( (bp[0] == '\r') && (bp[1] == '\n') && (bp[2] == '\r') && (bp[3] == '\n') ) { bp += 4; goto done; } if( (bp[0] == '\n') && (bp[1] == '\n') ) { bp += 2; goto done; } } // fall through if no headers, ignore? SHOW_ERROR( 1, "no headers in '%s'", buf ); // goto err_ret; done: return pvm_create_string_object(bp); }
static int tostring_5(struct pvm_object me , struct data_area_4_thread *tc ) { (void) me; DEBUG_INFO; SYSCALL_RETURN( pvm_create_string_object( "tty window" )); }