aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDenis 'GNUtoo' Carikli <GNUtoo@cyberdimension.org>2020-01-23 18:02:54 +0100
committerDenis 'GNUtoo' Carikli <GNUtoo@cyberdimension.org>2020-01-30 03:50:21 +0100
commita0bbe77591a61fb6ae8c2d71059629eed325eeab (patch)
tree5ee3e99893ad16a947d7f6508481b2e4b451f21b
parentaa834b3c317b5938264d48a2ee2f24ea5278cf0d (diff)
downloadhardware_replicant_libsamsung-ipc-a0bbe77591a61fb6ae8c2d71059629eed325eeab.tar.gz
hardware_replicant_libsamsung-ipc-a0bbe77591a61fb6ae8c2d71059629eed325eeab.tar.bz2
hardware_replicant_libsamsung-ipc-a0bbe77591a61fb6ae8c2d71059629eed325eeab.zip
nv_data-md5: use ipc_client logging
Without that, functions like ipc_nv_data_md5_calculate won't print anything as the ipc_client logging requires a valid ipc_client. Signed-off-by: Denis 'GNUtoo' Carikli <GNUtoo@cyberdimension.org>
-rw-r--r--tools/nv_data-md5.c47
1 files changed, 45 insertions, 2 deletions
diff --git a/tools/nv_data-md5.c b/tools/nv_data-md5.c
index d998296..dde94a2 100644
--- a/tools/nv_data-md5.c
+++ b/tools/nv_data-md5.c
@@ -22,19 +22,47 @@
#include <sys/types.h>
#include <samsung-ipc.h>
+#include <string.h>
void usage_print(void)
{
printf("Usage: nv_data-md5 [nv_data.bin]\n");
}
+void log_callback(__attribute__((unused)) void *data,
+ const char *message)
+{
+ char *buffer;
+ size_t length;
+ int i;
+
+ if (message == NULL)
+ return;
+
+ buffer = strdup(message);
+ length = strlen(message);
+
+ for (i = length; i > 0; i--) {
+ if (buffer[i] == '\n')
+ buffer[i] = '\0';
+ else if (buffer[i] != '\0')
+ break;
+ }
+
+ printf("[ipc] %s\n", buffer);
+
+ free(buffer);
+}
+
int main(int argc, char *argv[])
{
+ struct ipc_client *client = NULL;
char *secret = NV_DATA_SECRET;
size_t size = NV_DATA_SIZE;
size_t chunk_size = NV_DATA_CHUNK_SIZE;
char *md5_string = NULL;
char *path;
+ int rc = 0;
if (argc < 2) {
usage_print();
@@ -43,8 +71,19 @@ int main(int argc, char *argv[])
path = argv[1];
- md5_string = ipc_nv_data_md5_calculate(NULL, path, secret, size,
- chunk_size);
+ client = ipc_client_create(IPC_CLIENT_TYPE_DUMMY);
+ if (client == NULL) {
+ printf("Creating client failed\n");
+ goto error;
+ }
+
+ rc = ipc_client_log_callback_register(client, log_callback, NULL);
+ if (rc < 0) {
+ printf("Registering log callback failed: error %d\n", rc);
+ goto error;
+ }
+
+ md5_string = ipc_nv_data_md5_calculate(client, path, secret, size, chunk_size);
if (md5_string == NULL) {
fprintf(stderr, "Calculating nv_data backup md5 failed\n");
return 1;
@@ -55,6 +94,10 @@ int main(int argc, char *argv[])
free(md5_string);
return 0;
+
+error:
+ if (client != NULL)
+ ipc_client_destroy(client);
}
// vim:ts=4:sw=4:expandtab