- result->start= result->end= 0;
- fake.hb= result;
- return app_pre(cd,ip,1,fake,strc,strv);
+ rc= strs1(ip,strc,strv,&l); if (rc) return rc;
+ dest= cht_hb_arrayspace(result,l);
+ strs2(dest, strc,strv);
+ return TCL_OK;
+}
+
+static int underrun(Tcl_Interp *ip) {
+ return cht_staticerr(ip,"data underrun","HBYTES LENGTH UNDERRUN");
+}
+
+int cht_do_hbytes_unprepend(ClientData cd, Tcl_Interp *ip,
+ HBytes_Var v, int preflength, HBytes_Value *result) {
+ const Byte *rdata= cht_hb_unprepend(v.hb, preflength);
+ if (!rdata) return underrun(ip);
+ cht_hb_array(result, rdata, preflength);
+ return TCL_OK;
+}
+
+int cht_do_hbytes_unappend(ClientData cd, Tcl_Interp *ip,
+ HBytes_Var v, int suflength, HBytes_Value *result) {
+ const Byte *rdata= cht_hb_unappend(v.hb, suflength);
+ if (!rdata) return underrun(ip);
+ cht_hb_array(result, rdata, suflength);
+ return TCL_OK;