[BACK]Return to oxapp.c CVS log [TXT][DIR] Up to [local] / OpenXM / misc / packages / Windows

Diff for /OpenXM/misc/packages/Windows/oxapp.c between version 1.2 and 1.3

version 1.2, 2002/01/10 03:55:10 version 1.3, 2002/01/16 06:47:19
Line 1 
Line 1 
 /* $OpenXM: OpenXM/misc/packages/Windows/oxapp.c,v 1.1 2002/01/06 08:47:36 takayama Exp $ */  /* $OpenXM: OpenXM/misc/packages/Windows/oxapp.c,v 1.2 2002/01/10 03:55:10 takayama Exp $ */
 #include <stdio.h>  #include <stdio.h>
 #define LINESIZE 4096  #define LINESIZE 4096
   
Line 10  main(int argc,char *argv[]) {
Line 10  main(int argc,char *argv[]) {
   int checkLoad = 0;    int checkLoad = 0;
   extern ThereIsLoad;    extern ThereIsLoad;
   for (i=1; i<argc; i++) {    for (i=1; i<argc; i++) {
         if (strcmp(argv[i],"--removeSharp") == 0) {      if (strcmp(argv[i],"--removeSharp") == 0) {
           removeSharp = 1;        removeSharp = 1;
         }else if (strcmp(argv[i],"--load") == 0) {      }else if (strcmp(argv[i],"--load") == 0) {
           checkLoad = 1;        checkLoad = 1;
         }      }
   }    }
   while (fgets(s,LINESIZE,stdin) != NULL) {    while (fgets(s,LINESIZE,stdin) != NULL) {
         if (strlen(s) >= LINESIZE-1) {      if (strlen(s) >= LINESIZE-1) {
           fprintf(stderr,"Too long line.\n");        fprintf(stderr,"Too long line.\n");
           exit(20);        exit(20);
         }      }
         edit(s);      edit(s);
         if (removeSharp && s[0] == '#') {      if (removeSharp && s[0] == '#') {
           printf("\n");        printf("\n");
         }else{      }else{
           printf("%s",s);        printf("%s",s);
         }      }
   }    }
   if (removeSharp == 0) {    if (removeSharp == 0) {
         printf("end$\n");      printf("end$\n");
   }    }
   if (checkLoad) {    if (checkLoad) {
         fprintf(stderr,"checkLoad status = %d\n",ThereIsLoad);      fprintf(stderr,"checkLoad status = %d\n",ThereIsLoad);
         if (ThereIsLoad) exit(0);      if (ThereIsLoad) exit(0);
         else exit(1);      else exit(1);
   }    }
 }  }
   
Line 45  edit(char s[]) {
Line 45  edit(char s[]) {
   if (strlen(s) == 0) return;    if (strlen(s) == 0) return;
   t[0] = 0;    t[0] = 0;
   if ((k = find(s,"load(")) >= 0) {    if ((k = find(s,"load(")) >= 0) {
         if (k > 0 && not_separator(s[k-1]) ) return; /* bload */      if (k > 0 && not_separator(s[k-1]) ) return; /* bload */
         /* Heuristic 1 */      /* Heuristic 1 */
         if (k > 0) {      if (k > 0) {
           if (s[0] == 'i' && s[1] == 'f') return; /* if ... load */        if (s[0] == 'i' && s[1] == 'f') return; /* if ... load */
         }      }
         /* Heuristic 2.A.    load(User_asirrc)$ */      /* Heuristic 2.A.    load(User_asirrc)$ */
         if (find(s,"load(User_asirrc)")>=0) {      if (find(s,"load(User_asirrc)")>=0) {
           s[0] = '\n'; s[1]=0;        s[0] = '\n'; s[1]=0;
           return;        return;
         }      }
         /* Heuristic 2 */      /* Heuristic 2 */
         if (('A' <= s[k+5]) && (s[k+5] <= 'Z')) {      if (('A' <= s[k+5]) && (s[k+5] <= 'Z')) {
           return; /* load(User_asirrc) */        return; /* load(User_asirrc) */
         }      }
         /* Heuristic 3. load("./"+Fname) in phc */      /* Heuristic 3. load("./"+Fname) in phc */
         if (find(s,"+Fname")>=0) return;      if (find(s,"+Fname")>=0) return;
   
         for (i=0; i<k; i++) {      for (i=0; i<k; i++) {
           t[i] = s[i]; t[i+1] = 0;        t[i] = s[i]; t[i+1] = 0;
         }      }
     strcat(t,"#include ");      strcat(t,"#include ");
         ThereIsLoad = 1;      ThereIsLoad = 1;
         j=k+5;      j=k+5;
         for (i=strlen(t); i<LINESIZE*2-1; ) {      for (i=strlen(t); i<LINESIZE*2-1; ) {
           if (s[j] == 0) break;        if (s[j] == 0) break;
           if (s[j] == ')' || s[j] == ';' || s[j] == '$')  {        if (s[j] == ')' || s[j] == ';' || s[j] == '$')  {
                 j += 1;          j += 1;
           }else{        }else{
                 t[i] = s[j]; t[i+1] = 0;          t[i] = s[j]; t[i+1] = 0;
                 i++; j++;          i++; j++;
           }        }
         }      }
         if (strlen(t) >= LINESIZE-1) {      if (strlen(t) >= LINESIZE-1) {
           fprintf(stderr,"Too long string %s\n",t);        fprintf(stderr,"Too long string %s\n",t);
         }      }
         strcpy(s,t);      strcpy(s,t);
   }    }
   if ((k = find(s,"end$")) >= 0) {    if ((k = find(s,"end$")) >= 0) {
         if (k > 0 && not_separator(s[k-1])) return;      if (k > 0 && not_separator(s[k-1])) return;
     strcpy(s,"\n");      strcpy(s,"\n");
   }    }
 }  }
Line 94  find(char *s,char *substr) {
Line 94  find(char *s,char *substr) {
   m = strlen(substr);    m = strlen(substr);
   k0 = -1; k = -1;    k0 = -1; k = -1;
   for (i=0; i<n-m+1; i++) {    for (i=0; i<n-m+1; i++) {
         k = i;      k = i;
         for (j=0; j<m; j++) {      for (j=0; j<m; j++) {
       if (s[i+j] != substr[j]) {        if (s[i+j] != substr[j]) {
                 k = -1; break;          k = -1; break;
           }        }
         }      }
     if (k >= 0 && k0 >= 0) {      if (k >= 0 && k0 >= 0) {
           fprintf(stderr,"More than appearance of %s\n",substr);        fprintf(stderr,"More than one appearances of %s\n",substr);
           exit(20);        exit(20);
         }      }
         if (k >= 0) k0 = k;      if (k >= 0) k0 = k;
   }    }
   return k0;    return k0;
 }  }

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

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