Browse Source

Add another prefix subst method + tests

Now we can specify a constant length to cut
Yann Weber 7 years ago
parent
commit
ce41eddb7a
4 changed files with 62 additions and 9 deletions
  1. 4
    0
      src/include/ttail.h
  2. 3
    2
      src/include/ttail_init.h
  3. 17
    1
      src/ttail_init.c
  4. 38
    6
      tests/ttail_argparse_check.c

+ 4
- 0
src/include/ttail.h View File

@@ -21,6 +21,7 @@ typedef struct _ttail_s ttail_t;
21 21
 #define TTAIL_FLAG_DATE_MIN 2
22 22
 #define TTAIL_FLAG_DATE_MAX 4
23 23
 #define TTAIL_FLAG_FORMAT 8
24
+
24 25
 #define TTAIL_DEFAULT_FORMATS {"%m",\
25 26
 "%A %B %d, %Y %H:%M:%S",\
26 27
 "%A",\
@@ -45,6 +46,9 @@ struct _ttail_s
45 46
 	
46 47
 	/*! A regex matching the datetime prefix in loglines */
47 48
 	regex_t date_prefix;
49
+	/*! An alternative to regex is to give a constant number of char
50
+	    to delete */
51
+	int prefix_sz;
48 52
 
49 53
 	/*! A strptime format matching datetime in logfile */
50 54
 	char *fmt;

+ 3
- 2
src/include/ttail_init.h View File

@@ -16,14 +16,15 @@
16 16
 
17 17
 #define TTAIL_LONG_OPT {\
18 18
 	{"verbose", no_argument, 0, 'v'},\
19
-	{"re-prefix", required_argument, 0, 'p'},\
19
+	{"re-prefix", required_argument, 0, 'r'},\
20
+	{"prefix-len", required_argument, 0, 'p'},\
20 21
 	{"date-format", required_argument, 0, 'f'},\
21 22
 	{"date-min", required_argument, 0, 'd'},\
22 23
 	{"date-max", required_argument, 0, 'm'},\
23 24
 	{"logfile", required_argument, 0, 'l'},\
24 25
 	{0,	0,	0,	0 }\
25 26
 }
26
-#define TTAIL_SHORT_OPT "p:f:d:l:m:"
27
+#define TTAIL_SHORT_OPT "r:p:f:d:l:m:"
27 28
 
28 29
 /**@brief Parse cli arguments and return a ttail_t
29 30
  *@param int argc

+ 17
- 1
src/ttail_init.c View File

@@ -22,6 +22,7 @@ ttail_t *ttail_init(int argc, char **argv)
22 22
 	res->logfile = NULL;
23 23
 	res->logfile_name = NULL;
24 24
 	res->logfile_sz = 0;
25
+	res->prefix_sz = -1;
25 26
 	memset(&(res->date_min), 0, sizeof(struct tm));
26 27
 	memset(&(res->date_max), 0, sizeof(struct tm));
27 28
 
@@ -38,12 +39,27 @@ ttail_t *ttail_init(int argc, char **argv)
38 39
 			case 'v':
39 40
 				res->verbose++;
40 41
 				break;
41
-			case 'p':
42
+			case 'r':
42 43
 				if(ttail_set_prefix(res, optarg))
43 44
 				{
44 45
 					goto ttail_init_err;
45 46
 				}
46 47
 				break;
48
+			case 'p':
49
+				if(res->flag & TTAIL_FLAG_PREFIX)
50
+				{
51
+					fprintf(stderr, "Preffix allready \
52
+set\n");
53
+					goto ttail_init_err;
54
+				}
55
+				res->flag |= TTAIL_FLAG_PREFIX;
56
+				res->prefix_sz = atoi(optarg);
57
+				if(res->prefix_sz <= 0)
58
+				{
59
+					fprintf(stderr, "Prefix size have \
60
+to be > 0");
61
+					goto ttail_init_err;
62
+				}
47 63
 			case 'f':
48 64
 				if(res->flag & TTAIL_FLAG_FORMAT)
49 65
 				{

+ 38
- 6
tests/ttail_argparse_check.c View File

@@ -60,6 +60,12 @@ START_TEST (test_argparse_empty_verbose)
60 60
 		"ttail_t.verbose should be 0");
61 61
 }
62 62
 END_TEST
63
+START_TEST (test_argparse_empty_prefixsz)
64
+{
65
+	ck_assert_msg(ttail->prefix_sz == -1,
66
+		"ttail_t.prefix_sz should be NULL");
67
+}
68
+END_TEST
63 69
 
64 70
 /*
65 71
  * Bad arguments
@@ -255,17 +261,17 @@ START_TEST (test_argparse_file_multiple)
255 261
 }
256 262
 END_TEST
257 263
 
258
-START_TEST (test_argparse_prefix_short)
264
+START_TEST (test_argparse_reprefix_short)
259 265
 {
260 266
 	ttail_t *t;
261
-	char *args[] = {"foo", "-p", "^[^ ]+ "};
267
+	char *args[] = {"foo", "-r", "^[^ ]+ "};
262 268
 	t = ttail_init(3, args);
263 269
 	ck_assert(t != NULL);
264 270
 	ck_assert((t->flag & TTAIL_FLAG_PREFIX) == TTAIL_FLAG_PREFIX);
265 271
 }
266 272
 END_TEST
267 273
 
268
-START_TEST (test_argparse_prefix_long)
274
+START_TEST (test_argparse_reprefix_long)
269 275
 {
270 276
 	ttail_t *t;
271 277
 	char *args[] = {"foo", "--re-prefix", "^[^ ]+ "};
@@ -275,10 +281,33 @@ START_TEST (test_argparse_prefix_long)
275 281
 }
276 282
 END_TEST
277 283
 
284
+START_TEST (test_argparse_prefixlen_short)
285
+{
286
+	ttail_t *t;
287
+	char *args[] = {"foo", "-p", "10"};
288
+	t = ttail_init(3, args);
289
+	ck_assert(t != NULL);
290
+	ck_assert((t->flag & TTAIL_FLAG_PREFIX) == TTAIL_FLAG_PREFIX);
291
+	ck_assert_int_eq(t->prefix_sz, 10);
292
+}
293
+END_TEST
294
+
295
+START_TEST (test_argparse_prefixlen_long)
296
+{
297
+	ttail_t *t;
298
+	char *args[] = {"foo", "--prefix-len", "42"};
299
+	t = ttail_init(3, args);
300
+	ck_assert(t != NULL);
301
+	ck_assert((t->flag & TTAIL_FLAG_PREFIX) == TTAIL_FLAG_PREFIX);
302
+	ck_assert_int_eq(t->prefix_sz, 42);
303
+}
304
+END_TEST
305
+
306
+
278 307
 START_TEST (test_argparse_prefix_multiple)
279 308
 {
280 309
 	ttail_t *t;
281
-	char *args[] = {"foo", "--re-prefix", "^[^ ]+ ", "-p", "^[ -]+ "};
310
+	char *args[] = {"foo", "--re-prefix", "^[^ ]+ ", "-p", "20"};
282 311
 	t = ttail_init(5, args);
283 312
 	ck_assert(t == NULL);
284 313
 }
@@ -331,6 +360,7 @@ Suite * ttail_init_suite(void)
331 360
 	tcase_add_test(tc_argparse_empty, test_argparse_empty_flag);
332 361
 	tcase_add_test(tc_argparse_empty, test_argparse_empty_fmt);
333 362
 	tcase_add_test(tc_argparse_empty, test_argparse_empty_verbose);
363
+	tcase_add_test(tc_argparse_empty, test_argparse_empty_prefixsz);
334 364
 
335 365
 	tc_argparse_badarg = tcase_create("bad arguments parsing");
336 366
 	tcase_add_test(tc_argparse_badarg, test_argparse_bad1);
@@ -349,8 +379,10 @@ Suite * ttail_init_suite(void)
349 379
 	tcase_add_test(tc_argparse_files, test_argparse_file_multiple);
350 380
 
351 381
 	tc_argparse_prefix = tcase_create("re-prefix arguments parsing");
352
-	tcase_add_test(tc_argparse_prefix, test_argparse_prefix_short);
353
-	tcase_add_test(tc_argparse_prefix, test_argparse_prefix_long);
382
+	tcase_add_test(tc_argparse_prefix, test_argparse_reprefix_short);
383
+	tcase_add_test(tc_argparse_prefix, test_argparse_reprefix_long);
384
+	tcase_add_test(tc_argparse_prefix, test_argparse_prefixlen_short);
385
+	tcase_add_test(tc_argparse_prefix, test_argparse_prefixlen_long);
354 386
 	tcase_add_test(tc_argparse_prefix, test_argparse_prefix_multiple);
355 387
 
356 388
 	tc_argparse_fmt = tcase_create("date format arguments parsing");

Loading…
Cancel
Save