recovery: move log output to stdout
Recovery currently has a random mix of messages printed to stdout and messages printed to stderr, which can make logs hard to read. Move everything to stdout. Change-Id: Ie33bd4a9e1272e731302569cdec918e0534c48a6
This commit is contained in:
+2
-2
@@ -287,13 +287,13 @@ Value* LessThanIntFn(const char* name, State* state, int argc, Expr* argv[]) {
|
||||
|
||||
long l_int = strtol(left, &end, 10);
|
||||
if (left[0] == '\0' || *end != '\0') {
|
||||
fprintf(stderr, "[%s] is not an int\n", left);
|
||||
printf("[%s] is not an int\n", left);
|
||||
goto done;
|
||||
}
|
||||
|
||||
long r_int = strtol(right, &end, 10);
|
||||
if (right[0] == '\0' || *end != '\0') {
|
||||
fprintf(stderr, "[%s] is not an int\n", right);
|
||||
printf("[%s] is not an int\n", right);
|
||||
goto done;
|
||||
}
|
||||
|
||||
|
||||
+5
-5
@@ -34,8 +34,8 @@ int expect(const char* expr_str, const char* expected, int* errors) {
|
||||
int error_count = 0;
|
||||
error = yyparse(&e, &error_count);
|
||||
if (error > 0 || error_count > 0) {
|
||||
fprintf(stderr, "error parsing \"%s\" (%d errors)\n",
|
||||
expr_str, error_count);
|
||||
printf("error parsing \"%s\" (%d errors)\n",
|
||||
expr_str, error_count);
|
||||
++*errors;
|
||||
return 0;
|
||||
}
|
||||
@@ -49,7 +49,7 @@ int expect(const char* expr_str, const char* expected, int* errors) {
|
||||
free(state.errmsg);
|
||||
free(state.script);
|
||||
if (result == NULL && expected != NULL) {
|
||||
fprintf(stderr, "error evaluating \"%s\"\n", expr_str);
|
||||
printf("error evaluating \"%s\"\n", expr_str);
|
||||
++*errors;
|
||||
return 0;
|
||||
}
|
||||
@@ -59,8 +59,8 @@ int expect(const char* expr_str, const char* expected, int* errors) {
|
||||
}
|
||||
|
||||
if (strcmp(result, expected) != 0) {
|
||||
fprintf(stderr, "evaluating \"%s\": expected \"%s\", got \"%s\"\n",
|
||||
expr_str, expected, result);
|
||||
printf("evaluating \"%s\": expected \"%s\", got \"%s\"\n",
|
||||
expr_str, expected, result);
|
||||
++*errors;
|
||||
free(result);
|
||||
return 0;
|
||||
|
||||
@@ -154,6 +154,7 @@ try_update_binary(const char *path, ZipArchive *zip, int* wipe_cache) {
|
||||
} else {
|
||||
ui->Print("\n");
|
||||
}
|
||||
fflush(stdout);
|
||||
} else if (strcmp(command, "wipe_cache") == 0) {
|
||||
*wipe_cache = 1;
|
||||
} else if (strcmp(command, "clear_display") == 0) {
|
||||
|
||||
+2
-2
@@ -385,8 +385,8 @@ int gr_init(void)
|
||||
|
||||
get_memory_surface(&gr_mem_surface);
|
||||
|
||||
fprintf(stderr, "framebuffer: fd %d (%d x %d)\n",
|
||||
gr_fb_fd, gr_framebuffer[0].width, gr_framebuffer[0].height);
|
||||
printf("framebuffer: fd %d (%d x %d)\n",
|
||||
gr_fb_fd, gr_framebuffer[0].width, gr_framebuffer[0].height);
|
||||
|
||||
/* start with 0 as front (displayed) and 1 as back (drawing) */
|
||||
gr_active_fb = 0;
|
||||
|
||||
+13
-13
@@ -289,7 +289,7 @@ static int read_block(const MtdPartition *partition, int fd, char *data)
|
||||
{
|
||||
struct mtd_ecc_stats before, after;
|
||||
if (ioctl(fd, ECCGETSTATS, &before)) {
|
||||
fprintf(stderr, "mtd: ECCGETSTATS error (%s)\n", strerror(errno));
|
||||
printf("mtd: ECCGETSTATS error (%s)\n", strerror(errno));
|
||||
return -1;
|
||||
}
|
||||
|
||||
@@ -300,13 +300,13 @@ static int read_block(const MtdPartition *partition, int fd, char *data)
|
||||
|
||||
while (pos + size <= (int) partition->size) {
|
||||
if (lseek64(fd, pos, SEEK_SET) != pos || read(fd, data, size) != size) {
|
||||
fprintf(stderr, "mtd: read error at 0x%08llx (%s)\n",
|
||||
printf("mtd: read error at 0x%08llx (%s)\n",
|
||||
pos, strerror(errno));
|
||||
} else if (ioctl(fd, ECCGETSTATS, &after)) {
|
||||
fprintf(stderr, "mtd: ECCGETSTATS error (%s)\n", strerror(errno));
|
||||
printf("mtd: ECCGETSTATS error (%s)\n", strerror(errno));
|
||||
return -1;
|
||||
} else if (after.failed != before.failed) {
|
||||
fprintf(stderr, "mtd: ECC errors (%d soft, %d hard) at 0x%08llx\n",
|
||||
printf("mtd: ECC errors (%d soft, %d hard) at 0x%08llx\n",
|
||||
after.corrected - before.corrected,
|
||||
after.failed - before.failed, pos);
|
||||
// copy the comparison baseline for the next read.
|
||||
@@ -431,39 +431,39 @@ static int write_block(MtdWriteContext *ctx, const char *data)
|
||||
int retry;
|
||||
for (retry = 0; retry < 2; ++retry) {
|
||||
if (ioctl(fd, MEMERASE, &erase_info) < 0) {
|
||||
fprintf(stderr, "mtd: erase failure at 0x%08lx (%s)\n",
|
||||
printf("mtd: erase failure at 0x%08lx (%s)\n",
|
||||
pos, strerror(errno));
|
||||
continue;
|
||||
}
|
||||
if (lseek(fd, pos, SEEK_SET) != pos ||
|
||||
write(fd, data, size) != size) {
|
||||
fprintf(stderr, "mtd: write error at 0x%08lx (%s)\n",
|
||||
printf("mtd: write error at 0x%08lx (%s)\n",
|
||||
pos, strerror(errno));
|
||||
}
|
||||
|
||||
char verify[size];
|
||||
if (lseek(fd, pos, SEEK_SET) != pos ||
|
||||
read(fd, verify, size) != size) {
|
||||
fprintf(stderr, "mtd: re-read error at 0x%08lx (%s)\n",
|
||||
printf("mtd: re-read error at 0x%08lx (%s)\n",
|
||||
pos, strerror(errno));
|
||||
continue;
|
||||
}
|
||||
if (memcmp(data, verify, size) != 0) {
|
||||
fprintf(stderr, "mtd: verification error at 0x%08lx (%s)\n",
|
||||
printf("mtd: verification error at 0x%08lx (%s)\n",
|
||||
pos, strerror(errno));
|
||||
continue;
|
||||
}
|
||||
|
||||
if (retry > 0) {
|
||||
fprintf(stderr, "mtd: wrote block after %d retries\n", retry);
|
||||
printf("mtd: wrote block after %d retries\n", retry);
|
||||
}
|
||||
fprintf(stderr, "mtd: successfully wrote block at %lx\n", pos);
|
||||
printf("mtd: successfully wrote block at %lx\n", pos);
|
||||
return 0; // Success!
|
||||
}
|
||||
|
||||
// Try to erase it once more as we give up on this block
|
||||
add_bad_block_offset(ctx, pos);
|
||||
fprintf(stderr, "mtd: skipping write block at 0x%08lx\n", pos);
|
||||
printf("mtd: skipping write block at 0x%08lx\n", pos);
|
||||
ioctl(fd, MEMERASE, &erase_info);
|
||||
pos += partition->erase_size;
|
||||
}
|
||||
@@ -526,7 +526,7 @@ off_t mtd_erase_blocks(MtdWriteContext *ctx, int blocks)
|
||||
while (blocks-- > 0) {
|
||||
loff_t bpos = pos;
|
||||
if (ioctl(ctx->fd, MEMGETBADBLOCK, &bpos) > 0) {
|
||||
fprintf(stderr, "mtd: not erasing bad block at 0x%08lx\n", pos);
|
||||
printf("mtd: not erasing bad block at 0x%08lx\n", pos);
|
||||
pos += ctx->partition->erase_size;
|
||||
continue; // Don't try to erase known factory-bad blocks.
|
||||
}
|
||||
@@ -535,7 +535,7 @@ off_t mtd_erase_blocks(MtdWriteContext *ctx, int blocks)
|
||||
erase_info.start = pos;
|
||||
erase_info.length = ctx->partition->erase_size;
|
||||
if (ioctl(ctx->fd, MEMERASE, &erase_info) < 0) {
|
||||
fprintf(stderr, "mtd: erase failure at 0x%08lx\n", pos);
|
||||
printf("mtd: erase failure at 0x%08lx\n", pos);
|
||||
}
|
||||
pos += ctx->partition->erase_size;
|
||||
}
|
||||
|
||||
+1
-2
@@ -920,8 +920,7 @@ main(int argc, char **argv) {
|
||||
sehandle = selabel_open(SELABEL_CTX_FILE, seopts, 1);
|
||||
|
||||
if (!sehandle) {
|
||||
fprintf(stderr, "Warning: No file_contexts\n");
|
||||
ui->Print("Warning: No file_contexts\n");
|
||||
ui->Print("Warning: No file_contexts\n");
|
||||
}
|
||||
|
||||
device->StartRecovery();
|
||||
|
||||
+36
-36
@@ -97,13 +97,13 @@ Value* MountFn(const char* name, State* state, int argc, Expr* argv[]) {
|
||||
const MtdPartition* mtd;
|
||||
mtd = mtd_find_partition_by_name(location);
|
||||
if (mtd == NULL) {
|
||||
fprintf(stderr, "%s: no mtd partition named \"%s\"",
|
||||
printf("%s: no mtd partition named \"%s\"",
|
||||
name, location);
|
||||
result = strdup("");
|
||||
goto done;
|
||||
}
|
||||
if (mtd_mount_partition(mtd, mount_point, fs_type, 0 /* rw */) != 0) {
|
||||
fprintf(stderr, "mtd mount of %s failed: %s\n",
|
||||
printf("mtd mount of %s failed: %s\n",
|
||||
location, strerror(errno));
|
||||
result = strdup("");
|
||||
goto done;
|
||||
@@ -112,7 +112,7 @@ Value* MountFn(const char* name, State* state, int argc, Expr* argv[]) {
|
||||
} else {
|
||||
if (mount(location, mount_point, fs_type,
|
||||
MS_NOATIME | MS_NODEV | MS_NODIRATIME, "") < 0) {
|
||||
fprintf(stderr, "%s: failed to mount %s at %s: %s\n",
|
||||
printf("%s: failed to mount %s at %s: %s\n",
|
||||
name, location, mount_point, strerror(errno));
|
||||
result = strdup("");
|
||||
} else {
|
||||
@@ -175,7 +175,7 @@ Value* UnmountFn(const char* name, State* state, int argc, Expr* argv[]) {
|
||||
scan_mounted_volumes();
|
||||
const MountedVolume* vol = find_mounted_volume_by_mount_point(mount_point);
|
||||
if (vol == NULL) {
|
||||
fprintf(stderr, "unmount of %s failed; no such volume\n", mount_point);
|
||||
printf("unmount of %s failed; no such volume\n", mount_point);
|
||||
result = strdup("");
|
||||
} else {
|
||||
unmount_mounted_volume(vol);
|
||||
@@ -233,25 +233,25 @@ Value* FormatFn(const char* name, State* state, int argc, Expr* argv[]) {
|
||||
mtd_scan_partitions();
|
||||
const MtdPartition* mtd = mtd_find_partition_by_name(location);
|
||||
if (mtd == NULL) {
|
||||
fprintf(stderr, "%s: no mtd partition named \"%s\"",
|
||||
printf("%s: no mtd partition named \"%s\"",
|
||||
name, location);
|
||||
result = strdup("");
|
||||
goto done;
|
||||
}
|
||||
MtdWriteContext* ctx = mtd_write_partition(mtd);
|
||||
if (ctx == NULL) {
|
||||
fprintf(stderr, "%s: can't write \"%s\"", name, location);
|
||||
printf("%s: can't write \"%s\"", name, location);
|
||||
result = strdup("");
|
||||
goto done;
|
||||
}
|
||||
if (mtd_erase_blocks(ctx, -1) == -1) {
|
||||
mtd_write_close(ctx);
|
||||
fprintf(stderr, "%s: failed to erase \"%s\"", name, location);
|
||||
printf("%s: failed to erase \"%s\"", name, location);
|
||||
result = strdup("");
|
||||
goto done;
|
||||
}
|
||||
if (mtd_write_close(ctx) != 0) {
|
||||
fprintf(stderr, "%s: failed to close \"%s\"", name, location);
|
||||
printf("%s: failed to close \"%s\"", name, location);
|
||||
result = strdup("");
|
||||
goto done;
|
||||
}
|
||||
@@ -260,7 +260,7 @@ Value* FormatFn(const char* name, State* state, int argc, Expr* argv[]) {
|
||||
} else if (strcmp(fs_type, "ext4") == 0) {
|
||||
int status = make_ext4fs(location, atoll(fs_size), mount_point, sehandle);
|
||||
if (status != 0) {
|
||||
fprintf(stderr, "%s: make_ext4fs failed (%d) on %s",
|
||||
printf("%s: make_ext4fs failed (%d) on %s",
|
||||
name, status, location);
|
||||
result = strdup("");
|
||||
goto done;
|
||||
@@ -268,7 +268,7 @@ Value* FormatFn(const char* name, State* state, int argc, Expr* argv[]) {
|
||||
result = location;
|
||||
#endif
|
||||
} else {
|
||||
fprintf(stderr, "%s: unsupported fs_type \"%s\" partition_type \"%s\"",
|
||||
printf("%s: unsupported fs_type \"%s\" partition_type \"%s\"",
|
||||
name, fs_type, partition_type);
|
||||
}
|
||||
|
||||
@@ -394,13 +394,13 @@ Value* PackageExtractFileFn(const char* name, State* state,
|
||||
ZipArchive* za = ((UpdaterInfo*)(state->cookie))->package_zip;
|
||||
const ZipEntry* entry = mzFindZipEntry(za, zip_path);
|
||||
if (entry == NULL) {
|
||||
fprintf(stderr, "%s: no %s in package\n", name, zip_path);
|
||||
printf("%s: no %s in package\n", name, zip_path);
|
||||
goto done2;
|
||||
}
|
||||
|
||||
FILE* f = fopen(dest_path, "wb");
|
||||
if (f == NULL) {
|
||||
fprintf(stderr, "%s: can't open %s for write: %s\n",
|
||||
printf("%s: can't open %s for write: %s\n",
|
||||
name, dest_path, strerror(errno));
|
||||
goto done2;
|
||||
}
|
||||
@@ -426,14 +426,14 @@ Value* PackageExtractFileFn(const char* name, State* state,
|
||||
ZipArchive* za = ((UpdaterInfo*)(state->cookie))->package_zip;
|
||||
const ZipEntry* entry = mzFindZipEntry(za, zip_path);
|
||||
if (entry == NULL) {
|
||||
fprintf(stderr, "%s: no %s in package\n", name, zip_path);
|
||||
printf("%s: no %s in package\n", name, zip_path);
|
||||
goto done1;
|
||||
}
|
||||
|
||||
v->size = mzGetZipEntryUncompLen(entry);
|
||||
v->data = malloc(v->size);
|
||||
if (v->data == NULL) {
|
||||
fprintf(stderr, "%s: failed to allocate %ld bytes for %s\n",
|
||||
printf("%s: failed to allocate %ld bytes for %s\n",
|
||||
name, (long)v->size, zip_path);
|
||||
goto done1;
|
||||
}
|
||||
@@ -460,13 +460,13 @@ static int make_parents(char* name) {
|
||||
*p = '\0';
|
||||
if (make_parents(name) < 0) return -1;
|
||||
int result = mkdir(name, 0700);
|
||||
if (result == 0) fprintf(stderr, "symlink(): created [%s]\n", name);
|
||||
if (result == 0) printf("symlink(): created [%s]\n", name);
|
||||
*p = '/';
|
||||
if (result == 0 || errno == EEXIST) {
|
||||
// successfully created or already existed; we're done
|
||||
return 0;
|
||||
} else {
|
||||
fprintf(stderr, "failed to mkdir %s: %s\n", name, strerror(errno));
|
||||
printf("failed to mkdir %s: %s\n", name, strerror(errno));
|
||||
return -1;
|
||||
}
|
||||
}
|
||||
@@ -494,18 +494,18 @@ Value* SymlinkFn(const char* name, State* state, int argc, Expr* argv[]) {
|
||||
for (i = 0; i < argc-1; ++i) {
|
||||
if (unlink(srcs[i]) < 0) {
|
||||
if (errno != ENOENT) {
|
||||
fprintf(stderr, "%s: failed to remove %s: %s\n",
|
||||
printf("%s: failed to remove %s: %s\n",
|
||||
name, srcs[i], strerror(errno));
|
||||
++bad;
|
||||
}
|
||||
}
|
||||
if (make_parents(srcs[i])) {
|
||||
fprintf(stderr, "%s: failed to symlink %s to %s: making parents failed\n",
|
||||
printf("%s: failed to symlink %s to %s: making parents failed\n",
|
||||
name, srcs[i], target);
|
||||
++bad;
|
||||
}
|
||||
if (symlink(target, srcs[i]) < 0) {
|
||||
fprintf(stderr, "%s: failed to symlink %s to %s: %s\n",
|
||||
printf("%s: failed to symlink %s to %s: %s\n",
|
||||
name, srcs[i], target, strerror(errno));
|
||||
++bad;
|
||||
}
|
||||
@@ -574,12 +574,12 @@ Value* SetPermFn(const char* name, State* state, int argc, Expr* argv[]) {
|
||||
|
||||
for (i = 3; i < argc; ++i) {
|
||||
if (chown(args[i], uid, gid) < 0) {
|
||||
fprintf(stderr, "%s: chown of %s to %d %d failed: %s\n",
|
||||
printf("%s: chown of %s to %d %d failed: %s\n",
|
||||
name, args[i], uid, gid, strerror(errno));
|
||||
++bad;
|
||||
}
|
||||
if (chmod(args[i], mode) < 0) {
|
||||
fprintf(stderr, "%s: chmod of %s to %o failed: %s\n",
|
||||
printf("%s: chmod of %s to %o failed: %s\n",
|
||||
name, args[i], mode, strerror(errno));
|
||||
++bad;
|
||||
}
|
||||
@@ -720,7 +720,7 @@ static bool write_raw_image_cb(const unsigned char* data,
|
||||
int data_len, void* ctx) {
|
||||
int r = mtd_write_data((MtdWriteContext*)ctx, (const char *)data, data_len);
|
||||
if (r == data_len) return true;
|
||||
fprintf(stderr, "%s\n", strerror(errno));
|
||||
printf("%s\n", strerror(errno));
|
||||
return false;
|
||||
}
|
||||
|
||||
@@ -752,14 +752,14 @@ Value* WriteRawImageFn(const char* name, State* state, int argc, Expr* argv[]) {
|
||||
mtd_scan_partitions();
|
||||
const MtdPartition* mtd = mtd_find_partition_by_name(partition);
|
||||
if (mtd == NULL) {
|
||||
fprintf(stderr, "%s: no mtd partition named \"%s\"\n", name, partition);
|
||||
printf("%s: no mtd partition named \"%s\"\n", name, partition);
|
||||
result = strdup("");
|
||||
goto done;
|
||||
}
|
||||
|
||||
MtdWriteContext* ctx = mtd_write_partition(mtd);
|
||||
if (ctx == NULL) {
|
||||
fprintf(stderr, "%s: can't write mtd partition \"%s\"\n",
|
||||
printf("%s: can't write mtd partition \"%s\"\n",
|
||||
name, partition);
|
||||
result = strdup("");
|
||||
goto done;
|
||||
@@ -772,7 +772,7 @@ Value* WriteRawImageFn(const char* name, State* state, int argc, Expr* argv[]) {
|
||||
char* filename = contents->data;
|
||||
FILE* f = fopen(filename, "rb");
|
||||
if (f == NULL) {
|
||||
fprintf(stderr, "%s: can't open %s: %s\n",
|
||||
printf("%s: can't open %s: %s\n",
|
||||
name, filename, strerror(errno));
|
||||
result = strdup("");
|
||||
goto done;
|
||||
@@ -793,15 +793,15 @@ Value* WriteRawImageFn(const char* name, State* state, int argc, Expr* argv[]) {
|
||||
success = (wrote == contents->size);
|
||||
}
|
||||
if (!success) {
|
||||
fprintf(stderr, "mtd_write_data to %s failed: %s\n",
|
||||
printf("mtd_write_data to %s failed: %s\n",
|
||||
partition, strerror(errno));
|
||||
}
|
||||
|
||||
if (mtd_erase_blocks(ctx, -1) == -1) {
|
||||
fprintf(stderr, "%s: error erasing blocks of %s\n", name, partition);
|
||||
printf("%s: error erasing blocks of %s\n", name, partition);
|
||||
}
|
||||
if (mtd_write_close(ctx) != 0) {
|
||||
fprintf(stderr, "%s: error closing write of %s\n", name, partition);
|
||||
printf("%s: error closing write of %s\n", name, partition);
|
||||
}
|
||||
|
||||
printf("%s %s partition\n",
|
||||
@@ -988,23 +988,23 @@ Value* RunProgramFn(const char* name, State* state, int argc, Expr* argv[]) {
|
||||
memcpy(args2, args, sizeof(char*) * argc);
|
||||
args2[argc] = NULL;
|
||||
|
||||
fprintf(stderr, "about to run program [%s] with %d args\n", args2[0], argc);
|
||||
printf("about to run program [%s] with %d args\n", args2[0], argc);
|
||||
|
||||
pid_t child = fork();
|
||||
if (child == 0) {
|
||||
execv(args2[0], args2);
|
||||
fprintf(stderr, "run_program: execv failed: %s\n", strerror(errno));
|
||||
printf("run_program: execv failed: %s\n", strerror(errno));
|
||||
_exit(1);
|
||||
}
|
||||
int status;
|
||||
waitpid(child, &status, 0);
|
||||
if (WIFEXITED(status)) {
|
||||
if (WEXITSTATUS(status) != 0) {
|
||||
fprintf(stderr, "run_program: child exited with status %d\n",
|
||||
printf("run_program: child exited with status %d\n",
|
||||
WEXITSTATUS(status));
|
||||
}
|
||||
} else if (WIFSIGNALED(status)) {
|
||||
fprintf(stderr, "run_program: child terminated by signal %d\n",
|
||||
printf("run_program: child terminated by signal %d\n",
|
||||
WTERMSIG(status));
|
||||
}
|
||||
|
||||
@@ -1053,7 +1053,7 @@ Value* Sha1CheckFn(const char* name, State* state, int argc, Expr* argv[]) {
|
||||
}
|
||||
|
||||
if (args[0]->size < 0) {
|
||||
fprintf(stderr, "%s(): no file contents received", name);
|
||||
printf("%s(): no file contents received", name);
|
||||
return StringValue(strdup(""));
|
||||
}
|
||||
uint8_t digest[SHA_DIGEST_SIZE];
|
||||
@@ -1068,12 +1068,12 @@ Value* Sha1CheckFn(const char* name, State* state, int argc, Expr* argv[]) {
|
||||
uint8_t* arg_digest = malloc(SHA_DIGEST_SIZE);
|
||||
for (i = 1; i < argc; ++i) {
|
||||
if (args[i]->type != VAL_STRING) {
|
||||
fprintf(stderr, "%s(): arg %d is not a string; skipping",
|
||||
printf("%s(): arg %d is not a string; skipping",
|
||||
name, i);
|
||||
} else if (ParseSha1(args[i]->data, arg_digest) != 0) {
|
||||
// Warn about bad args and skip them.
|
||||
fprintf(stderr, "%s(): error parsing \"%s\" as sha-1; skipping",
|
||||
name, args[i]->data);
|
||||
printf("%s(): error parsing \"%s\" as sha-1; skipping",
|
||||
name, args[i]->data);
|
||||
} else if (memcmp(digest, arg_digest, SHA_DIGEST_SIZE) == 0) {
|
||||
break;
|
||||
}
|
||||
|
||||
+12
-12
@@ -36,13 +36,14 @@ struct selabel_handle *sehandle;
|
||||
|
||||
int main(int argc, char** argv) {
|
||||
// Various things log information to stdout or stderr more or less
|
||||
// at random. The log file makes more sense if buffering is
|
||||
// turned off so things appear in the right order.
|
||||
// at random (though we've tried to standardize on stdout). The
|
||||
// log file makes more sense if buffering is turned off so things
|
||||
// appear in the right order.
|
||||
setbuf(stdout, NULL);
|
||||
setbuf(stderr, NULL);
|
||||
|
||||
if (argc != 4) {
|
||||
fprintf(stderr, "unexpected number of arguments (%d)\n", argc);
|
||||
printf("unexpected number of arguments (%d)\n", argc);
|
||||
return 1;
|
||||
}
|
||||
|
||||
@@ -50,7 +51,7 @@ int main(int argc, char** argv) {
|
||||
if ((version[0] != '1' && version[0] != '2' && version[0] != '3') ||
|
||||
version[1] != '\0') {
|
||||
// We support version 1, 2, or 3.
|
||||
fprintf(stderr, "wrong updater binary API; expected 1, 2, or 3; "
|
||||
printf("wrong updater binary API; expected 1, 2, or 3; "
|
||||
"got %s\n",
|
||||
argv[1]);
|
||||
return 2;
|
||||
@@ -69,20 +70,20 @@ int main(int argc, char** argv) {
|
||||
int err;
|
||||
err = mzOpenZipArchive(package_data, &za);
|
||||
if (err != 0) {
|
||||
fprintf(stderr, "failed to open package %s: %s\n",
|
||||
printf("failed to open package %s: %s\n",
|
||||
package_data, strerror(err));
|
||||
return 3;
|
||||
}
|
||||
|
||||
const ZipEntry* script_entry = mzFindZipEntry(&za, SCRIPT_NAME);
|
||||
if (script_entry == NULL) {
|
||||
fprintf(stderr, "failed to find %s in %s\n", SCRIPT_NAME, package_data);
|
||||
printf("failed to find %s in %s\n", SCRIPT_NAME, package_data);
|
||||
return 4;
|
||||
}
|
||||
|
||||
char* script = malloc(script_entry->uncompLen+1);
|
||||
if (!mzReadZipEntry(&za, script_entry, script, script_entry->uncompLen)) {
|
||||
fprintf(stderr, "failed to read script from package\n");
|
||||
printf("failed to read script from package\n");
|
||||
return 5;
|
||||
}
|
||||
script[script_entry->uncompLen] = '\0';
|
||||
@@ -101,7 +102,7 @@ int main(int argc, char** argv) {
|
||||
yy_scan_string(script);
|
||||
int error = yyparse(&root, &error_count);
|
||||
if (error != 0 || error_count > 0) {
|
||||
fprintf(stderr, "%d parse errors\n", error_count);
|
||||
printf("%d parse errors\n", error_count);
|
||||
return 6;
|
||||
}
|
||||
|
||||
@@ -112,7 +113,6 @@ int main(int argc, char** argv) {
|
||||
sehandle = selabel_open(SELABEL_CTX_FILE, seopts, 1);
|
||||
|
||||
if (!sehandle) {
|
||||
fprintf(stderr, "Warning: No file_contexts\n");
|
||||
fprintf(cmd_pipe, "ui_print Warning: No file_contexts\n");
|
||||
}
|
||||
|
||||
@@ -131,10 +131,10 @@ int main(int argc, char** argv) {
|
||||
char* result = Evaluate(&state, root);
|
||||
if (result == NULL) {
|
||||
if (state.errmsg == NULL) {
|
||||
fprintf(stderr, "script aborted (no error message)\n");
|
||||
printf("script aborted (no error message)\n");
|
||||
fprintf(cmd_pipe, "ui_print script aborted (no error message)\n");
|
||||
} else {
|
||||
fprintf(stderr, "script aborted: %s\n", state.errmsg);
|
||||
printf("script aborted: %s\n", state.errmsg);
|
||||
char* line = strtok(state.errmsg, "\n");
|
||||
while (line) {
|
||||
fprintf(cmd_pipe, "ui_print %s\n", line);
|
||||
@@ -145,7 +145,7 @@ int main(int argc, char** argv) {
|
||||
free(state.errmsg);
|
||||
return 7;
|
||||
} else {
|
||||
fprintf(stderr, "script result was [%s]\n", result);
|
||||
fprintf(cmd_pipe, "ui_print script succeeded: result was [%s]\n", result);
|
||||
free(result);
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user