- if (usi->count > 0)
- usi->count--;
- return 1;
-}
-
-static void print_user_stats(void)
-{
- struct user_info *ui;
-
- FOR_EACH_USER(ui) {
- struct user_stats_info usi = {
- .count = conf.limit_arg,
- .ui = ui
- };
- if (!ui->table)
- continue;
- usi.flags = USF_PRINT_DIRNAME | USF_PRINT_BYTES | USF_COMPUTE_SUMMARY;
- printf("************************************************ uid %u\n",
- (unsigned) ui->uid);
- if (!ui->table)
- continue;
- printf("----------------- Largest dirs -------------------\n");
- osl_rbtree_loop_reverse(ui->table, UT_BYTES, &usi,
- user_stats_loop_function);
- printf("---------- dirs containing most files ------------\n");
- usi.count = conf.limit_arg,
- usi.flags = USF_PRINT_DIRNAME | USF_PRINT_FILES;
- osl_rbtree_loop_reverse(ui->table, UT_FILES, &usi,
- user_stats_loop_function);
- }
-}
-
-static int print_statistics(void)
-{
- int ret;
- struct global_stats_info gsi = {
- .count = conf.limit_arg,
- .flags = GSF_PRINT_DIRNAME | GSF_PRINT_BYTES | GSF_COMPUTE_SUMMARY
- };
-
- printf("----------------- Largest dirs -------------------\n");
- ret = osl_rbtree_loop_reverse(dir_table, DT_BYTES, &gsi,
- global_stats_loop_function);
- if (ret < 0 && ret != -E_LOOP_COMPLETE)
- return ret;
- gsi.count = conf.limit_arg;
-
- gsi.flags = GSF_PRINT_DIRNAME | GSF_PRINT_FILES;
- printf("---------- dirs containing most files ------------\n");
- ret = osl_rbtree_loop_reverse(dir_table, DT_FILES, &gsi,
- global_stats_loop_function);
- if (ret < 0 && ret != -E_LOOP_COMPLETE)
- return ret;
-
- printf("------------------ Global summary (dirs/files/bytes)\n"
- "%llu\t%llu\t%llu\n",
- (long long unsigned)num_dirs, (long long unsigned)num_files,
- (long long unsigned)num_bytes);
- print_user_stats();
- print_id_stats();