int mailimap_quota_quota_resource_parse(mailstream * fd, MMAPString *buffer, size_t * indx, void * result_ptr, size_t progr_rate, progress_function * progr_fun) { struct mailimap_quota_quota_resource ** result = result_ptr; size_t cur_token = * indx; int r, res; char * resource_name; uint32_t usage, limit; struct mailimap_quota_quota_resource * resource; r = mailimap_atom_parse(fd, buffer, &cur_token, &resource_name, progr_rate, progr_fun); if (r != MAILIMAP_NO_ERROR) { res = r; goto err; } r = mailimap_space_parse(fd, buffer, &cur_token); if (r != MAILIMAP_NO_ERROR) { res = r; goto resource_name_free; } r = mailimap_number_parse(fd, buffer, &cur_token, &usage); if (r != MAILIMAP_NO_ERROR) { res = r; goto resource_name_free; } r = mailimap_space_parse(fd, buffer, &cur_token); if (r != MAILIMAP_NO_ERROR) { res = r; goto resource_name_free; } r = mailimap_number_parse(fd, buffer, &cur_token, &limit); if (r != MAILIMAP_NO_ERROR) { res = r; goto resource_name_free; } resource = mailimap_quota_quota_resource_new(resource_name, usage, limit); if (!resource) { res = r; goto resource_name_free; } * result = resource; * indx = cur_token; return MAILIMAP_NO_ERROR; resource_name_free: mailimap_atom_free(resource_name); err: return res; }
static int fetch_data_xgmmsgid_parse(mailstream * fd, MMAPString * buffer, size_t * indx, uint64_t * result, size_t progr_rate, progress_function * progr_fun) { size_t cur_token; uint64_t msgid; uint32_t uid; char *msgid_str; int r; cur_token = * indx; r = mailimap_number_parse(fd, buffer, &cur_token, &uid); if (r != MAILIMAP_NO_ERROR) return r; r = mailimap_space_parse(fd, buffer, &cur_token); if (r != MAILIMAP_NO_ERROR) return r; r = mailimap_token_case_insensitive_parse(fd, buffer, &cur_token, "FETCH"); if (r != MAILIMAP_NO_ERROR) return r; r = mailimap_space_parse(fd, buffer, &cur_token); if (r != MAILIMAP_NO_ERROR) return r; r = mailimap_oparenth_parse(fd, buffer, &cur_token); if (r != MAILIMAP_NO_ERROR) return r; r = mailimap_token_case_insensitive_parse(fd, buffer, &cur_token, "X-GM-MSGID"); if (r != MAILIMAP_NO_ERROR) return r; r = mailimap_space_parse(fd, buffer, &cur_token); if (r != MAILIMAP_NO_ERROR) return r; r = mailimap_astring_parse(fd, buffer, &cur_token, &msgid_str, progr_rate, progr_fun); if (r != MAILIMAP_NO_ERROR) return r; msgid = atol(msgid_str); r = mailimap_cparenth_parse(fd, buffer, &cur_token); if (r != MAILIMAP_NO_ERROR) return r; * indx = cur_token; * result = msgid; return MAILIMAP_NO_ERROR; }