From 58d080fbb49fc56b4296558606536c5323e97333 Mon Sep 17 00:00:00 2001 From: robertmh Date: Tue, 28 Aug 2007 10:22:15 +0000 Subject: [PATCH] ... and add the missing files :-/ --- util/i386/get_disk_name.c | 31 ++++++++++++++++++ util/ieee1275/get_disk_name.c | 60 +++++++++++++++++++++++++++++++++++ 2 files changed, 91 insertions(+) create mode 100644 util/i386/get_disk_name.c create mode 100644 util/ieee1275/get_disk_name.c diff --git a/util/i386/get_disk_name.c b/util/i386/get_disk_name.c new file mode 100644 index 000000000..d06b337ff --- /dev/null +++ b/util/i386/get_disk_name.c @@ -0,0 +1,31 @@ +/* get_disk_name.c */ +/* + * GRUB -- GRand Unified Bootloader + * Copyright (C) 2007 Free Software Foundation, Inc. + * + * GRUB is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * GRUB is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with GRUB. If not, see . + */ + +#include + +char * +grub_util_get_disk_name (int disk, char *name) +{ + char *p; + + p = xmalloc (16); + sprintf (p, "hd%d", disk); + + return p; +} diff --git a/util/ieee1275/get_disk_name.c b/util/ieee1275/get_disk_name.c new file mode 100644 index 000000000..6370fe6fd --- /dev/null +++ b/util/ieee1275/get_disk_name.c @@ -0,0 +1,60 @@ +/* get_disk_name.c */ +/* + * GRUB -- GRand Unified Bootloader + * Copyright (C) 2007 Free Software Foundation, Inc. + * + * GRUB is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * GRUB is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with GRUB. If not, see . + */ + +#include +#include + +char * +grub_util_get_disk_name (int disk, char *name) +{ + int p[2]; + + char *line = NULL; + int zero = 0; + int len; + + pipe (p); + + switch (fork ()) + { + case -1: + perror ("fork"); + exit (1); + case 0: + close (1); + dup (p[1]); + close (p[0]); + close (p[1]); + execlp ("ofpathname", "ofpathname", "-a", name, NULL); + perror ("execlp"); + default: + close (0); + dup (p[0]); + close (p[0]); + close (p[1]); + } + + len = getline (&line, &zero, stdin); + if (len < 2) + grub_util_error ("ofpathname didn't print a meaningful alias name"); + + line[len - 1] = '\0'; + + return line; +}