From 7d3e2c4d4ee0747bb2836747411d154b5b9738c5 Mon Sep 17 00:00:00 2001 From: Christopher Desjardins Date: Wed, 29 Mar 2017 13:33:00 +0200 Subject: [PATCH] Make ueventd error messages indicate where the error is in ueventd script Test: Boot bullhead Test: Observe errors with file and line number with faulty ueventd.rc Change-Id: Ieae6151e253f1e6437dfdebd14da4e1e04a45fae --- init/ueventd.cpp | 10 +++++----- init/ueventd_parser.cpp | 4 ++-- init/ueventd_parser.h | 2 +- 3 files changed, 8 insertions(+), 8 deletions(-) diff --git a/init/ueventd.cpp b/init/ueventd.cpp index 915afbdfb..8b28e87f9 100644 --- a/init/ueventd.cpp +++ b/init/ueventd.cpp @@ -94,7 +94,7 @@ int ueventd_main(int argc, char **argv) return 0; } -void set_device_permission(int nargs, char **args) +void set_device_permission(const char* fn, int line, int nargs, char **args) { char *name; char *attr = 0; @@ -121,7 +121,7 @@ void set_device_permission(int nargs, char **args) } if (nargs != 4) { - LOG(ERROR) << "invalid line ueventd.rc line for '" << args[0] << "'"; + LOG(ERROR) << "invalid line (" << fn << ":" << line << ") line for '" << args[0] << "'"; return; } @@ -136,20 +136,20 @@ void set_device_permission(int nargs, char **args) perm = strtol(args[1], &endptr, 8); if (!endptr || *endptr != '\0') { - LOG(ERROR) << "invalid mode '" << args[1] << "'"; + LOG(ERROR) << "invalid mode (" << fn << ":" << line << ") '" << args[1] << "'"; return; } struct passwd* pwd = getpwnam(args[2]); if (!pwd) { - LOG(ERROR) << "invalid uid '" << args[2] << "'"; + LOG(ERROR) << "invalid uid (" << fn << ":" << line << ") '" << args[2] << "'"; return; } uid = pwd->pw_uid; struct group* grp = getgrnam(args[3]); if (!grp) { - LOG(ERROR) << "invalid gid '" << args[3] << "'"; + LOG(ERROR) << "invalid gid (" << fn << ":" << line << ") '" << args[3] << "'"; return; } gid = grp->gr_gid; diff --git a/init/ueventd_parser.cpp b/init/ueventd_parser.cpp index baff58c36..554c1e35d 100644 --- a/init/ueventd_parser.cpp +++ b/init/ueventd_parser.cpp @@ -236,6 +236,6 @@ int ueventd_parse_config_file(const char *fn) return 0; } -static void parse_line_device(parse_state*, int nargs, char** args) { - set_device_permission(nargs, args); +static void parse_line_device(parse_state* state, int nargs, char** args) { + set_device_permission(state->filename, state->line, nargs, args); } diff --git a/init/ueventd_parser.h b/init/ueventd_parser.h index 907cc49de..4d6989730 100644 --- a/init/ueventd_parser.h +++ b/init/ueventd_parser.h @@ -22,7 +22,7 @@ #define UEVENTD_PARSER_MAXARGS 5 int ueventd_parse_config_file(const char *fn); -void set_device_permission(int nargs, char **args); +void set_device_permission(const char* fn, int line, int nargs, char **args); struct ueventd_subsystem *ueventd_subsystem_find_by_name(const char *name); #endif