+ char formated_dir_count[FORMATED_VALUE_SIZE],
+ formated_file_count[FORMATED_VALUE_SIZE],
+ formated_bytes[FORMATED_VALUE_SIZE ];
+
+ format_count_value(conf.count_unit_arg, ui->dirs,
+ conf.count_unit_arg == count_unit_arg_h,
+ formated_dir_count);
+ format_count_value(conf.count_unit_arg, ui->files,
+ conf.count_unit_arg == count_unit_arg_h,
+ formated_file_count);
+ format_size_value(conf.size_unit_arg, ui->bytes,
+ conf.size_unit_arg == size_unit_arg_h,
+ formated_bytes);
+ printf("\t%s\t%u\t%s\t%s\t%s\n",
+ ui->pw_name? ui->pw_name : "?",
+ (unsigned)ui->uid,
+ formated_dir_count,
+ formated_file_count,
+ formated_bytes
+ );
+ return 1;
+}
+
+static int name_comp(const void *a, const void *b)
+{
+ char *x = ((struct user_info *)a)->pw_name;
+ char *y = ((struct user_info *)b)->pw_name;
+
+ if (!x)
+ return 1;
+ if (!y)
+ return -1;
+ return strcmp(x, y);
+}
+
+static int uid_comp(const void *a, const void *b)
+{
+ return -NUM_COMPARE(((struct user_info *)a)->uid,
+ ((struct user_info *)b)->uid);
+}
+
+static int dir_count_comp(const void *a, const void *b)
+{
+ return NUM_COMPARE(((struct user_info *)a)->dirs,
+ ((struct user_info *)b)->dirs);
+}
+
+static int file_count_comp(const void *a, const void *b)
+{
+ return NUM_COMPARE(((struct user_info *)a)->files,
+ ((struct user_info *)b)->files);
+}
+
+static int size_comp(const void *a, const void *b)
+{
+ return NUM_COMPARE(((struct user_info *)a)->bytes,
+ ((struct user_info *)b)->bytes);
+}