Browse Source

ccanlint: remove redundant num_lines in struct ccan_file.

We can use tal_count.

Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
Rusty Russell 13 years ago
parent
commit
5f55178822

+ 3 - 2
tools/ccanlint/file_analysis.c

@@ -218,9 +218,10 @@ struct line_info *get_ccan_line_info(struct ccan_file *f)
 		return f->line_info;
 
 	get_ccan_file_lines(f);
-	f->line_info = tal_arr(f->lines, struct line_info, f->num_lines);
+	f->line_info = tal_arr(f->lines, struct line_info,
+			       tal_count(f->lines)-1);
 
-	for (i = 0; i < f->num_lines; continued = continues(f->lines[i++])) {
+	for (i = 0; f->lines[i]; continued = continues(f->lines[i++])) {
 		char *p;
 		bool still_doc_line;
 

+ 7 - 7
tools/ccanlint/tests/headers_idempotent.c

@@ -64,7 +64,7 @@ static void handle_idem(struct manifest *m, struct score *score)
 		if (fprintf(out, "#ifndef %s\n#define %s\n", name, name) < 0)
 			err(1, "Writing %s", tmpname);
 
-		for (i = 0; i < e->file->num_lines; i++)
+		for (i = 0; e->file->lines[i]; i++)
 			if (fprintf(out, "%s\n", e->file->lines[i]) < 0)
 				err(1, "Writing %s", tmpname);
 
@@ -86,11 +86,11 @@ static void check_idem(struct ccan_file *f, struct score *score)
 	const char *line, *sym;
 
 	line_info = get_ccan_line_info(f);
-	if (f->num_lines < 3)
+	if (tal_count(f->lines) < 4)
 		/* FIXME: We assume small headers probably uninteresting. */
 		return;
 
-	for (i = 0; i < f->num_lines; i++) {
+	for (i = 0; f->lines[i]; i++) {
 		if (line_info[i].type == DOC_LINE
 		    || line_info[i].type == COMMENT_LINE)
 			continue;
@@ -104,11 +104,11 @@ static void check_idem(struct ccan_file *f, struct score *score)
 	}
 
 	/* No code at all?  Don't complain. */
-	if (i == f->num_lines)
+	if (!f->lines[i])
 		return;
 
 	first_preproc_line = i;
-	for (i = first_preproc_line+1; i < f->num_lines; i++) {
+	for (i = first_preproc_line+1; f->lines[i]; i++) {
 		if (line_info[i].type == DOC_LINE
 		    || line_info[i].type == COMMENT_LINE)
 			continue;
@@ -122,7 +122,7 @@ static void check_idem(struct ccan_file *f, struct score *score)
 	}
 
 	/* No code at all?  Weird. */
-	if (i == f->num_lines)
+	if (!f->lines[i])
 		return;
 
 	/* We expect a condition on this line. */
@@ -158,7 +158,7 @@ static void check_idem(struct ccan_file *f, struct score *score)
 	}
 
 	/* Rest of code should all be covered by that conditional. */
-	for (i++; i < f->num_lines; i++) {
+	for (i++; f->lines[i]; i++) {
 		unsigned int val = 0;
 		if (line_info[i].type == DOC_LINE
 		    || line_info[i].type == COMMENT_LINE)

+ 1 - 1
tools/ccanlint/tests/no_trailing_whitespace.c

@@ -34,7 +34,7 @@ static void check_trailing_whitespace(struct manifest *m,
 	foreach_ptr(list, &m->c_files, &m->h_files) {
 		list_for_each(list, f, list) {
 			char **lines = get_ccan_file_lines(f);
-			for (i = 0; i < f->num_lines; i++) {
+			for (i = 0; f->lines[i]; i++) {
 				char *err = get_trailing_whitespace(score,
 								    lines[i]);
 				if (err)

+ 1 - 1
tools/ccanlint/tests/reduce_features.c

@@ -83,7 +83,7 @@ static struct htable_option *get_used_options(struct manifest *m)
 			info = get_ccan_line_info(f);
 			struct pp_conditions *prev = NULL;
 
-			for (i = 0; i < f->num_lines; i++) {
+			for (i = 0; f->lines[i]; i++) {
 				if (info[i].cond && info[i].cond != prev) {
 					num += add_options(opts, info[i].cond);
 					prev = info[i].cond;

+ 0 - 2
tools/manifest.c

@@ -57,8 +57,6 @@ char **get_ccan_file_lines(struct ccan_file *f)
 		f->lines = tal_strsplit(f, get_ccan_file_contents(f), "\n",
 					STR_EMPTY_OK);
 
-	/* FIXME: is f->num_lines necessary? */
-	f->num_lines = tal_count(f->lines) - 1;
 	return f->lines;
 }
 

+ 0 - 1
tools/manifest.h

@@ -64,7 +64,6 @@ struct ccan_file {
 	size_t contents_size;
 
 	/* Use get_ccan_file_lines / get_ccan_line_info to fill these. */
-	unsigned int num_lines;
 	char **lines;
 	struct line_info *line_info;