Magellan Linux

Contents of /trunk/mkinitrd-magellan/busybox/libbb/find_root_device.c

Parent Directory Parent Directory | Revision Log Revision Log


Revision 532 - (show annotations) (download)
Sat Sep 1 22:45:15 2007 UTC (16 years, 9 months ago) by niro
File MIME type: text/plain
File size: 752 byte(s)
-import if magellan mkinitrd; it is a fork of redhats mkinitrd-5.0.8 with all magellan patches and features; deprecates magellan-src/mkinitrd

1 /* vi: set sw=4 ts=4: */
2 /*
3 * Utility routines.
4 *
5 * Copyright (C) 1999-2004 by Erik Andersen <andersen@codepoet.org>
6 *
7 * Licensed under GPLv2 or later, see file LICENSE in this tarball for details.
8 */
9
10 #include "libbb.h"
11
12 char *find_block_device(char *path)
13 {
14 DIR *dir;
15 struct dirent *entry;
16 struct stat st;
17 dev_t dev;
18 char *retpath=NULL;
19
20 if (stat(path, &st) || !(dir = opendir("/dev")))
21 return NULL;
22 dev = (st.st_mode & S_IFMT) == S_IFBLK ? st.st_rdev : st.st_dev;
23 while ((entry = readdir(dir)) != NULL) {
24 char devpath[PATH_MAX];
25 sprintf(devpath,"/dev/%s", entry->d_name);
26 if (!stat(devpath, &st) && S_ISBLK(st.st_mode) && st.st_rdev == dev) {
27 retpath = xstrdup(devpath);
28 break;
29 }
30 }
31 closedir(dir);
32
33 return retpath;
34 }