8#include "tpcclibConfig.h"
20static char *info[] = {
21 "Rename the specified parameter inside a parameter file.",
23 "Usage: @P [options] file [oldname newname]",
25 "Enter either the number or name of the parameter to be renamed, and",
26 "the new parameter name. Only the first matching parameter name is renamed.",
27 "If neither is given, then program lists current parameter names.",
28 "Note that not all parameter file formats can store parameter names.",
32 " Nothing is actually renamed, application only lists what it would do.",
35 "See also: paradd, parcoll, iftedit, parformat, tacren",
37 "Keywords: parameter, tool, rename, simulation",
56int main(
int argc,
char **argv)
58 int ai, help=0, version=0, verbose=1;
66 if(argc==1) {
tpcPrintUsage(argv[0], info, stderr);
return(1);}
67 parfile[0]=oldname[0]=newname[0]=(char)0;
69 for(ai=1; ai<argc; ai++)
if(*argv[ai]==
'-') {
71 char *cptr=argv[ai]+1;
if(*cptr==
'-') cptr++;
if(!*cptr)
continue;
72 if(strcasecmp(cptr,
"DRY")==0) {
75 fprintf(stderr,
"Error: invalid option '%s'\n", argv[ai]);
84 if(help==2) {
tpcHtmlUsage(argv[0], info,
"");
return(0);}
89 if(ai<argc)
strlcpy(parfile, argv[ai++], FILENAME_MAX);
92 if(ai<argc) {fprintf(stderr,
"Error: too many arguments: '%s'.\n", argv[ai]);
return(1);}
96 printf(
"parfile := %s\n", parfile);
97 printf(
"dryMode := %d\n", dryMode);
98 if(oldname[0]) printf(
"oldname := %s\n", oldname);
99 if(newname[0]) printf(
"newname := %s\n", newname);
104 if(!parfile[0]) {
tpcPrintUsage(argv[0], info, stderr);
return(1);}
105 if(oldname[0] && !newname[0]) {
106 fprintf(stderr,
"Error: new parameter name missed.\n");
114 if(verbose>1) printf(
"reading %s\n", parfile);
122 printf(
"parNr := %d\n", par.
parNr);
123 printf(
"tacNr := %d\n", par.
tacNr);
131 for(
int i=0; i<par.
parNr; i++)
132 printf(
"%s\n", par.
n[i].
name);
143 if(verbose>1) printf(
"%d parameter(s) match '%s'\n", parNr, oldname);
145 fprintf(stderr,
"Error: no parameter matches '%s'.\n", oldname);
154 for(
int i=0; i<par.
parNr; i++)
if(par.
n[i].
sw) {
155 if(verbose>0 || dryMode) {
156 fprintf(stdout,
"%s -> %s\n", par.
n[i].
name, newname);
163 if(dryMode) {
parFree(&par);
return(0);}
168 if(verbose>1) printf(
"writing %s\n", parfile);
170 FILE *fp=fopen(parfile,
"w");
172 fprintf(stderr,
"Error: cannot open file for writing.\n");
181 if(verbose>0) printf(
"modified file written.\n");
char * parFormattxt(parformat c)
int parWrite(PAR *par, FILE *fp, parformat format, int extra, TPCSTATUS *status)
int parRead(PAR *par, const char *fname, TPCSTATUS *status)
int parSelectParameters(PAR *d, const char *par_name, int reset, TPCSTATUS *status)
int tpcProcessStdOptions(const char *s, int *print_usage, int *print_version, int *verbose_level)
int tpcHtmlUsage(const char *program, char *text[], const char *path)
void tpcPrintBuild(const char *program, FILE *fp)
void tpcPrintUsage(const char *program, char *text[], FILE *fp)
void statusInit(TPCSTATUS *s)
char * errorMsg(tpcerror e)
void statusSet(TPCSTATUS *s, const char *func, const char *srcfile, int srcline, tpcerror error)
size_t strlcpy(char *dst, const char *src, size_t dstsize)
char name[MAX_PARNAME_LEN+1]
int verbose
Verbose level, used by statusPrint() etc.
tpcerror error
Error code.
Header file for library libtpcextensions.
#define MAX_PARNAME_LEN
Max string length for PAR name.
Header file for libtpcpar.
@ PAR_FORMAT_UNKNOWN
Unknown format.