=================================================================== RCS file: /home/cvs/OpenXM_contrib2/windows/post-msg-asirgui/cmdasir.c,v retrieving revision 1.3 retrieving revision 1.11 diff -u -p -r1.3 -r1.11 --- OpenXM_contrib2/windows/post-msg-asirgui/cmdasir.c 2013/08/28 05:33:02 1.3 +++ OpenXM_contrib2/windows/post-msg-asirgui/cmdasir.c 2014/05/28 02:46:55 1.11 @@ -1,4 +1,4 @@ -/* $OpenXM: OpenXM_contrib2/windows/post-msg-asirgui/cmdasir.c,v 1.2 2013/08/27 07:41:22 ohara Exp $ */ +/* $OpenXM: OpenXM_contrib2/windows/post-msg-asirgui/cmdasir.c,v 1.10 2014/05/25 21:01:04 ohara Exp $ */ // cl test.c user32.lib #include @@ -7,6 +7,8 @@ #include #include #include +#include +#include char *winname2uxname(char winname[]); FILE *findAsirHandler(); @@ -15,7 +17,35 @@ int loadFile(HWND hnd, char *uname); int terminateAsir(HWND hnd); int hasTemp(char *s); int pasteFile(HWND hnd, char *uname); +int containEnd(char s[]); +int abortAsir(HWND hnd); +int main(int argc, char *argv[]); +int damemsg(unsigned char s[]); +int damemoji(unsigned char s[]); +FILE *open_stdio(DWORD type) { + HANDLE hnd; + int fd; + if((hnd = GetStdHandle(type)) != INVALID_HANDLE_VALUE && (fd = _open_osfhandle((intptr_t)hnd, _O_TEXT)) >= 0) { + return _fdopen(fd, "w"); + } + return NULL; +} + +int WINAPI WinMain(HINSTANCE hins, HINSTANCE prev, LPSTR arg, int show) { + FILE *fp; +#if (_WIN32_WINNT > 0x0500) + if(AttachConsole(ATTACH_PARENT_PROCESS)) { + if(fp = open_stdio(STD_OUTPUT_HANDLE)) { + *stdout = *fp; + setvbuf(stdout, NULL, _IONBF, 0); + } + } +#endif + main(__argc, __argv); + return 0; +} + int main(int argc, char *argv[]) { HWND hnd; @@ -28,37 +58,42 @@ int main(int argc, char *argv[]) char msg[1024]; char cmd[1024]; int paste_contents=0; + int abort=0; - /* MessageBox(NULL,TEXT("test"),TEXT("Error in cmdasir.c"),MB_OK); */ - sprintf(snameWin,"%s\\cmdasir-%d.txt",getenv("TEMP"),getpid()); + /* MessageBox(NULL,TEXT("test"),TEXT("ERROR in cmdasir.c"),MB_OK); */ + sprintf(snameWin,"%s\\cmdasir-%d.txt",getenv("TEMP"),_getpid()); snameUx = winname2uxname(snameWin); if ((argc > 1) && (strcmp(argv[1],"--delete-tmp")==0)) { sprintf(cmd,"del %s\\cmdasir-*",getenv("TEMP")); system(cmd); return(0); } + fp = findAsirHandler(); if (fp == NULL) { - fprintf(stderr,"handler file is not found.\n"); return(-1); + printf("handler file is not found.\n"); return(-1); } fscanf(fp,"%d",&hnd); fclose(fp); if ((argc > 1) && (strcmp(argv[1],"--quit")==0)) { return terminateAsir(hnd); } + if ((argc > 1) && (strcmp(argv[1],"--abort")==0)) { + return abortAsir(hnd); + } printf("Handler is %d\n",hnd); paste_contents=0; for (ii=1; ii= 0) fputc(c,fp2); @@ -67,7 +102,7 @@ int main(int argc, char *argv[]) uname=snameUx; } printf("filename=%s\n",argv[ii]); - if(access(argv[ii],0)==0) { + if(_access(argv[ii],0)==0) { if (paste_contents) return pasteFile(hnd, (uname != NULL)? uname: winname2uxname(argv[ii])); else return loadFile(hnd, (uname != NULL)? uname: winname2uxname(argv[ii])); } @@ -115,6 +150,7 @@ int terminateAsir(HWND hnd) { char *winname2uxname(char wname[]) { int i; char *uname; + damemsg(wname); uname = (char *) malloc(strlen(wname)+1); for (i=0; i= size-1) { @@ -213,8 +249,81 @@ int pasteFile(HWND hnd, char *uname) { } i++; } - sendFileName(hnd,s); + if (containEnd(s)) { + MessageBox(NULL,TEXT("The string contains end$ or end;"),TEXT(uname),MB_OK); + return(0); + } + if (strlen(s)>0) sendFileName(hnd,s); else { + MessageBox(NULL,TEXT("Empty string: "),TEXT(uname),MB_OK); + return 0; + } free(s); PostMessage(hnd,WM_CHAR,0xa,1); return 0; +} + +int containEnd(char s[]) { + int i; + for (i=0; i=0x81) && (c<=0x9f)) || ((c>=0xe0) && (c<=0xee)) || ((c>=0xfa) && (c<=0xfc))) { + dame=i; break; + } + } + } + } + return(dame); }