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; }
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; }