ret = scm_cons(scm_makfrom0str(icswcstombs(ires->argv[i].val.str, "UTF-8", NULL)), ret);
break;
case 2:
- ret = scm_cons(scm_int2num(ires->argv[i].val.num), ret);
+ ret = scm_cons(scm_from_int(ires->argv[i].val.num), ret);
break;
case 3:
- ret = scm_cons(scm_double2num(ires->argv[i].val.flnum), ret);
+ ret = scm_cons(scm_from_double(ires->argv[i].val.flnum), ret);
+ break;
+ case 4:
+ ret = scm_cons(scm_from_int64(ires->argv[i].val.lnum), ret);
break;
}
}
dc_freewcsarr(toks);
if(cmd != NULL)
free(cmd);
- return(scm_from_int(tag));
+ if(tag == -1) {
+ if(errno == ENOSYS) {
+ scm_error(scm_str2symbol("no-such-cmd"), "dc-qcmd", "Invalid command name", SCM_EOL, SCM_BOOL_F);
+ } else if(errno == EINVAL) {
+ scm_error(scm_str2symbol("illegal-escape"), "dc-qcmd", "Invalid escape sequence", SCM_EOL, SCM_BOOL_F);
+ } else {
+ scm_syserror("dc-qcmd");
+ }
+ } else {
+ return(scm_from_int(tag));
+ }
}
static void login_scmcb(int err, wchar_t *reason, struct scmcb *scmcb)