Exemple #1
0
int main(int argc, char **argv)
{
	uint32_t capacity, free;
	
	if (get_disk_info(&capacity, &free))
		return -1;

	fprintf(stderr, "Capacity: %08x(%d.%dMiB)\n", capacity, capacity/SIZE_1M, (capacity%SIZE_1M)*10/SIZE_1M);
	fprintf(stderr, "Free:     %08x(%d.%dMiB)\n", free, free/SIZE_1M, (free%SIZE_1M)*10/SIZE_1M);

	if (get_disk_capacity(&capacity))
		return -1;

	if (get_disk_free_space(&free))
		return -1;

	fprintf(stderr, "Capacity: %08x(%d.%dMiB)\n", capacity, capacity/SIZE_1M, (capacity%SIZE_1M)*10/SIZE_1M);
	fprintf(stderr, "Free:     %08x(%d.%dMiB)\n", free, free/SIZE_1M, (free%SIZE_1M)*10/SIZE_1M);

	return 0;
}
Exemple #2
0
int main(int argc, char *argv[])
{
  enum UNIT unit = UNIT_UNDEFINED;
  int disks, i, j;
  uint64_t disk_size = 0;
  double disk_size_f;
  struct disk_capacity disk_list[MAX_DISKS];

  if (argc<2)
    usage(argv[0]);

  for ( i=1,j=0; i<argc; i++ )
  {
    if ( (UNIT_UNDEFINED==unit) && !strncmp(argv[i], "--unit", 6) )
    {
      if (!argv[i+1])
        usage(argv[0]);

      switch(argv[i+1][0])
      {
        case 'B':
          unit = UNIT_B;
          break;
        case 'M':
          unit = UNIT_MB;
          break;
        case 'G':
          unit = UNIT_GB;
          break;
        case 'T':
          unit = UNIT_TB;
          break;
        default:
          usage();
          break;
      }

      i += 1;
    }
    else if (!get_disk_capacity( argv[i], &disk_list[j] ))
      j++;
  }

  if (UNIT_UNDEFINED==unit)
    unit = UNIT_B;

  DBG("unit = %d\n", unit);
  DBG("i = %d, j = %d\n", i, j);

  for (i=0;i<j;i++)
  {
    DBG("[%.2d] sector_size = %d, sectors = %d\n",
        i, disk_list[i].sector_size, disk_list[i].sectors);
    disk_size += ((uint64_t)disk_list[i].sector_size * (uint64_t)disk_list[i].sectors);
    DBG("disk_size = %lld\n", disk_size);
  }

  switch (unit)
  {
    case UNIT_MB:
      disk_size = (uint64_t)((uint64_t)disk_size/1000/1000);
      break;

    case UNIT_GB:
      disk_size_f = (double)(disk_size/1000.0/1000.0/1000.0);
      break;

    case UNIT_TB:
      disk_size_f = (double)(disk_size/1000.0/1000.0/1000.0/1000.0);
      break;
  }

  if ( (UNIT_B==unit) || (UNIT_MB==unit) )
    fprintf(stdout, "%lld", disk_size);
  else
    fprintf(stdout, "%.2f", disk_size_f);

  return 0;
}