/* main function */ int main(int argc, char *argv[]) { fData *theData; int errCheck; int xField = -1; int yField = -1; int weightField = -1; if (argc <= 1) { showUsage(); return 0; } setInputFiles(argc, argv); theData = readFile(dataFile, dataTypesFile, &errCheck); if (errCheck) CMmsgPrint(CMmsgUsrError, "errors were reported, but continuing anyways."); xField = findArg(XSHORT, XLONG, argc, argv); yField = findArg(YSHORT, YLONG, argc, argv); weightField = findArg(WEIGHTSHORT, WEIGHTLONG, argc, argv); if (xField && xField + 1 < argc) xField = getFieldNum(theData, argv[xField + 1]); else xField = -1; if (yField && yField + 1 < argc) yField = getFieldNum(theData, argv[yField + 1]); else yField = -1; if (weightField && weightField + 1 < argc) weightField = getFieldNum(theData, argv[weightField + 1]); else weightField = -1; if (xField == -1) { CMmsgPrint(CMmsgUsrError, "Could not get the X field"); return 0; } if (yField == -1) { CMmsgPrint(CMmsgUsrError, "Could not get the Y field"); return 0; } /*(weight field is not mandatory)*/ reg(xField, yField, weightField, theData); return 0; }
void installVtableOrDie( const char * in_key, const struct AllocatorVtable * in_tables[], struct AllocatorVtable * out_table ) { const char * config = getConfStr(); if( NULL == config ) { config = defaultConfig; } size_t valueSize; const char * value = findArg( config, in_key, &valueSize ); if( NULL == value ) { fprintf( stderr, "Error: libmprof: Could not find value for '%s' in env var 'MPROF_CONF'.\n", in_key ); exit( -1 ); } const struct AllocatorVtable * table = lookupVtable( value, valueSize, in_tables ); if( NULL == table ) { //not wise, but neither is fprintf without malloc.... ((char*) value )[ valueSize ] = '\0'; fprintf( stderr, "Error: libmprof: Cannot find vtable '%s' candidate for '%s'\n", value, in_key ); exit( -1 ); } *out_table = *table; if( table->construct ) { table->construct(); } }
String MSWindowsClipboardHTMLConverter::doToIClipboard(const String& data) const { // get fragment start/end args String startArg = findArg(data, "StartFragment"); String endArg = findArg(data, "EndFragment"); if (startArg.empty() || endArg.empty()) { return String(); } // convert args to integers SInt32 start = (SInt32)atoi(startArg.c_str()); SInt32 end = (SInt32)atoi(endArg.c_str()); if (start <= 0 || end <= 0 || start >= end) { return String(); } // extract the fragment return data.substr(start, end - start); }
static void mprofCountConstruct( void ) { size_t valueSize; const char * value = findArg( getConfStr(), "COUNTS_PATH", &valueSize ); if( value ) { char * tmp = tmpAllocVtable.calloc( valueSize + 1, sizeof( char ) ); strncpy( tmp, value, valueSize ); value = tmp; } else { value = "./mprof.counts"; } mprofRecordInit(); sem_init( &mmapSem, 0, 1 ); assert( mmapOpen( &countsArea, value, O_RDWR | O_TRUNC | O_CREAT ) ); assert( mmapSize( &countsArea, sizeof( struct MprofRecordCount ), MMAP_AREA_SET ) ); }
static void mprofLogMmapConstruct( void ) { size_t argSize; const char * arg = findArg( getConfStr(), "LOG_QTY", &argSize ); if( arg ) { growthQty = strtol( arg, NULL, 10 ); } arg = findArg( getConfStr(), "CACHE_QTY", &argSize ); if( arg ) { cacheQty = strtol( arg, NULL, 10 ); } arg = findArg( getConfStr(), "LOG_PATH", &argSize ); if( arg ) { char * tmp = tmpAllocVtable.calloc( argSize + 1, sizeof( char ) ); strncpy( tmp, arg, argSize ); arg = tmp; } else { arg = "./mprof.log"; } assert( mmapOpen( &area, arg, O_RDWR | O_TRUNC | O_CREAT ) ); assert( mmapSize( &area, growthQty * sizeof( struct MprofRecordAlloc ), MMAP_AREA_SET ) ); sem_init( &mmapSem, 0, 1 ); }
void setInputFiles( int argc, char* argv [] ) { int i,j; /* trying to open the data types file */ if( (i = findArg( DATAINPUTSHORT, DATAINPUTLONG, argc, argv )) && (i + 1 < argc) && access( argv[i+1], R_OK ) == 0 ) dataTypesFile = fopen( argv[i+1], "rb" ); /* trying to open the data file */ for( j=1;j<argc;j++ ) { if( ((dataTypesFile != NULL && i+1 != j) || (!dataTypesFile)) && access( argv[j], R_OK ) == 0 ) dataFile = fopen( argv[j], "rb" ); } if( dataFile == NULL ) dataFile = stdin; }
GBool parseArgs(ArgDesc *args, int *argc, char *argv[]) { ArgDesc *arg; int i, j; GBool ok; ok = gTrue; i = 1; while (i < *argc) { if (!strcmp(argv[i], "--")) { --*argc; for (j = i; j < *argc; ++j) argv[j] = argv[j+1]; break; } else if ((arg = findArg(args, argv[i]))) { if (!grabArg(arg, i, argc, argv)) ok = gFalse; } else { ++i; } } return ok; }
int main(int argc, char* argv[]) { struct bParamList * paramList = NULL; const char *strPtr; int ii; for (ii=0; ii<TCX_MAX_CLIENTS; ii++) { CLIENT[ii] = NULL; } /* * Set some parameters */ /* add some defaults */ paramList = bParametersAddEntry(paramList, "*", "base.bps", "9600"); paramList = bParametersAddEntry(paramList, "*", "base.dev", "/dev/cur0"); paramList = bParametersAddEntry(paramList, "", "TCXHOST", "localhost"); paramList = bParametersAddEntry(paramList, "", "fork", "yes"); /* add some parameter files */ paramList = bParametersAddFile(paramList, "etc/beeSoft.ini"); /* add some enviroment variables */ paramList = bParametersAddEnv(paramList, "", "TCXHOST"); /* add command line arguements */ paramList = bParametersAddArray(paramList, "", argc, argv); /* here is where we should add non "parameter format" options */ bParametersFillParams(paramList); strPtr = bParametersGetParam(paramList, "robot", "name"); if (!strPtr) { fprintf(stderr, "Robot name not set. Check the value in beeSoft.ini.\n"); exit(1); } else if (!strcmp("none", strPtr)) { fprintf(stderr, "Robot name set to 'none'. Check value in beeSoft.ini.\n"); exit(1); } strPtr = bParametersGetParam(paramList, strPtr, "base.type"); if (!strPtr) { fprintf(stderr, "Base type not set. Check the value in beeSoft.ini.\n"); exit(1); } else if ( strcmp("B14", strPtr) && strcmp("B21", strPtr) && strcmp("Ramona", strPtr) ) { fprintf(stderr, "Arm type set to unrecognized type '%s'. Check the\n" "value in beeSoft.ini.\n", strPtr); exit(1); } /* * */ argv0 = argv[0]; if (makeLock(BASE_SERVER_LOCK)<0) { fprintf(stderr,"%s: Already running base server\n",argv[0]); exit(-1); } if (findArg(argc,argv,"-v")) { VERBOSE = TRUE; fprintf(stderr,"baseServer started in verbose mode\n"); } if (findArg(argc,argv,"-noIrs")) { IRS = FALSE; fprintf(stderr,"baseServer started without IRs\n"); } if (findArg(argc,argv,"-noTactiles")) { TACTILES = FALSE; fprintf(stderr,"baseServer started without Tactiles\n"); } if (findArg(argc,argv,"-noSonars")) { SONARS= FALSE; fprintf(stderr,"baseServer started without Sonars\n"); } if (findArg(argc,argv,"-simulator")) { useSimulator=TRUE; fprintf(stderr,"baseServer connecting to simulator.\n"); } RaiInit(); BaseInit(bRobot.base_dev, bRobot.base_bps); catchInterrupts(); initBaseServerTCX(bRobot.TCXHOST); if (useSimulator==TRUE) { simulatorHandle = tcxConnectModule(TCX_SIMULATOR_MODULE_NAME); } registerWatchdogCallback(watchdogToClient); /* * GRUMBLE - It is going to be a bit ugly to get the sensor * structures initialized without opening /dev/abus. tds */ if (SONARS && !useSimulator) { sonarInit(); registerSonarCallback(sonarToClient); SIM_sonarStop(); /* turn off sonar until we have a client */ } if (IRS && !useSimulator) { irInit(); registerIrCallback(irToClient); SIM_irStop(); /* turn off ir until we have a client */ } if (TACTILES && !useSimulator) { tactileInit(); registerTactileCallback(tactileToClient); tactileStop(); } registerStatusCallback(statusToClient); registerBaseCallback(baseToClient); initBaseServerModules(); if (bRobot.fork) { bDaemonize("baseServer.log"); } rotateLimp(); translateLimp(); RaiStart(); exit(0); }