aboutsummaryrefslogtreecommitdiffstats
path: root/init/builtins.c
diff options
context:
space:
mode:
authorJean-Baptiste Queru <jbq@google.com>2008-12-19 08:15:15 -0800
committerJean-Baptiste Queru <jbq@google.com>2008-12-19 08:15:15 -0800
commit77d0c65b950570edd5241a8f2ebecfc3acbc5135 (patch)
tree8e3d3e2ca15d3bd038de6e22e1f00f31aad1406f /init/builtins.c
parent829dd45fe9556dac5996969c30b90f1be6c47c47 (diff)
parent35237d135807af84bf9b0e5b8d7f8633e58db6f5 (diff)
downloadsystem_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.c46
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]);