char *get_rtapi_param(const char *flavor, const char *param) { char *val; char buf[RTAPI_NAME_LEN+8]; // strlen("flavor_") + RTAPI_NAME_LEN + 1 // Open rtapi_inifile if it hasn't been already check_rtapi_config_open(); sprintf(buf, "flavor_%s", flavor); val = (char *) iniFind(rtapi_inifile, param, buf); if (val==NULL) val = (char *) iniFind(rtapi_inifile, param, "global"); return val; }
int main(int argc, char *argv[]) { int t; char _variable[INIFILE_MAX_LINELEN] = ""; char *variable = 0; char _section[INIFILE_MAX_LINELEN] = ""; char *section = 0; char INIFILE[256] = "emc.ini"; FILE *fp; const char *inistring; /* process command line args, indexing argv[] from [1] */ for (t = 1; t < argc; t++) { if (!strcmp(argv[t], "-ini")) { if (t == argc - 1) { /* no arg following -ini, so abort */ fprintf(stderr, "%s: ini file not specified after -ini\n", argv[0]); exit(1); } else { strcpy(INIFILE, argv[t+1]); t++; /* step over following arg */ } } else if (!strcmp(argv[t], "-var")) { if (t == argc - 1) { /* no arg following -var, so abort */ fprintf(stderr, "%s: variable name not specified after -var\n", argv[0]); exit(1); } else { strcpy(_variable, argv[t+1]); variable = _variable; t++; /* step over following arg */ } } else if (!strcmp(argv[t], "-sec")) { if (t == argc - 1) { /* no arg following -sec, so abort */ fprintf(stderr, "%s: section name not specified after -sec\n", argv[0]); exit(1); } else { strcpy(_section, argv[t+1]); section = _section; t++; /* step over following arg */ } } else { /* invalid argument */ fprintf(stderr, "%s: -var <variable> {-sec <section>} {<-ini inifile>}\n", argv[0]); exit(1); } } /* check that variable was supplied */ if (0 == variable) { fprintf(stderr, "%s: no variable supplied\n", argv[0]); exit(1); } /* open the inifile */ if (NULL == (fp = fopen(INIFILE, "r"))) { fprintf(stderr, "%s: can't open %s\n", argv[0], INIFILE); exit(1); } inistring = iniFind(fp, variable, section); if (NULL != inistring) { printf("%s\n", inistring); } fclose(fp); exit(0); }
const char * Inifile::find(const char *tag, const char *section) { return iniFind(fp, tag, section); }