Showing the changes to dictserver.py (1 of 4 files). Show all
Unified · Split
| @@ -1,4 +1,5 @@ | ||
| 1 | 1 | #!/usr/bin/env python |
| 2 | +# -*- encoding: utf8 -*- | |
| 2 | 3 | |
| 3 | 4 | # dictserver.py - Serves the contents of a Python dictionary. |
| 4 | 5 | # |
| @@ -38,8 +39,8 @@ class DictStore: · 33 unmodified lines | ||
| 38 | 39 | |
| 39 | 40 | def get_root_qid(self, fid, afid, uname, aname): |
| 40 | 41 | |
| 41 | − qid = self.make_qid("") | |
| 42 | − self.set_qid_path(fid, qid, "") | |
| 42 | + qid = self.make_qid(u"/") | |
| 43 | + self.set_qid_path(fid, qid, u"/") | |
| 43 | 44 | self.root_fid = fid |
| 44 | 45 | return qid |
| 45 | 46 | |
| @@ -49,14 +50,14 @@ class DictStore: · 3 unmodified lines | ||
| 49 | 50 | |
| 50 | 51 | def set_qid_path(self, fid, qid, path): |
| 51 | 52 | |
| 52 | − path = path.lstrip("/") | |
| 53 | + path = path.lstrip(u"/") | |
| 53 | 54 | |
| 54 | 55 | self.qids[fid] = qid |
| 55 | 56 | self.paths[fid] = path |
| 56 | 57 | |
| 57 | 58 | def make_qid(self, path): |
| 58 | 59 | |
| 59 | − path = path.lstrip("/") | |
| 60 | + path = path.lstrip(u"/") | |
| 60 | 61 | obj = self.traverse(path) |
| 61 | 62 | |
| 62 | 63 | if obj == None: |
| @@ -90,7 +91,7 @@ class DictStore: · 27 unmodified lines | ||
| 90 | 91 | |
| 91 | 92 | def _stat(self, qid, path): |
| 92 | 93 | |
| 93 | − path = path.lstrip("/") | |
| 94 | + path = path.lstrip(u"/") | |
| 94 | 95 | |
| 95 | 96 | obj = self.traverse(path) |
| 96 | 97 | |
| @@ -100,16 +101,16 @@ class DictStore: · 3 unmodified lines | ||
| 100 | 101 | if type(obj) == dict: |
| 101 | 102 | mode = 0x80000000 |
| 102 | 103 | size = 0 |
| 103 | − mode |= 0555 | |
| 104 | + mode |= 0o555 | |
| 104 | 105 | else: |
| 105 | 106 | mode = 0 |
| 106 | 107 | size = len(obj) |
| 107 | − mode |= 0444 | |
| 108 | + mode |= 0o444 | |
| 108 | 109 | |
| 109 | − name = path.split("/")[-1] | |
| 110 | + name = path.split(u"/")[-1] | |
| 110 | 111 | |
| 111 | 112 | return styx.Stat(0, 0, qid, mode, self.now, self.now, size, name, |
| 112 | − "inferno", "inferno", "") | |
| 113 | + u"inferno", u"inferno", u"") | |
| 113 | 114 | |
| 114 | 115 | def create(self, fid, name, perm): |
| 115 | 116 | return False |
| @@ -137,7 +138,7 @@ class DictStore: · 21 unmodified lines | ||
| 137 | 138 | if obj == None: |
| 138 | 139 | return None |
| 139 | 140 | |
| 140 | − data = "" | |
| 141 | + data = b"" | |
| 141 | 142 | |
| 142 | 143 | if type(obj) == dict: |
| 143 | 144 | |
| @@ -147,12 +148,12 @@ class DictStore: · 3 unmodified lines | ||
| 147 | 148 | files.sort() |
| 148 | 149 | |
| 149 | 150 | for file_name in files: |
| 150 | − qid = self.make_qid(path + "/" + file_name) | |
| 151 | − data += self._stat(qid, path + "/" + file_name).encode() | |
| 151 | + qid = self.make_qid(path + u"/" + file_name) | |
| 152 | + data += self._stat(qid, path + u"/" + file_name).encode() | |
| 152 | 153 | |
| 153 | 154 | return data[offset:offset + count] |
| 154 | 155 | else: |
| 155 | − return obj[offset:offset + count] | |
| 156 | + return obj[offset:offset + count].encode("utf8") | |
| 156 | 157 | |
| 157 | 158 | def write(self, fid, offset, data): |
| 158 | 159 | |
| @@ -160,19 +161,19 @@ class DictStore: · 1 unmodified line | ||
| 160 | 161 | return -2 |
| 161 | 162 | |
| 162 | 163 | def remove(self, fid): |
| 163 | − return False | |
| 164 | + return u"Cannot remove dictionary entries." | |
| 164 | 165 | |
| 165 | 166 | def wstat(self, fid, st): |
| 166 | 167 | pass |
| 167 | 168 | |
| 168 | 169 | def traverse(self, path): |
| 169 | 170 | |
| 170 | − if path == "": | |
| 171 | + if path == u"": | |
| 171 | 172 | return self.d |
| 172 | 173 | |
| 173 | 174 | obj = self.d |
| 174 | 175 | |
| 175 | − for element in path.split("/"): | |
| 176 | + for element in path.split(u"/"): | |
| 176 | 177 | |
| 177 | 178 | try: |
| 178 | 179 | obj = obj[element] |
| @@ -191,11 +192,12 @@ if __name__ == "__main__": · 12 unmodified lines | ||
| 191 | 192 | port = int(sys.argv[1]) |
| 192 | 193 | |
| 193 | 194 | dictionary = { |
| 194 | − "dir": { | |
| 195 | − "hello.txt": "Hello world!\n" | |
| 195 | + u"dir": { | |
| 196 | + u"hello.txt": u"Hello world!\n", | |
| 197 | + u"\u263a": u"Forståelse" | |
| 196 | 198 | } |
| 197 | 199 | } |
| 198 | 200 | |
| 199 | 201 | store = DictStore(dictionary) |
| 200 | 202 | server = styxserver.StyxServer(store) |
| 201 | − server.serve("", port) | |
| 203 | + server.serve(b"", port) | |