您当前的位置:首页 > IT编程 > C++
| C语言 | Java | VB | VC | python | Android | TensorFlow | C++ | oracle | 学术与代码 | cnn卷积神经网络 | gnn | 图像修复 | Keras | 数据集 | Neo4j | 自然语言处理 | 深度学习 | 医学CAD | 医学影像 | 超参数 | pointnet | pytorch | 异常检测 | Transformers | 情感分类 | 知识图谱 |

自学教程:C++ IsItemIn函数代码示例

51自学网 2021-06-01 21:41:37
  C++
这篇教程C++ IsItemIn函数代码示例写得很实用,希望能帮到您。

本文整理汇总了C++中IsItemIn函数的典型用法代码示例。如果您正苦于以下问题:C++ IsItemIn函数的具体用法?C++ IsItemIn怎么用?C++ IsItemIn使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。

在下文中一共展示了IsItemIn函数的30个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的C++代码示例。

示例1: test_purge_old_connections_purge_middle

static void test_purge_old_connections_purge_middle(void){    const time_t time_now = 100000;    Item *connections = NULL;    char time_str[64];    snprintf(time_str, sizeof(time_str), "%ld", time_now - CONNECTION_MAX_AGE_SECONDS);    PrependItem(&connections, "123.123.123.3", time_str);    snprintf(time_str, sizeof(time_str), "%ld", time_now - CONNECTION_MAX_AGE_SECONDS - 1);    PrependItem(&connections, "123.123.123.2", time_str);    snprintf(time_str, sizeof(time_str), "%ld", time_now - CONNECTION_MAX_AGE_SECONDS + 100);    PrependItem(&connections, "123.123.123.1", time_str);    assert_int_equal(ListLen(connections), 3);    PurgeOldConnections(&connections, time_now);    assert_int_equal(ListLen(connections), 2);    assert_true(IsItemIn(connections, "123.123.123.1"));    assert_false(IsItemIn(connections, "123.123.123.2"));    assert_true(IsItemIn(connections, "123.123.123.3"));    DeleteItemList(connections);}
开发者ID:JarleB,项目名称:core,代码行数:28,


示例2: EvalContextHeapAddAbort

void EvalContextHeapAddAbort(EvalContext *ctx, const char *context, const char *activated_on_context){    if (!IsItemIn(ctx->heap_abort, context))    {        AppendItem(&ctx->heap_abort, context, activated_on_context);    }}
开发者ID:shaunamarie,项目名称:core,代码行数:7,


示例3: CheckParseOpts

static SyntaxTypeMatch CheckParseOpts(const char *lval, const char *s, const char *range){    Item *split;/* List/menu types are separated by comma str "a,b,c,..." */    CfDebug("/nCheckParseOpts(%s => %s/%s)/n", lval, s, range);    if (IsNakedVar(s, '@') || IsNakedVar(s, '$'))    {        return SYNTAX_TYPE_MATCH_ERROR_UNEXPANDED;    }    split = SplitString(range, ',');    if (!IsItemIn(split, s))    {        DeleteItemList(split);        return SYNTAX_TYPE_MATCH_ERROR_OPTS_OUT_OF_RANGE;    }    DeleteItemList(split);    return SYNTAX_TYPE_MATCH_OK;}
开发者ID:jooooooon,项目名称:core,代码行数:25,


示例4: EvalContextHeapAddAbortCurrentBundle

void EvalContextHeapAddAbortCurrentBundle(EvalContext *ctx, const char *context, const char *activated_on_context){    if (!IsItemIn(ctx->heap_abort_current_bundle, context))    {        AppendItem(&ctx->heap_abort_current_bundle, context, activated_on_context);    }}
开发者ID:shaunamarie,项目名称:core,代码行数:7,


示例5: RelevantBundle

int RelevantBundle(char *agent,char *blocktype){   struct Item *ip;    if (strcmp(agent,CF_AGENTTYPES[cf_common]) == 0 || strcmp(CF_COMMONC,P.blocktype) == 0)    {        return true;    }    /* Here are some additional bundle types handled by cfAgent */    ip = SplitString("edit_line,edit_xml",',');    if (strcmp(agent,CF_AGENTTYPES[cf_agent]) == 0)    {        if (IsItemIn(ip,blocktype))        {            DeleteItemList(ip);            return true;        }    }    DeleteItemList(ip);    return false;}
开发者ID:Kegeruneku,项目名称:Cfengine-debian,代码行数:25,


示例6: AddInstallable

void AddInstallable(char *classlist){ char *sp, currentitem[CF_MAXVARSIZE];if (classlist == NULL)   {   return;   }Debug("AddInstallable(%s)/n",classlist);   for (sp = classlist; *sp != '/0'; sp++)   {   currentitem[0] = '/0';   sscanf(sp,"%[^,:.]",currentitem);   sp += strlen(currentitem);   if (! IsItemIn(VALLADDCLASSES,currentitem))      {      AppendItem(&VALLADDCLASSES,currentitem,NULL);      }   if (*sp == '/0')      {      break;      }   }}
开发者ID:AsherBond,项目名称:cf22cf3,代码行数:30,


示例7: ArchiveToRepository

int ArchiveToRepository(const char *file, Attributes attr, Promise *pp, const ReportContext *report_context) /* Returns true if the file was backup up and false if not */{    char destination[CF_BUFSIZE];    struct stat sb, dsb;    if (!GetRepositoryPath(file, attr, destination))    {        return false;    }    if (attr.copy.backup == cfa_nobackup)    {        return true;    }    if (IsItemIn(VREPOSLIST, file))    {        CfOut(OUTPUT_LEVEL_INFORM, "",              "The file %s has already been moved to the repository once. Multiple update will cause loss of backup.",              file);        return true;    }    ThreadLock(cft_getaddr);    PrependItemList(&VREPOSLIST, file);    ThreadUnlock(cft_getaddr);    CfDebug("Repository(%s)/n", file);        JoinPath(destination, CanonifyName(file));    if (!MakeParentDirectory(destination, attr.move_obstructions, report_context))    {    }    if (cfstat(file, &sb) == -1)    {        CfDebug("File %s promised to archive to the repository but it disappeared!/n", file);        return true;    }    cfstat(destination, &dsb);    CheckForFileHoles(&sb, pp);    if (pp && CopyRegularFileDisk(file, destination, pp->makeholes))    {        CfOut(OUTPUT_LEVEL_INFORM, "", "Moved %s to repository location %s/n", file, destination);        return true;    }    else    {        CfOut(OUTPUT_LEVEL_INFORM, "", "Failed to move %s to repository location %s/n", file, destination);        return false;    }}
开发者ID:FancsalMelinda,项目名称:core,代码行数:57,


示例8: IncrementCounter

static void IncrementCounter(Item **list, char *name){    if (!IsItemIn(*list, name))    {        AppendItem(list, name, "");    }    IncrementItemListCounter(*list, name);}
开发者ID:salewski,项目名称:cfengine-core,代码行数:9,


示例9: AllowedUser

int AllowedUser(char *user){    if (IsItemIn(SV.allowuserlist, user))    {        Log(LOG_LEVEL_VERBOSE, "User %s granted connection privileges", user);        return true;    }    Log(LOG_LEVEL_VERBOSE, "User %s is not allowed on this server", user);    return false;}
开发者ID:fabix,项目名称:core,代码行数:11,


示例10: ArchiveToRepository

int ArchiveToRepository(const char *file, Attributes attr) /* Returns true if the file was backup up and false if not */{    char destination[CF_BUFSIZE];    struct stat sb, dsb;    if (!GetRepositoryPath(file, attr, destination))    {        return false;    }    if (attr.copy.backup == BACKUP_OPTION_NO_BACKUP)    {        return true;    }    if (IsItemIn(VREPOSLIST, file))    {        Log(LOG_LEVEL_INFO,            "The file '%s' has already been moved to the repository once. Multiple update will cause loss of backup.",              file);        return true;    }    ThreadLock(cft_getaddr);    PrependItemList(&VREPOSLIST, file);    ThreadUnlock(cft_getaddr);        JoinPath(destination, CanonifyName(file));    if (!MakeParentDirectory(destination, attr.move_obstructions))    {    }    if (stat(file, &sb) == -1)    {        Log(LOG_LEVEL_DEBUG, "File '%s' promised to archive to the repository but it disappeared!", file);        return true;    }    stat(destination, &dsb);    if (CopyRegularFileDisk(file, destination))    {        Log(LOG_LEVEL_INFO, "Moved '%s' to repository location '%s'", file, destination);        return true;    }    else    {        Log(LOG_LEVEL_INFO, "Failed to move '%s' to repository location '%s'", file, destination);        return false;    }}
开发者ID:ajlill,项目名称:core,代码行数:53,


示例11: GetSysUsers

static bool GetSysUsers( int *userListSz, int *numRootProcs, int *numOtherProcs){    FILE *fp;    char user[CF_BUFSIZE];    char vbuff[CF_BUFSIZE];    char cbuff[CF_BUFSIZE];#if defined(__sun)    xsnprintf(cbuff, CF_BUFSIZE, "/bin/ps -eo user > %s/users.txt", CFWORKDIR);#elif defined(_AIX)    xsnprintf(cbuff, CF_BUFSIZE, "/bin/ps -N -eo user > %s/users.txt", CFWORKDIR);#elif defined(__linux__)    xsnprintf(cbuff, CF_BUFSIZE, "/bin/ps -eo user > %s/users.txt", CFWORKDIR);#else    assert_true(1);    return false;#endif    Item *userList = NULL;    system(cbuff);    xsnprintf(cbuff, CF_BUFSIZE, "%s/users.txt", CFWORKDIR);    if ((fp = fopen(cbuff, "r")) == NULL)    {        return false;    }    while (fgets(vbuff, CF_BUFSIZE, fp) != NULL)    {        sscanf(vbuff, "%s", user);        if (strcmp(user, "USER") == 0)        {            continue;        }        if (!IsItemIn(userList, user))        {            PrependItem(&userList, user, NULL);            (*userListSz)++;        }        if (strcmp(user, "root") == 0)        {            (*numRootProcs)++;        }        else        {            (*numOtherProcs)++;        }    }    fclose(fp);    return true;}
开发者ID:Kegeruneku,项目名称:core,代码行数:52,


示例12: SetNetworkEntropyClasses

static void SetNetworkEntropyClasses(const char *service, const char *direction, const Item *list){    const Item *ip;    Item *addresses = NULL;    double entropy;    for (ip = list; ip != NULL; ip = ip->next)    {        if (strlen(ip->name) > 0)        {            char local[CF_BUFSIZE];            char remote[CF_BUFSIZE];            char vbuff[CF_BUFSIZE];            char *sp;            if (strncmp(ip->name, "tcp", 3) == 0)            {                sscanf(ip->name, "%*s %*s %*s %s %s", local, remote);   /* linux-like */            }            else            {                sscanf(ip->name, "%s %s", local, remote);       /* solaris-like */            }            strncpy(vbuff, remote, CF_BUFSIZE - 1);            vbuff[CF_BUFSIZE-1] = '/0';            for (sp = vbuff + strlen(vbuff) - 1; isdigit((int) *sp) && (sp > vbuff); sp--)            {            }            *sp = '/0';            if (!IsItemIn(addresses, vbuff))            {                AppendItem(&addresses, vbuff, "");            }            IncrementItemListCounter(addresses, vbuff);        }    }    entropy = MonEntropyCalculate(addresses);    MonEntropyClassesSet(service, direction, entropy);    DeleteItemList(addresses);}
开发者ID:shreyu82,项目名称:core,代码行数:46,


示例13: ListsCompare

bool ListsCompare(const Item *list1, const Item *list2){    if (ListLen(list1) != ListLen(list2))    {        return false;    }    for (const Item *ptr = list1; ptr != NULL; ptr = ptr->next)    {        if (IsItemIn(list2, ptr->name) == false)        {            return false;        }    }    return true;}
开发者ID:lpefferkorn,项目名称:core,代码行数:17,


示例14: Unix_GatherProcessUsers

static int Unix_GatherProcessUsers(struct Item **userList, int *userListSz, int *numRootProcs, int *numOtherProcs){FILE *pp;char pscomm[CF_BUFSIZE];char user[CF_MAXVARSIZE];char vbuff[CF_BUFSIZE];snprintf(pscomm,CF_BUFSIZE,"%s %s",VPSCOMM[VSYSTEMHARDCLASS],VPSOPTS[VSYSTEMHARDCLASS]);if ((pp = cf_popen(pscomm,"r")) == NULL)   {   return false;   }CfReadLine(vbuff,CF_BUFSIZE,pp); while (!feof(pp))   {   CfReadLine(vbuff,CF_BUFSIZE,pp);   sscanf(vbuff,"%s",user);   if (strcmp(user,"USER") == 0)      {      continue;      }   if (!IsItemIn(*userList,user))      {      PrependItem(userList,user,NULL);      (*userListSz)++;      }   if (strcmp(user,"root") == 0)      {      (*numRootProcs)++;      }   else      {      (*numOtherProcs)++;      }   }cf_pclose(pp);return true;}
开发者ID:Kegeruneku,项目名称:Cfengine-debian,代码行数:45,


示例15: ListSubsetOfList

/** * Checks whether list1 is a subset of list2, i.e. every entry in list1 must * be found in list2. */bool ListSubsetOfList(const Item *list1, const Item *list2){    const Item *list1_ptr = list1;    CYCLE_DECLARE(list1_ptr, slow, toggle);    while (list1_ptr != NULL)    {        if (!IsItemIn(list2, list1_ptr->name))        {            return false;        }        list1_ptr = list1_ptr->next;        CYCLE_CHECK(list1_ptr, slow, toggle);    }    return true;               /* all elements of list1 were found in list2 */}
开发者ID:markburgess,项目名称:Concept-CFEngine-fork,代码行数:22,


示例16: ListsCompare

bool ListsCompare(const Item *list1, const Item *list2){    if (ListLen(list1) != ListLen(list2))    {        return false;    }    const Item *ptr = list1;    CYCLE_DECLARE(ptr, slow, toggle);    while (ptr != NULL)    {        if (IsItemIn(list2, ptr->name) == false)        {            return false;        }        ptr = ptr->next;        CYCLE_CHECK(ptr, slow, toggle);    }    return true;}
开发者ID:awsiv,项目名称:core,代码行数:21,


示例17: CheckParseOpts

static void CheckParseOpts(char *lval, char *s, const char *range){    Item *split;    int err = false;    char output[CF_BUFSIZE];/* List/menu types are separated by comma str "a,b,c,..." */    CfDebug("/nCheckParseOpts(%s => %s/%s)/n", lval, s, range);    if (s == NULL)    {        return;    }    if (IsNakedVar(s, '@') || IsNakedVar(s, '$'))    {        CfDebug("Validation: Unable to verify variable expansion of %s at this stage/n", s);        return;    }    split = SplitString(range, ',');    if (!IsItemIn(split, s))    {        snprintf(output, CF_BUFSIZE,                 "Selection on rhs of lval /'%s/' given as /'%s/' is out of bounds, should be in [%s]", lval, s, range);        ReportError(output);        err = true;    }    DeleteItemList(split);    if (!err)    {        CfDebug("CheckParseOpts - syntax verified/n/n");    }}
开发者ID:dnaeon,项目名称:core,代码行数:38,


示例18: ShowState

static void ShowState(char *type){    struct stat statbuf;    char buffer[CF_BUFSIZE], vbuff[CF_BUFSIZE], assemble[CF_BUFSIZE];    Item *addresses = NULL, *saddresses = NULL, *ip;    int i = 0, tot = 0, min_signal_diversity = 1, conns = 1;    int maxlen = 0, count;    double *dist = NULL, S = 0.0;    char *offset = NULL;    FILE *fp;    CfDebug("ShowState(%s)/n", type);    snprintf(buffer, CF_BUFSIZE - 1, "%s/state/cf_%s", CFWORKDIR, type);    if (cfstat(buffer, &statbuf) == 0)    {        if ((fp = fopen(buffer, "r")) == NULL)        {            CfOut(cf_inform, "fopen", "Could not open state memory %s/n", buffer);            return;        }        while (!feof(fp))        {            char local[CF_BUFSIZE], remote[CF_BUFSIZE];            buffer[0] = local[0] = remote[0] = '/0';            memset(vbuff, 0, CF_BUFSIZE);            fgets(buffer, CF_BUFSIZE, fp);            if (strlen(buffer) > 0)            {                CfOut(cf_verbose, "", "(%2d) %s", conns, buffer);                if (IsSocketType(type))                {                    if (strncmp(type, "incoming", 8) == 0 || strncmp(type, "outgoing", 8) == 0)                    {                        if (strncmp(buffer, "tcp", 3) == 0)                        {                            sscanf(buffer, "%*s %*s %*s %s %s", local, remote); /* linux-like */                        }                        else                        {                            sscanf(buffer, "%s %s", local, remote);     /* solaris-like */                        }                        strncpy(vbuff, remote, CF_BUFSIZE - 1);                        DePort(vbuff);                    }                }                else if (IsTCPType(type))                {                    count = 1;                    sscanf(buffer, "%d %[^/n]", &count, remote);                    AppendItem(&addresses, remote, "");                    SetItemListCounter(addresses, remote, count);                    conns += count;                    continue;                }                else                {                    /* If we get here this is a process thing */                    if (offset == NULL)                    {                        if ((offset = strstr(buffer, "CMD")))                        {                        }                        else if ((offset = strstr(buffer, "COMMAND")))                        {                        }                        if (offset == NULL)                        {                            continue;                        }                    }                    strncpy(vbuff, offset, CF_BUFSIZE - 1);                    Chop(vbuff);                }                if (!IsItemIn(addresses, vbuff))                {                    conns++;                    AppendItem(&addresses, vbuff, "");                    IncrementItemListCounter(addresses, vbuff);                }                else                {                    conns++;                    IncrementItemListCounter(addresses, vbuff);                }            }        }        fclose(fp);        conns--;//.........这里部分代码省略.........
开发者ID:frerich,项目名称:core,代码行数:101,


示例19: FileInRepository

bool FileInRepository(const char *filename){    return IsItemIn(VREPOSLIST, filename);}
开发者ID:GregorioDiStefano,项目名称:core,代码行数:4,


示例20: KeepPromises

void KeepPromises(Policy *policy, ExecConfig *config){    bool schedule_is_specified = false;    Seq *constraints = ControlBodyConstraints(policy, AGENT_TYPE_EXECUTOR);    if (constraints)    {        for (size_t i = 0; i < SeqLength(constraints); i++)        {            Constraint *cp = SeqAt(constraints, i);            if (IsExcluded(cp->classes, NULL))            {                continue;            }            Rval retval;            if (GetVariable("control_executor", cp->lval, &retval) == DATA_TYPE_NONE)            {                CfOut(OUTPUT_LEVEL_ERROR, "", "Unknown lval %s in exec control body", cp->lval);                continue;            }            if (strcmp(cp->lval, CFEX_CONTROLBODY[cfex_mailfrom].lval) == 0)            {                free(config->mail_from_address);                config->mail_from_address = SafeStringDuplicate(retval.item);                CfDebug("mailfrom = %s/n", config->mail_from_address);            }            if (strcmp(cp->lval, CFEX_CONTROLBODY[cfex_mailto].lval) == 0)            {                free(config->mail_to_address);                config->mail_to_address = SafeStringDuplicate(retval.item);                CfDebug("mailto = %s/n", config->mail_to_address);            }            if (strcmp(cp->lval, CFEX_CONTROLBODY[cfex_smtpserver].lval) == 0)            {                free(config->mail_server);                config->mail_server = SafeStringDuplicate(retval.item);                CfDebug("smtpserver = %s/n", config->mail_server);            }            if (strcmp(cp->lval, CFEX_CONTROLBODY[cfex_execcommand].lval) == 0)            {                free(config->exec_command);                config->exec_command = SafeStringDuplicate(retval.item);                CfDebug("exec_command = %s/n", config->exec_command);            }            if (strcmp(cp->lval, CFEX_CONTROLBODY[cfex_agent_expireafter].lval) == 0)            {                config->agent_expireafter = IntFromString(retval.item);                CfDebug("agent_expireafter = %d/n", config->agent_expireafter);            }            if (strcmp(cp->lval, CFEX_CONTROLBODY[cfex_executorfacility].lval) == 0)            {                SetFacility(retval.item);                continue;            }            if (strcmp(cp->lval, CFEX_CONTROLBODY[cfex_mailmaxlines].lval) == 0)            {                config->mail_max_lines = IntFromString(retval.item);                CfDebug("maxlines = %d/n", config->mail_max_lines);            }            if (strcmp(cp->lval, CFEX_CONTROLBODY[cfex_splaytime].lval) == 0)            {                int time = IntFromString(RvalScalarValue(retval));                SPLAYTIME = (int) (time * SECONDS_PER_MINUTE * GetSplay());            }            if (strcmp(cp->lval, CFEX_CONTROLBODY[cfex_schedule].lval) == 0)            {                CfDebug("Loading user-defined schedule.../n");                DeleteItemList(SCHEDULE);                SCHEDULE = NULL;                schedule_is_specified = true;                for (const Rlist *rp = retval.item; rp; rp = rp->next)                {                    if (!IsItemIn(SCHEDULE, rp->item))                    {                        AppendItem(&SCHEDULE, rp->item, NULL);                    }                }            }        }    }    if (!schedule_is_specified)    {        LoadDefaultSchedule();    }}
开发者ID:FancsalMelinda,项目名称:core,代码行数:99,


示例21: GetSysUsers

static bool GetSysUsers( int *userListSz, int *numRootProcs, int *numOtherProcs){    FILE *fp;    char user[CF_BUFSIZE];    char vbuff[CF_BUFSIZE];    char cbuff[CF_BUFSIZE];    /*     * The best would be to ask only "user" field from ps, but we are asking     * for "user,pid". The reason is that we try to mimic cf-monitord's     * behaviour, else a different number of users might be detected by the     * test, as printing "user,pid" truncates the user column.  TODO fix the     * ps command to use only "-o user" in both mon_processes.c and this test.     */#if defined(__sun)    xsnprintf(cbuff, CF_BUFSIZE, "/bin/ps -eo user,pid > %s/users.txt", CFWORKDIR);#elif defined(_AIX)    xsnprintf(cbuff, CF_BUFSIZE, "/bin/ps -N -eo user,pid > %s/users.txt", CFWORKDIR);#elif defined(__hpux)    xsnprintf(cbuff, CF_BUFSIZE, "UNIX95=1  /bin/ps -eo user,pid > %s/users.txt", CFWORKDIR);    /* SKIP on HP-UX since cf-monitord doesn't count processes correctly! */    return false;#else    xsnprintf(cbuff, CF_BUFSIZE, "ps -eo user:30,pid > %s/users.txt", CFWORKDIR);#endif    Item *userList = NULL;    system(cbuff);    xsnprintf(cbuff, CF_BUFSIZE, "%s/users.txt", CFWORKDIR);    if ((fp = fopen(cbuff, "r")) == NULL)    {        return false;    }    while (fgets(vbuff, CF_BUFSIZE, fp) != NULL)    {        int ret = sscanf(vbuff, " %s ", user);        if (ret != 1 ||            strcmp(user, "") == 0 ||            strcmp(user, "USER") == 0 ||            isdigit(user[0]))        {            continue;        }        if (!IsItemIn(userList, user))        {            PrependItem(&userList, user, NULL);            (*userListSz)++;        }        if (strcmp(user, "root") == 0)        {            (*numRootProcs)++;        }        else        {            (*numOtherProcs)++;        }    }    fclose(fp);    if (LogGetGlobalLevel() >= LOG_LEVEL_DEBUG)    {        char *s = ItemList2CSV(userList);        Log(LOG_LEVEL_DEBUG, "Users in the process table detected from the test: (%s)", s);        free(s);    }    DeleteItemList(userList);    return true;}
开发者ID:cfengine,项目名称:core,代码行数:71,


示例22: IsLastSeenCoherent

/** * @brief check whether the lastseen DB is coherent or not *  * A DB is coherent mainly if all the entries are valid and if there is * a strict one-to-one correspondance between hosts and key digests * (whether in MD5 or SHA1 format). * * @retval true if the lastseen DB is coherent, false otherwise */bool IsLastSeenCoherent(void){    DBHandle *db;    DBCursor *cursor;    bool res = true;    if (!OpenDB(&db, dbid_lastseen))    {        Log(LOG_LEVEL_ERR, "Unable to open lastseen database");        return false;    }    if (!NewDBCursor(db, &cursor))    {        Log(LOG_LEVEL_ERR, "Unable to create lastseen database cursor");        CloseDB(db);        return false;    }    char *key;    void *value;    int ksize, vsize;    Item *qkeys=NULL;    Item *akeys=NULL;    Item *kkeys=NULL;    Item *ahosts=NULL;    Item *khosts=NULL;    char val[CF_BUFSIZE];    while (NextDB(cursor, &key, &ksize, &value, &vsize))    {        if (key[0] != 'k' && key[0] != 'q' && key[0] != 'a' )        {            continue;        }        if (key[0] == 'q' )        {            if (strncmp(key,"qiSHA=",5)==0 || strncmp(key,"qoSHA=",5)==0 ||                strncmp(key,"qiMD5=",5)==0 || strncmp(key,"qoMD5=",5)==0)            {                if (IsItemIn(qkeys, key+2)==false)                {                    PrependItem(&qkeys, key+2, NULL);                }            }        }        if (key[0] == 'k' )        {            if (strncmp(key, "kSHA=", 4)==0 || strncmp(key, "kMD5=", 4)==0)            {                if (IsItemIn(kkeys, key+1)==false)                {                    PrependItem(&kkeys, key+1, NULL);                }                if (ReadDB(db, key, &val, vsize))                {                    if (IsItemIn(khosts, val)==false)                    {                        PrependItem(&khosts, val, NULL);                    }                }            }        }        if (key[0] == 'a' )        {            if (IsItemIn(ahosts, key+1)==false)            {                PrependItem(&ahosts, key+1, NULL);            }            if (ReadDB(db, key, &val, vsize))            {                if (IsItemIn(akeys, val)==false)                {                    PrependItem(&akeys, val, NULL);                }            }        }    }    DeleteDBCursor(cursor);    CloseDB(db);    if (ListsCompare(ahosts, khosts) == false)    {        res = false;        goto clean;    }//.........这里部分代码省略.........
开发者ID:JarleB,项目名称:core,代码行数:101,


示例23: ArchiveToRepository

int ArchiveToRepository(char *file,struct Attributes attr,struct Promise *pp) /* Returns true if the file was backup up and false if not */{ char destination[CF_BUFSIZE];  char localrepository[CF_BUFSIZE];   char node[CF_BUFSIZE];  struct stat sb, dsb;  char *sp;if (attr.repository == NULL && VREPOSITORY == NULL)   {   return false;   }if (attr.repository != NULL)   {   strncpy(localrepository,attr.repository,CF_BUFSIZE);   }else if (VREPOSITORY != NULL)   {   strncpy(localrepository,VREPOSITORY,CF_BUFSIZE);   }if (attr.copy.backup == cfa_nobackup)   {   return true;   }if (IsItemIn(VREPOSLIST,file))   {   CfOut(cf_inform,"","The file %s has already been moved to the repository once. Multiple update will cause loss of backup.",file);   return true;   }ThreadLock(cft_getaddr);PrependItemList(&VREPOSLIST,file);ThreadUnlock(cft_getaddr);Debug("Repository(%s)/n",file);strcpy (node,file);destination[0] = '/0';for (sp = node; *sp != '/0'; sp++)   {   if (*sp == FILE_SEPARATOR)      {      *sp = REPOSCHAR;      }   }strncpy(destination,localrepository,CF_BUFSIZE-2);if (!JoinPath(destination,node))   {   CfOut(cf_error,"","Internal limit: Buffer ran out of space for long filename/n");   return false;   }if (!MakeParentDirectory(destination,attr.move_obstructions))   {   }if (cfstat(file,&sb) == -1)   {   Debug("File %s promised to archive to the repository but it disappeared!/n",file);   return true;   }cfstat(destination,&dsb);attr.copy.servers = NULL;attr.copy.backup = cfa_repos_store; // cfa_nobackup;attr.copy.stealth = false;attr.copy.verify = false;attr.copy.preserve = false;CheckForFileHoles(&sb,pp);if (CopyRegularFileDisk(file,destination,attr,pp))   {   CfOut(cf_inform,"","Moved %s to repository location %s/n",file,destination);   return true;   }else   {   CfOut(cf_inform,"","Failed to move %s to repository location %s/n",file,destination);   return false;   }}
开发者ID:Kegeruneku,项目名称:Cfengine-debian,代码行数:92,


示例24: KeepControlPromises

//.........这里部分代码省略.........            {                COLLECT_INTERVAL = (int) 60 * IntFromString(value);                Log(LOG_LEVEL_VERBOSE,                    "Setting call_collect_interval to %d (seconds)",                    COLLECT_INTERVAL);            }            else if (IsControlBody(SERVER_CONTROL_LISTEN))            {                SERVER_LISTEN = BooleanFromString(value);                Log(LOG_LEVEL_VERBOSE,                    "Setting server listen to '%s' ",                    SERVER_LISTEN ? "true" : "false");            }            else if (IsControlBody(SERVER_CONTROL_CALL_COLLECT_WINDOW))            {                COLLECT_WINDOW = (int) IntFromString(value);                Log(LOG_LEVEL_VERBOSE,                    "Setting collect_window to %d (seconds)",                    COLLECT_INTERVAL);            }            else if (IsControlBody(SERVER_CONTROL_CF_RUN_COMMAND))            {                strlcpy(CFRUNCOMMAND, value, sizeof(CFRUNCOMMAND));                Log(LOG_LEVEL_VERBOSE,                    "Setting cfruncommand to '%s'",                    CFRUNCOMMAND);            }            else if (IsControlBody(SERVER_CONTROL_ALLOW_CONNECTS))            {                Log(LOG_LEVEL_VERBOSE, "Setting allowing connections from ...");                for (const Rlist *rp = value; rp != NULL; rp = rp->next)                {                    if (!IsItemIn(SV.nonattackerlist, RlistScalarValue(rp)))                    {                        PrependItem(&SV.nonattackerlist, RlistScalarValue(rp), cp->classes);                    }                }            }            else if (IsControlBody(SERVER_CONTROL_DENY_CONNECTS))            {                Log(LOG_LEVEL_VERBOSE, "Setting denying connections from ...");                for (const Rlist *rp = value; rp != NULL; rp = rp->next)                {                    if (!IsItemIn(SV.attackerlist, RlistScalarValue(rp)))                    {                        PrependItem(&SV.attackerlist, RlistScalarValue(rp), cp->classes);                    }                }            }            else if (IsControlBody(SERVER_CONTROL_SKIP_VERIFY))            {                /* Skip. */            }            else if (IsControlBody(SERVER_CONTROL_ALLOW_ALL_CONNECTS))            {                Log(LOG_LEVEL_VERBOSE, "Setting allowing multiple connections from ...");                for (const Rlist *rp = value; rp != NULL; rp = rp->next)                {                    if (!IsItemIn(SV.multiconnlist, RlistScalarValue(rp)))                    {                        PrependItem(&SV.multiconnlist, RlistScalarValue(rp), cp->classes);                    }                }
开发者ID:johndelay,项目名称:core,代码行数:67,


示例25: CheckConstraintTypeMatch

SyntaxTypeMatch CheckConstraintTypeMatch(const char *lval, Rval rval, DataType dt, const char *range, int level){ Rlist *rp; Item *checklist;/* Get type of lval */ switch (rval.type)    {    case RVAL_TYPE_SCALAR:        switch (dt)           {           case CF_DATA_TYPE_STRING_LIST:           case CF_DATA_TYPE_INT_LIST:           case CF_DATA_TYPE_REAL_LIST:           case CF_DATA_TYPE_CONTEXT_LIST:           case CF_DATA_TYPE_OPTION_LIST:               if (level == 0)                  {                  return SYNTAX_TYPE_MATCH_ERROR_GOT_SCALAR;                  }               break;           default:               /* Only lists are incompatible with scalars */               break;           }        break;    case RVAL_TYPE_LIST:        switch (dt)           {           case CF_DATA_TYPE_STRING_LIST:           case CF_DATA_TYPE_INT_LIST:           case CF_DATA_TYPE_REAL_LIST:           case CF_DATA_TYPE_CONTEXT_LIST:           case CF_DATA_TYPE_OPTION_LIST:               break;           default:               return SYNTAX_TYPE_MATCH_ERROR_GOT_LIST;           }        for (rp = (Rlist *) rval.item; rp != NULL; rp = rp->next)           {           SyntaxTypeMatch err = CheckConstraintTypeMatch(lval, rp->val, dt, range, 1);           switch (err)              {              case SYNTAX_TYPE_MATCH_OK:              case SYNTAX_TYPE_MATCH_ERROR_UNEXPANDED:                  break;              default:                  return err;              }           }        return SYNTAX_TYPE_MATCH_OK;    case RVAL_TYPE_FNCALL:        /* Fn-like objects are assumed to be parameterized bundles in these... */        checklist = SplitString("bundlesequence,edit_line,edit_xml,usebundle,service_bundle,home_bundle", ',');        if (!IsItemIn(checklist, lval))           {           SyntaxTypeMatch err = CheckFnCallType(RvalFnCallValue(rval)->name, dt);           DeleteItemList(checklist);           return err;           }        DeleteItemList(checklist);        return SYNTAX_TYPE_MATCH_OK;    case RVAL_TYPE_CONTAINER:        break;    case RVAL_TYPE_NOPROMISEE:        return SYNTAX_TYPE_MATCH_ERROR_GOT_NULL;    }/* If we get here, we have a literal scalar type */ switch (dt)    {    case CF_DATA_TYPE_STRING:    case CF_DATA_TYPE_STRING_LIST:        return CheckParseString(lval, (const char *) rval.item, range);    case CF_DATA_TYPE_INT:    case CF_DATA_TYPE_INT_LIST:        return CheckParseInt(lval, (const char *) rval.item, range);    case CF_DATA_TYPE_REAL:    case CF_DATA_TYPE_REAL_LIST:        return CheckParseReal(lval, (const char *) rval.item, range);    case CF_DATA_TYPE_BODY:    case CF_DATA_TYPE_BUNDLE:    case CF_DATA_TYPE_CONTAINER://.........这里部分代码省略.........
开发者ID:markburgess,项目名称:Cellibrium,代码行数:101,


示例26: ServerEntryPoint

void ServerEntryPoint(EvalContext *ctx, char *ipaddr, ConnectionInfo *info){    char intime[64];    time_t now;    Log(LOG_LEVEL_VERBOSE,        "Obtained IP address of '%s' on socket %d from accept",        ipaddr, ConnectionInfoSocket(info));    if ((SV.nonattackerlist) && (!IsMatchItemIn(SV.nonattackerlist, MapAddress(ipaddr))))    {        Log(LOG_LEVEL_ERR, "Not allowing connection from non-authorized IP '%s'", ipaddr);        cf_closesocket(ConnectionInfoSocket(info));        ConnectionInfoDestroy(&info);        return;    }    if (IsMatchItemIn(SV.attackerlist, MapAddress(ipaddr)))    {        Log(LOG_LEVEL_ERR, "Denying connection from non-authorized IP '%s'", ipaddr);        cf_closesocket(ConnectionInfoSocket(info));        ConnectionInfoDestroy(&info);        return;    }    if ((now = time((time_t *) NULL)) == -1)       {       now = 0;       }    PurgeOldConnections(&SV.connectionlist, now);    if (!IsMatchItemIn(SV.multiconnlist, MapAddress(ipaddr)))    {        if (!ThreadLock(cft_count))        {            return;        }        if (IsItemIn(SV.connectionlist, MapAddress(ipaddr)))        {            ThreadUnlock(cft_count);            Log(LOG_LEVEL_ERR, "Denying repeated connection from '%s'", ipaddr);            cf_closesocket(ConnectionInfoSocket(info));            ConnectionInfoDestroy(&info);            return;        }        ThreadUnlock(cft_count);    }    if (SV.logconns)    {        Log(LOG_LEVEL_INFO, "Accepting connection from %s", ipaddr);    }    else    {        Log(LOG_LEVEL_INFO, "Accepting connection from %s", ipaddr);    }    snprintf(intime, 63, "%d", (int) now);    if (!ThreadLock(cft_count))    {        cf_closesocket(ConnectionInfoSocket(info));        ConnectionInfoDestroy(&info);        return;    }    PrependItem(&SV.connectionlist, MapAddress(ipaddr), intime);    if (!ThreadUnlock(cft_count))    {        cf_closesocket(ConnectionInfoSocket(info));        ConnectionInfoDestroy(&info);        return;    }    SpawnConnection(ctx, ipaddr, info);}
开发者ID:tzz,项目名称:core,代码行数:81,


示例27: KeepControlPromises

//.........这里部分代码省略.........                COLLECT_INTERVAL = (int) 60 * IntFromString(value);                Log(LOG_LEVEL_VERBOSE, "Setting call_collect_interval to %d (seconds)", COLLECT_INTERVAL);                continue;            }            if (strcmp(cp->lval, CFS_CONTROLBODY[SERVER_CONTROL_LISTEN].lval) == 0)            {                SERVER_LISTEN = BooleanFromString(value);                Log(LOG_LEVEL_VERBOSE, "Setting server listen to '%s' ",                      (SERVER_LISTEN)? "true":"false");                continue;            }            if (strcmp(cp->lval, CFS_CONTROLBODY[SERVER_CONTROL_CALL_COLLECT_WINDOW].lval) == 0)            {                COLLECT_WINDOW = (int) IntFromString(value);                Log(LOG_LEVEL_VERBOSE, "Setting collect_window to %d (seconds)", COLLECT_INTERVAL);                continue;            }            if (strcmp(cp->lval, CFS_CONTROLBODY[SERVER_CONTROL_CF_RUN_COMMAND].lval) == 0)            {                strlcpy(CFRUNCOMMAND, value, sizeof(CFRUNCOMMAND));                Log(LOG_LEVEL_VERBOSE, "Setting cfruncommand to '%s'", CFRUNCOMMAND);                continue;            }            if (strcmp(cp->lval, CFS_CONTROLBODY[SERVER_CONTROL_ALLOW_CONNECTS].lval) == 0)            {                Log(LOG_LEVEL_VERBOSE, "Setting allowing connections from ...");                for (const Rlist *rp = value; rp != NULL; rp = rp->next)                {                    if (!IsItemIn(SV.nonattackerlist, RlistScalarValue(rp)))                    {                        AppendItem(&SV.nonattackerlist, RlistScalarValue(rp), cp->classes);                    }                }                continue;            }            if (strcmp(cp->lval, CFS_CONTROLBODY[SERVER_CONTROL_DENY_CONNECTS].lval) == 0)            {                Log(LOG_LEVEL_VERBOSE, "Setting denying connections from ...");                for (const Rlist *rp = value; rp != NULL; rp = rp->next)                {                    if (!IsItemIn(SV.attackerlist, RlistScalarValue(rp)))                    {                        AppendItem(&SV.attackerlist, RlistScalarValue(rp), cp->classes);                    }                }                continue;            }            if (strcmp(cp->lval, CFS_CONTROLBODY[SERVER_CONTROL_SKIP_VERIFY].lval) == 0)            {                continue;            }            if (strcmp(cp->lval, CFS_CONTROLBODY[SERVER_CONTROL_ALLOW_ALL_CONNECTS].lval) == 0)            {                Log(LOG_LEVEL_VERBOSE, "Setting allowing multiple connections from ...");
开发者ID:awsiv,项目名称:core,代码行数:66,


示例28: NoteClassUsage

//.........这里部分代码省略.........    if (!OpenDB(&dbp, dbid_classes))    {        return;    }/* First record the classes that are in use */    for (ip = list; ip != NULL; ip = ip->next)    {        if (ReadDB(dbp, ip->name, &e, sizeof(e)))        {            CfDebug("FOUND %s with %lf/n", ip->name, e.Q.expect);            lastseen = now - e.t;            newe.t = now;            newe.Q = QAverage(e.Q, vtrue, 0.7);        }        else        {            lastseen = 0.0;            newe.t = now;            /* With no data it's 50/50 what we can say */            newe.Q = QDefinite(0.5 * vtrue);        }        if (lastseen > lsea)        {            CfDebug("Class usage record %s expired/n", ip->name);            DeleteDB(dbp, ip->name);        }        else        {            WriteDB(dbp, ip->name, &newe, sizeof(newe));        }    }/* Then update with zero the ones we know about that are not active */    if (purge)    {/* Acquire a cursor for the database and downgrade classes that did not get defined this time*/        if (!NewDBCursor(dbp, &dbcp))        {            CfOut(cf_inform, "", " !! Unable to scan class db");            CloseDB(dbp);            DeleteItemList(list);            return;        }        memset(&entry, 0, sizeof(entry));        while (NextDB(dbp, dbcp, &key, &ksize, &stored, &vsize))        {            time_t then;            char eventname[CF_BUFSIZE];            memset(eventname, 0, CF_BUFSIZE);            strncpy(eventname, (char *) key, ksize);            if (stored != NULL)            {                memcpy(&entry, stored, sizeof(entry));                then = entry.t;                lastseen = now - then;                if (lastseen > lsea)                {                    CfDebug("Class usage record %s expired/n", eventname);                    DBCursorDeleteEntry(dbcp);                }                else if (!IsItemIn(list, eventname))                {                    newe.t = then;                    newe.Q = QAverage(entry.Q, 0, 0.5);                    if (newe.Q.expect <= 0.0001)                    {                        CfDebug("Deleting class %s as %lf is zero/n", eventname, newe.Q.expect);                        DBCursorDeleteEntry(dbcp);                    }                    else                    {                        CfDebug("Downgrading class %s from %lf to %lf/n", eventname, entry.Q.expect, newe.Q.expect);                        DBCursorWriteEntry(dbcp, &newe, sizeof(newe));                    }                }            }        }        DeleteDBCursor(dbp, dbcp);    }    CloseDB(dbp);    DeleteItemList(list);}
开发者ID:pombredanne,项目名称:core,代码行数:101,


示例29: RotateFiles

void RotateFiles(char *name, int number){    int i, fd;    struct stat statbuf;    char from[CF_BUFSIZE], to[CF_BUFSIZE];    if (IsItemIn(ROTATED, name))    {        return;    }    PrependItem(&ROTATED, name, NULL);    if (stat(name, &statbuf) == -1)    {        Log(LOG_LEVEL_VERBOSE, "No access to file %s", name);        return;    }    for (i = number - 1; i > 0; i--)    {        snprintf(from, CF_BUFSIZE, "%s.%d", name, i);        snprintf(to, CF_BUFSIZE, "%s.%d", name, i + 1);        if (rename(from, to) == -1)        {            Log(LOG_LEVEL_DEBUG, "Rename failed in RotateFiles '%s' -> '%s'", name, from);        }        snprintf(from, CF_BUFSIZE, "%s.%d.gz", name, i);        snprintf(to, CF_BUFSIZE, "%s.%d.gz", name, i + 1);        if (rename(from, to) == -1)        {            Log(LOG_LEVEL_DEBUG, "Rename failed in RotateFiles '%s' -> '%s'", name, from);        }        snprintf(from, CF_BUFSIZE, "%s.%d.Z", name, i);        snprintf(to, CF_BUFSIZE, "%s.%d.Z", name, i + 1);        if (rename(from, to) == -1)        {            Log(LOG_LEVEL_DEBUG, "Rename failed in RotateFiles '%s' -> '%s'", name, from);        }        snprintf(from, CF_BUFSIZE, "%s.%d.bz", name, i);        snprintf(to, CF_BUFSIZE, "%s.%d.bz", name, i + 1);        if (rename(from, to) == -1)        {            Log(LOG_LEVEL_DEBUG, "Rename failed in RotateFiles '%s' -> '%s'", name, from);        }        snprintf(from, CF_BUFSIZE, "%s.%d.bz2", name, i);        snprintf(to, CF_BUFSIZE, "%s.%d.bz2", name, i + 1);        if (rename(from, to) == -1)        {            Log(LOG_LEVEL_DEBUG, "Rename failed in RotateFiles '%s' -> '%s'", name, from);        }    }    snprintf(to, CF_BUFSIZE, "%s.1", name);    if (CopyRegularFileDisk(name, to) == false)    {        Log(LOG_LEVEL_DEBUG, "Copy failed in RotateFiles '%s' -> '%s'", name, to);        return;    }    safe_chmod(to, statbuf.st_mode);    if (safe_chown(to, statbuf.st_uid, statbuf.st_gid))    {        UnexpectedError("Failed to chown %s", to);    }    safe_chmod(name, 0600);       /* File must be writable to empty .. */    if ((fd = safe_creat(name, statbuf.st_mode)) == -1)    {        Log(LOG_LEVEL_ERR, "Failed to create new '%s' in disable(rotate). (creat: %s)",            name, GetErrorStr());    }    else    {        if (safe_chown(name, statbuf.st_uid, statbuf.st_gid))  /* NT doesn't have fchown */        {            UnexpectedError("Failed to chown '%s'", name);        }        fchmod(fd, statbuf.st_mode);        close(fd);    }}
开发者ID:rcorrieri,项目名称:core,代码行数:92,


示例30: ConsiderFile

int ConsiderFile(const char *nodename, char *path, Attributes attr, Promise *pp){    int i;    struct stat statbuf;    char vbuff[CF_BUFSIZE];    const char *sp;    static char *skipfiles[] ={        ".",        "..",        "lost+found",        ".cfengine.rm",        NULL    };    if (strlen(nodename) < 1)    {        CfOut(cf_error, "", "Empty (null) filename detected in %s/n", path);        return true;    }    if (IsItemIn(SUSPICIOUSLIST, nodename))    {        struct stat statbuf;        if (cfstat(nodename, &statbuf) != -1)        {            if (S_ISREG(statbuf.st_mode))            {                CfOut(cf_error, "", "Suspicious file %s found in %s/n", nodename, path);                return false;            }        }    }    if (strcmp(nodename, "...") == 0)    {        CfOut(cf_verbose, "", "Possible DFS/FS cell node detected in %s.../n", path);        return true;    }    for (i = 0; skipfiles[i] != NULL; i++)    {        if (strcmp(nodename, skipfiles[i]) == 0)        {            CfDebug("Filename %s/%s is classified as ignorable/n", path, nodename);            return false;        }    }    if ((strcmp("[", nodename) == 0) && (strcmp("/usr/bin", path) == 0))    {        if (VSYSTEMHARDCLASS == linuxx)        {            return true;        }    }    for (sp = nodename; *sp != '/0'; sp++)    {        if ((*sp > 31) && (*sp < 127))        {            break;        }    }    strcpy(vbuff, path);    AddSlash(vbuff);    strcat(vbuff, nodename);    for (sp = nodename; *sp != '/0'; sp++)      /* Check for files like ".. ." */    {        if ((*sp != '.') && !isspace(*sp))        {            return true;        }    }    if (cf_lstat(vbuff, &statbuf, attr, pp) == -1)    {        CfOut(cf_verbose, "lstat", "Couldn't stat %s", vbuff);        return true;    }    if (statbuf.st_size == 0 && !(VERBOSE || INFORM))   /* No sense in warning about empty files */    {        return false;    }    CfOut(cf_error, "", "Suspicious looking file object /"%s/" masquerading as hidden file in %s/n", nodename, path);    CfDebug("Filename looks suspicious/n");    if (S_ISLNK(statbuf.st_mode))    {        CfOut(cf_inform, "", "   %s is a symbolic link/n", nodename);    }    else if (S_ISDIR(statbuf.st_mode))    {        CfOut(cf_inform, "", "   %s is a directory/n", nodename);//.........这里部分代码省略.........
开发者ID:dnaeon,项目名称:core,代码行数:101,



注:本文中的IsItemIn函数示例整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。


C++ IsKeyDown函数代码示例
C++ IsInt函数代码示例
万事OK自学网:51自学网_软件自学网_CAD自学网自学excel、自学PS、自学CAD、自学C语言、自学css3实例,是一个通过网络自主学习工作技能的自学平台,网友喜欢的软件自学网站。