Chameleon

Chameleon Svn Source Tree

Root/tags/2.1/i386/libsaio/ext2fs.c

Source at commit 2381 created 10 years 21 days ago.
By ifabio, Apply patch: (Credits to Thomas Jansen aka tja) - Reading options from all devices during boot. The options for the boot menu are only read from the devices rd(0,0) or bt(0,0). Consequently, boot menu options (e.g. "Quiet Boot", "Timeout", etc.) in plists on other devices (like most users have) are ignored. This patch extends the list of paths to search for the options plist on all devices that can be found.
1/*
2 * ext2fs.c
3 *
4 *
5 * Created by mackerintel on 1/26/09.
6 * Copyright 2009 __MyCompanyName__. All rights reserved.
7 *
8 */
9
10#include "libsaio.h"
11#include "sl.h"
12#include "ext2fs.h"
13
14#define EX2ProbeSize2048
15
16bool EX2Probe (const void *buf)
17{
18return (OSReadLittleInt16(buf+0x438,0)==0xEF53);
19}
20
21void EX2GetDescription(CICell ih, char *str, long strMaxLen)
22{
23char * buf=malloc (EX2ProbeSize);
24str[0]=0;
25if (!buf)
26return;
27Seek(ih, 0);
28Read(ih, (long)buf, EX2ProbeSize);
29if (!EX2Probe (buf))
30{
31free (buf);
32return;
33}
34if (OSReadLittleInt32 (buf+0x44c,0)<1)
35{
36free (buf);
37return;
38}
39str[strMaxLen]=0;
40strncpy (str, buf+0x478, MIN(strMaxLen, 16));
41free (buf);
42}
43
44long EX2GetUUID(CICell ih, char *uuidStr)
45{
46uint8_t *b, *buf=malloc (EX2ProbeSize);
47if (!buf)
48return -1;
49Seek(ih, 0);
50Read(ih, (long)buf, EX2ProbeSize);
51if (!EX2Probe (buf))
52{
53free (buf);
54return -1;
55}
56if (OSReadLittleInt32 (buf+0x44c,0)<1)
57{
58free (buf);
59return -1;
60}
61b=buf+0x468;
62sprintf(uuidStr,
63"%02X%02X%02X%02X-%02X%02X-%02X%02X-%02X%02X-%02X%02X%02X%02X%02X%02X",
64b[0], b[1], b[2], b[3],
65b[4], b[5],
66b[6], b[7],
67b[8], b[9],
68b[10], b[11], b[12], b[13], b[14], b[15]);
69free (buf);
70return 0;
71}
72

Archive Download this file

Revision: 2381