diff options
author | Jo-Philipp Wich <jo@mein.io> | 2018-04-19 13:54:40 +0200 |
---|---|---|
committer | Jo-Philipp Wich <jo@mein.io> | 2018-04-19 13:54:40 +0200 |
commit | edd37f8dbbeb5d971eb0f01f071ae45c0312b779 (patch) | |
tree | 0bf07f915ddc4790e0502883d6a9e3236f6689f7 | |
parent | eb09f3a3fde2efd79717b3e15488ca40988bc8b8 (diff) | |
download | rpcd-edd37f8dbbeb5d971eb0f01f071ae45c0312b779.tar.gz |
uci: add rpc_uci_replace_savedir() helper
The rpc_uci_replace_savedir() function removes all configured save directories
from the uci cursor instance and adds the given path argument as sole item.
Signed-off-by: Jo-Philipp Wich <jo@mein.io>
-rw-r--r-- | uci.c | 26 |
1 files changed, 19 insertions, 7 deletions
@@ -204,15 +204,13 @@ rpc_uci_status(void) } /* - * Setup per-session delta save directory. If the passed "sid" blob attribute - * pointer is NULL then the precedure was not invoked through the ubus-rpc so - * we do not perform session isolation and use the default save directory. + * Clear all save directories from the uci cursor and append the given path + * as new save directory. */ static void -rpc_uci_set_savedir(struct blob_attr *sid) +rpc_uci_replace_savedir(const char *path) { struct uci_element *e, *tmp; - char path[PATH_MAX]; uci_foreach_element_safe(&cursor->delta_path, tmp, e) free(e); @@ -220,16 +218,30 @@ rpc_uci_set_savedir(struct blob_attr *sid) cursor->delta_path.prev = &cursor->delta_path; cursor->delta_path.next = &cursor->delta_path; + if (path) + uci_set_savedir(cursor, path); +} + +/* + * Setup per-session delta save directory. If the passed "sid" blob attribute + * pointer is NULL then the precedure was not invoked through the ubus-rpc so + * we do not perform session isolation and use the default save directory. + */ +static void +rpc_uci_set_savedir(struct blob_attr *sid) +{ + char path[PATH_MAX]; + if (!sid) { - uci_set_savedir(cursor, "/tmp/.uci"); + rpc_uci_replace_savedir("/tmp/.uci"); return; } snprintf(path, sizeof(path) - 1, RPC_UCI_SAVEDIR_PREFIX "%s", blobmsg_get_string(sid)); - uci_set_savedir(cursor, path); + rpc_uci_replace_savedir(path); } /* |