logutil: Drop invalid buffer names early 59/142859/5
authorKarol Lewandowski <k.lewandowsk@samsung.com>
Mon, 7 Aug 2017 09:25:00 +0000 (11:25 +0200)
committerKarol Lewandowski <k.lewandowsk@samsung.com>
Wed, 9 Aug 2017 14:34:15 +0000 (16:34 +0200)
Change-Id: Id54fa50a99fb8623ad841d947da43704bb2e3b76

src/logutil/logutil.c

index 16b97af..967a662 100755 (executable)
@@ -622,25 +622,6 @@ closefile:
 }
 
 /**
- * @brief Filter buffer names
- * @details Purges invalid buffer names from the table
- * @param[in,out] names The buffer names
- * @param[in,out] cnt The table size
- */
-void filter_buffer_names(char ** names, int * cnt)
-{
-       int i;
-       for (i = 0; i < *cnt; ++i) {
-               int buf_id;
-               if (strlen(names[i]) && (((buf_id = log_id_by_name(names[i])) < 0) || (buf_id >= LOG_ID_MAX))) {
-                       printf("There is no buffer \"%s\"\n", names[i]);
-                       names[i--] = names[--*cnt];
-                       names[*cnt] = NULL;
-               }
-       }
-}
-
-/**
  * @brief Process buffer (non-pipe version)
  * @details Finalizes a buffer: sends the appropriate socket request
  * @param[in] buffer_name The name of the buffer
@@ -824,9 +805,15 @@ int main(int argc, char ** argv)
                case 'g':
                        should_getsize = 1;
                        break;
-               case 'b':
+               case 'b': {
+                       log_id_t id = log_id_by_name(optarg);
+                       if (id == LOG_ID_INVALID) {
+                               printf("There is no buffer \"%s\"\n", optarg);
+                               return 1;
+                       }
                        buffer_names[buffer_cnt++] = optarg;
                        break;
+               }
                case 'u':
                        logs.size = atoi_check_numeric(optarg, &err_arg_nondigit);
                        break;
@@ -874,7 +861,6 @@ int main(int argc, char ** argv)
                for (i = 0; i < sizeof(default_buffers)/sizeof(default_buffers[0]); ++i)
                        buffer_names[buffer_cnt++] = log_name_by_id(default_buffers[i]);
 
-       filter_buffer_names(buffer_names, &buffer_cnt);
        if (files_cnt + buffer_cnt == 0) {
                printf("Nothing to do here\n");
                return 1;