main () { int i, j, k, c; char line[MAXLENGTH]; int slash[MAXLENGTH]; j = k = 0; slash[0] = -1; while ((c = getchar()) != EOF) { line[i] = c; ++i; if (c == '/') { slash[j] = i - 1; ++j; slash[j]= -1; } else if (c == '\n') { if (k == 0) { printf ("%c", '\n'); k = 1; } line[i] = '\0'; fixline (line, slash); i = j = 0; slash[0] = -1; } } }
void readfile( unsigned char *fname ) { FILE *fp, *fopen( ); unsigned char str[MAXWORDLENGTH]; unsigned char *ostr; int l, i; fp = fopen( fname, "r" ); while ( !feof( fp ) ) { fgets( str, MAXWORDLENGTH - 1, fp ); if ( !feof( fp ) ) { fixline( str ); wordptr[numword] = ( unsigned char * ) malloc( ( l = strlen( str ) ) + 2 ); if ( wordptr[numword] == NULL ) printf( "Memory Error\n" ); strcpy( wordptr[numword] + 1, str ); wordptr[numword][l] = 0; /* Remove new line */ wordptr[numword][0] = l - 1; if ( numword > 0 ) if ( strcmp( wordptr[numword] + 1, wordptr[numword - 1] + 1 )<0 ) { ostr = wordptr[numword]; i = numword; while ( i && ( strcmp( ostr + 1, wordptr[i - 1] + 1 )<0 ) ) { wordptr[i] = wordptr[i - 1]; i--; } wordptr[i] = ostr; } numword++; if ( numword % 2000 == 0 ) printf( "%d\n", numword ); } } fclose( fp ); printf( "Reading dictionary done %d.\n", numword ); }
/*---------------------------------------------------------------*/ void do_mouse(HWND hwnd, DWORD wParam, DWORD lParam, int msg) { int o,x,y,n,i; static int mox,moy; static char mf2; static char lf2; #ifdef NOCAPT static char wmf; static int mux,muy; #endif switch (msg) { case WM_MOUSEMOVE: //move if ((wParam & MK_RBUTTON)!=0) { #ifdef NOCAPT mox=(short)LOWORD(lParam); moy=(short)HIWORD(lParam); if (wmf==0) { wmf=1,mux=mox,muy=moy; return; } MoveWindow(hwnd,wx0+mox-mux,wy0+moy-muy,wxl,wyl,TRUE); #endif return; } if (clickflag) return; if ((wParam & MK_LBUTTON)==0 || edp==NULL) { mox=(short)LOWORD(lParam); moy=(short)HIWORD(lParam); getmouxy(mox,moy,&x,&y); if (edp==NULL) i=1; else i=inmark(x+clft,y); SetCursor(i?pointC:hCurs); return; } if (lf2==0) return; #ifndef MV_DandD mm3: #endif if (drag) { setdragc(2+(0!=(GetAsyncKeyState(VK_CONTROL)&0x8000))); } n=((wParam & MK_SHIFT)!=0 || 0==moumrk); if (n==0) { mf2=0; goto mm1; } if (mf2) goto mm1; mf2=1; goto mm2; case WM_LBUTTONDBLCLK: lf2=0; if (edp) { o=getkword(fpos, tmpbuff); if (tmpbuff[0]) { ed_cmd(EK_MARK,o, o+strlen(tmpbuff)); return; } } goto drag_cancel; case WM_LBUTTONDOWN: lf2=1; resetmsg(hwnd); if (clickflag && --clickflag) return; //#ifndef MV_DandD SetCapture(hwnd); //#endif n=2; mm1: mox=(short)LOWORD(lParam); moy=(short)HIWORD(lParam); mm2: if (edp==NULL) return; o=getmoupos(mox,moy); if (o) { settimer(hwnd,o,SCROLL_INTERVAL); return; } ed_cmd(EK_SETVAR); getmouxy(mox,moy,&x,&y); if (n==2 && inmark(x+clft,y)) { #ifndef MV_DandD drag=1; goto mm3; #else char *get_block(void); char *get_vblock(void); char *p,*q; int n; p=vmark ? get_vblock() : get_block(); if (p!=NULL) { q = m_alloc(entab (NULL, p, n=strlen(p), tabs)+1); q[entab (q, p, n, tabs)]=0; i=do_drag(q), m_free(q); m_free(p); if (i==1) ed_cmd(KEY_DELETE); } return; #endif } if (drag && linmrk && vmark==0 && fixline(*ma) != fixline(*me)) curx=0; if (drag && n!=2 && dragmove<2) dragmove++; if (n==2) unmark(); if (drag==0) setvmark(n==1); return; case WM_LBUTTONUP: lf2=0; if (dragmove==2) { ed_cmd(drag==3 ? EK_DRAG_COPY : EK_DRAG_MOVE); SetCursor(hCurs); } else if (drag) unmark(); drag_cancel: mf2=drag=dragmove=0; settimer(hwnd,0,0); #ifndef MV_DandD ReleaseCapture(); #endif return; case WM_RBUTTONDOWN: #if 0 if (NULL!=ShortCut) { POINT pt; GetCursorPos(&pt); TrackPopupMenu(ShortCut,TPM_CENTERALIGN|TPM_RIGHTBUTTON, pt.x, pt.y ,0,hwnd,NULL ); return; } #endif #ifdef NOCAPT SetCapture(hwnd); mox=(short)LOWORD(lParam); moy=(short)HIWORD(lParam); wmf=1,mux=mox,muy=moy; #endif return; case WM_RBUTTONUP: #ifdef NOCAPT wmf=0; if (NULL==ShortCut) ReleaseCapture(); #endif return; } }