summaryrefslogtreecommitdiffstats
path: root/libk3b/tools/libisofs/isofs.h
diff options
context:
space:
mode:
authortpearson <tpearson@283d02a7-25f6-0310-bc7c-ecb5cbfe19da>2010-02-03 02:15:56 +0000
committertpearson <tpearson@283d02a7-25f6-0310-bc7c-ecb5cbfe19da>2010-02-03 02:15:56 +0000
commit50b48aec6ddd451a6d1709c0942477b503457663 (patch)
treea9ece53ec06fd0a2819de7a2a6de997193566626 /libk3b/tools/libisofs/isofs.h
downloadk3b-50b48aec6ddd451a6d1709c0942477b503457663.tar.gz
k3b-50b48aec6ddd451a6d1709c0942477b503457663.zip
Added abandoned KDE3 version of K3B
git-svn-id: svn://anonsvn.kde.org/home/kde/branches/trinity/applications/k3b@1084400 283d02a7-25f6-0310-bc7c-ecb5cbfe19da
Diffstat (limited to 'libk3b/tools/libisofs/isofs.h')
-rw-r--r--libk3b/tools/libisofs/isofs.h151
1 files changed, 151 insertions, 0 deletions
diff --git a/libk3b/tools/libisofs/isofs.h b/libk3b/tools/libisofs/isofs.h
new file mode 100644
index 0000000..f284903
--- /dev/null
+++ b/libk3b/tools/libisofs/isofs.h
@@ -0,0 +1,151 @@
+/***************************************************************************
+ isofs.h - include this file to use libisofs
+ -------------------
+ begin : Oct 25 2002
+ copyright : (C) 2002 by Szombathelyi Gy�rgy
+ ***************************************************************************/
+
+/***************************************************************************
+ * *
+ * This program is free software; you can redistribute it and/or modify *
+ * it under the terms of the GNU General Public License as published by *
+ * the Free Software Foundation; either version 2 of the License, or *
+ * (at your option) any later version. *
+ * *
+ ***************************************************************************/
+
+#ifndef ISOFS_H
+#define ISOFS_H
+
+#include <sys/time.h>
+
+#include "iso_fs.h"
+#include "el_torito.h"
+
+typedef long sector_t;
+
+typedef struct _rr_entry {
+ int len; /* length of structure */
+ char *name; /* Name from 'NM' */
+ char *sl; /* symbolic link data */
+ time_t t_creat;
+ time_t rr_st_mtime;
+ time_t rr_st_atime;
+ time_t rr_st_ctime;
+ time_t t_backup;
+ time_t t_expire;
+ time_t t_effect;
+ int mode; /* POSIX file modes */
+ int nlink;
+ int uid;
+ int gid;
+ int serno;
+ int dev_major;
+ int dev_minor;
+ int pl; /* parent location */
+ int cl; /* child location */
+ int re; /* relocated */
+ char z_algo[2]; /* zizofs algorithm */
+ char z_params[2]; /* zizofs parameters */
+ int z_size; /* zizofs real_size */
+} rr_entry;
+
+typedef struct _iso_vol_desc {
+ struct _iso_vol_desc *next;
+ struct _iso_vol_desc *prev;
+ struct iso_volume_descriptor data;
+} iso_vol_desc;
+
+typedef struct _boot_entry {
+ struct _boot_entry *next;
+ struct _boot_entry *prev;
+ struct _boot_entry *parent;
+ struct _boot_entry *child;
+ char data[32];
+} boot_entry;
+
+typedef struct _boot_head {
+ struct validation_entry ventry;
+ struct _boot_entry *defentry;
+ struct _boot_entry *sections;
+} boot_head;
+
+/**
+ * this callback function needs to read 'len' sectors from 'start' into 'buf'
+ */
+typedef int readfunc(char *buf,sector_t start, int len,void *);
+
+/**
+ * ProcessDir uses this callback
+ */
+typedef int dircallback(struct iso_directory_record *,void *);
+
+/**
+ * Returns the Unix from the ISO9660 9.1.5 (7 bytes) time format
+ * This function is from the linux kernel.
+ * Set 'hs' to non-zero if it's a HighSierra volume
+ */
+time_t isodate_915(char * p, int hs);
+
+/**
+ * Returns the Unix time from the ISO9660 8.4.26.1 (17 bytes) time format
+ * BUG: hundredth of seconds are ignored, because time_t has one second
+ * resolution (I think it's no problem at all)
+ * Set 'hs' to non-zero if it's a HighSierra volume
+ */
+time_t isodate_84261(char * p, int hs);
+
+/**
+ * Creates the linked list of the volume descriptors
+ * 'sector' is the starting sector number of where the filesystem start
+ * (starting sector of a session on a CD-ROM)
+ * If the function fails, returns NULL
+ * Don't forget to call FreeISO9660 after using the volume descriptor list!
+ */
+iso_vol_desc *ReadISO9660(readfunc *read,sector_t sector,void *udata);
+
+/**
+ * Frees the linked list of volume descriptors.
+ */
+void FreeISO9660(iso_vol_desc *data);
+
+/**
+ * Iterates over the directory entries. The directory is in 'buf',
+ * the size of the directory is 'size'. 'callback' is called for each
+ * directory entry with the parameter 'udata'.
+ */
+int ProcessDir(readfunc *read,int extent,int size,dircallback *callback,void *udata);
+
+/**
+ * Parses the System Use area and fills rr_entry with values
+ */
+int ParseRR(struct iso_directory_record *idr, rr_entry *rrentry);
+
+/**
+ * Frees the strings in 'rrentry'
+ */
+void FreeRR(rr_entry *rrentry);
+
+/**
+ * returns the joliet level from the volume descriptor
+ */
+int JolietLevel(struct iso_volume_descriptor *ivd);
+
+/**
+ * Returns the size of the boot image (in 512 byte sectors)
+ */
+int BootImageSize(readfunc *read,int media,sector_t start,int len,void *udata);
+
+/**
+ * Frees the boot catalog entries in 'boot'. If you ever called ReadBootTable,
+ * then don't forget to call FreeBootTable!
+ */
+void FreeBootTable(boot_head *boot);
+
+/**
+ * Reads the boot catalog into 'head'. Don't forget to call FreeBootTable!
+ */
+int ReadBootTable(readfunc *read,sector_t sector, boot_head *head, void *udata);
+
+#endif