[BACK]Return to cmdasir.c CVS log [TXT][DIR] Up to [local] / OpenXM_contrib2 / windows / post-msg-asirgui

Diff for /OpenXM_contrib2/windows/post-msg-asirgui/cmdasir.c between version 1.1 and 1.2

version 1.1, 2013/08/27 05:51:50 version 1.2, 2013/08/27 07:41:22
Line 1 
Line 1 
 /* $OpenXM$ */  /* $OpenXM: OpenXM_contrib2/windows/post-msg-asirgui/cmdasir.c,v 1.1 2013/08/27 05:51:50 takayama Exp $ */
 // cl test.c user32.lib  // cl test.c user32.lib
   
 #include <windows.h>  #include <windows.h>
 #include <stdlib.h>  #include <stdlib.h>
 #include <stdio.h>  #include <stdio.h>
 #include <process.h>  #include <string.h>
   #include <io.h>
 char *winname2uxname(char winname[]);  #include <process.h>
 FILE *findAsirHandler();  
 int sendFileName(HWND hnd,char uname[]);  char *winname2uxname(char winname[]);
 int loadFile(HWND hnd, char *uname);  FILE *findAsirHandler();
 int terminateAsir(HWND hnd);  int sendFileName(HWND hnd,char uname[]);
   int loadFile(HWND hnd, char *uname);
 int main(int argc, char *argv[])  int terminateAsir(HWND hnd);
 {  int hasTemp(char *s);
   HWND hnd;  int pasteFile(HWND hnd, char *uname);
   int i,j,c,ii;  
   char *uname=NULL;  int main(int argc, char *argv[])
   FILE *fp=NULL;  {
   FILE *fp2=NULL;    HWND hnd;
   char snameWin[1024];    int c,ii;
   char *snameUx;    char *uname=NULL;
   char *s;    FILE *fp=NULL;
   char msg[1024];    FILE *fp2=NULL;
   char cmd[1024];    char snameWin[1024];
   int paste_contents=0;    char *snameUx;
     char msg[1024];
   /* MessageBox(NULL,TEXT("test"),TEXT("Error in cmdasir.c"),MB_OK); */    char cmd[1024];
   sprintf(snameWin,"%s\\cmdasir-%d.txt",getenv("TEMP"),getpid());    int paste_contents=0;
   snameUx = winname2uxname(snameWin);  
   if ((argc > 1) && (strcmp(argv[1],"--delete-tmp")==0)) {    /* MessageBox(NULL,TEXT("test"),TEXT("Error in cmdasir.c"),MB_OK); */
     sprintf(cmd,"del %s\\cmdasir-*",getenv("TEMP"));    sprintf(snameWin,"%s\\cmdasir-%d.txt",getenv("TEMP"),getpid());
     system(cmd);    snameUx = winname2uxname(snameWin);
     return(0);    if ((argc > 1) && (strcmp(argv[1],"--delete-tmp")==0)) {
   }      sprintf(cmd,"del %s\\cmdasir-*",getenv("TEMP"));
   fp = findAsirHandler();      system(cmd);
   if (fp == NULL) {      return(0);
     fprintf(stderr,"handler file is not found.\n"); return(-1);    }
   }    fp = findAsirHandler();
   fscanf(fp,"%d",&hnd);    if (fp == NULL) {
   fclose(fp);      fprintf(stderr,"handler file is not found.\n"); return(-1);
   if ((argc > 1) && (strcmp(argv[1],"--quit")==0)) {    }
     return terminateAsir(hnd);    fscanf(fp,"%d",&hnd);
   }    fclose(fp);
   printf("Handler is %d\n",hnd);    if ((argc > 1) && (strcmp(argv[1],"--quit")==0)) {
   paste_contents=0;      return terminateAsir(hnd);
   for (ii=1; ii<argc; ii++) {    }
         if (strcmp(argv[ii],"--paste-contents")==0) {    printf("Handler is %d\n",hnd);
                 paste_contents=1; continue;    paste_contents=0;
         }    for (ii=1; ii<argc; ii++) {
     uname = NULL;          if (strcmp(argv[ii],"--paste-contents")==0) {
     if (hasTemp(argv[ii])) {                  paste_contents=1; continue;
       fp = fopen(winname2uxname(argv[ii]),"r");          }
       fp2 = fopen(snameUx,"w");      uname = NULL;
       if (fp2 == NULL) {      if (hasTemp(argv[ii])) {
         sprintf(msg,"File %s to load is not found.",argv[ii]);        fp = fopen(winname2uxname(argv[ii]),"r");
         MessageBox(NULL,TEXT(msg),TEXT("Error in cmdasir.c"), MB_OK);        fp2 = fopen(snameUx,"w");
         return(-1);        if (fp2 == NULL) {
       }          sprintf(msg,"File %s to load is not found.",argv[ii]);
       while ((c=fgetc(fp)) >= 0) fputc(c,fp2);          MessageBox(NULL,TEXT(msg),TEXT("Error in cmdasir.c"), MB_OK);
         if (!paste_contents) fprintf(fp2,"\nend$\n");          return(-1);
       fclose(fp2);        }
       uname=snameUx;        while ((c=fgetc(fp)) >= 0) fputc(c,fp2);
     }          if (!paste_contents) fprintf(fp2,"\nend$\n");
     printf("filename=%s\n",argv[ii]);        fclose(fp2);
     if(access(argv[ii],0)==0) {        uname=snameUx;
         if (paste_contents) return pasteFile(hnd, (uname != NULL)? uname: winname2uxname(argv[ii]));      }
         else return loadFile(hnd, (uname != NULL)? uname: winname2uxname(argv[ii]));      printf("filename=%s\n",argv[ii]);
     }      if(access(argv[ii],0)==0) {
   }          if (paste_contents) return pasteFile(hnd, (uname != NULL)? uname: winname2uxname(argv[ii]));
   /* work file is kept. Prepare a commnd to delete all the work files under temp          else return loadFile(hnd, (uname != NULL)? uname: winname2uxname(argv[ii]));
    */      }
   while ((c=getchar()) != EOF) {    }
     if (!PostMessage(hnd,WM_CHAR,c,1)) {    /* work file is kept. Prepare a commnd to delete all the work files under temp
       MessageBox(NULL,TEXT("asirgui is not running."), TEXT("ERROR in cmdasir.c"),MB_OK);     */
       return(-1);    while ((c=getchar()) != EOF) {
     }      if (!PostMessage(hnd,WM_CHAR,c,1)) {
   }        MessageBox(NULL,TEXT("asirgui is not running."), TEXT("ERROR in cmdasir.c"),MB_OK);
   return 0;        return(-1);
 }      }
     }
 int loadFile(HWND hnd, char *uname) {    return 0;
     char *s="load(@);\n";  }
     int i;  
     for (i=0; i<strlen(s); i++) {  int loadFile(HWND hnd, char *uname) {
         if (s[i] != '@') PostMessage(hnd,WM_CHAR,s[i],1);      char *s="load(@);\n";
         else {      int i;
             PostMessage(hnd,WM_CHAR,'"',1);      for (i=0; i<strlen(s); i++) {
             sendFileName(hnd,uname);          if (s[i] != '@') PostMessage(hnd,WM_CHAR,s[i],1);
             if (!PostMessage(hnd,WM_CHAR,'"',1)) {          else {
                 MessageBox(NULL,TEXT("asirgui is not running."),TEXT("ERROR in cmdasir.c"),MB_OK);              PostMessage(hnd,WM_CHAR,'"',1);
                 return -1;              sendFileName(hnd,uname);
             }              if (!PostMessage(hnd,WM_CHAR,'"',1)) {
         }                  MessageBox(NULL,TEXT("asirgui is not running."),TEXT("ERROR in cmdasir.c"),MB_OK);
     }                  return -1;
     return 0;              }
 }          }
       }
 int terminateAsir(HWND hnd) {      return 0;
     int i;  }
     char *s="quit;\n";  
     for (i=0; i<strlen(s); i++) {  int terminateAsir(HWND hnd) {
         if (!PostMessage(hnd,WM_CHAR,s[i],1)) {      int i;
             MessageBox(NULL,TEXT("asirgui is not running."),TEXT("ERROR in cmdasir.c"),MB_OK);      char *s="quit;\n";
             return -1;      for (i=0; i<strlen(s); i++) {
         }          if (!PostMessage(hnd,WM_CHAR,s[i],1)) {
     }              MessageBox(NULL,TEXT("asirgui is not running."),TEXT("ERROR in cmdasir.c"),MB_OK);
     return 0;              return -1;
 }          }
       }
 char *winname2uxname(char wname[]) {      return 0;
   int i;  }
   char *uname;  
   uname = (char *) malloc(strlen(wname)+1);  char *winname2uxname(char wname[]) {
   for (i=0; i<strlen(wname); i++) {    int i;
     if (wname[i] == '\\') uname[i] = '/';    char *uname;
     else uname[i] = wname[i];    uname = (char *) malloc(strlen(wname)+1);
     uname[i+1] = 0;    for (i=0; i<strlen(wname); i++) {
   }      if (wname[i] == '\\') uname[i] = '/';
   return(uname);      else uname[i] = wname[i];
 }      uname[i+1] = 0;
     }
 int hasTemp(char *s) {    return(uname);
   int i,n;  }
   n=strlen(s);  
   for (i=0; i<n-3; i++) {  #if 0
     if (strncmp(&(s[i]),"Temp",4)==0) return(1);  int hasTemp(char *s) {
   }    int i;
   return(0);    size_t n=strlen(s);
 }    for (i=0; i<n-3; i++) {
       if (strncmp(&(s[i]),"Temp",4)==0) return(1);
 FILE *findAsirHandler() {    }
   int i;    return(0);
   FILE *hnd = NULL;  }
   char msg[1024];  #endif
   char path1[1024];  
   char path0[1024];  int hasTemp(char *s) {
   char *path[] = { NULL, NULL, "c:/Program files/asir/bin/asirgui.hnd", "c:/Program files (x86)/asir/bin/asirgui.hnd", "c:/asir/bin/asirgui.hnd" };          return strstr(s, "Temp")!=NULL;
   sprintf(path0,"%s/asirgui.hnd",(char *)getenv("TEMP"));  }
   path[0]=winname2uxname(path0);  
   if (getenv("ASIR_ROOTDIR") != NULL) {  FILE *findAsirHandler() {
     sprintf(path1,"%s/bin/asirgui.hnd",(char *)getenv("ASIR_ROOTDIR"));    int i;
     path[1]=winname2uxname(path1);    FILE *hnd = NULL;
   }else{    char msg[1024];
     sprintf(path1,"%s/Desktop/asir/bin/asirgui.hnd",(char *)getenv("HOMEPATH"));    char path1[1024];
     path[1]=winname2uxname(path1);    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" };
   for(i=0; i<sizeof(path); i++) {    sprintf(path0,"%s/asirgui.hnd",(char *)getenv("TEMP"));
     if(path[i]!=NULL) {    path[0]=winname2uxname(path0);
       hnd = fopen(path[i],"r");    if (getenv("ASIR_ROOTDIR") != NULL) {
       if (hnd != NULL) return(hnd);      sprintf(path1,"%s/bin/asirgui.hnd",(char *)getenv("ASIR_ROOTDIR"));
     }      path[1]=winname2uxname(path1);
   }    }else{
   sprintf(msg,"asir handler is not found.");      sprintf(path1,"%s/Desktop/asir/bin/asirgui.hnd",(char *)getenv("HOMEPATH"));
   MessageBox(NULL,TEXT(msg),TEXT("ERROR in cmdasir.c"),MB_OK);      path[1]=winname2uxname(path1);
   return NULL;    }
 }    for(i=0; i<sizeof(path); i++) {
 #if 0      if(path[i]!=NULL) {
 int sendFileName_ascii(HWND hnd,char uname[]) {        hnd = fopen(path[i],"r");
     int j;        if (hnd != NULL) return(hnd);
     for (j=0; j<strlen(uname);j++) PostMessage(hnd,WM_CHAR,uname[j],1);      }
 }    }
 #endif    sprintf(msg,"asir handler is not found.");
 int sendFileName(HWND hnd,char uname[]) {    MessageBox(NULL,TEXT(msg),TEXT("ERROR in cmdasir.c"),MB_OK);
     int j;    return NULL;
     int len=strlen(uname)+1;  }
     HGLOBAL hMem;  #if 0
     LPTSTR pMem;  int sendFileName_ascii(HWND hnd,char uname[]) {
     if (!OpenClipboard(NULL) ) return 1;      int j;
     hMem = GlobalAlloc(GMEM_FIXED,len);      for (j=0; j<strlen(uname);j++) PostMessage(hnd,WM_CHAR,uname[j],1);
     pMem = (LPTSTR)hMem;  }
     lstrcpy(pMem,(LPCTSTR)uname);  #endif
     EmptyClipboard();  int sendFileName(HWND hnd,char uname[]) {
     SetClipboardData(CF_TEXT,hMem);      size_t len=strlen(uname)+1;
     CloseClipboard();      HGLOBAL hMem;
         if (!PostMessage(hnd,WM_CHAR,0x19,1)) { /* 0x19 ctrl-Y, ctrl-V 0x16 */      LPTSTR pMem;
       MessageBox(NULL,TEXT("asirgui is not running."),TEXT("ERROR in cmdasir.c"),MB_OK);      if (!OpenClipboard(NULL) ) return 1;
           return -1;      hMem = GlobalAlloc(GMEM_FIXED,len);
         }      pMem = (LPTSTR)hMem;
         return 0;      lstrcpy(pMem,(LPCTSTR)uname);
 }      EmptyClipboard();
       SetClipboardData(CF_TEXT,hMem);
 int pasteFile(HWND hnd, char *uname) {      CloseClipboard();
     FILE *fp;          if (!PostMessage(hnd,WM_CHAR,0x19,1)) { /* 0x19 ctrl-Y, ctrl-V 0x16 */
         char *s=NULL;        MessageBox(NULL,TEXT("asirgui is not running."),TEXT("ERROR in cmdasir.c"),MB_OK);
         char *sold=NULL;            return -1;
         int size=1024;          }
         int c,i;          return 0;
         fp = fopen(uname,"r");  }
         if (fp == NULL) {  
                 MessageBox(NULL,TEXT("File is not found: "),TEXT(uname),MB_OK);  int pasteFile(HWND hnd, char *uname) {
                 return -1;      FILE *fp;
         }          char *s=NULL;
         s = (char *)malloc(size+1);          char *sold=NULL;
         i = 0;          int size=1024;
         while ((c=fgetc(fp)) != EOF) {          int c,i;
                 s[i] = c; s[i+1]=0;          fp = fopen(uname,"r");
                 if (i >= size-1) {          if (fp == NULL) {
                         sold = s;                  MessageBox(NULL,TEXT("File is not found: "),TEXT(uname),MB_OK);
                         size = size*2;                  return -1;
                         s = (char*)malloc(size+1);          }
                         strcpy(s,sold);          s = (char *)malloc(size+1);
                         free(sold);          i = 0;
                 }          while ((c=fgetc(fp)) != EOF) {
                 i++;                  s[i] = c; s[i+1]=0;
         }                  if (i >= size-1) {
         sendFileName(hnd,s);                          sold = s;
         free(s);                          size = size*2;
         PostMessage(hnd,WM_CHAR,0xa,1);                          s = (char*)malloc(size+1);
 }                          strcpy(s,sold);
                           free(sold);
                   }
                   i++;
           }
           sendFileName(hnd,s);
           free(s);
           PostMessage(hnd,WM_CHAR,0xa,1);
           return 0;
   }

Legend:
Removed from v.1.1  
changed lines
  Added in v.1.2

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>