⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 startup.c

📁 Open DMT Client C Source code
💻 C
📖 第 1 页 / 共 3 页
字号:
            }        } else        if (strEqualsIgnoreCase(argv[argp], "-pfile") || strEqualsIgnoreCase(argv[argp], "-pf")) {            // -pf[ile] <propertyFile> [<propertyCache>]            argp++;            if ((argp < argc) && (*argv[argp] != '-')) {                memset(propertyFile , 0, sizeof(propertyFile));                memset(propertyCache, 0, sizeof(propertyCache));                strncpy(propertyFile, argv[argp], sizeof(propertyFile) - 1);                if (((argp + 1) < argc) && (*argv[argp + 1] != '-')) {                    argp++;                    strncpy(propertyCache, argv[argp], sizeof(propertyCache) - 1);                } else {                    // set property cache                    // (note: 'propertyCache' buffer is larger than 'propertyFile')                    int len = strlen(propertyFile);                    strcpy(propertyCache, propertyFile);                    if (strEndsWith(propertyCache,".conf")) {                        int dot = len - 5; // - strlen(".conf");                        strcpy(&propertyCache[dot], ".dat");                    } else {                        strcpy(&propertyCache[len], ".dat");                    }                }                logINFO(LOGSRC,"Property file set to '%s'" , propertyFile);                logINFO(LOGSRC,"Property cache set to '%s'", propertyCache);            } else {                // default property file not changed            }        } else        if (strEqualsIgnoreCase(argv[argp], "-nopc")) {            // -nopc    ("no property cache")            loadPropCache = utFalse;        } else        if (strEqualsIgnoreCase(argv[argp], "-reboot")) {            // may not be supported on this platform            osReboot(); // command-line reboot does not need "startupReboot()"            return 1;        } else {            break;        }    }        /* check for existance of 'config' directory  */    if (!ioIsDirectory(CONFIG_DIR)) {        if (!ioExists(CONFIG_DIR)) {            if (ioMakeDirs(CONFIG_DIR, utFalse)) {                logDEBUG(LOGSRC,"Created CONFIG_DIR: %s ...", CONFIG_DIR);            } else {                logERROR(LOGSRC,"Unable to create directory: %s", CONFIG_DIR);                return 1; // ExitProcess(1);            }        } else {            logERROR(LOGSRC,"CONFIG_DIR is NOT a directory: %s", CONFIG_DIR);            return 1; // ExitProcess(1);        }    }    /* init WSA Windows extensions */#if defined(TARGET_WINCE)    osInitWSAStartup();#endif    /* initialize properties */    // since we need to use the property manager before the main run loop starts    // we need to initialize the property manager here.    startupPropInitialize(loadPropCache);        /* debug header */#if defined(DEBUG_COMPILE)    // issue warning so it can't be missed    // ("DEBUG_COMPILE" should not be enabled in production mode!)    logWARNING(LOGSRC,"***** Compiled with 'DEBUG_COMPILE' on!!! *****\n");    logPRINTF(LOGSRC,SYSLOG_WARNING, "***** Compiled with 'DEBUG_COMPILE' on!!! *****");#endif    /* command line arguments */    for (; argp < argc; argp++) {        if (strEqualsIgnoreCase(argv[argp],"-help") || strEqualsIgnoreCase(argv[argp],"-h")) {            // -h[elp]            _usage(pgmName);            return 0;        } else        if (strStartsWithIgnoreCase(argv[argp],"-ver") || strEqualsIgnoreCase(argv[argp],"-v")) {            // -v[ersion]            _printBanner();            return 0; // ExitProcess(0);        } else        if (strEqualsIgnoreCase(argv[argp], "-printprops") || strEqualsIgnoreCase(argv[argp],"-pp")) {            // -printprops            propPrintProperties(stdout, utTrue);            return 0; // ExitProcess(0);        } else        if (strStartsWithIgnoreCase(argv[argp],"-enc")) {            // -enc[oding] <encoding>            argp++;            if ((argp < argc) && (*argv[argp] != '-')) {                int enc = atoi(argv[argp]);                switch (ENCODING_VALUE(enc)) {                    case ENCODING_BINARY:                    case ENCODING_BASE64:                    case ENCODING_HEX:                    case ENCODING_CSV:                        dftEncoding = enc;                        logINFO(LOGSRC,"Encoding set to %d\n", dftEncoding);                        break;                    default:                        logCRITICAL(LOGSRC,"Unsupported encoding ...\n");                        _usage(pgmName);                        return 2;                }            } else {                logCRITICAL(LOGSRC,"Missing encoding ...\n");                _usage(pgmName);                return 2;            }        } else        if (strEqualsIgnoreCase(argv[argp], "-cksum")) {            // -cksum            dftEncoding = ENCODING_CHECKSUM(dftEncoding);        } else#if !defined(TRANSPORT_MEDIA_FILE) && !defined(TRANSPORT_MEDIA_SERIAL)        if (strEqualsIgnoreCase(argv[argp], "-duplex") || strEqualsIgnoreCase(argv[argp], "-dup")) {            // -duplex            // WARNING: this does not verify that duplex connections are appropriate for the transport type            propSetUInt32(PROP_COMM_MAX_SIM_EVENTS , 0L);            UInt32 maxDupEvents = propGetUInt32(PROP_COMM_MAX_DUP_EVENTS, 1L);            if (maxDupEvents <= 0L) {                // make duplex connections at-least '1'                propSetUInt32(PROP_COMM_MAX_DUP_EVENTS , 1L);            }        } else#endif#if !defined(TRANSPORT_MEDIA_SERIAL) && !defined(TRANSPORT_MEDIA_FILE)        if (strEqualsIgnoreCase(argv[argp], "-simplex") || strEqualsIgnoreCase(argv[argp], "-sim")) {            // -simplex            // WARNING: this does not verify that simplex connections are appropriate for the transport type            propSetUInt32(PROP_COMM_MAX_DUP_EVENTS , 0L);            UInt32 maxDupEvents = propGetUInt32(PROP_COMM_MAX_SIM_EVENTS, 1L);            if (maxDupEvents <= 0L) {                // make simplex connections at-least '1'                propSetUInt32(PROP_COMM_MAX_SIM_EVENTS , 1L);            }        } else#endif        if (strEqualsIgnoreCase(argv[argp], "-comlog")) {            // -comlog            comLog = utTrue;        } else        if (strEqualsIgnoreCase(argv[argp], "-gps")) {            // -gps <port> [<model>]            argp++;            if ((argp < argc) && (*argv[argp] != '-')) {                propSetString(PROP_CFG_GPS_PORT, argv[argp]);                // parse 'model', if specified (ie. 'garmin', etc).                if (((argp + 1) < argc) && (*argv[argp + 1] != '-')) {                    argp++;                    propSetString(PROP_CFG_GPS_MODEL, argv[argp]);                }                if (comLog) {                    propSetBoolean(PROP_CFG_GPS_DEBUG, utTrue);                }            } else {                logCRITICAL(LOGSRC,"Missing GPS port ...\n");                _usage(pgmName);                return 3;            }        } else #if defined(TRANSPORT_MEDIA_SOCKET) || defined(TRANSPORT_MEDIA_GPRS)        if (strEqualsIgnoreCase(argv[argp], "-server")) {            // -server <host> [<port>]            argp++;            if ((argp < argc) && (*argv[argp] != '-')) {                propInitFromString(PROP_COMM_HOST, argv[argp]);                // parse 'port', if specified                if (((argp + 1) < argc) && (*argv[argp + 1] != '-')) {                    argp++;                    propInitFromString(PROP_COMM_PORT, argv[argp]);                }            } else {                logCRITICAL(LOGSRC,"Missing host ...\n");                _usage(pgmName);                return 3;            }        } else#endif#if defined(TRANSPORT_MEDIA_SERIAL)        if (strEqualsIgnoreCase(argv[argp], "-serial")) {            // -server <port> [<bps>]            argp++;            if ((argp < argc) && (*argv[argp] != '-')) {                propSetString(PROP_CFG_XPORT_PORT, argv[argp]);                // parse 'bps', if specified                if (((argp + 1) < argc) && (*argv[argp + 1] != '-')) {                    argp++;                    propInitFromString(PROP_CFG_XPORT_BPS, argv[argp]);                }                // debug logging                if (comLog) {                    propSetBoolean(PROP_CFG_XPORT_DEBUG, utTrue);                }                // display config                logINFO(LOGSRC,"Setting serial protocol port: %s [%lu]\n",                     propGetString(PROP_CFG_XPORT_PORT,"?"), propGetUInt32(PROP_CFG_XPORT_BPS,0L));            } else {                logCRITICAL(LOGSRC,"Missing serial protocol port ...\n");                _usage(pgmName);                return 1;            }        } else#endif#if defined(TRANSPORT_MEDIA_GPRS)        if (strEqualsIgnoreCase(argv[argp], "-gprs")) {            // -gprs <port> [<bps>]            argp++;            if ((argp < argc) && (*argv[argp] != '-')) {                propSetString(PROP_CFG_XPORT_PORT, argv[argp]);                // parse 'bps', if specified                if (((argp + 1) < argc) && (*argv[argp + 1] != '-')) {                    argp++;                    propInitFromString(PROP_CFG_XPORT_BPS, argv[argp]);                }                // debug logging                if (comLog) {                    propSetBoolean(PROP_CFG_XPORT_DEBUG, utTrue);                }                // display config                logINFO(LOGSRC,"Setting GPRS modem port: %s [%lu]\n",                     propGetString(PROP_CFG_XPORT_PORT,"?"), propGetUInt32(PROP_CFG_XPORT_BPS,0L));            } else {                logCRITICAL(LOGSRC,"Missing GPRS modem port ...\n");                _usage(pgmName);                return 1;            }        } else#endif#if defined(TRANSPORT_MEDIA_FILE)        if (strEqualsIgnoreCase(argv[argp], "-file")) {            // -file <outfile>            argp++;            if ((argp < argc) && (*argv[argp] != '-')) {                propSetString(PROP_CFG_XPORT_PORT, argv[argp]);                logINFO(LOGSRC,"Setting output event data file: %s\n",                     propGetString(PROP_CFG_XPORT_PORT,""));            } else {                logCRITICAL(LOGSRC,"Missing output data file ...\n");                _usage(pgmName);                return 1;            }        } else#endif#if defined(ENABLE_GEOZONE) && defined(GEOZ_INCL_FILE_UPLOAD)        if (strEqualsIgnoreCase(argv[argp], "-geoz")) {            // -geoz <geozFile>            argp++;            if ((argp < argc) && ((*argv[argp] != '-') || isdigit(*(argv[argp]+1)))) {                const char *geoZoneFile = argv[argp];                geozUploadGeozones(geoZoneFile);            } else {                logERROR(LOGSRC,"Missing geozone file ...");                _usage(pgmName);                return 3;            }            return 0; // ExitProcess(0);        } else#endif        {            logCRITICAL(LOGSRC,"Unrecognized option: %s\n", argv[argp]);            _usage(pgmName);            return 1;        }     } // "for"        /* make sure we have a specified GPS port */    portName = propGetString(PROP_CFG_GPS_PORT, "");    if (!portName || !*portName) {        logCRITICAL(LOGSRC,"Missing GPS port specification ...\n");        _usage(pgmName);        return 1;    }        /* make sure we have a specified 'server' serial port */#if defined(TRANSPORT_MEDIA_SERIAL)    portName = propGetString(PROP_CFG_XPORT_PORT, "");    if (!portName || !*portName) {        logCRITICAL(LOGSRC,"Missing serial port specification ...\n");        _usage(pgmName);        return 1;    }#endif#if defined(TRANSPORT_MEDIA_GPRS)    portName = propGetString(PROP_CFG_XPORT_PORT, "");    if (!portName || !*portName) {        logCRITICAL(LOGSRC,"Missing GPRS port specification ...\n");        _usage(pgmName);        return 1;    }#endif#if defined(TRANSPORT_MEDIA_FILE)    portName = propGetString(PROP_CFG_XPORT_PORT, "");    if (!portName || !*portName) {        logCRITICAL(LOGSRC,"Missing output file specification ...\n");        _usage(pgmName);        return 1;    }#endif    /* header */    _printBanner();        // ------------------------------------------------------------------------    // ***** Startup Initialization        /* do we have a host:port defined? */#if defined(TRANSPORT_MEDIA_SOCKET) || defined(TRANSPORT_MEDIA_GPRS)    {        const char *sockHost = propGetString(PROP_COMM_HOST, "");        int sockPort = (int)propGetUInt32(PROP_COMM_PORT, 0L);        hasServerHostPort = (sockHost && *sockHost && (sockPort > 0))? utTrue : utFalse;        if (!hasServerHostPort) {            //                "--------------------------------------------------------"            logWARNING(LOGSRC,"*** No host:port defined, no events will be queued! ***");        }    }#endif    /* save startup time */    // this must be called before any timers are defined    utcMarkStartupTime();    /* make sure properties have been initialized */    // This must be called before any access is made to the property manager    //propInitialize(utFalse); // only initialize here if not already initialized    /* event queue initializer */    // this must be called before event packects are defined, or events are generated    evInitialize();    acctInitialize();    /* custom event record */#if defined(CUSTOM_EVENT_PACKETS)    // init custom event formats here (add before events can be generated)#endif    /* thread initializer */    // this must be called before threads are created/started    threadInitialize();        /* set threaded logging (if so configured) */    // (should be called before any threads are started)    // (will return false if logging doesn't support running in a separate thread)#if !defined(TARGET_CYGWIN)    logStartThread();#endif    /* main loop initialization */    // This initializes/starts all the component threads.    mainLoopInitialize(&_customAddEventFtn);    /* property save interval */#if defined(PROPERTY_SAVE_INTERVAL) && defined(PROPERTY_FILE)    // first property save expiration in FIRST_PROPERTY_SAVE_INTERVAL seconds    lastSavePropertyTimer = utcGetTimer();    //startupSaveProperties(); <-- will be saved soon#endif    /* other inits here */    // Add other custom initializations here    /* main loop */    mainLoopRun(dftEncoding, (runInThread?utTrue:utFalse)); // run in thread    return runInThread? 0 : 4;}// ----------------------------------------------------------------------------// ----------------------------------------------------------------------------// 'main' entry point#if !defined(TARGET_WINCE)// WinCE uses its own entry pointint main(int argc, char *argv[]) {    return startupDMTP(argc,argv,(int)utFalse); // don't run in thread}#endif// ----------------------------------------------------------------------------

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -