Exemplo n.º 1
0
static void setup_label(struct hall_of_fame_phase *self, int n,
			struct b6_json_object *entry)
{
	char text[] = "00 000 00000000 ";
	unsigned int level, score;
	const struct b6_utf8 *label;
	struct b6_utf8 utf8;
	char buf[64];
	struct b6_fixed_allocator fixed_allocator;
	struct b6_utf8_string s;
	b6_reset_fixed_allocator(&fixed_allocator, buf, sizeof(buf));
	b6_initialize_utf8_string(&s, &fixed_allocator.allocator);
	u32_to_str(&text[0], n + 1, 2);
	if (!split_hall_of_fame_entry(entry, &level, &score, &label)) {
		u32_to_str(&text[3], level, 3);
		u32_to_str(&text[7], score, 8);
		b6_setup_utf8(&utf8, text, sizeof(text) - 1);
		b6_extend_utf8_string(&s, &utf8);
		b6_extend_utf8_string(&s, label);
	}
	while (s.utf8.nchars < 32)
		b6_append_utf8_string(&s, ' ');
	set_toolkit_label(&self->label[n], &s.utf8);
	b6_finalize_utf8_string(&s);
}
Exemplo n.º 2
0
Arquivo: xml.c Projeto: b409/b409
int list_buckets_objects(user_dir_t * user,char * xml_file,const char gu_flag)
{
	int rt = 0;
	struct list_head * l,*x;
	bucket_t * bucket;
	object_t * object;
	xmlDocPtr doc = NULL;
	xmlNodePtr root_node = NULL,bnode,onode;
	Meta_Data md;
	char full_path[MAX_PATH];
	char md5c[MD5_CHECKSUM_SZ];
	char md5s[MD5_STRING_LEN];
	int full_path_len;
	if(!(GU_FLAG_VALID(gu_flag))){
		fprintf(stderr,"invalid get_user flag!\n");
		return 1;
	}
	doc = xmlNewDoc(BAD_CAST "1.0");
	root_node = xmlNewNode(NULL,BAD_CAST *(user->user_name));
	xmlDocSetRootElement(doc,root_node);
	if(pthread_mutex_lock(&user->mutex) != 0){
		perror("list_buckets_objects : pthread_mutex_lock u->mutex");
		rt = 2;
		goto ret;
	}
	if(list_empty(&user->buckets)){
		goto unlock_and_ret;
	}
	for_each_bucket(l,user){
		bucket = container_of(l,bucket_t,b_list);
		bnode = xmlNewChild(root_node,NULL,BAD_CAST *(bucket->bucket_name),BAD_CAST buf_null);
		if(gu_flag == GU_LIST_BUCKETS){
			continue;
		}
		if(pthread_mutex_lock(&bucket->mutex) != 0){
			fprintf(stderr,"lock bucket->mutex fail!\n");
			rt = 3;
			goto unlock_and_ret;
		}
		if(list_empty(&bucket->objects)){
			goto unlock_and_continue;
		}
		for_each_object(x,bucket){
			object = container_of(x,object_t,o_list);
			onode = xmlNewChild(bnode,NULL,BAD_CAST *(object->object_name),BAD_CAST buf_null);
			get_absolute_path_of_object(object,full_path);
			full_path_len = strlen(full_path);
			md5(full_path,full_path_len,md5c);
			bzero(md5s,MD5_STRING_LEN);
			md5_2_str(md5c,md5s);
			/* md5 string now in md5s */
			if(md_get(md5s,&md) != 0){
				continue;
			}
			xmlNewChild(onode,NULL,BAD_CAST O_XML_HASH,BAD_CAST md5s);
			u32_to_str(md.atime,buf,BUFSIZ);
			xmlNewChild(onode,NULL,BAD_CAST O_XML_ATIME,BAD_CAST buf);
			u32_to_str(md.mtime,buf,BUFSIZ);
			xmlNewChild(onode,NULL,BAD_CAST O_XML_MTIME,BAD_CAST buf);
			u32_to_str(md.ctime,buf,BUFSIZ);
			xmlNewChild(onode,NULL,BAD_CAST O_XML_CTIME,BAD_CAST buf);
			u64_to_str(md.size,buf,BUFSIZ);
			xmlNewChild(onode,NULL,BAD_CAST O_XML_SIZE,BAD_CAST buf);
			xmlNewChild(onode,NULL,BAD_CAST O_XML_IP,BAD_CAST md.replica[0].rep_ip);
		}