diff --git a/nasal.h b/nasal.h index 3a0051d..29d7f9e 100644 --- a/nasal.h +++ b/nasal.h @@ -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; diff --git a/nasal_builtin.h b/nasal_builtin.h index 8440625..d10dbba 100644 --- a/nasal_builtin.h +++ b/nasal_builtin.h @@ -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; diff --git a/nasal_vm.h b/nasal_vm.h index 2cb5e2c..211fb85 100644 --- a/nasal_vm.h +++ b/nasal_vm.h @@ -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; }