void slib_import_routines(slib_t *lib) { #if defined(LNX_EXTLIB) || defined(WIN_EXTLIB) int i, count; char buf[SB_KEYWORD_SIZE]; int (*fgetname) (int, char *); int (*fcount) (void); lib->first_proc = extproccount; lib->first_func = extfunccount; fcount = slib_getoptptr(lib, "sblib_proc_count"); fgetname = slib_getoptptr(lib, "sblib_proc_getname"); if (fcount) { count = fcount(); for (i = 0; i < count; i++) { if (fgetname(i, buf)) { slib_add_external_proc(buf, lib->id); } } } fcount = slib_getoptptr(lib, "sblib_func_count"); fgetname = slib_getoptptr(lib, "sblib_func_getname"); if (fcount) { count = fcount(); for (i = 0; i < count; i++) { if (fgetname(i, buf)) { slib_add_external_func(buf, lib->id); } } } #endif }
static void print_flist_1( flist_t *flist, char **ppfx, int parentoff) { char buf[16]; const field_t *f; const ftattr_t *fa; flist_t *fl; int low; int neednl; char **pfx; for (fl = flist; fl && !seenint(); fl = fl->sibling) { pfx = copy_strvec(ppfx); if (fl->name[0]) add_strvec(&pfx, fl->name); if (fl->flags & FL_OKLOW) { add_strvec(&pfx, "["); snprintf(buf, sizeof(buf), "%d", fl->low); add_strvec(&pfx, buf); if (fl->low != fl->high) { add_strvec(&pfx, "-"); snprintf(buf, sizeof(buf), "%d", fl->high); add_strvec(&pfx, buf); } add_strvec(&pfx, "]"); } if (fl->child) { if (fl->name[0]) add_strvec(&pfx, "."); print_flist_1(fl->child, pfx, fl->offset); } else { f = fl->fld; fa = &ftattrtab[f->ftyp]; ASSERT(fa->ftyp == f->ftyp); print_strvec(pfx); dbprintf(" = "); if (fl->flags & FL_OKLOW) low = fl->low; else low = 0; if (fa->prfunc) { neednl = fa->prfunc(iocur_top->data, fl->offset, fcount(f, iocur_top->data, parentoff), fa->fmtstr, fsize(f, iocur_top->data, parentoff, 0), fa->arg, low, (f->flags & FLD_ARRAY) != 0); if (neednl) dbprintf("\n"); } else { ASSERT(fa->arg & FTARG_OKEMPTY); dbprintf(_("(empty)\n")); } } free_strvec(pfx); } }
void blistenTask(void * ignored) { while (true) { while (fcount(uFile) < 1) { delay(500); } // Long delay, don't need to be snappy char buffer[100]; callback(fgets(buffer, 50, uFile)); } }
void print_sarray( void *obj, int bit, int count, int size, int base, int array, const field_t *flds, int skipnms) { int bitoff; const field_t *f; const ftattr_t *fa; int first; int i; ASSERT(bitoffs(bit) == 0); if (skipnms == 0) { for (f = flds, first = 1; f->name; f++) { if (f->flags & FLD_SKIPALL) continue; dbprintf("%c%s", first ? '[' : ',', f->name); first = 0; } dbprintf("] "); } for (i = 0, bitoff = bit; i < count && !seenint(); i++, bitoff += size) { if (array) dbprintf("%d:", i + base); for (f = flds, first = 1; f->name; f++) { if (f->flags & FLD_SKIPALL) continue; fa = &ftattrtab[f->ftyp]; ASSERT(fa->ftyp == f->ftyp); dbprintf("%c", first ? '[' : ','); first = 0; if (fa->prfunc) fa->prfunc(obj, bitoff + bitoffset(f, obj, bitoff, i + base), fcount(f, obj, bitoff), fa->fmtstr, fsize(f, obj, bitoff, i + base), fa->arg, (f->flags & FLD_ABASE1) != 0, f->flags & FLD_ARRAY); else { ASSERT(fa->arg & FTARG_OKEMPTY); dbprintf(_("(empty)")); } } dbprintf("]"); if (i < count - 1) dbprintf(" "); } }