#include <stdio.h>
#include <stdlib.h>
#include <string.h>
+#include <limits.h>
#include <ctype.h>
#if defined(__BORLANDC__) || defined(_MSC_VER)
#include <io.h>
if(!GlobalState.skipping_current_game) {
fprintf(GlobalState.logfile,"Missing closing quote in %s\n",line);
}
- if(len != 1){
+ if(len > 1){
/* Move back to the null. */
linep--;
str[len-1] = '\0';
return yyin != NULL;
}
+Boolean
+seek_to_begin(void)
+{
+ if(GlobalState.start_position <= 0) {
+ return TRUE;
+ }
+ if(fseek(yyin, GlobalState.start_position, SEEK_SET) != 0) {
+ fprintf(GlobalState.logfile,"Cannot seek to position %ld in %s\n",
+ GlobalState.start_position,
+ GlobalState.current_input_file);
+ return FALSE;
+ }
+ return TRUE;
+}
+
+Boolean
+at_end_of_input(void)
+{
+ long pos;
+ if(GlobalState.end_position >= LONG_MAX) {
+ return FALSE;
+ }
+ pos = ftell(yyin);
+ if(pos == -1) {
+ fprintf(GlobalState.logfile,"Cannot find position in %s\n",
+ GlobalState.current_input_file);
+ return TRUE;
+ }
+ return pos >= GlobalState.end_position;
+}
+
/* Simple interface to open_input for the ECO file. */
Boolean
open_eco_file(const char *eco_file)
*/
if(open_input(list_of_files.files[file_number])){
GlobalState.current_file_type = list_of_files.file_type[file_number];
+ GlobalState.current_file_number = file_number + GlobalState.start_file_number;
return TRUE;
}
else{
}
}
+ /* Return the position in the current file. Returns -1 if it is unseekable. */
+long get_position(void)
+{
+ return ftell(yyin);
+}