Update of /cvsroot/alsa/alsa-lib/src/alisp
In directory sc8-pr-cvs1:/tmp/cvs-serv20615/alisp
Modified Files:
alisp.c alisp_local.h
Log Message:
Fixed some lisp bugs
Index: alisp.c
===================================================================
RCS file: /cvsroot/alsa/alsa-lib/src/alisp/alisp.c,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- alisp.c 24 Jun 2003 19:30:09 -0000 1.1
+++ alisp.c 27 Jun 2003 20:38:13 -0000 1.2
@@ -64,6 +64,20 @@
va_start(ap, fmt);
snd_output_printf(instance->vout, "alisp: ");
snd_output_vprintf(instance->vout, fmt, ap);
+ snd_output_putc(instance->vout, '\n');
+ va_end(ap);
+}
+
+static void lisp_error(struct alisp_instance *instance, const char *fmt, ...)
+{
+ va_list ap;
+
+ if (!instance->warning)
+ return;
+ va_start(ap, fmt);
+ snd_output_printf(instance->eout, "alisp error: ");
+ snd_output_vprintf(instance->eout, fmt, ap);
+ snd_output_putc(instance->eout, '\n');
va_end(ap);
}
@@ -76,6 +90,7 @@
va_start(ap, fmt);
snd_output_printf(instance->wout, "alisp warning: ");
snd_output_vprintf(instance->wout, fmt, ap);
+ snd_output_putc(instance->wout, '\n');
va_end(ap);
}
@@ -88,6 +103,7 @@
va_start(ap, fmt);
snd_output_printf(instance->dout, "alisp debug: ");
snd_output_vprintf(instance->dout, fmt, ap);
+ snd_output_putc(instance->dout, '\n');
va_end(ap);
}
@@ -173,9 +189,9 @@
static int xgetc(struct alisp_instance *instance)
{
- if (instance->lex_bufp > instance->lex_buf)
- *--(instance->lex_bufp);
instance->charno++;
+ if (instance->lex_bufp > instance->lex_buf)
+ return *--(instance->lex_bufp);
return snd_input_getc(instance->in);
}
@@ -357,13 +373,17 @@
*/
if (thistoken == '.') {
thistoken = gettoken(instance);
- if (prev == NULL)
- errx(1, "unexpected `.'");
+ if (prev == NULL) {
+ lisp_error(instance, "unexpected `.'");
+ return NULL;
+ }
prev->value.c.cdr = parse_object(instance, 1);
if (prev->value.c.cdr == NULL)
return NULL;
- if ((thistoken = gettoken(instance)) != ')')
- errx(1, "expected `)'");
+ if ((thistoken = gettoken(instance)) != ')') {
+ lisp_error(instance, "expected `)'");
+ return NULL;
+ }
break;
}
@@ -380,7 +400,7 @@
if (p->value.c.car == NULL)
return NULL;
prev = p;
- };
+ }
if (first == NULL)
return &alsa_lisp_nil;
@@ -560,12 +580,12 @@
{
struct alisp_object * p;
- snd_output_printf(out, "** used objects");
+ snd_output_printf(out, "** used objects\n");
for (p = instance->used_objs_list; p != NULL; p = p->next)
- snd_output_printf(out, "** %p (%s)", p, obj_type_str(p));
- snd_output_printf(out, "** free objects");
+ snd_output_printf(out, "** %p (%s)\n", p, obj_type_str(p));
+ snd_output_printf(out, "** free objects\n");
for (p = instance->free_objs_list; p != NULL; p = p->next)
- snd_output_printf(out, "** %p (%s)", p, obj_type_str(p));
+ snd_output_printf(out, "** %p (%s)\n", p, obj_type_str(p));
}
static void dump_obj_lists(struct alisp_instance *instance, const char *fname)
@@ -1537,7 +1557,7 @@
{
struct alisp_object * p1 = car(p), * p2 = cdr(p), * p3;
- if (p1 != &alsa_lisp_nil && p1->type == ALISP_IDENTIFIER) {
+ if (p1 != &alsa_lisp_nil && p1->type == ALISP_OBJ_IDENTIFIER) {
struct intrinsic key, *item;
if (!strcmp(p1->value.id, "lambda"))
@@ -1597,6 +1617,7 @@
instance->in = cfg->in;
instance->out = cfg->out;
instance->vout = cfg->vout;
+ instance->eout = cfg->eout;
instance->wout = cfg->wout;
instance->dout = cfg->dout;
@@ -1605,11 +1626,17 @@
for (;;) {
if ((p = parse_object(instance, 0)) == NULL)
break;
- if (instance->verbose)
+ if (instance->verbose) {
+ lisp_verbose(instance, "** code");
princ_object(instance->vout, p);
+ snd_output_putc(instance->vout, '\n');
+ }
p1 = eval(instance, p);
- if (instance->verbose)
+ if (instance->verbose) {
+ lisp_verbose(instance, "** result");
princ_object(instance->vout, p1);
+ snd_output_putc(instance->vout, '\n');
+ }
if (instance->debug) {
lisp_debug(instance, "** objects before collection");
print_obj_lists(instance, instance->dout);
Index: alisp_local.h
===================================================================
RCS file: /cvsroot/alsa/alsa-lib/src/alisp/alisp_local.h,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- alisp_local.h 24 Jun 2003 19:30:09 -0000 1.1
+++ alisp_local.h 27 Jun 2003 20:38:13 -0000 1.2
@@ -66,6 +66,7 @@
/* i/o */
snd_input_t *in;
snd_output_t *out;
+ snd_output_t *eout; /* error output */
snd_output_t *vout; /* verbose output */
snd_output_t *wout; /* warning output */
snd_output_t *dout; /* debug output */
-------------------------------------------------------
This SF.Net email sponsored by: Free pre-built ASP.NET sites including
Data Reports, E-commerce, Portals, and Forums are available now.
Download today and enter to win an XBOX or Visual Studio .NET.
http://aspnet.click-url.com/go/psa00100006ave/direct;at.asp_061203_01/01
_______________________________________________
Alsa-cvslog mailing list
[EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/alsa-cvslog