From ad4b8868413a1a9e133dfe651f9074f35c1d7c48 Mon Sep 17 00:00:00 2001 From: Dave Chapman Date: Sun, 2 Sep 2007 19:20:59 +0000 Subject: Mac OS X only - automatically unmount the FAT32 partition before attempting to open the disk device for writing. This step can be removed from the manual when the next sansapatcher version is released. git-svn-id: svn://svn.rockbox.org/rockbox/trunk@14585 a1c6a512-1295-4272-9138-f99709370657 --- rbutil/sansapatcher/sansaio-posix.c | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/rbutil/sansapatcher/sansaio-posix.c b/rbutil/sansapatcher/sansaio-posix.c index bf72718d64..22abc883d2 100644 --- a/rbutil/sansapatcher/sansaio-posix.c +++ b/rbutil/sansapatcher/sansaio-posix.c @@ -42,6 +42,26 @@ #include "sansaio.h" +#if defined(__APPLE__) && defined(__MACH__) +static int sansa_unmount(struct sansa_t* sansa) +{ + char cmd[4096]; + int res; + + sprintf(cmd, "/usr/sbin/diskutil unmount \"%ss1\"",sansa->diskname); + fprintf(stderr,"[INFO] "); + res = system(cmd); + + if (res==0) { + return 0; + } else { + perror("Unmount failed"); + return -1; + } +} +#endif + + #ifndef RBUTIL void print_error(char* msg) { @@ -70,6 +90,11 @@ int sansa_open(struct sansa_t* sansa, int silent) int sansa_reopen_rw(struct sansa_t* sansa) { +#if defined(__APPLE__) && defined(__MACH__) + if (sansa_unmount(sansa) < 0) + return -1; +#endif + close(sansa->dh); sansa->dh=open(sansa->diskname,O_RDWR); if (sansa->dh < 0) { -- cgit v1.2.3