summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'lib/bkisofs/bkInternal.h')
-rw-r--r--lib/bkisofs/bkInternal.h105
1 files changed, 105 insertions, 0 deletions
diff --git a/lib/bkisofs/bkInternal.h b/lib/bkisofs/bkInternal.h
new file mode 100644
index 0000000..59c8139
--- /dev/null
+++ b/lib/bkisofs/bkInternal.h
@@ -0,0 +1,105 @@
+/******************************* LICENCE **************************************
+* Any code in this file may be redistributed or modified under the terms of
+* the GNU General Public Licence as published by the Free Software
+* Foundation; version 2 of the licence.
+****************************** END LICENCE ***********************************/
+
+/******************************************************************************
+* Author:
+* Andrew Smith, http://littlesvr.ca/misc/contactandrew.php
+*
+* Contributors:
+*
+******************************************************************************/
+
+/********************************* PURPOSE ************************************
+* bkInternal.h
+* This header file is for #defines and structures only used by bkisofs
+******************************** END PURPOSE *********************************/
+
+#ifndef bkInternal_h
+#define bkInternal_h
+
+#include "bk.h"
+
+/* number of logical sectors in system area (in practice always 16) */
+#define NLS_SYSTEM_AREA 16
+/* number of bytes in a logical block (in practice always 2048) */
+#define NBYTES_LOGICAL_BLOCK 2048
+
+/*******************************************************************************
+* Joliet allows max 128 bytes
+* + 2 separator1 (9660, just in case)
+* + 2 separator2 (9660, just in case)
+* + 10 version (9660, just in case)
+* = 142 bytes (71 characters)
+* Only a max of 64 characters of this will be stored. (plus '\0') */
+#define NCHARS_FILE_ID_MAX_JOLIET 65
+
+#define NBYTES_FILE_ID_MAX_9660 15 /* 8.3 + ";1" */
+
+#define BASETW_PTR(item) ((BaseToWrite*)(item))
+#define DIRTW_PTR(item) ((DirToWrite*)(item))
+#define FILETW_PTR(item) ((FileToWrite*)(item))
+#define SYMLINKTW_PTR(item) ((SymLinkToWrite*)(item))
+
+#define WRITE_CACHE_SIZE 1048576
+
+typedef struct
+{
+ unsigned numChildren;
+ char** children;
+
+} NewPath;
+
+typedef struct BaseToWrite
+{
+ char name9660[NBYTES_FILE_ID_MAX_9660]; /* 8.3 + ";1" max */
+ char nameRock[NCHARS_FILE_ID_MAX_STORE];
+ char nameJoliet[NCHARS_FILE_ID_MAX_JOLIET];
+ unsigned posixFileMode;
+ bk_off_t extentLocationOffset; /* where on image to write location of extent */
+ unsigned extentNumber; /* extent number */
+ bk_off_t extentLocationOffset2; /* for svd (joliet) */
+ bk_off_t offsetForCE; /* if the name won't fit inside the directory record */
+
+ struct BaseToWrite* next;
+
+} BaseToWrite;
+
+typedef struct DirToWrite
+{
+ BaseToWrite base;
+
+ unsigned extentNumber2; /* for svd (joliet) */
+ unsigned dataLength; /* bytes, including blank */
+ unsigned dataLength2; /* for svd (joliet) */
+ struct BaseToWrite* children;
+
+} DirToWrite;
+
+typedef struct FileToWrite
+{
+ BaseToWrite base;
+
+ unsigned size; /* in bytes */
+ BkHardLink* location; /* basically a copy of the following variables */
+ bool onImage;
+ unsigned offset; /* if on image, in bytes */
+ char* pathAndName; /* if on filesystem, full path + filename
+ * is to be freed by whenever the File is freed */
+ BkFile* origFile; /* this pointer only has one purpose: to potentially
+ * identify this file as the boot record. it will never
+ * be dereferenced, just compared to. */
+
+} FileToWrite;
+
+typedef struct SymLinkToWrite
+{
+ BaseToWrite base;
+
+ char target[NCHARS_SYMLINK_TARGET_MAX];
+
+} SymLinkToWrite;
+
+#endif