Merge "run-as: use mmap to read package list file"
diff --git a/adb/commandline.c b/adb/commandline.c
index 4c15232..31ba3ac 100644
--- a/adb/commandline.c
+++ b/adb/commandline.c
@@ -561,6 +561,10 @@
free(quoted_log_tags);
+ if (!strcmp(argv[0],"longcat")) {
+ strncat(buf, " -v long", sizeof(buf)-1);
+ }
+
argc -= 1;
argv += 1;
while(argc-- > 0) {
@@ -577,9 +581,29 @@
return 0;
}
+static int mkdirs(char *path)
+{
+ int ret;
+ char *x = path + 1;
+
+ for(;;) {
+ x = adb_dirstart(x);
+ if(x == 0) return 0;
+ *x = 0;
+ ret = adb_mkdir(path, 0775);
+ *x = OS_PATH_SEPARATOR;
+ if((ret < 0) && (errno != EEXIST)) {
+ return ret;
+ }
+ x++;
+ }
+ return 0;
+}
+
static int backup(int argc, char** argv) {
char buf[4096];
- const char* filename = "./backup.ab";
+ char default_name[32];
+ const char* filename = strcpy(default_name, "./backup.ab");
int fd, outFd;
int i, j;
@@ -602,7 +626,9 @@
/* bare "adb backup" or "adb backup -f filename" are not valid invocations */
if (argc < 2) return usage();
- outFd = adb_open_mode(filename, O_WRONLY | O_CREAT | O_TRUNC, 0640);
+ adb_unlink(filename);
+ mkdirs((char *)filename);
+ outFd = adb_creat(filename, 0640);
if (outFd < 0) {
fprintf(stderr, "adb: unable to open file %s\n", filename);
return -1;
@@ -1203,7 +1229,7 @@
return 0;
}
- if(!strcmp(argv[0],"logcat") || !strcmp(argv[0],"lolcat")) {
+ if(!strcmp(argv[0],"logcat") || !strcmp(argv[0],"lolcat") || !strcmp(argv[0],"longcat")) {
return logcat(ttype, serial, argc, argv);
}
diff --git a/rootdir/init.rc b/rootdir/init.rc
index f44d89a..822ae02 100644
--- a/rootdir/init.rc
+++ b/rootdir/init.rc
@@ -70,6 +70,7 @@
write /proc/sys/kernel/randomize_va_space 2
write /proc/sys/kernel/kptr_restrict 2
write /proc/sys/kernel/dmesg_restrict 1
+ write /proc/sys/vm/mmap_min_addr 32768
# Create cgroup mount points for process groups
mkdir /dev/cpuctl