Репозитории ALT
S: | 2.06-alt16 |
D: | 0.97-alt2 |
5.1: | 0.97-alt5 |
4.1: | 0.97-alt4.M41.1 |
3.0: | 0.95-alt1 |
Группа :: Система/Ядро и оборудование
Пакет: grub
Главная Изменения Спек Патчи Sources Загрузить Gear Bugs and FR Repocop
Патч: grub-0.95-xpmjunk.patch
Скачать
Скачать
--- grub-0.95/stage2/graphics.c.xpmjunk 2005-01-04 17:01:35.492804523 -0500
+++ grub-0.95/stage2/graphics.c 2005-01-04 17:02:52.722495885 -0500
@@ -262,6 +262,35 @@
return;
}
+/* Open the file, and search for a valid XPM header. Return 1 if one is found,
+ * leaving the current position as the start of the next line. Else,
+ * return 0.
+ */
+int xpm_open(const char *s) {
+ char buf, prev, target[]="/* XPM */\n";
+ int pos=0;
+
+ if (!grub_open(s))
+ return 0;
+
+ prev='\n';
+ buf=0;
+ do {
+ if (grub_read(&buf, 1) != 1) {
+ grub_close();
+ return 0;
+ }
+ if ((pos == 0 && prev == '\n') || pos > 0) {
+ if (buf == target[pos])
+ pos++;
+ else
+ pos=0;
+ }
+ prev=buf;
+ } while (target[pos]);
+ return 1;
+}
+
/* Read in the splashscreen image and set the palette up appropriately.
* Format of splashscreen is an xpm (can be gzipped) with 16 colors and
* 640x480. */
@@ -271,15 +300,9 @@
unsigned char c, base, mask, *s1, *s2, *s4, *s8;
unsigned i, len, idx, colors, x, y, width, height;
- if (!grub_open(s))
+ if (!xpm_open(s))
return 0;
- /* read header */
- if (!grub_read((char*)&buf, 10) || grub_memcmp(buf, "/* XPM */\n", 10)) {
- grub_close();
- return 0;
- }
-
/* parse info */
while (grub_read(&c, 1)) {
if (c == '"')