亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? geozone.c

?? Open DMT Client C Source code
?? C
字號:
// ----------------------------------------------------------------------------// Copyright 2006-2007, Martin D. Flynn// All rights reserved// ----------------------------------------------------------------------------//// Licensed under the Apache License, Version 2.0 (the "License");// you may not use this file except in compliance with the License.// You may obtain a copy of the License at// // http://www.apache.org/licenses/LICENSE-2.0// // Unless required by applicable law or agreed to in writing, software// distributed under the License is distributed on an "AS IS" BASIS,// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.// See the License for the specific language governing permissions and// limitations under the License.//// ----------------------------------------------------------------------------// Description://  Geozone upload (server to client) support.// ---// Change History://  2006/05/07  Martin D. Flynn//     -Initial release// ----------------------------------------------------------------------------#include "server/defaults.h"#if defined(INCLUDE_GEOZONE)#include <stdlib.h>#include <stdio.h>#include <string.h>#include <ctype.h>#include <sys/types.h>#include <sys/stat.h>#include <unistd.h>#include "tools/stdtypes.h"#include "tools/strtools.h"#include "tools/base64.h"#include "tools/checksum.h"#include "tools/io.h"#include "base/props.h"#include "server/upload.h"#include "server/packet.h"#include "server/protocol.h"#include "server/log.h"#include "server/server.h"#include "server/geozone.h"// ----------------------------------------------------------------------------#define PRINT_GEOZONE// ----------------------------------------------------------------------------#define NO_ZONE                 ((GeoZoneID_t)0x0)#define MAX_GEOZONES            4000#define PACKED_GEOZONE_SIZE     16// ----------------------------------------------------------------------------static char geozFilename[80] = { 0 };static utBool didUploadGeoZones = utFalse;/* set upload geozone file */void geozSetGeozoneFile(const char *file){    memset(geozFilename, 0, sizeof(geozFilename));    if (file && *file) {        logINFO(LOGSRC,"Setting Geozone file: %s", file);        strncpy(geozFilename, file, sizeof(geozFilename) - 1);    }}/* upload geozones */void geozUploadGeozonesNow(){    if (!didUploadGeoZones) {        didUploadGeoZones = utTrue;        if (*geozFilename) {            geozUploadGeozones(geozFilename);            *geozFilename = 0;        }    }}// ----------------------------------------------------------------------------/* encode geozone into buffer */static void encodeGeozone(Buffer_t *buf, ServerGeozone_t *gz){    UInt16 typeRad = ((gz->type << 13) & 0xE000) | (gz->radius & 0x1FFF);    // PACKED_GEOZONE_SIZE must match this size    binBufPrintf(buf, "%2u%2u%6g%6g", (UInt32)gz->zoneID, (UInt32)typeRad, &(gz->pt[0]), &(gz->pt[1]));}// ----------------------------------------------------------------------------/* print GeoZone */#ifdef PRINT_GEOZONEstatic void _printGeozone(ServerGeozone_t *gz){    if (gz) {        logDEBUG(LOGSRC,"GeoZone : id=%04X", gz->zoneID);        logDEBUG(LOGSRC,"  Points: (type=%u, radius=%u) 0=%.5f/%.5f, 1=%.5f/%.5f\n",             gz->type, gz->radius,             gz->pt[0].latitude, gz->pt[0].longitude,             gz->pt[1].latitude, gz->pt[1].longitude);    }}#endif/* parse and upload geozones to client */static UInt16 _uploadFile(const char *geozFile, utBool performUpload){    // File format:    //   zoneID,type,radius,lat0,lon0,lat1,lon1    //   101,0,130,28.1234,-119.4321,28.1256,-119.4367    if (!geozFile || !*geozFile) {        // nothing to parse        logERROR(LOGSRC,"Upload file not specified");        return -1;    }    /* open file */    FILE *file = ioOpenStream(geozFile, IO_OPEN_READ);    if (!file) {        // open error        logINFO(LOGSRC,"Error openning file: %s", geozFile);        return -1;    }    /* init for parse */    logINFO(LOGSRC,"Parsing Geozones from file: %s", geozFile);    char geozVers[32];    int geozVersLength = sizeof(geozVers);    memset(geozVers, 0, geozVersLength);    /* buffer */    UInt8 buf[PACKET_MAX_PAYLOAD_LENGTH];    Buffer_t bb, *dst = binBuffer(&bb, buf, sizeof(buf), BUFFER_DESTINATION);    //binResetBuffer(dst);    /* read zones */    int line = 0;    int usedZones = 0;    utBool autoSave = utTrue;    char zoneRecord[80], *zoneFld[16];    for (;;) {        line++;                /* read line from file */        int len = ioReadLine(file, zoneRecord, sizeof(zoneRecord));        if (len <= 0) {            // EOF / read error            logINFO(LOGSRC,"[line %d] EOF: %s", line, geozFile);            break;        }        /* trim record */        char *zr = strTrim(zoneRecord);        /* ignore blank records and comments */        if (!*zr || (*zr == '#')) {            // ignore blank records and comments            continue;        }                /* scan for trailing comments */        char *c = zr;        while (*c && (*c != '#')) { c++; }        if (*c == '#') {            // trailing comment found            *c = 0;        }        logINFO(LOGSRC,"[line %d] %s", line, zr);        /* execute directives: "@CLEAR", "@VERSION", "@SAVE", "@NOSAVE" */        if (*zr == '@') {            if (strStartsWithIgnoreCase(zr,"@version")) {                // "@version 1.2"                char *v = strTrim(zr + 8);                strncpy(geozVers, v, geozVersLength - 1);                if (performUpload) {                    logINFO(LOGSRC,"[line %d] Setting Geozone version: %s [%d]", line, geozVers, strlen(geozVers));                    protSetPropString(PROP_GEOF_VERSION, geozVers);                }            } else            if (strStartsWithIgnoreCase(zr,"@clear")) {                if (performUpload) {                    // "@clear"                    logINFO(LOGSRC,"[line %d] Clear existing Geozones ...", line);                    UInt8 rmv = (UInt8)GEOF_CMD_REMOVE;                    protSetPropBinary(PROP_CMD_GEOF_ADMIN, &rmv, 1);                    binResetBuffer(dst); // remove anything we may already have in the packet buffer                    usedZones = 0;                }            } else            if (strStartsWithIgnoreCase(zr,"@save")) {                // "@save"                logINFO(LOGSRC,"[line %d] Saving Geozones ...", line);                if (BUFFER_DATA_LENGTH(dst) > 0) {                    // flush remaining zones we have in the buffer                    protSetPropBinary(PROP_CMD_GEOF_ADMIN, BUFFER_PTR(dst), BUFFER_DATA_LENGTH(dst));                    binResetBuffer(dst);                }                // tell client to save to disk                UInt8 save = (UInt8)GEOF_CMD_SAVE;                protSetPropBinary(PROP_CMD_GEOF_ADMIN, &save, 1);                autoSave = utFalse; // file contains an explicit '@save', do not autosave below            } else            if (strStartsWithIgnoreCase(zr,"@nosave")) {                // "@nosave"                autoSave = utFalse; // file specified that geozones should not be autosaved            } else {                logERROR(LOGSRC,"[line %d] Unrecognized directive: %s", line, zr);            }            continue;        }        /* parse record */        // zoneID,type,radius,lat0,lon0,lat1,lon1        strParseArray(zr, zoneFld, 10);        ServerGeozone_t geozData, *gz = &geozData; // &geozList[usedZones];        gz->zoneID = (GeoZoneID_t)strParseUInt32(zoneFld[0], (UInt32)NO_ZONE);        gz->type   = (UInt16)(strParseUInt32(zoneFld[1], GEOF_DUAL_POINT_RADIUS) & 0x7);        gz->radius = (UInt16)(strParseUInt32(zoneFld[2], 300L) & 0x1FFF); // meters        gz->pt[0].latitude  = strParseDouble(zoneFld[3],  0.0);        gz->pt[0].longitude = strParseDouble(zoneFld[4],  0.0);        gz->pt[1].latitude  = strParseDouble(zoneFld[5],  0.0);        gz->pt[1].longitude = strParseDouble(zoneFld[6],  0.0);#ifdef PRINT_GEOZONE        _printGeozone(gz);#endif        /* validate zone */        if (gz->zoneID <= 0) {            // NO_ZONE ids are not allowed            logERROR(LOGSRC,"[line %d] Invalid ZoneID (must be greater than 0)", line);            continue;        } else        if ((gz->type != 0) && (gz->type != 1)) {            // invalid type            logERROR(LOGSRC,"[line %d] Invalid Zone type (must be either '0' or '1')", line);            continue;        } else        if ((gz->radius <= 0) || (gz->radius > 0x1FFF)) {            // this will only occur if radius is 0, since the size is already bounded            logERROR(LOGSRC,"[line %d] Invalid radius (must be > 0 and <= 8191)", line);            continue;        } else        if ((gz->pt[0].latitude == 0.0) && (gz->pt[0].longitude == 0.0) && (gz->type != 0)) {            // type==0 is the only type that can have a zero Lat/Lng.            logERROR(LOGSRC,"[line %d] Invalid Lat/Lng for specified type (first point)", line);            continue;        } else        if ((gz->pt[1].latitude == 0.0) && (gz->pt[1].longitude == 0.0) && (gz->type != 0)) {            // type==0 is the only type that can have a zero Lat/Lng.            logERROR(LOGSRC,"[line %d] Invalid Lat/Lng for specified type (second point)", line);            continue;        } else        if (((gz->pt[0].latitude != 0.0) || (gz->pt[0].longitude != 0.0)) && !gpsPointIsValid(&(gz->pt[0]))) {            // (90 > Lat > -90) or (180 > Lng > -180) range test failed            logERROR(LOGSRC,"[line %d] Invalid Lat/Lng (first point)", line);            continue;        } else        if (((gz->pt[1].latitude != 0.0) || (gz->pt[1].longitude != 0.0)) && !gpsPointIsValid(&(gz->pt[1]))) {            // (90 > Lat > -90) or (180 > Lng > -180) range test failed            logERROR(LOGSRC,"[line %d] Invalid Lat/Lng (second point)", line);            continue;        }                /* count zone */        usedZones++;        /* packetize and send */        if (performUpload) {            if (BUFFER_DATA_LENGTH(dst) == 0) {                binBufPrintf(dst, "%1x", (UInt32)GEOF_CMD_ADD);            }            encodeGeozone(dst, gz);            if ((BUFFER_DATA_LENGTH(dst) + PACKED_GEOZONE_SIZE) > 255) {                protSetPropBinary(PROP_CMD_GEOF_ADMIN, BUFFER_PTR(dst), BUFFER_DATA_LENGTH(dst));                binResetBuffer(dst);            }        }    }        /* close file */    ioCloseStream(file);    /* finalize upload  */    if (performUpload) {        if (BUFFER_DATA_LENGTH(dst) > 0) {            // flush remaining zones we have in the buffer            protSetPropBinary(PROP_CMD_GEOF_ADMIN, BUFFER_PTR(dst), BUFFER_DATA_LENGTH(dst));            binResetBuffer(dst);        }        // tell client to save to disk        if (autoSave) {            logINFO(LOGSRC,"Auto-Saving Geozones ...");            UInt8 save = (UInt8)GEOF_CMD_SAVE;            protSetPropBinary(PROP_CMD_GEOF_ADMIN, &save, 1);        }    }    /* return the number of loaded zones */    logINFO(LOGSRC,"Loaded %u Geozones", usedZones);    return usedZones;}// ----------------------------------------------------------------------------/* parse and upload geozones to client */utBool geozUploadGeozones(const char *file){    return _uploadFile(file, utTrue);}// ----------------------------------------------------------------------------#endif // INCLUDE_GEOZONE

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
精品视频在线视频| 色av成人天堂桃色av| 亚洲国产欧美日韩另类综合 | 精品国产区一区| 在线综合视频播放| 欧美日韩亚洲国产综合| 91成人在线精品| 欧洲激情一区二区| 欧洲一区二区三区在线| 欧美中文字幕一区| 欧美欧美午夜aⅴ在线观看| 91国偷自产一区二区开放时间 | 亚洲图片激情小说| 一区二区三区欧美在线观看| 一区二区三区精品视频| 夜夜嗨av一区二区三区四季av| 中文字幕一区二区三区不卡| 18成人在线视频| 亚洲激情综合网| 日韩电影免费在线观看网站| 久久97超碰色| 国产成人激情av| 99这里只有精品| 欧美视频一区在线| 日韩久久久精品| 欧美高清一级片在线观看| 中文字幕制服丝袜成人av | 天天亚洲美女在线视频| 久久99精品久久只有精品| 丰满白嫩尤物一区二区| 色婷婷综合五月| 欧美一区二区三区免费在线看| 2020日本不卡一区二区视频| 国产精品久久夜| 午夜精品久久久久久久久久久 | 亚洲欧美综合在线精品| 亚洲成人免费av| 国产精品香蕉一区二区三区| 色老头久久综合| 久久综合久久99| 亚洲一二三区在线观看| 国产成人精品免费网站| 欧美午夜精品久久久久久超碰 | 亚洲高清在线精品| 国产呦萝稀缺另类资源| 在线观看av一区| 中文字幕不卡在线观看| 久久精品国产亚洲一区二区三区| 成人97人人超碰人人99| 欧美不卡一二三| 亚洲综合久久av| 成人永久免费视频| 欧美大片在线观看一区| 亚洲高清免费观看高清完整版在线观看 | 国产精品久久久久久久蜜臀| 麻豆精品视频在线观看| 欧美日韩激情一区二区三区| 国产精品传媒在线| 国产精品一品视频| 欧美成人国产一区二区| 亚洲va国产天堂va久久en| 91在线免费看| 国产人妖乱国产精品人妖| 蜜臀久久99精品久久久久久9| 色999日韩国产欧美一区二区| 国产精品日日摸夜夜摸av| 久久黄色级2电影| 制服丝袜成人动漫| 亚洲成av人**亚洲成av**| 在线日韩国产精品| 亚洲美女免费视频| 99精品欧美一区二区三区小说| 国产夜色精品一区二区av| 久久99热国产| 欧美成人精精品一区二区频| 另类人妖一区二区av| 欧美一区二区高清| 蜜桃一区二区三区在线观看| 日韩一区二区中文字幕| 美女视频一区二区| 精品国产在天天线2019| 激情六月婷婷综合| 久久久噜噜噜久久中文字幕色伊伊 | 97精品国产97久久久久久久久久久久 | 亚洲成在线观看| 9191久久久久久久久久久| 日韩高清欧美激情| 日韩精品综合一本久道在线视频| 日本aⅴ亚洲精品中文乱码| 91精品国产一区二区| 美女尤物国产一区| 欧美激情一区三区| 97久久精品人人做人人爽| 亚洲在线观看免费视频| 91.成人天堂一区| 精品中文字幕一区二区| 国产日韩精品一区二区三区在线| 丁香六月久久综合狠狠色| 中文字幕亚洲欧美在线不卡| 欧美亚洲日本一区| 久久成人久久爱| 国产精品乱人伦一区二区| 色综合久久中文综合久久牛| 日韩国产一二三区| 久久久久久久久久久久久女国产乱| 国产福利一区二区三区视频| 亚洲精品欧美在线| 欧美不卡一二三| 色综合天天综合色综合av | 日韩三级视频中文字幕| 国产精品影视天天线| 综合分类小说区另类春色亚洲小说欧美| 在线观看日韩高清av| 狠狠色狠狠色综合| 一区二区三区中文字幕电影| 欧美成人综合网站| 色婷婷av一区二区三区大白胸| 久久9热精品视频| 亚洲综合免费观看高清在线观看| 精品88久久久久88久久久| 91老师国产黑色丝袜在线| 美女任你摸久久| 亚洲精品高清在线| 欧美韩日一区二区三区| 91精品国产综合久久久久久漫画| 成人av中文字幕| 麻豆一区二区三| 亚洲国产精品久久艾草纯爱| 日本一区二区免费在线| 4438x成人网最大色成网站| av一本久道久久综合久久鬼色| 美国一区二区三区在线播放| 一区二区三区日韩| ...xxx性欧美| 中国色在线观看另类| 亚洲精品一区二区三区四区高清 | 欧美日韩久久一区二区| 波多野结衣在线aⅴ中文字幕不卡| 免费成人在线网站| 日韩va欧美va亚洲va久久| 亚洲综合在线五月| 国产精品蜜臀av| 久久精品一区四区| 久久久三级国产网站| 精品国产百合女同互慰| 欧美一级片免费看| 欧美放荡的少妇| 精品视频资源站| 欧美日韩久久久一区| 欧美日韩一区三区四区| 色播五月激情综合网| 91黄视频在线观看| 欧美伊人久久久久久久久影院 | 日韩女优制服丝袜电影| 欧美猛男超大videosgay| 欧美亚洲日本国产| 欧美日韩综合色| 欧美精品在线观看一区二区| 欧美日本韩国一区| 91精品国产aⅴ一区二区| 91精品国产欧美日韩| 91.com视频| 精品国产乱码久久久久久浪潮| 日韩欧美成人午夜| 精品99一区二区三区| 久久久久国产一区二区三区四区| 久久精品夜色噜噜亚洲a∨| 国产日韩在线不卡| 国产精品卡一卡二| 亚洲一区欧美一区| 蜜臀久久久久久久| 久久精品国产澳门| 成人免费高清在线观看| 色综合中文字幕国产| 欧美人妇做爰xxxⅹ性高电影 | 床上的激情91.| a级高清视频欧美日韩| 色综合久久久久久久| 欧美日韩亚洲综合一区二区三区| 欧美一级高清片| 亚洲国产精品精华液2区45| 亚洲精品成人天堂一二三| 日本大胆欧美人术艺术动态| 国产成人h网站| 欧美综合在线视频| 337p日本欧洲亚洲大胆色噜噜| 国产精品久久毛片av大全日韩| 亚洲成a人v欧美综合天堂下载| 韩国欧美国产1区| 99精品视频在线免费观看| 欧美一区二区视频网站| 国产精品美女久久福利网站| 爽爽淫人综合网网站| 国产v日产∨综合v精品视频| 欧美午夜精品一区| 久久精品视频一区| 丝瓜av网站精品一区二区| 99久久国产综合精品女不卡| 欧美tickle裸体挠脚心vk| 亚洲在线一区二区三区|