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:
parent
1936f7c460
commit
8280c8c094
2 changed files with 20 additions and 4 deletions
|
|
@ -254,4 +254,4 @@ Will Robertson
|
|||
Stephane Doyon
|
||||
Robert Carboneau
|
||||
Ye Wei
|
||||
|
||||
Bryan Childs
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue