Blame 0019-dracut-install.c-for-lazy-install-shebangs-do-not-ch.patch

Harald Hoyer c4a5a0
From e74944eee578532bc7286b54ce5eccc715ed90c1 Mon Sep 17 00:00:00 2001
Harald Hoyer c4a5a0
From: Harald Hoyer <harald@redhat.com>
Harald Hoyer c4a5a0
Date: Mon, 2 Jul 2012 18:46:48 +0200
Harald Hoyer c4a5a0
Subject: [PATCH] dracut-install.c: for lazy install shebangs, do not check
Harald Hoyer c4a5a0
 for existence
Harald Hoyer c4a5a0
Harald Hoyer c4a5a0
---
Harald Hoyer c4a5a0
 install/dracut-install.c |   35 +++++++++++++++++++----------------
Harald Hoyer c4a5a0
 1 file changed, 19 insertions(+), 16 deletions(-)
Harald Hoyer c4a5a0
Harald Hoyer c4a5a0
diff --git a/install/dracut-install.c b/install/dracut-install.c
Harald Hoyer c4a5a0
index 778881a..1d5748d 100644
Harald Hoyer c4a5a0
--- a/install/dracut-install.c
Harald Hoyer c4a5a0
+++ b/install/dracut-install.c
Harald Hoyer c4a5a0
@@ -57,7 +57,7 @@ static char *destrootdir = NULL;
Harald Hoyer c4a5a0
 static Hashmap *items = NULL;
Harald Hoyer c4a5a0
 static Hashmap *items_failed = NULL;
Harald Hoyer c4a5a0
 
Harald Hoyer c4a5a0
-static int dracut_install(const char *src, const char *dst, bool isdir, bool resolvedeps);
Harald Hoyer c4a5a0
+static int dracut_install(const char *src, const char *dst, bool isdir, bool resolvedeps, bool hashdst);
Harald Hoyer c4a5a0
 
Harald Hoyer c4a5a0
 static size_t dir_len(char const *file)
Harald Hoyer c4a5a0
 {
Harald Hoyer c4a5a0
@@ -260,7 +260,7 @@ static int resolve_deps(const char *src)
Harald Hoyer c4a5a0
                         for (q = p; *q && (!isspace(*q)); q++) ;
Harald Hoyer c4a5a0
                         *q = '\0';
Harald Hoyer c4a5a0
                         log_debug("Script install: '%s'", p);
Harald Hoyer c4a5a0
-                        ret = dracut_install(p, p, false, true);
Harald Hoyer c4a5a0
+                        ret = dracut_install(p, p, false, true, false);
Harald Hoyer c4a5a0
                         if (ret != 0)
Harald Hoyer c4a5a0
                                 log_error("ERROR: failed to install '%s'", p);
Harald Hoyer c4a5a0
                         return ret;
Harald Hoyer c4a5a0
@@ -287,7 +287,7 @@ static int resolve_deps(const char *src)
Harald Hoyer c4a5a0
                         int r;
Harald Hoyer c4a5a0
                         for (q = p; *q && *q != ' ' && *q != '\n'; q++) ;
Harald Hoyer c4a5a0
                         *q = '\0';
Harald Hoyer c4a5a0
-                        r = dracut_install(p, p, false, false);
Harald Hoyer c4a5a0
+                        r = dracut_install(p, p, false, false, true);
Harald Hoyer c4a5a0
                         if (r != 0)
Harald Hoyer c4a5a0
                                 log_error("ERROR: failed to install '%s' for '%s'", p, src);
Harald Hoyer c4a5a0
                         else
Harald Hoyer c4a5a0
@@ -301,7 +301,7 @@ static int resolve_deps(const char *src)
Harald Hoyer c4a5a0
                                 *q = '\0';
Harald Hoyer c4a5a0
 
Harald Hoyer c4a5a0
                                 /* ignore errors for base lib symlink */
Harald Hoyer c4a5a0
-                                if (dracut_install(p, p, false, false) == 0)
Harald Hoyer c4a5a0
+                                if (dracut_install(p, p, false, false, true) == 0)
Harald Hoyer c4a5a0
                                         log_debug("Lib install: '%s'", p);
Harald Hoyer c4a5a0
                         }
Harald Hoyer c4a5a0
                 }
Harald Hoyer c4a5a0
@@ -328,7 +328,7 @@ static int hmac_install(const char *src, const char *dst)
Harald Hoyer c4a5a0
         asprintf(&srchmacname, "%s/.%s.hmac", srcpath, &src[dlen + 1]);
Harald Hoyer c4a5a0
         asprintf(&dsthmacname, "%s/.%s.hmac", dstpath, &src[dlen + 1]);
Harald Hoyer c4a5a0
         log_debug("hmac cp '%s' '%s')", srchmacname, dsthmacname);
Harald Hoyer c4a5a0
-        dracut_install(srchmacname, dsthmacname, false, false);
Harald Hoyer c4a5a0
+        dracut_install(srchmacname, dsthmacname, false, false, true);
Harald Hoyer c4a5a0
         free(dsthmacname);
Harald Hoyer c4a5a0
         free(srchmacname);
Harald Hoyer c4a5a0
         free(srcpath);
Harald Hoyer c4a5a0
@@ -336,7 +336,7 @@ static int hmac_install(const char *src, const char *dst)
Harald Hoyer c4a5a0
         return 0;
Harald Hoyer c4a5a0
 }
Harald Hoyer c4a5a0
 
Harald Hoyer c4a5a0
-static int dracut_install(const char *src, const char *dst, bool isdir, bool resolvedeps)
Harald Hoyer c4a5a0
+static int dracut_install(const char *src, const char *dst, bool isdir, bool resolvedeps, bool hashdst)
Harald Hoyer c4a5a0
 {
Harald Hoyer c4a5a0
         struct stat sb, db;
Harald Hoyer c4a5a0
         char *dname = NULL;
Harald Hoyer c4a5a0
@@ -356,11 +356,13 @@ static int dracut_install(const char *src, const char *dst, bool isdir, bool res
Harald Hoyer c4a5a0
                 }
Harald Hoyer c4a5a0
         }
Harald Hoyer c4a5a0
 
Harald Hoyer c4a5a0
-        existing = hashmap_get(items, dst);
Harald Hoyer c4a5a0
-        if (existing) {
Harald Hoyer c4a5a0
-                if (strcmp(existing, dst) == 0) {
Harald Hoyer c4a5a0
-                        log_debug("hash hit items for '%s'", dst);
Harald Hoyer c4a5a0
-                        return 0;
Harald Hoyer c4a5a0
+        if (hashdst) {
Harald Hoyer c4a5a0
+                existing = hashmap_get(items, dst);
Harald Hoyer c4a5a0
+                if (existing) {
Harald Hoyer c4a5a0
+                        if (strcmp(existing, dst) == 0) {
Harald Hoyer c4a5a0
+                                log_debug("hash hit items for '%s'", dst);
Harald Hoyer c4a5a0
+                                return 0;
Harald Hoyer c4a5a0
+                        }
Harald Hoyer c4a5a0
                 }
Harald Hoyer c4a5a0
         }
Harald Hoyer c4a5a0
 
Harald Hoyer c4a5a0
@@ -374,6 +376,7 @@ static int dracut_install(const char *src, const char *dst, bool isdir, bool res
Harald Hoyer c4a5a0
                 }
Harald Hoyer c4a5a0
         }
Harald Hoyer c4a5a0
 
Harald Hoyer c4a5a0
+
Harald Hoyer c4a5a0
         i = strdup(dst);
Harald Hoyer c4a5a0
         hashmap_put(items, i, i);
Harald Hoyer c4a5a0
 
Harald Hoyer c4a5a0
@@ -408,7 +411,7 @@ static int dracut_install(const char *src, const char *dst, bool isdir, bool res
Harald Hoyer c4a5a0
                 log_debug("dest dir '%s' does not exist", fulldstdir);
Harald Hoyer c4a5a0
                 dname = strdup(dst);
Harald Hoyer c4a5a0
                 dname[dir_len(dname)] = '\0';
Harald Hoyer c4a5a0
-                ret = dracut_install(dname, dname, true, false);
Harald Hoyer c4a5a0
+                ret = dracut_install(dname, dname, true, false, true);
Harald Hoyer c4a5a0
 
Harald Hoyer c4a5a0
                 free(dname);
Harald Hoyer c4a5a0
 
Harald Hoyer c4a5a0
@@ -442,7 +445,7 @@ static int dracut_install(const char *src, const char *dst, bool isdir, bool res
Harald Hoyer c4a5a0
                 if (abspath == NULL)
Harald Hoyer c4a5a0
                         return 1;
Harald Hoyer c4a5a0
 
Harald Hoyer c4a5a0
-                if (dracut_install(abspath, abspath, false, resolvedeps)) {
Harald Hoyer c4a5a0
+                if (dracut_install(abspath, abspath, false, resolvedeps, hashdst)) {
Harald Hoyer c4a5a0
                         log_debug("'%s' install error", abspath);
Harald Hoyer c4a5a0
                         return 1;
Harald Hoyer c4a5a0
                 }
Harald Hoyer c4a5a0
@@ -683,7 +686,7 @@ static int install_all(int argc, char **argv)
Harald Hoyer c4a5a0
                                 dest = strdup(newsrc);
Harald Hoyer c4a5a0
 
Harald Hoyer c4a5a0
                                 log_debug("dracut_install '%s'", newsrc);
Harald Hoyer c4a5a0
-                                ret = dracut_install(newsrc, dest, arg_createdir, arg_resolvedeps);
Harald Hoyer c4a5a0
+                                ret = dracut_install(newsrc, dest, arg_createdir, arg_resolvedeps, true);
Harald Hoyer c4a5a0
                                 if (ret == 0) {
Harald Hoyer c4a5a0
                                         end = true;
Harald Hoyer c4a5a0
                                         log_debug("dracut_install '%s' OK", newsrc);
Harald Hoyer c4a5a0
@@ -694,7 +697,7 @@ static int install_all(int argc, char **argv)
Harald Hoyer c4a5a0
                         free(path);
Harald Hoyer c4a5a0
                 } else {
Harald Hoyer c4a5a0
                         char *dest = strdup(argv[i]);
Harald Hoyer c4a5a0
-                        ret = dracut_install(argv[i], dest, arg_createdir, arg_resolvedeps);
Harald Hoyer c4a5a0
+                        ret = dracut_install(argv[i], dest, arg_createdir, arg_resolvedeps, true);
Harald Hoyer c4a5a0
                         free(dest);
Harald Hoyer c4a5a0
                 }
Harald Hoyer c4a5a0
 
Harald Hoyer c4a5a0
@@ -764,7 +767,7 @@ int main(int argc, char **argv)
Harald Hoyer c4a5a0
                 r = install_all(argc - optind, &argv[optind]);
Harald Hoyer c4a5a0
         } else {
Harald Hoyer c4a5a0
                 /* simple "inst src dst" */
Harald Hoyer c4a5a0
-                r = dracut_install(argv[optind], argv[optind + 1], arg_createdir, arg_resolvedeps);
Harald Hoyer c4a5a0
+                r = dracut_install(argv[optind], argv[optind + 1], arg_createdir, arg_resolvedeps, true);
Harald Hoyer c4a5a0
                 if ((r != 0) && (!arg_optional)) {
Harald Hoyer c4a5a0
                         log_error("ERROR: installing '%s' to '%s'", argv[optind], argv[optind + 1]);
Harald Hoyer c4a5a0
                         r = EXIT_FAILURE;