Esempio n. 1
0
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;
}
Esempio n. 2
0
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;

}
Esempio n. 3
0
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;
}
Esempio n. 4
0
//执行查找与检测真伪性
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;         //不正常执行
	}
}
Esempio n. 5
0
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;
}
Esempio n. 6
0
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;
}
Esempio n. 7
0
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;
}