version 1.4, 2005/04/14 07:11:58 |
version 1.8, 2013/08/31 13:44:08 |
|
|
/* $OpenXM: OpenXM/src/util/oxreplace.c,v 1.3 2003/05/31 03:05:00 takayama Exp $ */ |
/* $OpenXM: OpenXM/src/util/oxreplace.c,v 1.7 2011/05/02 06:39:51 takayama Exp $ */ |
/* cf. fb/src/misc/nan-tfb2.c */ |
/* cf. fb/src/misc/nan-tfb2.c */ |
#include <stdio.h> |
#include <stdio.h> |
|
#include <stdlib.h> |
|
#include <string.h> |
#include <time.h> |
#include <time.h> |
int ReplaceLine=0; |
int ReplaceLine=0; |
|
int Verbose=0; |
|
void usage(); |
|
|
char *readAsString(FILE *fp) { |
char *readAsString(FILE *fp) { |
static char *s = NULL; |
static char *s = NULL; |
Line 10 char *readAsString(FILE *fp) { |
|
Line 14 char *readAsString(FILE *fp) { |
|
int p = 0; |
int p = 0; |
char *s2; |
char *s2; |
int c; |
int c; |
|
if (fp == NULL) { s=NULL; return(NULL); } |
if (s == NULL) { |
if (s == NULL) { |
s = (char *) malloc(size); |
s = (char *) malloc(size); |
if (s == NULL) { |
if (s == NULL) { |
Line 77 main(int argc, char *argv[]) { |
|
Line 82 main(int argc, char *argv[]) { |
|
int i; |
int i; |
char *old = NULL; |
char *old = NULL; |
char *new = NULL; |
char *new = NULL; |
|
FILE *fp; |
if (argc < 2) {usage(); exit(0); } |
if (argc < 2) {usage(); exit(0); } |
for (i=1; i<argc; i++) { |
for (i=1; i<argc; i++) { |
if (strcmp(argv[i],"--old") == 0) { |
if (strcmp(argv[i],"--old") == 0) { |
Line 92 main(int argc, char *argv[]) { |
|
Line 98 main(int argc, char *argv[]) { |
|
} else if (strcmp(argv[i],"--f") == 0) { |
} 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 if (strcmp(argv[i],"--newfile")==0) { |
|
fp = fopen(argv[i+1],"r"); i++; |
|
if (fp == NULL) { |
|
fprintf(stderr,"Error: File %s is not found\n",argv[i]); exit(10); |
|
} |
|
new = readAsString(fp); fclose(fp); readAsString(NULL); |
|
} else if (strcmp(argv[i],"--verbose")==0) { |
|
Verbose = 1; |
}else { |
}else { |
if ((old != NULL) && (new != NULL)) { |
if ((old != NULL) && (new != NULL)) { |
replaceOneWord(argv[i],old,new); |
replaceOneWord(argv[i],old,new); |
}else{ |
}else{ |
fprintf(stderr,"--old and --new option or --f option are not given.\n"); |
fprintf(stderr,"--old and --new option or --newfile or --f option are not given.\n"); |
usage(); |
usage(); |
exit(10); |
exit(10); |
} |
} |
Line 114 replaceOneWord(char *fname,char *old, char *new) { |
|
Line 128 replaceOneWord(char *fname,char *old, char *new) { |
|
char *fnameBackup; |
char *fnameBackup; |
char *comm; |
char *comm; |
int i,j,mm; |
int i,j,mm; |
|
int ns,nold; |
#ifdef DEBUG |
#ifdef DEBUG |
fprintf(stderr,"fname=%s, old=%s, new=%s, ReplaceLine=%d\n",fname,old,new,ReplaceLine); |
fprintf(stderr,"fname=%s, old=%s, new=%s, ReplaceLine=%d\n",fname,old,new,ReplaceLine); |
#endif |
#endif |
Line 130 replaceOneWord(char *fname,char *old, char *new) { |
|
Line 145 replaceOneWord(char *fname,char *old, char *new) { |
|
fprintf(stderr,"No more memory.\n"); exit(10); |
fprintf(stderr,"No more memory.\n"); exit(10); |
} |
} |
sprintf(fnameBackup,"%s.%ld.oxreplace-tmp.old",fname,(long) time(NULL)); |
sprintf(fnameBackup,"%s.%ld.oxreplace-tmp.old",fname,(long) time(NULL)); |
sprintf(comm,"cp %s %s",fname,fnameBackup); |
rename(fname,fnameBackup); |
system(comm); |
|
|
|
fpOrig = fopen(fnameBackup,"r"); |
fpOrig = fopen(fnameBackup,"r"); |
fp = fopen(fname,"w"); |
fp = fopen(fname,"w"); |
s = readAsString(fpOrig); |
s = readAsString(fpOrig); |
|
ns = strlen(s); nold=strlen(old); |
if (ReplaceLine) { |
if (ReplaceLine) { |
for (i=0; i<strlen(s); i++) { |
for (i=0; i<ns; i++) { |
/* Look for \n */ |
/* Look for \n */ |
mm = 0; |
mm = 0; |
for (j = i; j<strlen(s); j++) { |
for (j = i; j<ns; j++) { |
if (matches(old,s+j,strlen(old))) mm = 1; |
if (matches(old,s+j,nold)) mm = 1; |
if (s[j] == '\n') { break;} |
if (s[j] == '\n') { break;} |
} |
} |
if (mm) { |
if (mm) { |
Line 155 replaceOneWord(char *fname,char *old, char *new) { |
|
Line 170 replaceOneWord(char *fname,char *old, char *new) { |
|
} |
} |
} |
} |
}else{ |
}else{ |
for (i=0; i<strlen(s); i++) { |
for (i=0; i<ns; i++) { |
if (!matches(old,s+i,strlen(old))) { |
if (!matches(old,s+i,nold)) { |
fputc(s[i],fp); |
fputc(s[i],fp); |
}else{ |
}else{ |
fprintf(fp,"%s",new); |
fprintf(fp,"%s",new); |
Line 169 replaceOneWord(char *fname,char *old, char *new) { |
|
Line 184 replaceOneWord(char *fname,char *old, char *new) { |
|
return 0; |
return 0; |
} |
} |
|
|
|
void usage() { |
usage() { |
fprintf(stderr,"oxreplace [--old oword [--new nword | --newfile filename] --f rule_file_name --replaceLine] \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 hexadecimal codes\n"); |
fprintf(stderr," Use --oldx or --newx to give a word in hexadecimal codes\n"); |
} |
} |
|
|