#ifndef TWEAK_TWEAK_H
#define TWEAK_TWEAK_H
+#ifndef NO_LARGE_FILES
+
+#ifndef _LARGEFILE_SOURCE
+#define _LARGEFILE_SOURCE
+#endif
+#ifndef _FILE_OFFSET_BITS
+#define _FILE_OFFSET_BITS 64
+#endif
+
+#endif
+
#ifndef FALSE
#define FALSE 0
#endif
#define ABORT 7 /* character code for ^G */
#endif
-#define VER "B2.99" /* version, must be 5 chars */
+#ifndef VER
+#define VER ""
+#endif
#define SEARCH_BLK 65536 /* so can this */
#define SAVE_BLKSIZ 32768 /* and this too */
#define NULL64 NULL16,NULL16,NULL16,NULL16
#define NULL256 NULL64,NULL64,NULL64,NULL64
+#include <stdio.h>
+
+#ifdef NO_LARGE_FILES
+typedef int fileoffset_t; /* used for all file offsets */
+#define OFF
+#define ATOOFF atoi
+#define STRTOOFF strtol
+#define fseeko fseek
+#define ftello ftell
+#else
+typedef long long fileoffset_t; /* used for all file offsets */
+#define OFF "ll"
+#define ATOOFF atoll
+#define STRTOOFF strtoll
+#endif
+
typedef int (*DFA)[256];
+typedef struct {
+ int len;
+ DFA forward, reverse;
+} Search;
+
typedef void (*keyact) (void);
typedef struct buffer buffer;
-extern char toprint[256], hex[256][3], message[80];
+extern char toprint[256], hex[256][3], message[512];
extern char decstatus[], hexstatus[], *statfmt;
extern char last_char, *pname, *filename;
extern buffer *filedata, *cutbuffer;
extern int fix_mode, look_mode, insert_mode, edit_type, finished, marking;
-extern long file_size, top_pos, cur_pos, mark_point;
+extern fileoffset_t file_size, top_pos, cur_pos, mark_point;
extern int scrlines, modified, new_file;
-extern int width, offset, realoffset, ascii_enabled;
+extern fileoffset_t width, offset, realoffset;
+extern int ascii_enabled;
#ifdef unix
extern volatile int safe_update, update_required;
#endif
extern void fix_offset(void);
-extern long parse_num (char *buffer, int *error);
+extern fileoffset_t parse_num (char *buffer, int *error);
extern void draw_scr (void);
extern int backup_file (void);
extern void proc_key (void);
extern void bind_key (char *, int, keyact);
-extern DFA build_dfa (char *, int);
-extern DFA last_dfa (void);
-extern int last_len (void);
+extern Search *build_search (char *, int);
+void free_search(Search *s);
extern int get_str (char *, char *, int);
extern int parse_quoted (char *);
extern buffer *buf_new_from_file(FILE *fp);
extern void buf_free(buffer *buf);
-extern void buf_insert_data(buffer *buf, void *data, int len, int pos);
-extern void buf_fetch_data(buffer *buf, void *data, int len, int pos);
-extern void buf_overwrite_data(buffer *buf, void *data, int len, int pos);
-extern void buf_delete(buffer *buf, int len, int pos);
-extern buffer *buf_cut(buffer *buf, int len, int pos);
-extern buffer *buf_copy(buffer *buf, int len, int pos);
-extern void buf_paste(buffer *buf, buffer *cutbuffer, int pos);
-extern int buf_length(buffer *buf);
+extern void buf_insert_data(buffer *buf, void *data, int len,
+ fileoffset_t pos);
+extern void buf_fetch_data(buffer *buf, void *data, int len, fileoffset_t pos);
+extern void buf_overwrite_data(buffer *buf, void *data, int len,
+ fileoffset_t pos);
+extern void buf_delete(buffer *buf, fileoffset_t len, fileoffset_t pos);
+extern buffer *buf_cut(buffer *buf, fileoffset_t len, fileoffset_t pos);
+extern buffer *buf_copy(buffer *buf, fileoffset_t len, fileoffset_t pos);
+extern void buf_paste(buffer *buf, buffer *cutbuffer, fileoffset_t pos);
+extern fileoffset_t buf_length(buffer *buf);
extern void display_setup(void);
extern void display_cleanup(void);
extern void display_refresh(void);
extern void display_write_str(char *str);
extern void display_write_chars(char *str, int len);
-extern void display_define_colour(int colour, int fg, int bg);
+extern void display_define_colour(int colour, int fg, int bg, int reverse);
extern void display_set_colour(int colour);
extern void display_clear_to_eol(void);
extern int display_getkey(void);