Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 973311bf authored by Tanguy Pruvot's avatar Tanguy Pruvot Committed by Ricardo Cerqueira
Browse files

init: implement a new 'log' command, useful to debug property events

liblog is not usable, because stderr and stdout are redirected to
/dev/null to control the android log output.

Only forked processes are able to write to the android logs...

Note: accept parameters: log [-t topic] [-p level] <message>
      limit : strings beginning with "--" are not handled

Change-Id: I2fbf7422e0085d4cdf1bba6511413d1f796d4555
parent 87e87fc7
Loading
Loading
Loading
Loading
+26 −0
Original line number Diff line number Diff line
@@ -325,6 +325,32 @@ int do_insmod(int nargs, char **args)
    return do_insmod_inner(nargs, args, size);
}

int do_log(int nargs, char **args)
{
    char* par[nargs+3];
    char* value;
    int i;

    par[0] = "exec";
    par[1] = "/system/bin/log";
    par[2] = "-tinit";
    for (i = 1; i < nargs; ++i) {
        value = args[i];
        if (value[0] == '$') {
            /* system property if value starts with '$' */
            value++;
            if (value[0] != '$') {
                value = (char*) property_get(value);
                if (!value) value = args[i];
            }
        }
        par[i+2] = value;
    }
    par[nargs+2] = NULL;

    return do_exec(nargs+2, par);
}

int do_mkdir(int nargs, char **args)
{
    mode_t mode = 0755;
+1 −0
Original line number Diff line number Diff line
@@ -118,6 +118,7 @@ int lookup_keyword(const char *s)
        break;
    case 'l':
        if (!strcmp(s, "oglevel")) return K_loglevel;
        if (!strcmp(s, "og")) return K_log;
        if (!strcmp(s, "oad_persist_props")) return K_load_persist_props;
        break;
    case 'm':
+2 −0
Original line number Diff line number Diff line
@@ -11,6 +11,7 @@ int do_export(int nargs, char **args);
int do_hostname(int nargs, char **args);
int do_ifup(int nargs, char **args);
int do_insmod(int nargs, char **args);
int do_log(int nargs, char **args);
int do_mkdir(int nargs, char **args);
int do_mount_all(int nargs, char **args);
int do_mount(int nargs, char **args);
@@ -60,6 +61,7 @@ enum {
    KEYWORD(insmod,      COMMAND, 1, do_insmod)
    KEYWORD(import,      SECTION, 1, 0)
    KEYWORD(keycodes,    OPTION,  0, 0)
    KEYWORD(log,         COMMAND, 1, do_log)
    KEYWORD(mkdir,       COMMAND, 1, do_mkdir)
    KEYWORD(mount_all,   COMMAND, 1, do_mount_all)
    KEYWORD(mount,       COMMAND, 3, do_mount)