Merge Bug corrected.
[mx3r.git] / plugin-split-lines.c
bloba5260ad494667e645982260e9d99d748f25333f8
1 #include <stdio.h>
2 #include <stdlib.h>
3 #include <string.h>
5 #define MAX_LINE 255
7 #define BASE 0
8 #define LOCAL 1
9 #define REMOTE 2
11 char *buffer[3];
12 int basefsize[3];
14 int block[3][65535];
15 int nblocks;
17 void init()
19 int i;
20 for (i=0;i<3;i++)
22 buffer[i]=NULL;
23 basefsize[i]=0;
25 nblocks=0;
28 int loadbuffer(char *buff, int size, int nfile)
30 if (nfile<0 || nfile>2) return 0;
31 buffer[nfile]=buff;
32 basefsize[nfile]=size;
33 return 1;
36 int *split(int nfile,int *pblocks)
38 int i, lastblock=0;
39 nblocks=0;
41 block[nfile][nblocks]=0; // 0 es la primera marca SIEMPRE
42 // (excepto que se quiera excluir la cabecera)
43 nblocks++;
44 int do_block;
45 for (i=0;i<basefsize[nfile];i++)
47 do_block=0;
48 if (i-lastblock>64 && (buffer[nfile][i]==10 || buffer[nfile][i]==13))
49 do_block=1;
50 if (i-lastblock>256 && buffer[nfile][i]<=32) do_block=1;
51 if (i-lastblock>4 && (buffer[nfile][i-1]=='{' || buffer[nfile][i+1]=='}')) do_block=1;
53 if (do_block)
55 block[nfile][nblocks]=i;
56 lastblock=i;
58 nblocks++;
61 i=basefsize[nfile]-1;
62 if (i>lastblock) // Agregar la marca del Ășltimo bloque
63 { // (Excepto que se quiera excluir el pie)
64 block[nfile][nblocks]=i;
65 lastblock=i;
67 nblocks++;
70 for (i=0;i<nblocks-1;i++)
72 if (block[nfile][i]>=block[nfile][i+1]) printf("Error split @ block %d, file %d \n",i,nfile);
76 *pblocks=nblocks;
77 return block[nfile];