You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					
					
						
							70 lines
						
					
					
						
							2.1 KiB
						
					
					
				
			
		
		
	
	
							70 lines
						
					
					
						
							2.1 KiB
						
					
					
				# --- SDE-COPYRIGHT-NOTE-BEGIN --- | 
						|
# This copyright note is auto-generated by ./scripts/Create-CopyPatch. | 
						|
# | 
						|
# Filename: package/.../grub/grub-0.95-xpmjunk.patch | 
						|
# Copyright (C) 2004 - 2006 The T2 SDE Project | 
						|
# | 
						|
# More information can be found in the files COPYING and README. | 
						|
# | 
						|
# This patch file is dual-licensed. It is available under the license the | 
						|
# patched project is licensed under, as long as it is an OpenSource license | 
						|
# as defined at http://www.opensource.org/ (e.g. BSD, X11) or under the terms | 
						|
# of the GNU General Public License as published by the Free Software | 
						|
# Foundation; either version 2 of the License, or (at your option) any later | 
						|
# version. | 
						|
# --- SDE-COPYRIGHT-NOTE-END --- | 
						|
--- 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 == '"')
 | 
						|
 |