equal
deleted
inserted
replaced
145 j = (j + 1) & buckets) |
145 j = (j + 1) & buckets) |
146 if (!cmp(a + i, b + h[j].pos)) |
146 if (!cmp(a + i, b + h[j].pos)) |
147 break; |
147 break; |
148 |
148 |
149 a[i].e = j; /* use equivalence class for quick compare */ |
149 a[i].e = j; /* use equivalence class for quick compare */ |
150 if(h[j].len <= t) |
150 if (h[j].len <= t) |
151 a[i].n = h[j].pos; /* point to head of match list */ |
151 a[i].n = h[j].pos; /* point to head of match list */ |
152 else |
152 else |
153 a[i].n = -1; /* too popular */ |
153 a[i].n = -1; /* too popular */ |
154 } |
154 } |
155 |
155 |
268 l = diff(a, an, b, bn); |
268 l = diff(a, an, b, bn); |
269 rl = PyList_New(l.head - l.base); |
269 rl = PyList_New(l.head - l.base); |
270 if (!l.head || !rl) |
270 if (!l.head || !rl) |
271 goto nomem; |
271 goto nomem; |
272 |
272 |
273 for(h = l.base; h != l.head; h++) { |
273 for (h = l.base; h != l.head; h++) { |
274 m = Py_BuildValue("iiii", h->a1, h->a2, h->b1, h->b2); |
274 m = Py_BuildValue("iiii", h->a1, h->a2, h->b1, h->b2); |
275 PyList_SetItem(rl, pos, m); |
275 PyList_SetItem(rl, pos, m); |
276 pos++; |
276 pos++; |
277 } |
277 } |
278 |
278 |
303 l = diff(al, an, bl, bn); |
303 l = diff(al, an, bl, bn); |
304 if (!l.head) |
304 if (!l.head) |
305 goto nomem; |
305 goto nomem; |
306 |
306 |
307 /* calculate length of output */ |
307 /* calculate length of output */ |
308 for(h = l.base; h != l.head; h++) { |
308 for (h = l.base; h != l.head; h++) { |
309 if (h->a1 != la || h->b1 != lb) |
309 if (h->a1 != la || h->b1 != lb) |
310 len += 12 + bl[h->b1].l - bl[lb].l; |
310 len += 12 + bl[h->b1].l - bl[lb].l; |
311 la = h->a2; |
311 la = h->a2; |
312 lb = h->b2; |
312 lb = h->b2; |
313 } |
313 } |
318 |
318 |
319 /* build binary patch */ |
319 /* build binary patch */ |
320 rb = PyString_AsString(result); |
320 rb = PyString_AsString(result); |
321 la = lb = 0; |
321 la = lb = 0; |
322 |
322 |
323 for(h = l.base; h != l.head; h++) { |
323 for (h = l.base; h != l.head; h++) { |
324 if (h->a1 != la || h->b1 != lb) { |
324 if (h->a1 != la || h->b1 != lb) { |
325 len = bl[h->b1].l - bl[lb].l; |
325 len = bl[h->b1].l - bl[lb].l; |
326 *(uint32_t *)(encode) = htonl(al[la].l - al->l); |
326 *(uint32_t *)(encode) = htonl(al[la].l - al->l); |
327 *(uint32_t *)(encode + 4) = htonl(al[h->a1].l - al->l); |
327 *(uint32_t *)(encode + 4) = htonl(al[h->a1].l - al->l); |
328 *(uint32_t *)(encode + 8) = htonl(len); |
328 *(uint32_t *)(encode + 8) = htonl(len); |
351 |
351 |
352 PyMODINIT_FUNC initbdiff(void) |
352 PyMODINIT_FUNC initbdiff(void) |
353 { |
353 { |
354 Py_InitModule3("bdiff", methods, mdiff_doc); |
354 Py_InitModule3("bdiff", methods, mdiff_doc); |
355 } |
355 } |
|
356 |