X-Git-Url: https://code.citadel.org/?p=citadel.git;a=blobdiff_plain;f=ctdlsh%2Fconfig.c;fp=ctdlsh%2Fconfig.c;h=47c5d9a55b11413da45834a3219391d277f73dba;hp=9370047cf9b38799b7a565548c311e8b1f7b5e0a;hb=51df2c4034fe9f5db4254c4ebe1e54c0665e00a4;hpb=7cfd077c500d3d057402d05396328fcec81f8a58 diff --git a/ctdlsh/config.c b/ctdlsh/config.c index 9370047cf..47c5d9a55 100644 --- a/ctdlsh/config.c +++ b/ctdlsh/config.c @@ -27,27 +27,71 @@ int show_full_config(int server_socket) { *p = 0; } printf("%-30s = %s\n", buf, val); - } return(cmdret_ok); } +int show_single_config(int server_socket, char *keyname) { + char buf[1024]; + + sock_printf(server_socket, "CONF getval|%s\n", keyname); + sock_getln(server_socket, buf, sizeof buf); + if (buf[0] == '2') { + char *v = &buf[4]; + char *t = NULL; + while(t = strrchr(v, '|'), t!=NULL) t[0]=0; + printf("%-30s = %s\n", keyname, v); + return(cmdret_ok); + } + else { + printf("\n"); + return(cmdret_error); + } +} + + +int set_single_config(int server_socket, char *keyname, char *val) { + char buf[1024]; + + sock_printf(server_socket, "CONF putval|%s|%s\n", keyname, val); + sock_getln(server_socket, buf, sizeof buf); + if (buf[0] != '2') { + printf("%s\n", buf); + return(cmdret_error); + } + return(show_single_config(server_socket, keyname)); +} + + int cmd_config(int server_socket, char *cmdbuf) { char buf[4096]; strncpy(buf, cmdbuf, sizeof buf); - char *p = strchr(buf, ' '); - if (p == NULL) { + char *k = strchr(buf, ' '); + if (k == NULL) { return show_full_config(server_socket); } - while (p[0]==' ') ++p; + while (k[0]==' ') ++k; - if (strlen(p) == 0) { + if (strlen(k) == 0) { return show_full_config(server_socket); } - return(cmdret_error); + char *v = strchr(k, ' '); + if (v == NULL) { + return show_single_config(server_socket, k); + } + + v[0] = 0; + ++v; + while (v[0]==' ') ++v; + + if (strlen(v) == 0) { + return show_single_config(server_socket, k); + } + + return set_single_config(server_socket, k, v); }