ark
bkInternal.h
Go to the documentation of this file.00001 /******************************* LICENSE ************************************** 00002 * Any code in this file may be redistributed or modified under the terms of 00003 * the GNU General Public License as published by the Free Software 00004 * Foundation; version 2 of the license. 00005 ****************************** END LICENSE ***********************************/ 00006 00007 /****************************************************************************** 00008 * Author: 00009 * Andrew Smith, http://littlesvr.ca/misc/contactandrew.php 00010 * 00011 * Copyright 2005-2007 Andrew Smith <andrew-smith@mail.ru> 00012 * 00013 * Contributors: 00014 * 00015 ******************************************************************************/ 00016 00017 /********************************* PURPOSE ************************************ 00018 * bkInternal.h 00019 * This header file is for #defines and structures only used by bkisofs 00020 ******************************** END PURPOSE *********************************/ 00021 00022 #ifndef bkInternal_h 00023 #define bkInternal_h 00024 00025 #include "bk.h" 00026 00027 /* number of logical sectors in system area (in practice always 16) */ 00028 #define NLS_SYSTEM_AREA 16 00029 /* number of bytes in a logical block (in practice always 2048) */ 00030 #define NBYTES_LOGICAL_BLOCK 2048 00031 00032 /******************************************************************************* 00033 * Joliet allows max 128 bytes 00034 * + 2 separator1 (9660, just in case) 00035 * + 2 separator2 (9660, just in case) 00036 * + 10 version (9660, just in case) 00037 * = 142 bytes (71 characters) 00038 * Only a max of 64 characters of this will be stored. (plus '\0') */ 00039 #define NCHARS_FILE_ID_MAX_JOLIET 65 00040 00041 #define BASETW_PTR(item) ((BaseToWrite*)(item)) 00042 #define DIRTW_PTR(item) ((DirToWrite*)(item)) 00043 #define FILETW_PTR(item) ((FileToWrite*)(item)) 00044 #define SYMLINKTW_PTR(item) ((SymLinkToWrite*)(item)) 00045 00046 #define WRITE_CACHE_SIZE 1048576 00047 00048 typedef struct 00049 { 00050 unsigned numChildren; 00051 char** children; 00052 00053 } NewPath; 00054 00055 typedef struct BaseToWrite 00056 { 00057 char name9660[15]; /* 8.3 + ";1" max */ 00058 char nameRock[NCHARS_FILE_ID_MAX_STORE]; 00059 char nameJoliet[NCHARS_FILE_ID_MAX_JOLIET]; 00060 unsigned posixFileMode; 00061 off_t extentLocationOffset; /* where on image to write location of extent */ 00062 unsigned extentNumber; /* extent number */ 00063 off_t extentLocationOffset2; /* for svd (joliet) */ 00064 off_t offsetForCE; /* if the name won't fit inside the directory record */ 00065 00066 struct BaseToWrite* next; 00067 00068 } BaseToWrite; 00069 00070 typedef struct DirToWrite 00071 { 00072 BaseToWrite base; 00073 00074 unsigned extentNumber2; /* for svd (joliet) */ 00075 unsigned dataLength; /* bytes, including blank */ 00076 unsigned dataLength2; /* for svd (joliet) */ 00077 struct BaseToWrite* children; 00078 00079 } DirToWrite; 00080 00081 typedef struct FileToWrite 00082 { 00083 BaseToWrite base; 00084 00085 unsigned size; /* in bytes */ 00086 BkHardLink* location; /* basically a copy of the following variables */ 00087 bool onImage; 00088 unsigned offset; /* if on image, in bytes */ 00089 char* pathAndName; /* if on filesystem, full path + filename 00090 * is to be freed by whenever the File is freed */ 00091 BkFile* origFile; /* this pointer only has one purpose: to potentially 00092 * identify this file as the boot record. it will never 00093 * be dereferenced, just compared to. */ 00094 00095 } FileToWrite; 00096 00097 typedef struct SymLinkToWrite 00098 { 00099 BaseToWrite base; 00100 00101 char target[NCHARS_SYMLINK_TARGET_MAX]; 00102 00103 } SymLinkToWrite; 00104 00105 #endif
KDE 4.2 API Reference