summaryrefslogtreecommitdiff
path: root/tools/ccanlint/file_analysis.c
diff options
context:
space:
mode:
authorRusty Russell <rusty@rustcorp.com.au>2010-01-19 21:26:45 +1030
committerRusty Russell <rusty@rustcorp.com.au>2010-01-19 21:26:45 +1030
commit32a31d9e4fb1f312a47ae8c237ac30d6c1567ccd (patch)
treecdc0a01bd78c1eb76e9f7624f0a0ff2b1a6eb599 /tools/ccanlint/file_analysis.c
parentd1d6625caf6e9897a4a0479c0e04fee27de5b20e (diff)
Make manifest code do chdir into appropriate directory.
Diffstat (limited to 'tools/ccanlint/file_analysis.c')
-rw-r--r--tools/ccanlint/file_analysis.c15
1 files changed, 14 insertions, 1 deletions
diff --git a/tools/ccanlint/file_analysis.c b/tools/ccanlint/file_analysis.c
index 3152cd1e..f2ee5d74 100644
--- a/tools/ccanlint/file_analysis.c
+++ b/tools/ccanlint/file_analysis.c
@@ -151,9 +151,10 @@ char *report_on_lines(struct list_head *files,
return sofar;
}
-struct manifest *get_manifest(const void *ctx)
+struct manifest *get_manifest(const void *ctx, const char *dir)
{
struct manifest *m = talloc(ctx, struct manifest);
+ char *olddir;
unsigned int len;
m->info_file = NULL;
@@ -169,6 +170,13 @@ struct manifest *get_manifest(const void *ctx)
list_head_init(&m->dep_dirs);
list_head_init(&m->dep_objs);
+ olddir = talloc_getcwd(NULL);
+ if (!olddir)
+ err(1, "Getting current directory");
+
+ if (chdir(dir) != 0)
+ err(1, "Failed to chdir to %s", dir);
+
m->basename = talloc_getcwd(m);
if (!m->basename)
err(1, "Getting current directory");
@@ -182,6 +190,11 @@ struct manifest *get_manifest(const void *ctx)
m->basename++;
add_files(m, "");
+
+ if (chdir(olddir) != 0)
+ err(1, "Returning to original directory '%s'", olddir);
+ talloc_free(olddir);
+
return m;
}