1
0
Fork 0
forked from len0rd/rockbox

Sector-size detection on Posix platforms - tested on Linux and Mac OS X. Based on patch #6433 by Bryan Childs.

git-svn-id: svn://svn.rockbox.org/rockbox/trunk@11752 a1c6a512-1295-4272-9138-f99709370657
This commit is contained in:
Dave Chapman 2006-12-13 20:26:44 +00:00
parent 1936f7c460
commit 8280c8c094
2 changed files with 20 additions and 4 deletions

View file

@ -254,4 +254,4 @@ Will Robertson
Stephane Doyon
Robert Carboneau
Ye Wei
Bryan Childs

View file

@ -24,6 +24,22 @@
#include <stdlib.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <sys/ioctl.h>
#include <sys/mount.h>
#if defined(__APPLE__) && defined(__MACH__)
#include <sys/disk.h>
#endif
#if defined(linux) || defined (__linux)
#define IPOD_SECTORSIZE_IOCTL BLKSSZGET
#elif defined(__FreeBSD__) || defined(__NetBSD__) || defined(__OpenBSD__) \
|| defined(__bsdi__) || defined(__DragonFly__)
#define IPOD_SECTORSIZE_IOCTL DIOCGSECTORSIZE
#elif defined(__APPLE__) && defined(__MACH__)
#define IPOD_SECTORSIZE_IOCTL DKIOCGETBLOCKSIZE
#else
#error No sector-size detection implemented for this platform
#endif
#include "ipodio.h"
@ -40,9 +56,9 @@ int ipod_open(HANDLE* dh, char* diskname, int* sector_size)
return -1;
}
/* TODO: Detect sector size */
*sector_size = 512;
if(ioctl(*dh,IPOD_SECTORSIZE_IOCTL,sector_size) < 0) {
fprintf(stderr,"[ERR] ioctl() call to get sector size failed\n");
}
return 0;
}