summaryrefslogtreecommitdiff
path: root/rbutil/sansapatcher/sansaio.h
diff options
context:
space:
mode:
Diffstat (limited to 'rbutil/sansapatcher/sansaio.h')
-rw-r--r--rbutil/sansapatcher/sansaio.h74
1 files changed, 74 insertions, 0 deletions
diff --git a/rbutil/sansapatcher/sansaio.h b/rbutil/sansapatcher/sansaio.h
new file mode 100644
index 0000000000..246400c51c
--- /dev/null
+++ b/rbutil/sansapatcher/sansaio.h
@@ -0,0 +1,74 @@
1/***************************************************************************
2 * __________ __ ___.
3 * Open \______ \ ____ ____ | | _\_ |__ _______ ___
4 * Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ /
5 * Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < <
6 * Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \
7 * \/ \/ \/ \/ \/
8 * $Id: ipodio.h 12339 2007-02-16 20:45:00Z dave $
9 *
10 * Copyright (C) 2006-2007 Dave Chapman
11 *
12 * All files in this archive are subject to the GNU General Public License.
13 * See the file COPYING in the source tree root for full license agreement.
14 *
15 * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
16 * KIND, either express or implied.
17 *
18 ****************************************************************************/
19
20#ifndef __SANSAIO_H
21#define __SANSAIO_H
22
23#include <stdint.h>
24#include <unistd.h>
25
26#ifdef __WIN32__
27#include <windows.h>
28#define loff_t int64_t
29#else
30#define HANDLE int
31#define O_BINARY 0
32
33/* Only Linux seems to need lseek64 and loff_t */
34#if !defined(linux) && defined (__linux)
35#define loff_t off_t
36#define lseek64 lseek
37#endif
38
39#endif
40
41struct partinfo_t {
42 unsigned long start; /* first sector (LBA) */
43 unsigned long size; /* number of sectors */
44 int type;
45};
46
47struct mi4header_t {
48 uint32_t version;
49 uint32_t length;
50 uint32_t crc32;
51 uint32_t enctype;
52 uint32_t mi4size;
53 uint32_t plaintext;
54};
55
56struct sansa_t {
57 HANDLE dh;
58 char diskname[4096];
59 int sector_size;
60 struct partinfo_t pinfo[4];
61 int hasoldbootloader;
62 loff_t start; /* Offset in bytes of firmware partition from start of disk */
63};
64
65void print_error(char* msg);
66int sansa_open(struct sansa_t* sansa, int silent);
67int sansa_reopen_rw(struct sansa_t* sansa);
68int sansa_close(struct sansa_t* sansa);
69int sansa_seek(struct sansa_t* sansa, loff_t pos);
70int sansa_read(struct sansa_t* sansa, unsigned char* buf, int nbytes);
71int sansa_write(struct sansa_t* sansa, unsigned char* buf, int nbytes);
72int sansa_alloc_buffer(unsigned char** sectorbuf, int bufsize);
73
74#endif