| Index: embios/trunk/tools/embios.py | 
| — | — | @@ -947,6 +947,24 @@ | 
| 948 | 948 |          self.logger.info(" done\n")
 | 
| 949 | 949 |  
 | 
| 950 | 950 |      @command
 | 
|   | 951 | +    def rmtree(self, path):
 | 
|   | 952 | +        """
 | 
|   | 953 | +            Recursively removes a folder
 | 
|   | 954 | +            <path>: the folder to be removed
 | 
|   | 955 | +        """
 | 
|   | 956 | +        handle = self.embios.dir_open(path)
 | 
|   | 957 | +        while True:
 | 
|   | 958 | +            try:
 | 
|   | 959 | +                entry = self.embios.dir_read(handle)
 | 
|   | 960 | +                if entry.name == "." or entry.name == "..": continue
 | 
|   | 961 | +                elif entry.attributes & 0x10:
 | 
|   | 962 | +                    self.rmtree(path + "/" + entry.name)
 | 
|   | 963 | +                else: self.rm(path + "/" + entry.name)
 | 
|   | 964 | +            except: break
 | 
|   | 965 | +        self.embios.dir_close(handle)
 | 
|   | 966 | +        self.rmdir(path)
 | 
|   | 967 | +
 | 
|   | 968 | +    @command
 | 
| 951 | 969 |      def mv(self, oldname, newname):
 | 
| 952 | 970 |          """
 | 
| 953 | 971 |              Renames or moves file or directory <oldname> to <newname>
 | 
| — | — | @@ -983,11 +1001,37 @@ | 
| 984 | 1002 |          self.logger.info(" done\n")
 | 
| 985 | 1003 |  
 | 
| 986 | 1004 |      @command
 | 
|   | 1005 | +    def gettree(self, remotepath, localpath, buffer = False, buffsize = "10000"):
 | 
|   | 1006 | +        """
 | 
|   | 1007 | +            Downloads a directory tree
 | 
|   | 1008 | +            <remotepath>: path on the device
 | 
|   | 1009 | +            <localpath>: path on the computer
 | 
|   | 1010 | +            [buffer]: buffer address (optional)
 | 
|   | 1011 | +            [buffsize]: buffer size (optional)
 | 
|   | 1012 | +        """
 | 
|   | 1013 | +        if buffer == False: buffer = self.embios.lib.dev.usermem.lower
 | 
|   | 1014 | +        else: buffer = self._hexint(buffer)
 | 
|   | 1015 | +        buffsize = self._hexint(buffsize)
 | 
|   | 1016 | +        try: os.mkdir(localpath)
 | 
|   | 1017 | +        except: pass
 | 
|   | 1018 | +
 | 
|   | 1019 | +        handle = self.embios.dir_open(remotepath)
 | 
|   | 1020 | +        while True:
 | 
|   | 1021 | +            try:
 | 
|   | 1022 | +                entry = self.embios.dir_read(handle)
 | 
|   | 1023 | +                if entry.name == "." or entry.name == "..": continue
 | 
|   | 1024 | +                elif entry.attributes & 0x10:
 | 
|   | 1025 | +                    self.gettree(remotepath + "/" + entry.name, localpath + "/" + entry.name, buffer, buffsize)
 | 
|   | 1026 | +                else: self.get(remotepath + "/" + entry.name, localpath + "/" + entry.name, buffer, buffsize)
 | 
|   | 1027 | +            except: break
 | 
|   | 1028 | +        self.embios.dir_close(handle)
 | 
|   | 1029 | +
 | 
|   | 1030 | +    @command
 | 
| 987 | 1031 |      def put(self, localname, remotename, buffer = False, buffsize = "10000"):
 | 
| 988 | 1032 |          """
 | 
| 989 | 1033 |              Uploads a file
 | 
|   | 1034 | +            <localname>: filename on the computer
 | 
| 990 | 1035 |              <remotename>: filename on the device
 | 
| 991 |   | -            <localname>: filename on the computer
 | 
| 992 | 1036 |              [buffer]: buffer address (optional)
 | 
| 993 | 1037 |              [buffsize]: buffer size (optional)
 | 
| 994 | 1038 |          """
 | 
| — | — | @@ -1012,6 +1056,31 @@ | 
| 1013 | 1057 |          self.logger.info(" done\n")
 | 
| 1014 | 1058 |  
 | 
| 1015 | 1059 |      @command
 | 
|   | 1060 | +    def puttree(self, localpath, remotepath, buffer = False, buffsize = "10000"):
 | 
|   | 1061 | +        """
 | 
|   | 1062 | +            Uploads a directory tree
 | 
|   | 1063 | +            <localpath>: path on the computer
 | 
|   | 1064 | +            <remotepath>: path on the device
 | 
|   | 1065 | +            [buffer]: buffer address (optional)
 | 
|   | 1066 | +            [buffsize]: buffer size (optional)
 | 
|   | 1067 | +        """
 | 
|   | 1068 | +        if buffer == False: buffer = self.embios.lib.dev.usermem.lower
 | 
|   | 1069 | +        else: buffer = self._hexint(buffer)
 | 
|   | 1070 | +        buffsize = self._hexint(buffsize)
 | 
|   | 1071 | +        try: self.mkdir(remotepath)
 | 
|   | 1072 | +        except: pass
 | 
|   | 1073 | +        pathlen = len(localpath)
 | 
|   | 1074 | +        for d in os.walk(localpath):
 | 
|   | 1075 | +            prefix = remotepath + "/" + d[0].replace("\\", "/")[pathlen:] + "/"
 | 
|   | 1076 | +            for dir in d[1]:
 | 
|   | 1077 | +                if dir != ".svn":
 | 
|   | 1078 | +                    try: self.mkdir(prefix + dir)
 | 
|   | 1079 | +                    except: pass
 | 
|   | 1080 | +            for f in d[2]:
 | 
|   | 1081 | +                if not prefix.find("/.svn/") > -1:
 | 
|   | 1082 | +                    self.put(d[0] + "/" + f, prefix + f, buffer, buffsize)
 | 
|   | 1083 | +
 | 
|   | 1084 | +    @command
 | 
| 1016 | 1085 |      def ls(self, path = "/"):
 | 
| 1017 | 1086 |          """
 | 
| 1018 | 1087 |              Lists all files in the specified path
 |