Hi, > comments inline
dito. > On 12/04/2015 03:56, Luka Perkov wrote: >> Signed-off-by: Luka Perkov <l...@openwrt.org> >> --- >> changes in v2: >> >> * no need to null-terminate string after sprintf() >> >> file.c | 35 +++++++++++++++++++++++++++++++++++ >> 1 file changed, 35 insertions(+) >> >> diff --git a/file.c b/file.c >> index 3831c54..9c1b301 100644 >> --- a/file.c >> +++ b/file.c >> @@ -27,6 +27,7 @@ >> #include <sys/wait.h> >> #include <libubus.h> >> #include <libubox/blobmsg.h> >> +#include <libubox/md5.h> >> #include <libubox/ustream.h> >> >> #include <rpcd/plugin.h> >> @@ -237,6 +238,39 @@ rpc_file_write(struct ubus_context *ctx, struct >> ubus_object *obj, >> } >> >> static int >> +rpc_file_md5(struct ubus_context *ctx, struct ubus_object *obj, >> + struct ubus_request_data *req, const char *method, >> + struct blob_attr *msg) >> +{ >> + int rv, i; >> + char *path; >> + struct stat s; >> + uint8_t md5[16]; >> + char *wbuf; >> + >> + if (!rpc_check_path(msg, &path, &s)) >> + return rpc_errno_status(); >> + >> + if (!S_ISREG(s.st_mode)) >> + return UBUS_STATUS_NOT_SUPPORTED; > > should this not be -> UBUS_STATUS_INVALID_ARGUMENT I think "not supported" in response to "md5sum of a non-regular file" (like a chardev or directory) makes sense here - imho. > > >> + >> + if ((rv = md5sum(path, md5)) <= 0) >> + return rpc_errno_status(); >> + >> + blob_buf_init(&buf, 0); >> + wbuf = blobmsg_alloc_string_buffer(&buf, "md5", 33); >> + >> + for (i = 0; i < 16; i++) >> + sprintf(wbuf + (i * 2), "%02x", (uint8_t) md5[i]); >> + blobmsg_add_string_buffer(&buf); >> + ubus_send_reply(ctx, req, buf.head); >> + blob_buf_free(&buf); >> + >> + return UBUS_STATUS_OK; >> +} >> + >> +static int >> rpc_file_list(struct ubus_context *ctx, struct ubus_object *obj, >> struct ubus_request_data *req, const char *method, >> struct blob_attr *msg) >> @@ -611,6 +645,7 @@ rpc_file_api_init(const struct rpc_daemon_ops *o, struct >> ubus_context *ctx) >> UBUS_METHOD("write", rpc_file_write, rpc_file_rw_policy), >> UBUS_METHOD("list", rpc_file_list, rpc_file_r_policy), >> UBUS_METHOD("stat", rpc_file_stat, rpc_file_r_policy), >> + UBUS_METHOD("md5", rpc_file_md5, rpc_file_r_policy), >> UBUS_METHOD("exec", rpc_file_exec, rpc_exec_policy), >> }; >> >> > _______________________________________________ > openwrt-devel mailing list > openwrt-devel@lists.openwrt.org > https://lists.openwrt.org/cgi-bin/mailman/listinfo/openwrt-devel > _______________________________________________ openwrt-devel mailing list openwrt-devel@lists.openwrt.org https://lists.openwrt.org/cgi-bin/mailman/listinfo/openwrt-devel