#define RESP_STR 1
#define RESP_INT 2
#define RESP_FLOAT 3
+#define RESP_LNUM 4
struct respclass
{
if((cmd->name != NULL) && !wcscmp(cmd->name, name))
break;
}
- if(cmd == NULL)
+ if(cmd == NULL) {
+ errno = ENOSYS; /* Bleh */
return(NULL);
+ }
}
new = smalloc(sizeof(*new));
new->tag = tag++;
{
freepart = 1;
part = swprintf2(L"%i", va_arg(al, int));
+ } else if(!wcscmp(tpart, L"li")) {
+ freepart = 1;
+ part = swprintf2(L"%ji", (intmax_t)va_arg(al, dc_lnum_t));
} else if(!wcscmp(tpart, L"s")) {
freepart = 1;
part = icmbstowcs(sarg = va_arg(al, char *), NULL);
} else {
if(buf != NULL)
free(buf);
+ errno = EINVAL;
return(-1);
}
} else {
iresp->argv[iresp->argc].type = cls->wordt[i];
iresp->argc++;
break;
+ case RESP_LNUM:
+ sizebuf(&(iresp->argv), &args, iresp->argc + 1, sizeof(*(iresp->argv)), 1);
+ iresp->argv[iresp->argc].val.lnum = wcstoll(resp->rlines[resp->curline].argv[i + 1], NULL, 0);
+ iresp->argv[iresp->argc].type = cls->wordt[i];
+ iresp->argc++;
+ break;
}
}
resp->curline++;