diff options
| author | Jean-Baptiste Queru <jbq@google.com> | 2008-12-19 08:15:15 -0800 |
|---|---|---|
| committer | Jean-Baptiste Queru <jbq@google.com> | 2008-12-19 08:15:15 -0800 |
| commit | 77d0c65b950570edd5241a8f2ebecfc3acbc5135 (patch) | |
| tree | 8e3d3e2ca15d3bd038de6e22e1f00f31aad1406f /init/builtins.c | |
| parent | 829dd45fe9556dac5996969c30b90f1be6c47c47 (diff) | |
| parent | 35237d135807af84bf9b0e5b8d7f8633e58db6f5 (diff) | |
| download | system_core-77d0c65b950570edd5241a8f2ebecfc3acbc5135.tar.gz system_core-77d0c65b950570edd5241a8f2ebecfc3acbc5135.tar.bz2 system_core-77d0c65b950570edd5241a8f2ebecfc3acbc5135.zip | |
Merge commit 'remotes/korg/cupcake'
Conflicts:
init/devices.c
logwrapper/logwrapper.c
mountd/AutoMount.c
Diffstat (limited to 'init/builtins.c')
| -rw-r--r-- | init/builtins.c | 46 |
1 files changed, 43 insertions, 3 deletions
diff --git a/init/builtins.c b/init/builtins.c index bbee7b2d..bcdfee1e 100644 --- a/init/builtins.c +++ b/init/builtins.c @@ -65,7 +65,7 @@ static int write_file(const char *path, const char *value) } } -static int insmod(const char *filename) +static int insmod(const char *filename, char *options) { void *module; unsigned size; @@ -75,7 +75,7 @@ static int insmod(const char *filename) if (!module) return -1; - ret = init_module(module, size, ""); + ret = init_module(module, size, options); free(module); @@ -173,9 +173,35 @@ int do_ifup(int nargs, char **args) return __ifupdown(args[1], 1); } + +static int do_insmod_inner(int nargs, char **args, int opt_len) +{ + char options[opt_len + 1]; + int i; + + options[0] = '\0'; + if (nargs > 2) { + strcpy(options, args[2]); + for (i = 3; i < nargs; ++i) { + strcat(options, " "); + strcat(options, args[i]); + } + } + + return insmod(args[1], options); +} + int do_insmod(int nargs, char **args) { - return insmod(args[1]); + int i; + int size = 0; + + if (nargs > 2) { + for (i = 2; i < nargs; ++i) + size += strlen(args[i]) + 1; + } + + return do_insmod_inner(nargs, args, size); } int do_import(int nargs, char **args) @@ -382,6 +408,20 @@ int do_symlink(int nargs, char **args) return symlink(args[1], args[2]); } +int do_sysclktz(int nargs, char **args) +{ + struct timezone tz; + + if (nargs != 2) + return -1; + + memset(&tz, 0, sizeof(tz)); + tz.tz_minuteswest = atoi(args[1]); + if (settimeofday(NULL, &tz)) + return -1; + return 0; +} + int do_write(int nargs, char **args) { return write_file(args[1], args[2]); |
