Re: Where?

2009-02-13 Thread phcoder

./configure:577:PACKAGE_VERSION='1.96'
BandiPat wrote:

Hey guys, where does it specify the initial screen border title?
(GNU GRUB version 1.96)

I would at least like to change that for the Zenwalk build, if that's 
ok?  I've looked in several pieces of the code, but can't seem to find it.


Thanks,
Pat






___
Grub-devel mailing list
Grub-devel@gnu.org
http://lists.gnu.org/mailman/listinfo/grub-devel


Test command

2009-02-13 Thread phcoder
Hello. Here is an implementation of bash-like "test" command. Many file 
tests are omitted because they are useless in grub (e.g. -c test). I 
also added 3 extension: lexicographical comparing, prefixed -gt and -lt 
(it skips common prefix. Useful for comparing versions. e.g. [ vmlinuz-3 
-plt vmlinuz-11 ] is true) and biased -nt/-ot which adds s specified 
amount of seconds to mtime.

Regards
Vladimir 'phcoder' Serbinenko


___
Grub-devel mailing list
Grub-devel@gnu.org
http://lists.gnu.org/mailman/listinfo/grub-devel


[PATCH] Test command

2009-02-13 Thread phcoder

Sorry forgot to attach the file
phcoder wrote:
Hello. Here is an implementation of bash-like "test" command. Many file 
tests are omitted because they are useless in grub (e.g. -c test). I 
also added 3 extension: lexicographical comparing, prefixed -gt and -lt 
(it skips common prefix. Useful for comparing versions. e.g. [ vmlinuz-3 
-plt vmlinuz-11 ] is true) and biased -nt/-ot which adds s specified 
amount of seconds to mtime.

Regards
Vladimir 'phcoder' Serbinenko


Index: commands/test.c
===
--- commands/test.c	(revision 1989)
+++ commands/test.c	(working copy)
@@ -23,33 +23,385 @@
 #include 
 #include 
 #include 
+#include 
+#include 
+#include 
 
+/* A simple implementation for signed numbers*/
+static int
+grub_strtosl (char *arg, char **end, int base)
+{
+  if (arg[0] == '-')
+return -grub_strtoul (arg + 1, end, base);
+  return grub_strtoul (arg, end, base);
+}
+
+/* Parse a test expression startion from *argn*/
+static int
+test_parse (char **args, int *argn, int argc)
+{
+  int ret = 0, discard = 0, invert = 0;
+  int file_exists;
+  struct grub_dirhook_info file_info;
+
+  auto void update_val (int val);
+  auto void get_fileinfo (char *pathname);
+
+  /*Take care of discarding and inverting*/
+  void update_val (int val)
+  {
+if (!discard)
+  ret = invert ? !val : val;
+invert = discard = 0;
+  }
+
+  /* Check if file exists and fetch its information */
+  void get_fileinfo (char *pathname)
+  {
+char *filename, *path;
+char *device_name;
+grub_fs_t fs;
+grub_device_t dev;
+
+/* A hook for iterating directories */
+auto int find_file (const char *cur_filename, 
+			struct grub_dirhook_info info);
+int find_file (const char *cur_filename, struct grub_dirhook_info info)
+{
+  if (info.case_insensitive ? !grub_strcasecmp (cur_filename, filename)
+	  :!grub_strcmp (cur_filename, filename))
+	{
+	  file_info = info;
+	  file_exists = 1;
+	  return 1;
+	}
+  return 0;
+}
+
+
+file_exists = 0;
+device_name = grub_file_get_device_name (pathname);
+dev = grub_device_open (device_name);
+if (! dev)
+  {
+	grub_free (device_name);
+	return;
+  }
+
+fs = grub_fs_probe (dev);
+path = grub_strchr (pathname, ')');
+if (! path)
+  path = pathname;
+else
+  path++;
+
+/* Remove trailing / */
+while (*pathname && pathname[grub_strlen (pathname) - 1] == '/')
+  pathname[grub_strlen (pathname) - 1] = 0;
+
+/* Split into path and filename*/
+filename = grub_strrchr (pathname, '/');
+if (!filename)
+  {
+	path = grub_strdup ("/");
+	filename = pathname;
+  }
+else
+  {
+	filename++;
+	path = grub_strdup (pathname);
+	path[filename - pathname] = 0;
+  }
+
+/* It's the whole device*/
+if (!*pathname)
+  {
+	file_exists = 1;
+	grub_memset (&file_info, 0, sizeof (file_info));
+	/* Root is always a directory */
+	file_info.dir = 1;
+
+	/* Fetch writing time */
+	file_info.mtimeset = 0;
+	if (fs->mtime)
+	  {
+	if (! fs->mtime (dev, &file_info.mtime))
+	  file_info.mtimeset = 1;
+	grub_errno = GRUB_ERR_NONE;
+	  }
+  }
+else
+  (fs->dir) (dev, path, find_file);
+
+grub_device_close (dev); 
+grub_free (path);
+grub_free (device_name);
+  }
+
+  /* Here we have the real parsing */
+  while (*argn < argc)
+{
+  /* First try 3 argument tests */
+  /* String tests */
+  if (*argn + 2 < argc && (!grub_strcmp (args[*argn + 1], "=")
+			   || !grub_strcmp (args[*argn + 1], "==")))
+	{
+	  update_val (grub_strcmp (args[*argn], args[*argn + 2]) == 0);
+	  (*argn) += 3;
+	  continue;
+	}
+
+  if (*argn + 2 < argc && !grub_strcmp (args[*argn + 1], "!="))
+	{
+	  update_val (grub_strcmp (args[*argn], args[*argn + 2]) != 0);
+	  (*argn) += 3;
+	  continue;
+	}
+
+  /* GRUB extension: lexicographical sorting */
+  if (*argn + 2 < argc && !grub_strcmp (args[*argn + 1], "<"))
+	{
+	  update_val (grub_strcmp (args[*argn], args[*argn + 2]) < 0);
+	  (*argn) += 3;
+	  continue;
+	}
+
+  if (*argn + 2 < argc && !grub_strcmp (args[*argn + 1], "<="))
+	{
+	  update_val (grub_strcmp (args[*argn], args[*argn + 2]) <= 0);
+	  (*argn) += 3;
+	  continue;
+	}
+
+  if (*argn + 2 < argc && !grub_strcmp (args[*argn + 1], ">"))
+	{
+	  update_val (grub_strcmp (args[*argn], args[*argn + 2]) > 0);
+	  (*argn) += 3;
+	  continue;
+	}
+
+  if (*argn + 2 < argc && !grub_strcmp (args[*argn + 1], ">="))
+	{
+	  update_val (grub_strcmp (args[*argn], args[*argn + 2]) >= 0);
+	  (*argn) += 3;
+	  continue;
+	}
+
+  /* Number tests */
+  if (*argn + 2 < argc && !grub_strcmp (args[*argn + 1], "-eq"))
+	{
+	  update_val (grub_strtosl (args[*argn], 0, 0) 
+		  == grub_strtosl (args[*argn + 2], 0, 0));
+	  (*argn) += 3;
+	  continue;
+	}
+
+  if (*argn + 2 < argc && !grub_strcmp (args[*argn + 1], "-ge"))
+	{
+	  update_val (grub_strtosl 

Re: Where?

2009-02-13 Thread Manoel Rebelo Abranches
actually is:
/configure.ac:AC_INIT([GRUB],[1.96],[bug-g...@gnu.org])
configure is generated by the autogen.sh script.

On Fri, 2009-02-13 at 10:13 +0100, phcoder wrote:
> ./configure:577:PACKAGE_VERSION='1.96'
> BandiPat wrote:
> > Hey guys, where does it specify the initial screen border title?
> > (GNU GRUB version 1.96)
> > 
> > I would at least like to change that for the Zenwalk build, if that's 
> > ok?  I've looked in several pieces of the code, but can't seem to find it.
> > 
> > Thanks,
> > Pat
> > 
> > 
> 
> 
> 
> ___
> Grub-devel mailing list
> Grub-devel@gnu.org
> http://lists.gnu.org/mailman/listinfo/grub-devel
-- 
Best Regards,

Manoel Abranches 
IBM Linux Technology Center Brazil



___
Grub-devel mailing list
Grub-devel@gnu.org
http://lists.gnu.org/mailman/listinfo/grub-devel


Re: [PATCH] 1/5 Multiple fallback entries

2009-02-13 Thread Colin D Bennett
Committed, with a few improvement to error handling when executing menu
entries.

Regards,
Colin


signature.asc
Description: PGP signature
___
Grub-devel mailing list
Grub-devel@gnu.org
http://lists.gnu.org/mailman/listinfo/grub-devel