🎨 improve rawstr() and builtin_getcwd(..), change format output in nasal_vm::valinfo()

This commit is contained in:
ValKmjolnir 2022-05-07 02:22:49 +08:00
parent 23a5c1b1ad
commit de262980cc
3 changed files with 17 additions and 13 deletions

23
nasal.h
View File

@ -130,16 +130,19 @@ std::string rawstr(const std::string& str)
#endif
switch(i)
{
case '\a': ret+="\\a";break;
case '\b': ret+="\\b";break;
case '\e': ret+="\\e";break;
case '\f': ret+="\\f";break;
case '\n': ret+="\\n";break;
case '\r': ret+="\\r";break;
case '\t': ret+="\\t";break;
case '\v': ret+="\\v";break;
case '\0': ret+="\\0";break;
default: ret+=i; break;
case '\0': ret+="\\0"; break;
case '\a': ret+="\\a"; break;
case '\b': ret+="\\b"; break;
case '\e': ret+="\\e"; break;
case '\t': ret+="\\t"; break;
case '\n': ret+="\\n"; break;
case '\v': ret+="\\v"; break;
case '\f': ret+="\\f"; break;
case '\r': ret+="\\r"; break;
case '\\': ret+="\\\\";break;
case '\'': ret+="\\\'";break;
case '\"': ret+="\\\"";break;
default: ret+=i; break;
}
}
return ret;

View File

@ -1118,7 +1118,8 @@ nasal_ref builtin_environ(nasal_ref* local,nasal_gc& gc)
nasal_ref builtin_getcwd(nasal_ref* local,nasal_gc& gc)
{
char buf[1024];
getcwd(buf,sizeof(buf));
if(!getcwd(buf,sizeof(buf)))
return builtin_err("getcwd","failed to call getcwd");
nasal_ref str=gc.alloc(vm_str);
str.str()=buf;
return str;

View File

@ -158,8 +158,8 @@ void nasal_vm::valinfo(nasal_ref& val)
printf("| str | <0x%lx> %.16s%s\n",(uint64_t)p,tmp.c_str(),tmp.length()>16?"...":"");
}break;
case vm_func: printf("| func | <0x%lx> entry:0x%x\n",(uint64_t)p,val.func().entry);break;
case vm_vec: printf("| vec | <0x%lx> [%lu val]\n",(uint64_t)p,val.vec().size());break;
case vm_hash: printf("| hash | <0x%lx> {%lu val}\n",(uint64_t)p,val.hash().size());break;
case vm_vec: printf("| vec | <0x%lx> [%zu val]\n",(uint64_t)p,val.vec().size());break;
case vm_hash: printf("| hash | <0x%lx> {%zu val}\n",(uint64_t)p,val.hash().size());break;
case vm_obj: printf("| obj | <0x%lx> obj:0x%lx\n",(uint64_t)p,(uint64_t)val.obj().ptr);break;
default: printf("| err | <0x%lx> unknown object\n",(uint64_t)p);break;
}