Browse Source

ccanlint: make sure fullname is always full path name.

Rusty Russell 15 years ago
parent
commit
1d893107b3

+ 0 - 2
tools/ccanlint/ccanlint.h

@@ -31,8 +31,6 @@ struct manifest {
 
 	/* From tests/check_depends_exist.c */
 	struct list_head dep_dirs;
-	/* From tests/check_depends_built.c */
-	struct list_head dep_objs;
 };
 
 struct manifest *get_manifest(const void *ctx, const char *dir);

+ 4 - 3
tools/ccanlint/compulsory_tests/check_build.c

@@ -27,9 +27,10 @@ static char *obj_list(const struct manifest *m)
 	struct ccan_file *i;
 
 	/* Other CCAN deps. */
-	list_for_each(&m->dep_objs, i, list)
-		list = talloc_asprintf_append(list, "%s ", i->name);
-
+	list_for_each(&m->dep_dirs, i, list) {
+		if (i->compiled)
+			list = talloc_asprintf_append(list, "%s ", i->compiled);
+	}
 	return list;
 }
 

+ 5 - 10
tools/ccanlint/compulsory_tests/check_depends_built.c

@@ -42,21 +42,16 @@ static void *check_depends_built(struct manifest *m, unsigned int *timeleft)
 	char *report = NULL;
 
 	list_for_each(&m->dep_dirs, i, list) {
-		char *objfile;
-
 		if (!expect_obj_file(i->fullname))
 			continue;
 
-		objfile = talloc_asprintf(m, "%s.o", i->fullname);
-		if (stat(objfile, &st) != 0) {
+		i->compiled = talloc_asprintf(i, "%s.o", i->fullname);
+		if (stat(i->compiled, &st) != 0) {
 			report = talloc_asprintf_append(report,
 							"object file %s\n",
-							objfile);
-		} else {
-			struct ccan_file *f = new_ccan_file(m, "", objfile);
-			list_add_tail(&m->dep_objs, &f->list);
-		}
-			
+							i->compiled);
+			i->compiled = NULL;
+		}			
 	}
 
 	/* We may need libtap for testing, unless we're "tap" */

+ 3 - 5
tools/ccanlint/compulsory_tests/check_depends_exist.c

@@ -16,19 +16,17 @@
 
 static char *add_dep(char *sofar, struct manifest *m, const char *dep)
 {
-	char *dir;
 	struct stat st;
 	struct ccan_file *f;
 
-	dir = talloc_asprintf(m, "%s/%s", ccan_dir, dep);
-	if (stat(dir, &st) != 0) {
+	f = new_ccan_file(m, ccan_dir, talloc_strdup(m, dep));
+	if (stat(f->fullname, &st) != 0) {
 		return talloc_asprintf_append(sofar,
 					      "ccan/%s: expected it in"
 					      " directory %s\n",
-					      dep, dir);
+					      dep, f->fullname);
 	}
 
-	f = new_ccan_file(m, "", dir);
 	list_add_tail(&m->dep_dirs, &f->list);
 	return sofar;
 }

+ 4 - 2
tools/ccanlint/compulsory_tests/compile_tests.c

@@ -40,8 +40,10 @@ static char *obj_list(const struct manifest *m, bool link_with_module)
 		list = talloc_asprintf_append(list, " %s.o", m->dir);
 
 	/* Other ccan modules. */
-	list_for_each(&m->dep_objs, i, list)
-		list = talloc_asprintf_append(list, " %s", i->name);
+	list_for_each(&m->dep_dirs, i, list) {
+		if (i->compiled)
+			list = talloc_asprintf_append(list, " %s", i->compiled);
+	}
 
 	return list;
 }

+ 3 - 1
tools/ccanlint/file_analysis.c

@@ -14,6 +14,7 @@
 #include <dirent.h>
 #include <ctype.h>
 #include <stdarg.h>
+#include <assert.h>
 
 const char *ccan_dir;
 
@@ -38,6 +39,8 @@ struct ccan_file *new_ccan_file(const void *ctx, const char *dir, char *name)
 {
 	struct ccan_file *f;
 
+	assert(dir[0] == '/');
+
 	f = talloc(ctx, struct ccan_file);
 	f->lines = NULL;
 	f->line_info = NULL;
@@ -172,7 +175,6 @@ struct manifest *get_manifest(const void *ctx, const char *dir)
 	list_head_init(&m->other_test_files);
 	list_head_init(&m->other_files);
 	list_head_init(&m->dep_dirs);
-	list_head_init(&m->dep_objs);
 
 	olddir = talloc_getcwd(NULL);
 	if (!olddir)