本文整理汇总了C++中PrependItem函数的典型用法代码示例。如果您正苦于以下问题:C++ PrependItem函数的具体用法?C++ PrependItem怎么用?C++ PrependItem使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了PrependItem函数的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: GetProcessColumnNames
Item *SelectProcesses(EvalContext *ctx, const Item *processes, const char *process_name, ProcessSelect a, bool attrselect)
{
Item *result = NULL;
if (processes == NULL)
{
return result;
}
char *names[CF_PROCCOLS];
int start[CF_PROCCOLS];
int end[CF_PROCCOLS];
GetProcessColumnNames(processes->name, &names[0], start, end);
for (Item *ip = processes->next; ip != NULL; ip = ip->next)
{
int s, e;
if (BlockTextMatch(ctx, process_name, ip->name, &s, &e))
{
if (NULL_OR_EMPTY(ip->name))
{
continue;
}
if (attrselect && !SelectProcess(ctx, ip->name, names, start, end, a))
{
continue;
}
pid_t pid = ExtractPid(ip->name, names, end);
if (pid == -1)
{
Log(LOG_LEVEL_VERBOSE, "Unable to extract pid while looking for %s", process_name);
continue;
}
PrependItem(&result, ip->name, "");
result->counter = (int)pid;
}
}
for (int i = 0; i < CF_PROCCOLS; i++)
{
free(names[i]);
}
return result;
}
示例2: assert
Item *SelectProcesses(const char *process_name, const ProcessSelect *a, bool attrselect)
{
assert(a != NULL);
const Item *processes = PROCESSTABLE;
Item *result = NULL;
if (processes == NULL)
{
return result;
}
char *names[CF_PROCCOLS];
int start[CF_PROCCOLS];
int end[CF_PROCCOLS];
GetProcessColumnNames(processes->name, names, start, end);
/* TODO: use actual time of ps-run, as time(NULL) may be later. */
time_t pstime = time(NULL);
for (Item *ip = processes->next; ip != NULL; ip = ip->next)
{
if (NULL_OR_EMPTY(ip->name))
{
continue;
}
if (!SelectProcess(ip->name, pstime, names, start, end, process_name, a, attrselect))
{
continue;
}
pid_t pid = ExtractPid(ip->name, names, end);
if (pid == -1)
{
Log(LOG_LEVEL_VERBOSE, "Unable to extract pid while looking for %s", process_name);
continue;
}
PrependItem(&result, ip->name, "");
result->counter = (int)pid;
}
for (int i = 0; i < CF_PROCCOLS; i++)
{
free(names[i]);
}
return result;
}
示例3: KeepServerRolePromise
static void KeepServerRolePromise(struct Promise *pp)
{ struct Constraint *cp;
struct Rlist *rp;
struct Auth *ap;
if (!GetAuthPath(pp->promiser,ROLES))
{
InstallServerAuthPath(pp->promiser,&ROLES,&ROLESTOP);
}
ap = GetAuthPath(pp->promiser,ROLES);
for (cp = pp->conlist; cp != NULL; cp = cp->next)
{
if (!IsDefinedClass(cp->classes))
{
continue;
}
switch (cp->type)
{
case CF_LIST:
for (rp = (struct Rlist *)cp->rval; rp != NULL; rp=rp->next)
{
if (strcmp(cp->lval,CF_REMROLE_BODIES[cfs_authorize].lval) == 0)
{
PrependItem(&(ap->accesslist),rp->item,NULL);
continue;
}
}
break;
case CF_FNCALL:
/* Shouldn't happen */
break;
default:
if (strcmp(cp->lval,"comment") == 0 || strcmp(cp->lval,"handle") == 0)
{
}
else
{
CfOut(cf_error,"","RHS of authorize promise for %s should be a list\n",pp->promiser);
}
break;
}
}
}
示例4: ReturnItemInClass
Item *IdempPrependItemClass(Item **liststart, const char *itemstring, const char *classes)
{
Item *ip;
ip = ReturnItemInClass(*liststart, itemstring, classes);
if (ip) // already exists
{
return ip;
}
PrependItem(liststart, itemstring, classes);
return *liststart;
}
示例5: ReturnItemIn
Item *IdempPrependItem(Item **liststart, const char *itemstring, const char *classes)
{
Item *ip;
ip = ReturnItemIn(*liststart, itemstring);
if (ip)
{
return ip;
}
PrependItem(liststart, itemstring, classes);
return *liststart;
}
示例6: IdempItemCount
void IdempItemCount(Item **liststart, const char *itemstring, const char *classes)
{
Item *ip = ReturnItemIn(*liststart, itemstring);
if (ip)
{
ip->counter++;
}
else
{
PrependItem(liststart, itemstring, classes);
}
// counter+1 is the histogram of occurrences
}
示例7: KeepServerRolePromise
static void KeepServerRolePromise(EvalContext *ctx, const Promise *pp)
{
Rlist *rp;
Auth *ap;
ap = GetOrCreateAuth(pp->promiser, &SV.roles, &SV.rolestail);
for (size_t i = 0; i < SeqLength(pp->conlist); i++)
{
Constraint *cp = SeqAt(pp->conlist, i);
if (!IsDefinedClass(ctx, cp->classes))
{
continue;
}
switch (cp->rval.type)
{
case RVAL_TYPE_LIST:
for (rp = (Rlist *) cp->rval.item; rp != NULL; rp = rp->next)
{
/* This is for remote class activation by means of cf-runagent.*/
if (strcmp(cp->lval, CF_REMROLE_BODIES[REMOTE_ROLE_AUTHORIZE].lval) == 0)
{
PrependItem(&(ap->accesslist), RlistScalarValue(rp), NULL);
continue;
}
}
break;
case RVAL_TYPE_FNCALL:
UnexpectedError("Constraint of type FNCALL is invalid in this context!");
break;
default:
if ((strcmp(cp->lval, "comment") == 0) || (strcmp(cp->lval, "handle") == 0))
{
}
else
{
Log(LOG_LEVEL_ERR, "Right-hand side of authorize promise for '%s' should be a list", pp->promiser);
}
break;
}
}
}
示例8: 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;
}
示例9: list
void
JXPathHistoryMenu::UpdateMenu()
{
if (GetFirstIndex() == 1)
{
JMountPointList list(JPtrArrayT::kDeleteAll);
time_t t;
if (JGetUserMountPointList(&list, &t))
{
const JSize count = list.GetElementCount();
SetFirstIndex(count+1);
for (JIndex i=count; i>=1; i--)
{
const JMountPoint mp = list.GetElement(i);
PrependItem(*(mp.path));
if (i == count)
{
ShowSeparatorAfter(1);
}
if (mp.type == kJHardDisk)
{
SetItemImage(1, jx_hard_disk_small);
}
else if (mp.type == kJZipDisk)
{
SetItemImage(1, jx_zip_disk_small);
}
else if (mp.type == kJFloppyDisk)
{
SetItemImage(1, jx_floppy_disk_small);
}
else if (mp.type == kJCDROM)
{
SetItemImage(1, jx_cdrom_disk_small);
}
}
}
}
RemoveInvalidPaths();
JXStringHistoryMenu::UpdateMenu();
}
示例10: findId
bool CocaSystemTree::moveUp( const coca::INode& node )
{
wxTreeItemId id = findId( node );
if ( !id.IsOk() ) { return false; }
wxTreeItemId parentId = GetItemParent( id );
if ( !parentId.IsOk() ) { return false; }
wxTreeItemId previousId = GetPrevSibling( id );
if ( !previousId.IsOk() ) { return false; }
// ready to move
bool wasSelected = ( id == GetSelection() );
Delete( id );
previousId = GetPrevSibling( previousId );
if ( !previousId.IsOk() )
{
id = PrependItem( parentId,
EditorTools::getName( node ), EditorTools::getImageIndex( node ),
-1, new ItemData( node ) );
}
else
{
id = InsertItem( parentId, previousId,
EditorTools::getName( node ), EditorTools::getImageIndex( node ),
-1, new ItemData( node ) );
}
COCA_ASSERT( id.IsOk() );
SetItemTextColour( id, EditorTools::getTextColour( node ) );
addChildren( node, id );
if ( wasSelected ) { SelectItem( id ); }
return true;
}
示例11: KeepServerRolePromise
static void KeepServerRolePromise(EvalContext *ctx, const Promise *pp)
{
Auth *ap = GetOrCreateAuth(pp->promiser, &SV.roles, &SV.rolestail);
const char *const authorizer = CF_REMROLE_BODIES[REMOTE_ROLE_AUTHORIZE].lval;
size_t i = SeqLength(pp->conlist);
while (i > 0)
{
i--;
Constraint *cp = SeqAt(pp->conlist, i);
if (strcmp(cp->lval, authorizer) == 0)
{
if (cp->rval.type != RVAL_TYPE_LIST)
{
Log(LOG_LEVEL_ERR,
"Right-hand side of authorize promise for '%s' should be a list",
pp->promiser);
}
else if (IsDefinedClass(ctx, cp->classes))
{
/* This is for remote class activation by means of cf-runagent.*/
for (const Rlist *rp = cp->rval.item; rp != NULL; rp = rp->next)
{
PrependItem(&(ap->accesslist), RlistScalarValue(rp), NULL);
}
}
}
else if (strcmp(cp->lval, "comment") != 0 &&
strcmp(cp->lval, "handle") != 0 &&
/* Are there other known list constraints ? if not, skip this: */
cp->rval.type != RVAL_TYPE_LIST)
{
Log(LOG_LEVEL_WARNING,
"Unrecognised promise '%s' for %s",
cp->lval, pp->promiser);
}
}
}
示例12: assert
Item *SplitStringAsItemList(const char *string, char sep)
/* Splits a string containing a separator like :
into a linked list of separate items, */
{
Item *liststart = NULL;
char node[256];
char format[] = "%255[^\0]";
/* Overwrite format's internal \0 with sep: */
format[strlen(format)] = sep;
assert(strlen(format) + 1 == sizeof(format) || sep == '\0');
for (const char *sp = string; *sp != '\0'; sp++)
{
if (sscanf(sp, format, node) == 1 &&
node[0] != '\0')
{
sp += strlen(node) - 1;
PrependItem(&liststart, node, NULL);
}
}
return ReverseItemList(liststart);
}
示例13: GetLMSensors
static bool GetLMSensors(double *cf_this)
{
FILE *pp;
Item *ip, *list = NULL;
double temp = 0;
char name[CF_BUFSIZE];
int count;
cf_this[ob_temp0] = 0.0;
cf_this[ob_temp1] = 0.0;
cf_this[ob_temp2] = 0.0;
cf_this[ob_temp3] = 0.0;
if ((pp = cf_popen("/usr/bin/sensors", "r", true)) == NULL)
{
LMSENSORS = false; /* Broken */
return false;
}
{
size_t vbuff_size = CF_BUFSIZE;
char *vbuff = xmalloc(vbuff_size);
ssize_t res = CfReadLine(&vbuff, &vbuff_size, pp);
if (res <= 0)
{
/* FIXME: do we need to log anything here? */
cf_pclose(pp);
free(vbuff);
return false;
}
for (;;)
{
ssize_t res = CfReadLine(&vbuff, &vbuff_size, pp);
if (res == -1)
{
if (!feof(pp))
{
/* FIXME: Do we need to log anything here? */
cf_pclose(pp);
free(vbuff);
return false;
}
else
{
break;
}
}
if (strstr(vbuff, "Temp") || strstr(vbuff, "temp"))
{
PrependItem(&list, vbuff, NULL);
}
}
cf_pclose(pp);
free(vbuff);
}
if (ListLen(list) > 0)
{
Log(LOG_LEVEL_DEBUG, "LM Sensors seemed to return ok data");
}
else
{
return false;
}
/* lmsensor names are hopelessly inconsistent - so try a few things */
for (ip = list; ip != NULL; ip = ip->next)
{
for (count = 0; count < 4; count++)
{
snprintf(name, 16, "CPU%d Temp:", count);
if (strncmp(ip->name, name, strlen(name)) == 0)
{
sscanf(ip->name, "%*[^:]: %lf", &temp);
switch (count)
{
case 0:
cf_this[ob_temp0] = temp;
break;
case 1:
cf_this[ob_temp1] = temp;
break;
case 2:
cf_this[ob_temp2] = temp;
break;
case 3:
cf_this[ob_temp3] = temp;
break;
}
Log(LOG_LEVEL_DEBUG, "Set temp%d to %lf from what looks like cpu temperature", count, temp);
}
}
//.........这里部分代码省略.........
示例14: 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);
}
示例15: 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);
}
}