/*
 * re_plugin_unsaved.h
 *
 * A programmers editor
 *
 * re_data plugin to support the unsaved changes file.
 * (for recovery when the program closes unexpectedly)
 *
 * HEADER FILE
 *
 * Author: Dario Rodriguez antartica@whereismybit.com
 * This program is licensed under the terms of GNU GPL v2.1+
 */

#include "re_data.h"

typedef struct unsaved_t {
        char initialhash[129];
        int unsavedfd;
        long sizebuf;
        long usedbuf;
        char *buf;
} unsaved_t;

int redata_unsaved_register(redata_t *redata, redata_plugin_t *slot);
int redata_unsaved_unregister(redata_t *redata, redata_plugin_t *slot,char *filename);

int redata_unsaved_exists(redata_t *redata, redata_plugin_t *slot, char *filename);
int redata_unsaved_check(redata_t *redata, redata_plugin_t *slot, char *filename);
int redata_unsaved_wipe(redata_t *redata, redata_plugin_t *slot, char *filename);
int redata_unsaved_truncload(redata_t *redata, redata_plugin_t *slot, char *filename);
int redata_unsaved_loadappend(redata_t *redata, redata_plugin_t *slot, char *filename);
int redata_unsaved_unlink(redata_t *redata, redata_plugin_t *slot, char *filename);
int redata_unsaved_trunc(redata_t *redata, redata_plugin_t *slot, char *oldfilename, char *newfilename);
int redata_unsaved_add_or_unadd(redata_t *redata, redata_plugin_t *slot, undo_t *undo, int is_unadd);
int redata_unsaved_unadd(redata_t *redata, redata_plugin_t *slot, undo_t *undo);
int redata_unsaved_commit(redata_t *redata, redata_plugin_t *slot, char *filename);