summaryrefslogtreecommitdiff
path: root/tbdiff/tbdiff-common.h
diff options
context:
space:
mode:
Diffstat (limited to 'tbdiff/tbdiff-common.h')
-rw-r--r--tbdiff/tbdiff-common.h103
1 files changed, 103 insertions, 0 deletions
diff --git a/tbdiff/tbdiff-common.h b/tbdiff/tbdiff-common.h
new file mode 100644
index 0000000..d4ac2c8
--- /dev/null
+++ b/tbdiff/tbdiff-common.h
@@ -0,0 +1,103 @@
+/*
+ * Copyright (C) 2011-2012 Codethink Ltd.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License Version 2 as
+ * published by the Free Software Foundation.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+ */
+
+#if !defined (TBDIFF_INSIDE_TBDIFF_H) && !defined (TBDIFF_COMPILATION)
+#error "Only <tbdiff/tbdiff.h> may be included directly. This file might disappear or change contents."
+#endif
+
+#ifndef __TBDIFF_COMMON_H__
+#define __TBDIFF_COMMON_H__
+
+#include <stdio.h>
+#include <stdint.h>
+
+#include <tbdiff/tbdiff-stat.h>
+
+typedef enum {
+ TBD_CMD_IDENTIFY = 0x00,
+ TBD_CMD_UPDATE = 0x01,
+ TBD_CMD_DIR_CREATE = 0x10,
+ TBD_CMD_DIR_ENTER = 0x11,
+ TBD_CMD_DIR_LEAVE = 0x12,
+ TBD_CMD_DIR_DELTA = 0x13,
+ TBD_CMD_FILE_CREATE = 0x20,
+ TBD_CMD_FILE_DELTA = 0x21,
+ TBD_CMD_FILE_METADATA_UPDATE = 0x22,
+ TBD_CMD_ENTITY_MOVE = 0x30,
+ TBD_CMD_ENTITY_COPY = 0x31,
+ TBD_CMD_ENTITY_DELETE = 0x32,
+ TBD_CMD_SYMLINK_CREATE = 0x40,
+ TBD_CMD_SPECIAL_CREATE = 0x50,
+ TBD_CMD_XATTRS_UPDATE = 0x60,
+} tbd_cmd_e;
+
+typedef enum {
+ TBD_METADATA_NONE = 0x0,
+ TBD_METADATA_MTIME = 0x1,
+ TBD_METADATA_MODE = 0x2,
+ TBD_METADATA_UID = 0x4,
+ TBD_METADATA_GID = 0x8,
+ TBD_METADATA_RDEV = 0x10,
+} tbd_metadata_type_e;
+
+typedef enum {
+ TBD_ERROR_SUCCESS = 0,
+ TBD_ERROR_FAILURE = -1,
+ TBD_ERROR_OUT_OF_MEMORY = -2,
+ TBD_ERROR_NULL_POINTER = -3,
+ TBD_ERROR_INVALID_PARAMETER = -4,
+ TBD_ERROR_UNABLE_TO_READ_STREAM = -5,
+ TBD_ERROR_UNABLE_TO_WRITE_STREAM = -6,
+ TBD_ERROR_UNABLE_TO_CREATE_DIR = -7,
+ TBD_ERROR_UNABLE_TO_CHANGE_DIR = -8,
+ TBD_ERROR_UNABLE_TO_OPEN_FILE_FOR_READING = -9,
+ TBD_ERROR_UNABLE_TO_OPEN_FILE_FOR_WRITING = -10,
+ TBD_ERROR_FILE_ALREADY_EXISTS = -11,
+ TBD_ERROR_UNABLE_TO_REMOVE_FILE = -12,
+ TBD_ERROR_UNABLE_TO_SEEK_THROUGH_STREAM = -13,
+ TBD_ERROR_FEATURE_NOT_IMPLEMENTED = -14,
+ TBD_ERROR_FILE_DOES_NOT_EXIST = -15,
+ TBD_ERROR_UNABLE_TO_DETECT_STREAM_POSITION = -16,
+ TBD_ERROR_UNABLE_TO_STAT_FILE = -17,
+ TBD_ERROR_UNABLE_TO_READ_SYMLINK = -18,
+ TBD_ERROR_UNABLE_TO_CREATE_SYMLINK = -19,
+ TBD_ERROR_UNABLE_TO_READ_SPECIAL_FILE = -20,
+ TBD_ERROR_UNABLE_TO_CREATE_SPECIAL_FILE = -21,
+ TBD_ERROR_UNABLE_TO_CREATE_SOCKET_FILE = -22,
+ TBD_ERROR_XATTRS_NOT_SUPPORTED = -23,
+ TBD_ERROR_XATTRS_MISSING_ATTR = -24,
+} tbd_error_e;
+
+#ifdef NDEBUG
+#define TBD_ERROR(e) (e)
+#else
+#define TBD_ERROR(e) tbd_error(e, #e, __func__, __LINE__, __FILE__)
+static inline tbd_error_e
+tbd_error(tbd_error_e e, char const *s, char const *func, int line,
+ char const* file)
+{
+ if (e != TBD_ERROR_SUCCESS)
+ fprintf(stderr, "TBDiff error '%s' in function '%s' at line %d "
+ "of file '%s'.\n", s, func, line, file);
+ return e;
+}
+#endif
+
+extern int tbd_apply (FILE *stream);
+extern int tbd_create(FILE *stream, tbd_stat_t *a, tbd_stat_t *b);
+
+#endif /* !__TBDIFF_COMMON_H__ */