/[pearpc]/src/io/prom/fs/hfsplus/volume.h
This is repository of my old source code which isn't updated any more. Go to git.rot13.org for current projects!
ViewVC logotype

Contents of /src/io/prom/fs/hfsplus/volume.h

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1 - (show annotations)
Wed Sep 5 17:11:21 2007 UTC (16 years, 7 months ago) by dpavlin
File MIME type: text/plain
File size: 3115 byte(s)
import upstream CVS
1 /*
2 * libhfs - library for reading and writing Macintosh HFS volumes
3 *
4 * Copyright (C) 2000 Klaus Halfmann <klaus.halfmann@feri.de>
5 * Original 1996-1998 Robert Leslie <rob@mars.org>
6 *
7 * This program is free software; you can redistribute it and/or modify
8 * it under the terms of the GNU General Public License as published by
9 * the Free Software Foundation; either version 2 of the License, or
10 * (at your option) any later version.
11 *
12 * This program is distributed in the hope that it will be useful,
13 * but WITHOUT ANY WARRANTY; without even the implied warranty of
14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15 * GNU General Public License for more details.
16 *
17 * You should have received a copy of the GNU General Public License
18 * along with this program; if not, write to the Free Software
19 * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
20 *
21 */
22
23 /* Open the device, read and verify the volume header
24 (and its backup) */
25 extern int volume_open(volume* vol, const void *devicehandle, int partition, int rw);
26
27 /* Write back all data eventually cached and close the device. */
28 extern int volume_close(volume* vol);
29
30 /* read multiple blocks into given memory.
31 *
32 * returns given pointer or NULL on failure.
33 */
34 extern void* volume_readfromfork(volume* vol, void* buf,
35 hfsp_fork_raw* f, UInt32 block,
36 UInt32 count, UInt8 forktype, UInt32 fileId);
37
38 /* write multiple blocks of a fork buf to medium.
39 * The caller is responsible for allocating a suffient
40 * large fork and eventually needed extends records for now.
41 *
42 * block realtive index in fork to start with
43 * count number of blocks to write
44 * forktype usually HFSP_EXTENT_DATA or HFSP_EXTENT_RSRC
45 * fileId id (needed) in case extents must be written
46 *
47 * returns value != 0 on error.
48 */
49 int volume_writetofork(volume* vol, void* buf,
50 hfsp_fork_raw* f, UInt32 block,
51 UInt32 count, UInt8 forktype, UInt32 fileId);
52
53 /* Fill a given buffer with the given block in volume.
54 */
55 int volume_readinbuf(volume * vol,void* buf, long block);
56
57 /* Check in Allocation file if given block is allocated. */
58 extern int volume_allocated(volume* v, UInt32 block);
59
60 /* Read a raw hfsp_extent_rec from memory. */
61 extern char* volume_readextent(char *p, hfsp_extent_rec er);
62
63 /* Read fork information from raw memory */
64 extern char* volume_readfork(char *p, hfsp_fork_raw* f);
65
66 /* Write fork information to raw memory */
67 extern char* volume_writefork(char *p, hfsp_fork_raw* f);
68
69 /* Initialize for to all zero, you may allocate later */
70 void volume_initfork(volume* vol, hfsp_fork_raw* f, UInt16 fork_type);
71
72 /* internal function used to create the extents btree,
73 is called by following inline function when needed */
74 extern void volume_create_extents_tree(volume* vol);
75
76 /* accessor for entends btree, is created on demand */
77 static inline btree* volume_get_extents_tree(volume* vol)
78 {
79 if (!vol->extents)
80 volume_create_extents_tree(vol);
81 return vol->extents;
82 }
83
84 /* return new Id for files/folder and check for overflow.
85 *
86 * retun 0 on error .
87 */
88 extern UInt32 volume_get_nextid(volume* vol);
89

  ViewVC Help
Powered by ViewVC 1.1.26