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); }
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); }