Files
sablink-distro/sys-fs/udev/files/udev-110-root-link-1.diff
T

149 lines
3.3 KiB
Diff

diff --git a/extras/root_link/Makefile b/extras/root_link/Makefile
new file mode 100644
index 0000000..76b475d
--- /dev/null
+++ b/extras/root_link/Makefile
@@ -0,0 +1,69 @@
+# Makefile for udev extra invoked from the udev main Makefile
+#
+# Copyright (C) 2004-2005 Kay Sievers <kay.sievers@vrfy.org>
+#
+# Released under the GNU General Public License, version 2.
+#
+
+PROG = get_dir_major_minor
+OBJ =
+HEADERS =
+GEN_HEADERS =
+MAN_PAGES =
+
+prefix =
+etcdir = ${prefix}/etc
+sbindir = ${prefix}/sbin
+usrbindir = ${prefix}/usr/bin
+usrsbindir = ${prefix}/usr/sbin
+libudevdir = ${prefix}/lib/udev
+mandir = ${prefix}/usr/share/man
+configdir = ${etcdir}/udev/
+
+INSTALL = install -c
+INSTALL_PROGRAM = ${INSTALL}
+INSTALL_DATA = ${INSTALL} -m 644
+INSTALL_SCRIPT = ${INSTALL}
+
+all: $(PROG) $(MAN_PAGES)
+.PHONY: all
+.DEFAULT: all
+
+%.o: %.c $(GEN_HEADERS)
+ $(E) " CC " $@
+ $(Q) $(CC) -c $(CFLAGS) $< -o $@
+
+$(PROG): %: $(HEADERS) %.o $(OBJS)
+ $(E) " LD " $@
+ $(Q) $(LD) $(LDFLAGS) $@.o $(OBJS) -o $@ $(LIBUDEV) $(LIB_OBJS)
+
+# man pages
+%.8: %.xml
+ $(E) " XMLTO " $@
+ $(Q) xmlto man $?
+.PRECIOUS: %.8
+
+clean:
+ $(E) " CLEAN "
+ $(Q) rm -f $(PROG) $(OBJS) $(GEN_HEADERS)
+.PHONY: clean
+
+install-bin: all
+ $(INSTALL_PROGRAM) -D $(PROG) $(DESTDIR)$(libudevdir)/$(PROG)
+.PHONY: install-bin
+
+uninstall-bin:
+ - rm $(DESTDIR)$(libudevdir)/$(PROG)
+.PHONY: uninstall-bin
+
+install-man:
+ @echo "Please create a man page for this tool."
+.PHONY: install-man
+
+uninstall-man:
+ @echo "Please create a man page for this tool."
+.PHONY: uninstall-man
+
+install-config:
+ @echo "no config file to install"
+.PHONY: install-config
diff --git a/extras/root_link/get_dir_major_minor.c b/extras/root_link/get_dir_major_minor.c
new file mode 100644
index 0000000..1e39411
--- /dev/null
+++ b/extras/root_link/get_dir_major_minor.c
@@ -0,0 +1,48 @@
+// print out major/minor nr of the device the supplied dir
+// is mounted on
+//
+// Author: Matthias Schwarzott <zzam@gentoo.org>
+
+#include <sys/types.h>
+#include <sys/stat.h>
+#include <unistd.h>
+
+#include <stdio.h>
+#include <stdlib.h>
+
+// Getting major/minor
+#include <sys/sysmacros.h>
+int main(int argc, char **argv)
+{
+ struct stat stat_buf;
+ unsigned int dev_major=0, dev_minor=0;
+ dev_t dev;
+
+ if (argc != 2) {
+ printf("Usage:\n");
+ printf(" get_dir_major_minor <directory>\n");
+ return EXIT_FAILURE;
+ }
+
+ if (stat(argv[1], &stat_buf) < 0) {
+ perror("stat");
+ return EXIT_FAILURE;
+ }
+
+ dev = stat_buf.st_dev;
+
+ dev_major = gnu_dev_major(dev);
+ dev_minor = gnu_dev_minor(dev);
+
+
+ if (dev_major == 0) {
+ fprintf(stderr, "Major number is 0.\n");
+ return EXIT_FAILURE;
+ } else
+ printf("%d %d\n",
+ dev_major,
+ dev_minor);
+
+ return EXIT_SUCCESS;
+}
+
diff --git a/extras/root_link/print_root_link_rule.sh b/extras/root_link/print_root_link_rule.sh
new file mode 100755
index 0000000..c33f290
--- /dev/null
+++ b/extras/root_link/print_root_link_rule.sh
@@ -0,0 +1,13 @@
+#!/bin/sh
+
+PROG=/lib/udev/print_dir_major_minor
+[ -x "${PROG}" ] && DEV=$(/lib/udev/print_dir_major_minor /)
+if [ $? == 0 ]; then
+ MAJOR="${DEV##* }"
+ MINOR="${DEV%% *}"
+
+ echo "# Created by print_root_link_rule"
+ echo "# This rule should create /dev/root as link to real root device."
+ echo "SUBSYSTEM==\"block\", ENV{MAJOR}==\"$MAJOR\", ENV{MINOR}==\"$MINOR\", SYMLINK+=\"root\""
+fi
+