Subversion Repositories freemyipod

Rev

Rev 476 | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 476 Rev 477
Line 899... Line 899...
899
                raise ArgumentError("Could not open local file for writing.")
899
                raise ArgumentError("Could not open local file for writing.")
900
            self.logger.info("Reading volume %s sectors %X - %X to %s..." % (volume, sector, sector + count - 1, file))
900
            self.logger.info("Reading volume %s sectors %X - %X to %s..." % (volume, sector, sector + count - 1, file))
901
            storageinfo = self.emcore.storage_get_info(volume)
901
            storageinfo = self.emcore.storage_get_info(volume)
902
            while count > 0:
902
            while count > 0:
903
                sectors = min(count, int(buffsize / storageinfo.sectorsize))
903
                sectors = min(count, int(buffsize / storageinfo.sectorsize))
904
                self.emcore.storage_read_sectors_md(volume, sector, sectors, buffer, buffsize)
904
                self.emcore.storage_read_sectors_md(volume, sector, sectors, buffsize, buffer)
905
                f.write(self.emcore.read(buffer, storageinfo.sectorsize * sectors))
905
                f.write(self.emcore.read(buffer, storageinfo.sectorsize * sectors))
906
                sector = sector + sectors
906
                sector = sector + sectors
907
                count = count - sectors
907
                count = count - sectors
908
            f.close()
908
            f.close()
909
        finally:
909
        finally:
Line 939... Line 939...
939
                bytes = storageinfo.sectorsize * sectors
939
                bytes = storageinfo.sectorsize * sectors
940
                data = f.read(bytes)
940
                data = f.read(bytes)
941
                if len(data) == 0: break
941
                if len(data) == 0: break
942
                while len(data) < bytes: data = data + f.read(bytes - len(data))
942
                while len(data) < bytes: data = data + f.read(bytes - len(data))
943
                self.emcore.write(buffer, data)
943
                self.emcore.write(buffer, data)
944
                self.emcore.storage_write_sectors_md(volume, sector, sectors, buffer, buffsize)
944
                self.emcore.storage_write_sectors_md(volume, sector, sectors, buffsize, buffer)
945
                sector = sector + sectors
945
                sector = sector + sectors
946
                count = count - sectors
946
                count = count - sectors
947
            f.close()
947
            f.close()
948
        finally:
948
        finally:
949
            if malloc == True:
949
            if malloc == True:
Line 1027... Line 1027...
1027
                raise ArgumentError("Could not open local file for writing.")
1027
                raise ArgumentError("Could not open local file for writing.")
1028
            self.logger.info("Downloading file " + remotename + " to " + localname + "...")
1028
            self.logger.info("Downloading file " + remotename + " to " + localname + "...")
1029
            fd = self.emcore.file_open(remotename, 0)
1029
            fd = self.emcore.file_open(remotename, 0)
1030
            size = self.emcore.file_size(fd)
1030
            size = self.emcore.file_size(fd)
1031
            while size > 0:
1031
            while size > 0:
1032
                bytes = self.emcore.file_read(fd, buffer, buffsize)
1032
                bytes = self.emcore.file_read(fd, buffsize, buffer)
1033
                f.write(self.emcore.read(buffer, bytes))
1033
                f.write(self.emcore.read(buffer, bytes))
1034
                size = size - bytes
1034
                size = size - bytes
1035
            self.emcore.file_close(fd)
1035
            self.emcore.file_close(fd)
1036
            f.close()
1036
            f.close()
1037
        finally:
1037
        finally:
Line 1063... Line 1063...
1063
            while True:
1063
            while True:
1064
                try:
1064
                try:
1065
                    entry = self.emcore.dir_read(handle)
1065
                    entry = self.emcore.dir_read(handle)
1066
                    if entry.name == "." or entry.name == "..": continue
1066
                    if entry.name == "." or entry.name == "..": continue
1067
                    elif entry.attributes & 0x10:
1067
                    elif entry.attributes & 0x10:
1068
                        self.gettree(remotepath + "/" + entry.name, localpath + "/" + entry.name, buffer, buffsize)
1068
                        self.gettree(remotepath + "/" + entry.name, localpath + "/" + entry.name, buffsize, buffer)
1069
                    else: self.get(remotepath + "/" + entry.name, localpath + "/" + entry.name, buffer, buffsize)
1069
                    else: self.get(remotepath + "/" + entry.name, localpath + "/" + entry.name, buffsize, buffer)
1070
                except: break
1070
                except: break
1071
            self.emcore.dir_close(handle)
1071
            self.emcore.dir_close(handle)
1072
        finally:
1072
        finally:
1073
            if malloc == True:
1073
            if malloc == True:
1074
                self.emcore.free(buffer)
1074
                self.emcore.free(buffer)
Line 1100... Line 1100...
1100
                data = f.read(buffsize)
1100
                data = f.read(buffsize)
1101
                if len(data) == 0: break
1101
                if len(data) == 0: break
1102
                self.emcore.write(buffer, data)
1102
                self.emcore.write(buffer, data)
1103
                bytes = 0
1103
                bytes = 0
1104
                while bytes < len(data):
1104
                while bytes < len(data):
1105
                    bytes = bytes + self.emcore.file_write(fd, buffer + bytes, len(data) - bytes)
1105
                    bytes = bytes + self.emcore.file_write(fd, len(data) - bytes, buffer + bytes)
1106
            self.emcore.file_close(fd)
1106
            self.emcore.file_close(fd)
1107
            f.close()
1107
            f.close()
1108
        finally:
1108
        finally:
1109
            if malloc == True:
1109
            if malloc == True:
1110
                self.emcore.free(buffer)
1110
                self.emcore.free(buffer)
Line 1136... Line 1136...
1136
                    if dir != ".svn":
1136
                    if dir != ".svn":
1137
                        try: self.mkdir(prefix + dir)
1137
                        try: self.mkdir(prefix + dir)
1138
                        except: self.logger.info(" failed\n")
1138
                        except: self.logger.info(" failed\n")
1139
                for f in d[2]:
1139
                for f in d[2]:
1140
                    if not prefix.find("/.svn/") > -1:
1140
                    if not prefix.find("/.svn/") > -1:
1141
                        self.put(d[0] + "/" + f, prefix + f, buffer, buffsize)
1141
                        self.put(d[0] + "/" + f, prefix + f, buffsize, buffer)
1142
        finally:
1142
        finally:
1143
            if malloc == True:
1143
            if malloc == True:
1144
                self.emcore.free(buffer)
1144
                self.emcore.free(buffer)
1145
 
1145
 
1146
    @command
1146
    @command