Fixed typo in guile intresp.
[doldaconnect.git] / lib / guile / dolcon-guile.c
index 2b3de3b..553c7d5 100644 (file)
@@ -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)