if (!strcmp(s, "robemod")) return K_probemod;
break;
case 'r':
+ if (!strcmp(s, "eadprops")) return K_readprops;
if (!strcmp(s, "estart")) return K_restart;
if (!strcmp(s, "estorecon")) return K_restorecon;
if (!strcmp(s, "mdir")) return K_rmdir;
int do_loglevel(int nargs, char **args);
int do_load_persist_props(int nargs, char **args);
int do_wait(int nargs, char **args);
+int do_readprops(int nargs, char **args);
#define __MAKE_KEYWORD_ENUM__
#define KEYWORD(symbol, flags, nargs, func) K_##symbol,
enum {
KEYWORD(oneshot, OPTION, 0, 0)
KEYWORD(onrestart, OPTION, 0, 0)
KEYWORD(probemod, COMMAND, 1, do_probemod)
+ KEYWORD(readprops, COMMAND, 1, do_readprops)
KEYWORD(restart, COMMAND, 1, do_restart)
KEYWORD(restorecon, COMMAND, 1, do_restorecon)
KEYWORD(rm, COMMAND, 1, do_rm)
}
}
-static void load_properties_from_file(const char *fn)
+int load_properties_from_file(const char *fn)
{
char *data;
unsigned sz;
data = read_file(fn, &sz);
- if(data != 0) {
- load_properties(data);
- free(data);
+ if(data == NULL) {
+ ERROR("Unable to read property file '%s'\n", fn);
+ return -1;
}
+ load_properties(data);
+ free(data);
+ return 0;
}
static void load_persistent_properties()
extern void handle_property_set_fd(void);
extern void property_init(void);
extern void property_load_boot_defaults(void);
+extern int load_properties_from_file(const char *fn);
extern void load_persist_props(void);
extern void start_property_service(void);
void get_property_workspace(int *fd, int *sz);
device by name.
<mountoption>s include "ro", "rw", "remount", "noatime", ...
+readprops <path>
+ Read and set system properties based on the contents of a text file
+ at <path>
+
setkey
TBD