static void maybe_read(struct thread *thread) { obj_t *fp = thread->fp; int fd = fixnum_value(fp[-9]); int nfound, res; obj_t *old_sp; nfound = input_available(fd); if (nfound < 0) { old_sp = pop_linkage(thread); thread->sp = old_sp + 2; old_sp[0] = obj_False; old_sp[1] = make_fixnum(errno); do_return(thread, old_sp, old_sp); } else if (nfound == 0) wait_for_input(thread, fd, maybe_read); else { res = mindy_read(fd, (char *)(buffer_data(fp[-8]) + fixnum_value(fp[-7])), fixnum_value(fp[-6])); results(thread, pop_linkage(thread), res, make_fixnum(res)); } }
static int mindy_getchar () { char c; int num_read = mindy_read(0, &c, 1); if (num_read < 1) return EOF; else return c; }