=================================================================== RCS file: /home/cvs/OpenXM_contrib2/windows/post-msg-asirgui/cmdasir.c,v retrieving revision 1.6 retrieving revision 1.10 diff -u -p -r1.6 -r1.10 --- OpenXM_contrib2/windows/post-msg-asirgui/cmdasir.c 2013/11/27 14:59:43 1.6 +++ OpenXM_contrib2/windows/post-msg-asirgui/cmdasir.c 2014/05/25 21:01:04 1.10 @@ -1,4 +1,4 @@ -/* $OpenXM: OpenXM_contrib2/windows/post-msg-asirgui/cmdasir.c,v 1.5 2013/11/27 04:23:07 takayama Exp $ */ +/* $OpenXM: OpenXM_contrib2/windows/post-msg-asirgui/cmdasir.c,v 1.9 2014/05/10 08:23:33 ohara Exp $ */ // cl test.c user32.lib #include @@ -7,6 +7,7 @@ #include #include #include +#include char *winname2uxname(char winname[]); FILE *findAsirHandler(); @@ -17,7 +18,31 @@ int hasTemp(char *s); int pasteFile(HWND hnd, char *uname); int containEnd(char s[]); int abortAsir(HWND hnd); +int main(int argc, char *argv[]); +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; @@ -32,8 +57,8 @@ int main(int argc, char *argv[]) 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")); @@ -43,7 +68,7 @@ int main(int argc, char *argv[]) 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); @@ -65,7 +90,7 @@ int main(int argc, char *argv[]) fp2 = fopen(snameUx,"w"); if (fp2 == NULL) { sprintf(msg,"File %s to load is not found.",argv[ii]); - MessageBox(NULL,TEXT(msg),TEXT("Error in cmdasir.c"), MB_OK); + MessageBox(NULL,TEXT(msg),TEXT("ERROR in cmdasir.c"), MB_OK); return(-1); } while ((c=fgetc(fp)) >= 0) fputc(c,fp2); @@ -74,7 +99,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])); } @@ -153,13 +178,13 @@ FILE *findAsirHandler() { char path1[1024]; char path0[1024]; char *path[] = { NULL, NULL, "c:/Program files/asir/bin/asirgui.hnd", "c:/Program files (x86)/asir/bin/asirgui.hnd", "c:/asir/bin/asirgui.hnd" }; - sprintf(path0,"%s/asirgui.hnd",(char *)getenv("TEMP")); + sprintf(path0,"%s/asirgui.hnd",getenv("TEMP")); path[0]=winname2uxname(path0); if (getenv("ASIR_ROOTDIR") != NULL) { - sprintf(path1,"%s/bin/asirgui.hnd",(char *)getenv("ASIR_ROOTDIR")); + sprintf(path1,"%s/bin/asirgui.hnd",getenv("ASIR_ROOTDIR")); path[1]=winname2uxname(path1); }else{ - sprintf(path1,"%s/Desktop/asir/bin/asirgui.hnd",(char *)getenv("HOMEPATH")); + sprintf(path1,"%s%s/Desktop/asir/bin/asirgui.hnd",getenv("HOMEDRIVE"),getenv("HOMEPATH")); path[1]=winname2uxname(path1); } for(i=0; i