renamed folders
This commit is contained in:
45
source/refsfound.c
Normal file
45
source/refsfound.c
Normal file
@ -0,0 +1,45 @@
|
||||
#include "global.h"
|
||||
/* Possibly rename */
|
||||
|
||||
struct FILE;
|
||||
|
||||
/* Page cursor stack */
|
||||
static FILE **hto_page = &refsfound;
|
||||
#define PCS_MAXPAGE 16
|
||||
static size_t PCS_pos[PCS_MAXPAGE] = {0};
|
||||
static size_t PCS_top = 0;
|
||||
|
||||
long seekpage(const size_t i) {
|
||||
if(i > PCS_MAXPAGE - 1) { return -1; }
|
||||
|
||||
if(i < PCS_top) {
|
||||
fseek(*hto_page, PCS_pos[i], SEEK_SET);
|
||||
return PCS_pos[i];
|
||||
}
|
||||
|
||||
fseek(*hto_page, PCS_pos[PCS_top], SEEK_SET);
|
||||
|
||||
size_t lc = 0;
|
||||
while(PCS_top < i) {
|
||||
const char c = getc(*hto_page);
|
||||
if(c == '\n') { ++lc; }
|
||||
if(c == EOF) { return -1; }
|
||||
if(lc == mdisprefs) { PCS_pos[++PCS_top] = ftell(*hto_page); }
|
||||
}
|
||||
return PCS_pos[PCS_top];
|
||||
}
|
||||
|
||||
long seekrelline(unsigned i) {
|
||||
seekpage(current_page);
|
||||
size_t lc = 0;
|
||||
while(lc < i) {
|
||||
const char c = getc(*hto_page);
|
||||
assert("seekrelline() tried to read past the reference file" && !(c == EOF));
|
||||
if(c == '\n') { ++lc; }
|
||||
}
|
||||
return ftell(*hto_page);
|
||||
}
|
||||
|
||||
void PCS_reset(void) {
|
||||
PCS_top = 0;
|
||||
}
|
Reference in New Issue
Block a user