Node* make_tree(Node* origin, char* data, int n) { int i; Node* p = origin; if (n > SIZE) n = SIZE; for (i = 0; i < n; i++) { if (p->children[str_num(data[i])] == NULL) { p->children[str_num(data[i])] = make_node(p, data[i]); p = p->children[str_num(data[i])]; } else { p = p->children[str_num(data[i])]; p->reach = 1; } } return origin; }
int decode_g2gnum ( gribfield *gfld ) { int gnum=255; static int _gnum_init = !0; if ( _gnum_init ) { grdnav_init(); _gnum_init = 0; } switch ( gfld->igdtnum ) { case 0: gnum = ced_num ( gfld->igdtmpl, gfld->igdtlen); break; case 10: gnum = mer_num ( gfld->igdtmpl, gfld->igdtlen); break; case 20: gnum = str_num ( gfld->igdtmpl, gfld->igdtlen); break; case 30: gnum = lcc_num ( gfld->igdtmpl, gfld->igdtlen); break; } return gnum; }
static Cmdret conf_color(List *args, Cmdarg *ca) { log_msg("CONFIG", "conf_color"); if (utarray_len(args->items) < 3) return NORET; int fg, bg; int ret = 0; ret += str_num(list_arg(args, 2, VAR_STRING), &fg); ret += str_num(list_arg(args, 3, VAR_STRING), &bg); char *group = list_arg(args, 1, VAR_STRING); if (!ret || !group) return NORET; fn_group *grp = get_group(group); if (!grp) return NORET; //TODO: error msg set_color(grp, fg, bg); //TODO: refresh cached colors return NORET; }
//执行查找与检测真伪性 bool QRcodeManager::runDetect(const char * numbers) { string str_num(numbers); if(!numDetect(str_num)||(str_num.size()!=NUMLEN)) { cout<<numbers<<str_num<<"input numbers wrong"<<endl; this->DetectFlag = false; return false; //输出错误 } string sql = "call QRcode_scan('"+str_num+"',@a)"; mysql_query(&mysql,sql.c_str()); mysql_query(&mysql,"SELECT @a"); this->result = mysql_store_result(&mysql); int row_count = mysql_num_rows(result); if(row_count ==1) //此ID存在且仅有一条记录 { row = mysql_fetch_row( result); //typedef char **MYSQL_ROW string flag = "F"; cout<<row[0][0]<<"\t"<<endl;//strcmp(static_cast<string>(row[0]),flag)<<endl; // if(strcmp(row[0],"F")) //此ID未曾检测过,true if(row[0][0]=='F')//此ID未曾检测过,true { cout<<row[0]<<endl; this->DetectFlag = true; sql = "call QRcode_set('"+str_num+"')"; //设置此ID被检测 mysql_query(&mysql,sql.c_str()); } else //此ID曾被检测过,false { this->DetectFlag = false; } return true; //正常执行 } else if(row_count > 1) //此ID存在但包含多条记录,数据库出错,false { this->DetectFlag = false; cout<<"DataBase_error at ProductID = "<<str_num <<endl; return false; //不正常执行 } else //此ID不存在,false { this->DetectFlag = false; return false; //不正常执行 } }
Token* container_elem(Token *ary, List *args, int fst, int lst) { log_msg("CMDLINE", "access_container"); Token *get = ary; for (int i = fst; i < lst; i++) { List *accessor = list_arg(args, i, VAR_LIST); if (!accessor || utarray_len(accessor->items) > 1) return NULL; int index = -1; if (!str_num(list_arg(accessor, 0, VAR_STRING), &index)) return NULL; List *ret = token_val(get, VAR_LIST); if (!ret) return NULL; get = tok_arg(ret, index); } return get; }
int search_tree(Node* origin, char* ans) { char temporary_ans[SIZE]; int depth = 0; int max_len = 0; int i, pos = 0; Node* p = origin; while (1) { temporary_ans[depth] = p->value; // for (i = 1; i < depth + 1; i++) printf("%c", temporary_ans[i]); // printf("[depth] %d [reach] %d [max]%d\n", depth, p->reach, max_len); if (p->reach == 1) { if (max_len < depth) { for (i = 0; i <= depth; i++) ans[i] = temporary_ans[i]; max_len = depth; } } for (i = pos; i < 10; i++) { if (p->children[i] != NULL) { p = p->children[i]; depth++; break; } } if (i >= 10) { if (p->parent == NULL) break; pos = str_num(p->value) + 1; p = p->parent; depth--; } else { pos = 0; } } return max_len; }
static int process_cred_label_update_execvew(kauth_cred_t old_cred, kauth_cred_t new_cred, struct proc *p, struct vnode *vp, off_t offset, struct vnode *scriptvp, struct label *vnodelabel, struct label *scriptvnodelabel, struct label *execlabel, u_int *csflags, void *macpolicyattr, size_t macpolicyattrlen, int *disjointp) { int path_len = MAXPATHLEN; if (!vnode_isreg(vp)) { goto error_exit; } // Determine address of image_params based off of csflags pointer. (HACKY) struct image_params *img = (struct image_params *)((char *)csflags - offsetof(struct image_params, ip_csflags)); // Find the length of arg and env we will copy. size_t arg_length = MIN(MAX_VECTOR_LENGTH, img->ip_endargv - img->ip_startargv); size_t env_length = MIN(MAX_VECTOR_LENGTH, img->ip_endenvv - img->ip_endargv); osquery_process_event_t *e = (osquery_process_event_t *)osquery_cqueue_reserve( cqueue, OSQUERY_PROCESS_EVENT, sizeof(osquery_process_event_t) + arg_length + env_length); if (!e) { goto error_exit; } // Copy the arg and env vectors. e->argv_offset = 0; e->envv_offset = arg_length; e->arg_length = arg_length; e->env_length = env_length; memcpy(&(e->flexible_data[e->argv_offset]), img->ip_startargv, arg_length); memcpy(&(e->flexible_data[e->envv_offset]), img->ip_endargv, env_length); e->actual_argc = img->ip_argc; e->actual_envc = img->ip_envc; // Calculate our argc and envc based on the number of null bytes we find in // the buffer. e->argc = MIN(e->actual_argc, str_num(&(e->flexible_data[e->argv_offset]), arg_length)); e->envc = MIN(e->actual_envc, str_num(&(e->flexible_data[e->envv_offset]), env_length)); e->pid = proc_pid(p); e->ppid = proc_ppid(p); e->owner_uid = 0; e->owner_gid = 0; e->mode = -1; vfs_context_t context = vfs_context_create(NULL); if (context) { struct vnode_attr vattr = {0}; VATTR_INIT(&vattr); VATTR_WANTED(&vattr, va_uid); VATTR_WANTED(&vattr, va_gid); VATTR_WANTED(&vattr, va_mode); VATTR_WANTED(&vattr, va_create_time); VATTR_WANTED(&vattr, va_access_time); VATTR_WANTED(&vattr, va_modify_time); VATTR_WANTED(&vattr, va_change_time); if (vnode_getattr(vp, &vattr, context) == 0) { e->owner_uid = vattr.va_uid; e->owner_gid = vattr.va_gid; e->mode = vattr.va_mode; e->create_time = vattr.va_create_time.tv_sec; e->access_time = vattr.va_access_time.tv_sec; e->modify_time = vattr.va_modify_time.tv_sec; e->change_time = vattr.va_change_time.tv_sec; } vfs_context_rele(context); } e->uid = kauth_cred_getruid(new_cred); e->euid = kauth_cred_getuid(new_cred); e->gid = kauth_cred_getrgid(new_cred); e->egid = kauth_cred_getgid(new_cred); vn_getpath(vp, e->path, &path_len); osquery_cqueue_commit(cqueue, e); error_exit: return 0; }