[BACK]Return to oxreplace.c CVS log [TXT][DIR] Up to [local] / OpenXM / src / util

Diff for /OpenXM/src/util/oxreplace.c between version 1.3 and 1.4

version 1.3, 2003/05/31 03:05:00 version 1.4, 2005/04/14 07:11:58
Line 1 
Line 1 
 /* $OpenXM: OpenXM/src/util/oxreplace.c,v 1.2 2003/03/26 04:56:44 takayama Exp $ */  /* $OpenXM: OpenXM/src/util/oxreplace.c,v 1.3 2003/05/31 03:05:00 takayama Exp $ */
 /* cf. fb/src/misc/nan-tfb2.c */  /* cf. fb/src/misc/nan-tfb2.c */
 #include <stdio.h>  #include <stdio.h>
 #include <time.h>  #include <time.h>
   int ReplaceLine=0;
   
 char *readAsString(FILE *fp) {  char *readAsString(FILE *fp) {
   static char *s = NULL;    static char *s = NULL;
   static int size= 102400;    static int size= 102400;
Line 85  main(int argc, char *argv[]) {
Line 87  main(int argc, char *argv[]) {
           old = hex2str(argv[i+1]); i++;            old = hex2str(argv[i+1]); i++;
         } else if (strcmp(argv[i],"--newx") == 0) {          } else if (strcmp(argv[i],"--newx") == 0) {
           new = hex2str(argv[i+1]); i++;            new = hex2str(argv[i+1]); i++;
         } else if (strcmp(argv[i],"--f") == 0) {      } else if (strcmp(argv[i],"--replaceLine") == 0) {
         ReplaceLine = 1;
       } else if (strcmp(argv[i],"--f") == 0) {
           fprintf(stderr,"--f option (rule file) has not yet been implemented.\n");            fprintf(stderr,"--f option (rule file) has not yet been implemented.\n");
           exit(10);            exit(10);
         }else {          }else {
Line 109  replaceOneWord(char *fname,char *old, char *new) {
Line 113  replaceOneWord(char *fname,char *old, char *new) {
   char *s;    char *s;
   char *fnameBackup;    char *fnameBackup;
   char *comm;    char *comm;
   int i;    int i,j,mm;
 #ifdef DEBUG  #ifdef DEBUG
   fprintf(stderr,"fname=%s, old=%s, new=%s\n",fname,old,new);    fprintf(stderr,"fname=%s, old=%s, new=%s, ReplaceLine=%d\n",fname,old,new,ReplaceLine);
 #endif  #endif
   fp = fopen(fname,"r");    fp = fopen(fname,"r");
   if (fp == NULL) {    if (fp == NULL) {
Line 132  replaceOneWord(char *fname,char *old, char *new) {
Line 136  replaceOneWord(char *fname,char *old, char *new) {
   fpOrig = fopen(fnameBackup,"r");    fpOrig = fopen(fnameBackup,"r");
   fp = fopen(fname,"w");    fp = fopen(fname,"w");
   s = readAsString(fpOrig);    s = readAsString(fpOrig);
   for (i=0; i<strlen(s); i++) {    if (ReplaceLine) {
     if (!matches(old,s+i,strlen(old))) {      for (i=0; i<strlen(s); i++) {
       fputc(s[i],fp);        /* Look for \n */
         }else{        mm = 0;
           fprintf(fp,"%s",new);            for (j = i; j<strlen(s); j++) {
           i += strlen(old)-1;          if (matches(old,s+j,strlen(old))) mm = 1;
                   if (s[j] == '\n') { break;}
         }
         if (mm) {
                   i = j;
                   fprintf(fp,"%s\n",new);
             }else{
                   for ( ; i < j; i++) {
                     putc(s[i],fp);
                   }
                   putc('\n',fp);
             }
         }          }
     }else{
       for (i=0; i<strlen(s); i++) {
         if (!matches(old,s+i,strlen(old))) {
           fputc(s[i],fp);
         }else{
           fprintf(fp,"%s",new);
           i += strlen(old)-1;
         }
       }
   }    }
   fclose(fp); fclose(fpOrig);    fclose(fp); fclose(fpOrig);
   free(comm); free(fnameBackup);    free(comm); free(fnameBackup);
Line 147  replaceOneWord(char *fname,char *old, char *new) {
Line 171  replaceOneWord(char *fname,char *old, char *new) {
   
   
 usage() {  usage() {
   fprintf(stderr,"oxreplace [--old oword --new nword --f rule_file_name] \n");    fprintf(stderr,"oxreplace [--old oword --new nword --f rule_file_name --replaceLine] \n");
   fprintf(stderr,"          [file1 file2 ... ] \n");    fprintf(stderr,"          [file1 file2 ... ] \n");
   fprintf(stderr,"    Use --oldx or --newx to give a word in hexadeciam codes\n");    fprintf(stderr,"    Use --oldx or --newx to give a word in hexadecimal codes\n");
 }  }
   

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

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