X-Git-Url: http://dolda2000.com/gitweb/?a=blobdiff_plain;f=lib%2Fguile%2Fdolcon-guile.c;h=553c7d5889efa543e81686486a8a9aa61b0f51bc;hb=84f2822dcf4c4fd40a4e6d7a8a2861a8f7a0bccd;hp=2b3de3b86ded102db8d33efe80f44b1c1c2c506e;hpb=91333cf2e7a8065c380ff5b4e4f95b8ac05b0170;p=doldaconnect.git diff --git a/lib/guile/dolcon-guile.c b/lib/guile/dolcon-guile.c index 2b3de3b..553c7d5 100644 --- a/lib/guile/dolcon-guile.c +++ b/lib/guile/dolcon-guile.c @@ -184,10 +184,13 @@ static SCM scm_dc_intresp(SCM scm_resp) 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; } } @@ -262,7 +265,17 @@ static SCM scm_dc_qcmd(SCM argv, SCM callback) 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)