aboutsummaryrefslogtreecommitdiffstats
path: root/miniscm
diff options
context:
space:
mode:
authorGravatar Peter McGoron 2024-09-08 09:48:52 -0400
committerGravatar Peter McGoron 2024-09-08 09:48:52 -0400
commitf26ab0db3f028a025d392a837c815511f6714caa (patch)
treea3b050496229036bea09574b84f3bdc696714a50 /miniscm
parentreadtable: handle EOF by returning EOF symbol (diff)
miniscm: add string-ref
Diffstat (limited to 'miniscm')
-rw-r--r--miniscm/miniscm.c27
1 files changed, 26 insertions, 1 deletions
diff --git a/miniscm/miniscm.c b/miniscm/miniscm.c
index 6708a1a..e2b062d 100644
--- a/miniscm/miniscm.c
+++ b/miniscm/miniscm.c
@@ -1215,6 +1215,7 @@ register pointer a, b;
#define OP_WRITEOUT 110
#define OP_CHAR2INT 111
+#define OP_STRINGREF 112
static FILE *tmpfp;
static int tok;
@@ -1955,6 +1956,27 @@ register short op;
fprintf(outfp, "allocate %d new segments\n",
alloc_cellseg((int) ivalue(car(args))));
s_return(T);
+
+ case OP_STRINGREF:
+ if (!isstring(car(args))) {
+ Error_0("string-ref -- argument must be string");
+ }
+ x = car(args);
+
+ if (!isnumber(cadr(args))) {
+ Error_0("string-ref -- second argument must be int");
+ }
+ y = cadr(args);
+
+ if (strlen(strvalue(x)) <= ivalue(y)) {
+ Error_0("string-ref -- index out of range");
+ }
+
+ if (ivalue(y) < 0) {
+ Error_0("string-ref -- index cannot be negative");
+ }
+
+ s_return(mk_char_c(strvalue(x)[ivalue(y)]));
}
}
@@ -2458,7 +2480,8 @@ pointer (*dispatch_table[])() = {
opexe_7, /* OP_CLOSEOUT */
opexe_7, /* OP_WRITEOUT */
- opexe_2 /* OP_CHAR2INT */
+ opexe_2, /* OP_CHAR2INT */
+ opexe_4 /* OP_STRINGREF */
};
@@ -2617,6 +2640,8 @@ init_procs()
mk_proc(OP_WRITEOUT, "write-char");
mk_proc(OP_CHAR2INT, "char->integer");
+
+ mk_proc(OP_STRINGREF, "string-ref");
}
td>2000-09-01Added missing prototypes for iso send functions.Gravatar aeb 1-0/+7 git-svn-id: svn://svn.linux1394.org/libraw1394/trunk@36 53a565d1-3bb7-0310-b661-cf11e63c67ab 2000-08-08Added raw1394_get_irm_id().Gravatar aeb 7-7/+39 git-svn-id: svn://svn.linux1394.org/libraw1394/trunk@35 53a565d1-3bb7-0310-b661-cf11e63c67ab 2000-08-06Added support for isochronous sending.Gravatar aeb 3-0/+35 git-svn-id: svn://svn.linux1394.org/libraw1394/trunk@34 53a565d1-3bb7-0310-b661-cf11e63c67ab 2000-07-05Added raw1394_reset_bus() call.Gravatar aeb 4-0/+23 git-svn-id: svn://svn.linux1394.org/libraw1394/trunk@33 53a565d1-3bb7-0310-b661-cf11e63c67ab 2000-06-22- Set library version info in configure.in, use in src/Makefile.am.Gravatar aeb 4-2/+16 - Enable compiler warnings. git-svn-id: svn://svn.linux1394.org/libraw1394/trunk@32 53a565d1-3bb7-0310-b661-cf11e63c67ab 2000-06-15Update libtool version number.Gravatar aeb 2-2/+2 git-svn-id: svn://svn.linux1394.org/libraw1394/trunk@31 53a565d1-3bb7-0310-b661-cf11e63c67ab 2000-06-14Added copyright headers.Gravatar aeb 6-0/+54 git-svn-id: svn://svn.linux1394.org/libraw1394/trunk@30 53a565d1-3bb7-0310-b661-cf11e63c67ab 2000-06-11Added explicit AC_PROG_INSTALL call.Gravatar aeb 1-0/+1 git-svn-id: svn://svn.linux1394.org/libraw1394/trunk@29 53a565d1-3bb7-0310-b661-cf11e63c67ab 2000-06-09Fix size of error field.Gravatar aeb 1-2/+2 git-svn-id: svn://svn.linux1394.org/libraw1394/trunk@28 53a565d1-3bb7-0310-b661-cf11e63c67ab 2000-06-02Modified support for 32/64 bit environments, control struct fields have ↵Gravatar aeb 7-43/+28 fixed size now. git-svn-id: svn://svn.linux1394.org/libraw1394/trunk@27 53a565d1-3bb7-0310-b661-cf11e63c67ab 2000-05-28Added support for environments with 64 bit kernel and 32 bit userland.Gravatar aeb 8-7/+45 git-svn-id: svn://svn.linux1394.org/libraw1394/trunk@26 53a565d1-3bb7-0310-b661-cf11e63c67ab 2000-04-27Fixed missing setting of ext code in raw1394_start_lock()Gravatar aeb 1-0/+1 git-svn-id: svn://svn.linux1394.org/libraw1394/trunk@25 53a565d1-3bb7-0310-b661-cf11e63c67ab 2000-04-15Fixed lock transaction to actually return response value.Gravatar aeb 3-5/+11 git-svn-id: svn://svn.linux1394.org/libraw1394/trunk@24 53a565d1-3bb7-0310-b661-cf11e63c67ab 2000-04-12Add userdata functions as news.Gravatar aeb 1-0/+4 git-svn-id: svn://svn.linux1394.org/libraw1394/trunk@23 53a565d1-3bb7-0310-b661-cf11e63c67ab 2000-04-05Add userdata functions.Gravatar aeb 3-0/+18 git-svn-id: svn://svn.linux1394.org/libraw1394/trunk@22 53a565d1-3bb7-0310-b661-cf11e63c67ab 2000-03-18Bump version number to 0.6.Gravatar aeb 3-5/+6 git-svn-id: svn://svn.linux1394.org/libraw1394/trunk@21 53a565d1-3bb7-0310-b661-cf11e63c67ab 2000-03-18Mention byte order change.Gravatar aeb 1-0/+2 git-svn-id: svn://svn.linux1394.org/libraw1394/trunk@20 53a565d1-3bb7-0310-b661-cf11e63c67ab 2000-03-18Mention SourceForge home.Gravatar aeb 1-1/+5 git-svn-id: svn://svn.linux1394.org/libraw1394/trunk@19 53a565d1-3bb7-0310-b661-cf11e63c67ab