Dash:
[t2.git] / package / boot / grub / grub-0.95-xpmjunk.patch
blob8b58f4981dd659c03589172f3e001696527fe758
1 # --- T2-COPYRIGHT-NOTE-BEGIN ---
2 # This copyright note is auto-generated by ./scripts/Create-CopyPatch.
3 #
4 # T2 SDE: package/.../grub/grub-0.95-xpmjunk.patch
5 # Copyright (C) 2004 - 2005 The T2 SDE Project
6 #
7 # More information can be found in the files COPYING and README.
8 #
9 # This patch file is dual-licensed. It is available under the license the
10 # patched project is licensed under, as long as it is an OpenSource license
11 # as defined at http://www.opensource.org/ (e.g. BSD, X11) or under the terms
12 # of the GNU General Public License as published by the Free Software
13 # Foundation; either version 2 of the License, or (at your option) any later
14 # version.
15 # --- T2-COPYRIGHT-NOTE-END ---
16 --- grub-0.95/stage2/graphics.c.xpmjunk 2005-01-04 17:01:35.492804523 -0500
17 +++ grub-0.95/stage2/graphics.c 2005-01-04 17:02:52.722495885 -0500
18 @@ -262,6 +262,35 @@
19 return;
22 +/* Open the file, and search for a valid XPM header. Return 1 if one is found,
23 + * leaving the current position as the start of the next line. Else,
24 + * return 0.
25 + */
26 +int xpm_open(const char *s) {
27 + char buf, prev, target[]="/* XPM */\n";
28 + int pos=0;
30 + if (!grub_open(s))
31 + return 0;
33 + prev='\n';
34 + buf=0;
35 + do {
36 + if (grub_read(&buf, 1) != 1) {
37 + grub_close();
38 + return 0;
39 + }
40 + if ((pos == 0 && prev == '\n') || pos > 0) {
41 + if (buf == target[pos])
42 + pos++;
43 + else
44 + pos=0;
45 + }
46 + prev=buf;
47 + } while (target[pos]);
48 + return 1;
51 /* Read in the splashscreen image and set the palette up appropriately.
52 * Format of splashscreen is an xpm (can be gzipped) with 16 colors and
53 * 640x480. */
54 @@ -271,15 +300,9 @@
55 unsigned char c, base, mask, *s1, *s2, *s4, *s8;
56 unsigned i, len, idx, colors, x, y, width, height;
58 - if (!grub_open(s))
59 + if (!xpm_open(s))
60 return 0;
62 - /* read header */
63 - if (!grub_read((char*)&buf, 10) || grub_memcmp(buf, "/* XPM */\n", 10)) {
64 - grub_close();
65 - return 0;
66 - }
68 /* parse info */
69 while (grub_read(&c, 1)) {
70 if (c == '"')