summaryrefslogtreecommitdiffabout
path: root/scan-tree.c
Unidiff
Diffstat (limited to 'scan-tree.c') (more/less context) (ignore whitespace changes)
-rw-r--r--scan-tree.c1
1 files changed, 1 insertions, 0 deletions
diff --git a/scan-tree.c b/scan-tree.c
index 627af1b..e5a4baf 100644
--- a/scan-tree.c
+++ b/scan-tree.c
@@ -198,44 +198,45 @@ static void scan_path(const char *base, const char *path, repo_config_fn fn)
198 buf, strerror(errno), errno); 198 buf, strerror(errno), errno);
199 free(buf); 199 free(buf);
200 continue; 200 continue;
201 } 201 }
202 if (S_ISDIR(st.st_mode)) 202 if (S_ISDIR(st.st_mode))
203 scan_path(base, buf, fn); 203 scan_path(base, buf, fn);
204 free(buf); 204 free(buf);
205 } 205 }
206end: 206end:
207 closedir(dir); 207 closedir(dir);
208} 208}
209 209
210#define lastc(s) s[strlen(s) - 1] 210#define lastc(s) s[strlen(s) - 1]
211 211
212void scan_projects(const char *path, const char *projectsfile, repo_config_fn fn) 212void scan_projects(const char *path, const char *projectsfile, repo_config_fn fn)
213{ 213{
214 char line[MAX_PATH * 2], *z; 214 char line[MAX_PATH * 2], *z;
215 FILE *projects; 215 FILE *projects;
216 int err; 216 int err;
217 217
218 projects = fopen(projectsfile, "r"); 218 projects = fopen(projectsfile, "r");
219 if (!projects) { 219 if (!projects) {
220 fprintf(stderr, "Error opening projectsfile %s: %s (%d)\n", 220 fprintf(stderr, "Error opening projectsfile %s: %s (%d)\n",
221 projectsfile, strerror(errno), errno); 221 projectsfile, strerror(errno), errno);
222 return;
222 } 223 }
223 while (fgets(line, sizeof(line), projects) != NULL) { 224 while (fgets(line, sizeof(line), projects) != NULL) {
224 for (z = &lastc(line); 225 for (z = &lastc(line);
225 strlen(line) && strchr("\n\r", *z); 226 strlen(line) && strchr("\n\r", *z);
226 z = &lastc(line)) 227 z = &lastc(line))
227 *z = '\0'; 228 *z = '\0';
228 if (strlen(line)) 229 if (strlen(line))
229 scan_path(path, fmt("%s/%s", path, line), fn); 230 scan_path(path, fmt("%s/%s", path, line), fn);
230 } 231 }
231 if ((err = ferror(projects))) { 232 if ((err = ferror(projects))) {
232 fprintf(stderr, "Error reading from projectsfile %s: %s (%d)\n", 233 fprintf(stderr, "Error reading from projectsfile %s: %s (%d)\n",
233 projectsfile, strerror(err), err); 234 projectsfile, strerror(err), err);
234 } 235 }
235 fclose(projects); 236 fclose(projects);
236} 237}
237 238
238void scan_tree(const char *path, repo_config_fn fn) 239void scan_tree(const char *path, repo_config_fn fn)
239{ 240{
240 scan_path(path, path, fn); 241 scan_path(path, path, fn);
241} 242}