Git-Url: 
http://git.frugalware.org/gitweb/gitweb.cgi?p=fwsetup-ng.git;a=commitdiff;h=02023d806db0de4120b6ff8b9ecf4460c20d79f3

commit 02023d806db0de4120b6ff8b9ecf4460c20d79f3
Author: James Buren <[email protected]>
Date:   Tue Oct 9 03:15:51 2012 -0500

determine correct last sector

diff --git a/src/block.c b/src/block.c
index 3ce669e..273e3c0 100644
--- a/src/block.c
+++ b/src/block.c
@@ -153,18 +153,13 @@ static inline long long alignsector(const struct device 
*device,long long sector

static inline void getsectors(struct disk *disk)
{
-  long long size = 0;
long long sectorsize = disk->device->sectorsize;
-  lldiv_t n = {0};
-
-  if(disk->type == DISKTYPE_DOS)
-    size = 512;
-  else if(disk->type == DISKTYPE_GPT)
-    size = 512 + 512 + (128 * 128);
+  long long sectors = disk->device->sectors - 1;

-  n = lldiv(size,sectorsize);
+  if(disk->type == DISKTYPE_GPT)
+    sectors -= 1 + ((128 * 128) / sectorsize);

-  disk->sectors = disk->device->sectors - n.quot - (n.rem == 0) ? 0 : 1;
+  disk->sectors = sectors;
}

extern struct device *device_open(const char *path)
_______________________________________________
Frugalware-git mailing list
[email protected]
http://frugalware.org/mailman/listinfo/frugalware-git

Reply via email to