dlogsend: notify and return error code when message send fails 09/193809/5
authorMaciej Slodczyk <m.slodczyk2@partner.samsung.com>
Mon, 26 Nov 2018 13:18:34 +0000 (14:18 +0100)
committerMaciej Slodczyk <m.slodczyk2@partner.samsung.com>
Mon, 10 Dec 2018 13:27:23 +0000 (14:27 +0100)
Change-Id: I3545f90ef57a71e93ee59977d185d8c90306170b
Signed-off-by: Maciej Slodczyk <m.slodczyk2@partner.samsung.com>
src/logsend/logsend.c

index 1bb26ea..f686742 100644 (file)
@@ -58,9 +58,10 @@ void parse_options(int argc, const char **argv, struct parsed_params *params)
        params->msg = create_glued_string(argv + optind, argc - optind);
 }
 
-void send_log(struct parsed_params *params)
+int send_log(struct parsed_params *params)
 {
        unsigned i;
+       int r = EXIT_SUCCESS;
        struct timespec start, end;
 
        assert(params);
@@ -71,9 +72,9 @@ void send_log(struct parsed_params *params)
 
        for (i = 0; i < params->count; ++i) {
                dlog_error_e ret = __dlog_print(params->buffer, params->priority, params->tag, "%s", params->msg);
-               if (ret != DLOG_ERROR_NONE) {
-                       // Ignore for now because the API does not actually return DLOG_ERROR_NONE on success.
-                       // printf("Log #%d: error %d\n", i, ret);
+               if (ret < 0) {
+                       r = EXIT_FAILURE;
+                       fprintf(stderr, "Log #%d: error %d\n", i, ret);
                }
        }
 
@@ -81,18 +82,22 @@ void send_log(struct parsed_params *params)
                clock_gettime(CLOCK_MONOTONIC, &end);
                printf("Sending log took %ld us\n", (end.tv_sec - start.tv_sec)*1000000 + (end.tv_nsec - start.tv_nsec) / 1000);
        }
+       return r;
 }
 
 int send_from_stdin(struct parsed_params *params)
 {
+       int r = EXIT_SUCCESS;
        params->msg = malloc(LOG_MAX_PAYLOAD_SIZE);
        if (!params->msg)
                return EXIT_FAILURE;
-       while (fgets(params->msg, LOG_MAX_PAYLOAD_SIZE, stdin) != NULL)
-               send_log(params);
+       while (fgets(params->msg, LOG_MAX_PAYLOAD_SIZE, stdin) != NULL) {
+               if (send_log(params) == EXIT_FAILURE)
+                       r = EXIT_FAILURE;
+       }
 
        free(params->msg);
-       return EXIT_SUCCESS;
+       return r;
 }
 
 void print_help(const char *progname)
@@ -134,8 +139,7 @@ int main(int argc, const char **argv)
                return send_from_stdin(&params);
        }
 
-       send_log(&params);
+       int ret = send_log(&params);
        free(params.msg);
-
-       return EXIT_SUCCESS;
+       return ret;
 }