aboutsummaryrefslogtreecommitdiffstats
path: root/main/mkinitfs/git.patch
blob: 02cab697716c4c3e5e654fb5c5db6a6279c85f1b (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
diff --git a/nlplug-findfs.c b/nlplug-findfs.c
index b11b7b8..fd8f18f 100644
--- a/nlplug-findfs.c
+++ b/nlplug-findfs.c
@@ -527,6 +527,7 @@ static int find_apkovl(const char *dir, const char *outfile)
 	char pattern[PATH_MAX];
 	glob_t gl;
 	int r, fd;
+	int rc = 0;
 
 	if (outfile == NULL)
 		return 0;
@@ -542,13 +543,21 @@ static int find_apkovl(const char *dir, const char *outfile)
 		err(1, "%s", outfile);
 
 	for (r = 0; r < gl.gl_pathc; r++) {
-		dbg("Found apkovl: %s", gl.gl_pathv[r]);
-		write(fd, gl.gl_pathv[r], strlen(gl.gl_pathv[r]));
+		const char *filename = gl.gl_pathv[r];
+		int len = strlen(filename);
+		dbg("Found apkovl: %s", filename);
+		write(fd, filename, len);
 		write(fd, "\n", 1);
+		/* we don't indicate that apkovl was found if we find
+		   encrypted apkovls, because we need load keyboard drivers
+		   before we exit
+		*/
+		if (len>=7 && strcmp(&filename[len - 7], ".tar.gz") == 0)
+			rc = FOUND_APKOVL;
 	}
 	close(fd);
 	globfree(&gl);
-	return FOUND_APKOVL;
+	return rc;
 }
 
 static int find_bootrepos(const char *devnode, const char *type,