void start_quip_with_menu(int argc, char **argv, Menu *initial_menu_p ) { Query_Stack *qsp; assert( initial_menu_p != NULL ); set_progname(argv[0]); first_menu = initial_menu_p; //debug |= CTX_DEBUG_MASK; //debug |= GETBUF_DEBUG_MASK; qsp=init_first_query_stack(); // reads stdin? init_builtins(); init_variables(SINGLE_QSP_ARG); // specify dynamic variables declare_functions(SINGLE_QSP_ARG); //PUSH_MENU(quip); PUSH_MENU_PTR(initial_menu_p); set_args(QSP_ARG argc,argv); rcfile(qsp,argv[0]); // If we have commands to create a widget in the startup file, // we get an error, so don't call exec_quip until after the appDelegate // has started... } // end start_quip_with_menu
int main() { hismaxsize=10; readhistory(); rcfile(); while(1) { control(0); } }
void read_rcfile(double pb[]) { char line[100]; ifstream rcfile(".cmasrc"); double x; char *pn, *val; int i, valid; static char whitespace[] = " \t\n"; static const char tagline[] = "# cmas 2.0"; if (rcfile.bad()) return; // file doesn't exist? just use defaults rcfile.getline(line,sizeof(line)); if (strcmp(line,tagline)) { cerr << "Corrupt .cmasrc file? First line must be '" << tagline << "'" << endl; return; } while (rcfile.getline(line,sizeof(line))) { if (line[0] == 0) continue; if (line[0] == '#') continue; pn = strtok(line,whitespace); if (pn) val = strtok(NULL,whitespace); for (i = 0; i < NParams; i++) if (strcmp(ParamTable[i].name,pn) == 0) { valid = 1; if (!numberp(val)) valid = 0; else { x = atof(val); if ((x < ParamTable[i].min) || (x > ParamTable[i].max)) valid = 0; } break; } if (i < NParams) if (valid) pb[ParamTable[i].key] = x; else cerr << "Bad parameter value: " << pn << ", " << val << endl; else cerr << "Unknown parameter file entry: " << pn << "; ignored" << endl; } }