From: Andre Noll Date: Thu, 5 Jun 2008 20:29:59 +0000 (+0200) Subject: Merge commit 'fml/master' X-Git-Tag: v0.0.4~42 X-Git-Url: http://git.tuebingen.mpg.de/?p=adu.git;a=commitdiff_plain;h=17ec9800d532ef9de0e3970e1f5bf5914c939739;hp=2e13d4d57f8836503acc6e5e4897842e2802b539 Merge commit 'fml/master' --- diff --git a/create.c b/create.c index 638ba19..5c243d8 100644 --- a/create.c +++ b/create.c @@ -143,8 +143,8 @@ static int scan_dir(char *dirname, uint64_t *parent_dir_num) if (!strcmp(entry->d_name, "..")) continue; if (lstat(entry->d_name, &s) == -1) { - WARNING_LOG("lstat error for %s/%s\n", dirname, - entry->d_name); + WARNING_LOG("lstat error for %s/%s (%s)\n", + dirname, entry->d_name, strerror(errno)); continue; } m = s.st_mode; diff --git a/select.c b/select.c index 00b0325..4c2f12c 100644 --- a/select.c +++ b/select.c @@ -118,6 +118,7 @@ static int get_dir_name_by_number(uint64_t *dirnum, char **name) uint64_t val = *dirnum; struct osl_object obj; int ret; + char *pfx; again: obj.data = &val; @@ -132,22 +133,20 @@ again: ret = osl(osl_get_object(dir_table, row, DT_NAME, &obj)); if (ret < 0) goto out; - if (val || conf.print_base_dir_given) { - if (result) { - tmp = make_message("%s/%s", (char *)obj.data, result); - free(result); - result = tmp; - } else - result = adu_strdup((char *)obj.data); - } + pfx = (conf.print_base_dir_given || val)? (char *)obj.data : "."; + tmp = make_message("%s/%s", pfx, result? result : ""); + free(result); + result = tmp; if (val) goto again; out: if (ret < 0) { free(result); *name = NULL; - } else + } else { + assert(result); *name = result; + } return ret; } @@ -155,30 +154,14 @@ static int get_dir_name_of_row(struct osl_row *dir_table_row, char **name) { struct osl_object obj; int ret; - char *this_dir, *prefix = NULL; *name = NULL; - ret = osl(osl_get_object(dir_table, dir_table_row, DT_NAME, &obj)); + ret = osl(osl_get_object(dir_table, dir_table_row, DT_NUM, &obj)); if (ret < 0) return ret; - this_dir = adu_strdup((char *)obj.data); - ret = osl(osl_get_object(dir_table, dir_table_row, DT_PARENT_NUM, &obj)); - if (ret < 0) - goto out; - if (!*(uint64_t *)obj.data) { - *name = this_dir; - return 1; - } - ret = get_dir_name_by_number((uint64_t *)obj.data, &prefix); - if (ret < 0) - goto out; - *name = make_message("%s/%s", prefix, this_dir); - free(prefix); - ret = 1; -out: - free(this_dir); - return ret; + return get_dir_name_by_number((uint64_t *)obj.data, name); } + static int user_stats_loop_function(struct osl_row *row, void *data) { struct user_stats_info *usi = data;