bool LibPartedPartitionTable::resizeFileSystem(Report& report, const Partition& partition, qint64 newLength) { bool rval = false; #if defined LIBPARTED_FS_RESIZE_LIBRARY_SUPPORT if (PedGeometry* originalGeometry = ped_geometry_new(pedDevice(), partition.fileSystem().firstSector(), partition.fileSystem().length())) { if (PedFileSystem* pedFileSystem = ped_file_system_open(originalGeometry)) { if (PedGeometry* resizedGeometry = ped_geometry_new(pedDevice(), partition.fileSystem().firstSector(), newLength)) { PedTimer* pedTimer = ped_timer_new(pedTimerHandler, nullptr); rval = ped_file_system_resize(pedFileSystem, resizedGeometry, pedTimer); ped_timer_destroy(pedTimer); if (!rval) report.line() << xi18nc("@info:progress", "Could not resize file system on partition <filename>%1</filename>.", partition.deviceNode()); ped_geometry_destroy(resizedGeometry); } else report.line() << xi18nc("@info:progress", "Could not get geometry for resized partition <filename>%1</filename> while trying to resize the file system.", partition.deviceNode()); ped_file_system_close(pedFileSystem); } else report.line() << xi18nc("@info:progress", "Could not open partition <filename>%1</filename> while trying to resize the file system.", partition.deviceNode()); ped_geometry_destroy(originalGeometry); } else report.line() << xi18nc("@info:progress", "Could not read geometry for partition <filename>%1</filename> while trying to resize the file system.", partition.deviceNode()); #else Q_UNUSED(report); Q_UNUSED(partition); Q_UNUSED(newLength); #endif return rval; }
int main (int argc, char **argv) { set_program_name (argv[0]); PedSector start = 0, len = 0; PedGeometry geom, new_geom; PedDevice *dev; PedFileSystem *fs; PedTimer *g_timer = NULL; if (argc != 2 && argc != 4) { fprintf(stderr, "usage: %s <device>\n" " %s <device> <start> <length>\n", argv[0], argv[0]); return 1; } dev = ped_device_get(argv[1]); if (!dev) { fprintf(stderr, "cannot create device %s\n", argv[1]); return 1; } if (!ped_device_open(dev)) { fprintf(stderr, "cannot open device %s\n", argv[1]); return 1; } if (!ped_geometry_init(&geom, dev, 0, dev->length)) { fprintf(stderr, "cannot initialize geometry\n"); return 1; } if (argc > 2) { start = strtoll(argv[2], NULL, 0); len = strtoll(argv[3], NULL, 0); } else { start = 0; len = dev->length; } if (!ped_geometry_init(&new_geom, dev, start, len)) { fprintf(stderr, "cannot initialize new geometry\n"); return 1; } fs = ped_file_system_open(&geom); if (!fs) { fprintf(stderr, "cannot read fs\n"); return 1; } if (!ped_file_system_resize(fs, &new_geom, g_timer)) { fprintf(stderr, "cannot resize filesystem\n"); return 1; } ped_file_system_close(fs); return 0; }