static int rewind_redo(struct csv* file, int bytes_back, char*** out_fields) { memset(file->buffer, '\0', __CSV_BUF_SIZE); errno = 0; if (lseek(file->fd, bytes_back, SEEK_CUR) == -1) return CSV_E_IO; return csv_read_record(file, out_fields); }
int mpl_tab_drv_read(MPL *mpl) { TABDCA *dca = mpl->dca; int ret; switch (dca->id) { case TAB_CSV: ret = csv_read_record(dca, dca->link); break; case TAB_XBASE: ret = dbf_read_record(dca, dca->link); break; case TAB_ODBC: ret = db_iodbc_read(dca, dca->link); break; case TAB_MYSQL: ret = db_mysql_read(dca, dca->link); break; default: xassert(dca != dca); } if (ret > 0) error(mpl, "error on reading data from table %s", mpl->stmt->u.tab->name); return ret; }