bool hl_sys_put_env( vbyte *e, vbyte *v ) { #ifdef HL_WIN hl_buffer *b = hl_alloc_buffer(); hl_buffer_str(b,(uchar*)e); hl_buffer_char(b,'='); if( v ) hl_buffer_str(b,(uchar*)v); return putenv(hl_buffer_content(b,NULL)) == 0; #else if( v == NULL ) return unsetenv((char*)e) == 0; return setenv((char*)e,(char*)v,1) == 0; #endif }
static void zlib_error( z_stream *z, int err ) { hl_buffer *b = hl_alloc_buffer(); vdynamic *d; hl_buffer_cstr(b, "ZLib Error : "); if( z && z->msg ) { hl_buffer_cstr(b,z->msg); hl_buffer_cstr(b," ("); } d = hl_alloc_dynamic(&hlt_i32); d->v.i = err; hl_buffer_val(b,d); if( z && z->msg ) hl_buffer_char(b,')'); d = hl_alloc_dynamic(&hlt_bytes); d->v.ptr = hl_buffer_content(b,NULL); hl_throw(d); }
static void hl_type_str_rec( hl_buffer *b, hl_type *t, tlist *parents ) { const uchar *c = TSTR[t->kind]; tlist *l, cur; int i; if( c != NULL ) { hl_buffer_str(b,c); return; } l = parents; while( l ) { if( l->t == t ) { hl_buffer_str(b,USTR("<...>")); return; } l = l->next; } cur.t = t; cur.next = parents; l = &cur; switch( t->kind ) { case HFUN: hl_buffer_char(b,'('); hl_type_str_rec(b,t->fun->ret,l); hl_buffer_char(b,' '); hl_buffer_char(b,'('); for(i=0; i<t->fun->nargs; i++) { if( i ) hl_buffer_char(b,','); hl_type_str_rec(b,t->fun->args[i],l); } hl_buffer_char(b,')'); hl_buffer_char(b,')'); break; case HOBJ: hl_buffer_char(b,'#'); hl_buffer_str(b,t->obj->name); break; case HREF: hl_buffer_str(b,USTR("ref<")); hl_type_str_rec(b,t->tparam,l); hl_buffer_char(b,'>'); break; case HVIRTUAL: hl_buffer_str(b,USTR("virtual<")); for(i=0; i<t->virt->nfields; i++) { hl_obj_field *f = t->virt->fields + i; if( i ) hl_buffer_char(b,','); hl_buffer_str(b,f->name); hl_buffer_char(b,':'); hl_type_str_rec(b,f->t,l); } hl_buffer_char(b,'>'); break; case HABSTRACT: hl_buffer_str(b,t->abs_name); break; case HENUM: hl_buffer_str(b,USTR("enum")); if( t->tenum->name ) { hl_buffer_char(b,'<'); hl_buffer_str(b,t->tenum->name); hl_buffer_char(b,'>'); } break; case HNULL: hl_buffer_str(b,USTR("null<")); hl_type_str_rec(b,t->tparam,l); hl_buffer_char(b,'>'); break; default: hl_buffer_str(b,USTR("???")); break; } }