rem: width, df_readable (0, total,
add: width, df_readable (false, total,
context: show_dev (const char *disk, const char *mount_point, const char *fstype,	  int me_dummy, int me_remote){  struct fs_usage fsu;  const char *stat_file;  char buf[3][LONGEST_HUMAN_READABLE + 2];  int width;  int use_width;  uintmax_t input_units;  uintmax_t output_units;  uintmax_t total;  uintmax_t available;  int negate_available;  uintmax_t available_to_root;  uintmax_t used;  int negate_used;  double pct = -1;  if (me_remote && show_local_fs)    return;  if (me_dummy && show_all_fs == 0 && !show_listed_fs)    return;  if (!selected_fstype (fstype) || excluded_fstype (fstype))    return;  /* If MOUNT_POINT is NULL, then the filesystem is not mounted, and this     program reports on the filesystem that the special file is on.     It would be better to report on the unmounted filesystem,     but statfs doesn't do that on most systems.  */  stat_file = mount_point ? mount_point : disk;  if (get_fs_usage (stat_file, disk, &fsu))    {      error (0, errno, "%s", quote (stat_file));      exit_status = 1;      return;    }  if (fsu.fsu_blocks == 0 && !show_all_fs && !show_listed_fs)    return;  if (! disk)    disk = "-";			/* unknown */  if (! fstype)    fstype = "-";		/* unknown */  /* df.c reserved 5 positions for fstype,     but that does not suffice for type iso9660 */  if (print_type)    {      int disk_name_len = (int) strlen (disk);      int fstype_len = (int) strlen (fstype);      if (disk_name_len + fstype_len + 2 < 20)	printf ("%s%*s  ", disk, 18 - disk_name_len, fstype);      else if (!posix_format)	printf ("%s\n%18s  ", disk, fstype);      else	printf ("%s %s", disk, fstype);    }  else    {      if ((int) strlen (disk) > 20 && !posix_format)	printf ("%s\n%20s", disk, "");      else	printf ("%-20s", disk);    }  if (inode_format)    {      width = 7;      use_width = 5;      input_units = output_units = 1;      total = fsu.fsu_files;      available = fsu.fsu_ffree;      negate_available = 0;      available_to_root = available;    }  else    {      width = (human_output_opts & human_autoscale	       ? 5 + ! (human_output_opts & human_base_1024)	       : 9);      use_width = ((posix_format		    && ! (human_output_opts & human_autoscale))		   ? 8 : 4);      input_units = fsu.fsu_blocksize;      output_units = output_block_size;      total = fsu.fsu_blocks;      available = fsu.fsu_bavail;      negate_available = fsu.fsu_bavail_top_bit_set;      available_to_root = fsu.fsu_bfree;    }  used = -1;  negate_used = 0;  if (total != -1 && available_to_root != -1)    {      used = total - available_to_root;      if (total < available_to_root)	{	  negate_used = 1;	  used = - used;	}    }  printf (" %*s %*s %*s ",	  width, df_readable (0, total,			      buf[0], input_units, output_units),	  width, df_readable (negate_used, used,			      buf[1], input_units, output_units),	  width, df_readable (negate_available, available,			      buf[2], input_units, output_units));  if (used == -1 || available == -1)    ;  else if (!negate_used	   && used <= TYPE_MAXIMUM (uintmax_t) / 100	   && used + available != 0	   && (used + available < used) == negate_available)    {      uintmax_t u100 = used * 100;      uintmax_t nonroot_total = used + available;      pct = u100 / nonroot_total + (u100 % nonroot_total != 0);    }  else    {      /* The calculation cannot be done easily with integer	 arithmetic.  Fall back on floating point.  This can suffer	 from minor rounding errors, but doing it exactly requires	 multiple precision arithmetic, and it's not worth the	 aggravation.  */      double u = negate_used ? - (double) - used : used;      double a = negate_available ? - (double) - available : available;      double nonroot_total = u + a;      if (nonroot_total)	{	  double ipct;	  pct = u * 100 / nonroot_total;	  ipct = (long) pct;	  /* Like `pct = ceil (dpct);', but avoid ceil so that	     the math library needn't be linked.  */	  if (ipct - 1 < pct && pct <= ipct + 1)	    pct = ipct + (ipct < pct);	}    }  if (0 <= pct)    printf ("%*.0f%%", use_width - 1, pct);  else    printf ("%*s", use_width, "- ");  if (mount_point)    {#ifdef HIDE_AUTOMOUNT_PREFIX      /* Don't print the first directory name in MOUNT_POINT if it's an	 artifact of an automounter.  This is a bit too aggressive to be	 the default.  */      if (strncmp ("/auto/", mount_point, 6) == 0)	mount_point += 5;      else if (strncmp ("/tmp_mnt/", mount_point, 9) == 0)	mount_point += 8;#endif      printf (" %s", mount_point);    }  putchar ('\n');}