summaryrefslogtreecommitdiff
path: root/package/cfgfs/src/pack.h
diff options
context:
space:
mode:
Diffstat (limited to 'package/cfgfs/src/pack.h')
-rw-r--r--package/cfgfs/src/pack.h95
1 files changed, 95 insertions, 0 deletions
diff --git a/package/cfgfs/src/pack.h b/package/cfgfs/src/pack.h
new file mode 100644
index 000000000..9dfb8233f
--- /dev/null
+++ b/package/cfgfs/src/pack.h
@@ -0,0 +1,95 @@
+/* $MirOS: contrib/hosted/fwcf/pack.h,v 1.13 2007/03/09 21:10:29 tg Exp $ */
+
+/*
+ * This file is part of the FreeWRT project. FreeWRT is copyrighted
+ * material, please see the LICENCE file in the top-level directory
+ * or at http://www.freewrt.org/licence for details.
+ */
+
+#ifndef PACK_H
+#define PACK_H
+
+struct FTSF_ENTRY;
+#ifndef FTS_SUBS_H
+typedef struct FTSF_ENTRY ftsf_entry;
+#endif
+
+/* XXX use macros from minilzop.h */
+
+#define STOREB(x) do { \
+ if (hdrleft < 1) \
+ return (NULL); \
+ *hdrptr++ = (x) & 0xFF; \
+ --hdrleft; \
+ } while (0)
+
+#define STOREW(x) do { \
+ if (hdrleft < 2) \
+ return (NULL); \
+ *hdrptr++ = (x) & 0xFF; \
+ *hdrptr++ = ((x) >> 8) & 0xFF; \
+ hdrleft -= 2; \
+ } while (0)
+
+#define STORET(x) do { \
+ if (hdrleft < 3) \
+ return (NULL); \
+ *hdrptr++ = (x) & 0xFF; \
+ *hdrptr++ = ((x) >> 8) & 0xFF; \
+ *hdrptr++ = ((x) >> 16) & 0xFF; \
+ hdrleft -= 3; \
+ } while (0)
+
+#define STORED(x) do { \
+ if (hdrleft < 4) \
+ return (NULL); \
+ *hdrptr++ = (x) & 0xFF; \
+ *hdrptr++ = ((x) >> 8) & 0xFF; \
+ *hdrptr++ = ((x) >> 16) & 0xFF; \
+ *hdrptr++ = ((x) >> 24) & 0xFF; \
+ hdrleft -= 4; \
+ } while (0)
+
+#define LOADW(x) __extension__({ \
+ uint8_t *lwbf = (uint8_t *)(x); \
+ uint32_t res = 0; \
+ res = (res << 8) | lwbf[1]; \
+ res = (res << 8) | lwbf[0]; \
+ res; \
+ })
+
+#define LOADT(x) __extension__({ \
+ uint8_t *lwbf = (uint8_t *)(x); \
+ uint32_t res = 0; \
+ res = (res << 8) | lwbf[2]; \
+ res = (res << 8) | lwbf[1]; \
+ res = (res << 8) | lwbf[0]; \
+ res; \
+ })
+
+#define LOADD(x) __extension__({ \
+ uint8_t *lwbf = (uint8_t *)(x); \
+ uint32_t res = 0; \
+ res = (res << 8) | lwbf[3]; \
+ res = (res << 8) | lwbf[2]; \
+ res = (res << 8) | lwbf[1]; \
+ res = (res << 8) | lwbf[0]; \
+ res; \
+ })
+
+__BEGIN_DECLS
+char *ft_pack(ftsf_entry *);
+char *ft_packm(void);
+
+char *mkheader(char *, size_t, uint32_t, uint32_t, uint8_t);
+char *mktrailer(char *, size_t);
+
+void ft_dump(char *);
+void ft_creatm(char *, const char *);
+
+char *fwcf_unpack(int, size_t *);
+char *fwcf_pack(char *, size_t, int, size_t *);
+char *fwcf_packm(const char *, int, size_t *);
+__END_DECLS
+
+#endif