- ret = osl_get_object(bdi->user_table, row, UT_BYTES, &obj);
- if (ret < 0)
- return ret;
- bytes = *(uint64_t *)obj.data;
- ret = osl_get_object(bdi->user_table, row, UT_DIR_NUM, &obj);
- if (ret < 0)
- return ret;
- ret = osl_get_row(dir_table, DT_NUM, &obj, &dir_row);
- if (ret < 0)
- return ret;
- ret = osl_get_object(dir_table, dir_row, DT_NAME, &obj);
- if (ret < 0)
- return ret;
- dirname = obj.data;
- printf("%s: %llu\n", dirname, (long long unsigned)bytes);
+ if (usi->count && (usi->flags & USF_PRINT_DIRNAME)) {
+ char *dirname;
+ ret = osl_get_object(usi->ui->table, row, UT_DIR_NUM, &obj);
+ if (ret < 0)
+ return ret;
+ ret = osl_get_row(dir_table, DT_NUM, &obj, &dir_row);
+ if (ret < 0)
+ return ret;
+ ret = osl_get_object(dir_table, dir_row, DT_NAME, &obj);
+ if (ret < 0)
+ return ret;
+ dirname = obj.data;
+ printf("%s%s",
+ dirname,
+ (usi->flags & (USF_PRINT_FILES | USF_PRINT_BYTES))?
+ "\t" : "\n"
+ );
+ }
+ if (summary || (usi->count && (usi->flags & USF_PRINT_FILES))) {
+ uint64_t files;
+ ret = osl_get_object(usi->ui->table, row, UT_FILES, &obj);
+ if (ret < 0)
+ return ret;
+ files = *(uint64_t *)obj.data;
+ if (usi->count && (usi->flags & USF_PRINT_FILES)) {
+ format_size_value(conf.size_unit_arg, files,
+ formated_value);
+ printf("%s%s", formated_value,
+ (usi->flags & USF_PRINT_BYTES)? "\t" : "\n"
+ );
+ }
+ if (summary)
+ usi->ui->files += files;
+ }
+ if (summary || (usi->count && (usi->flags & USF_PRINT_BYTES))) {
+ uint64_t bytes;
+ ret = osl_get_object(usi->ui->table, row, UT_BYTES, &obj);
+ if (ret < 0)
+ return ret;
+ bytes = *(uint64_t *)obj.data;
+ if (usi->count && (usi->flags & USF_PRINT_BYTES)) {
+ format_size_value(conf.size_unit_arg, bytes,
+ formated_value);
+ printf("%s\n", formated_value);
+ }
+ if (summary) {
+ usi->ui->bytes += bytes;
+ usi->ui->dirs++;
+ }
+
+ }
+ if (usi->count > 0)
+ usi->count--;