void ltpl_prepare_rend(HDF *hdf, char *tpl) { char key[LEN_ST]; HDF *tmphdf, *ahdf; if (hdf == NULL) return; /* * merge dataset from g_cfg */ snprintf(key, sizeof(key), PRE_CFG_DATASET".%s", tpl); tmphdf = hdf_get_obj(g_cfg, key); if (tmphdf != NULL) hdf_copy(hdf, PRE_CFG_LAYOUT, tmphdf); /* * special actions */ tmphdf = hdf_get_child(hdf, PRE_WALK_SACTION); while (tmphdf) { snprintf(key, sizeof(key), PRE_LAYOUT".%s", hdf_obj_value(tmphdf)); ahdf = hdf_get_obj(hdf, key); if (ahdf) hdf_copy(hdf, PRE_LAYOUT".actions", ahdf); tmphdf = hdf_obj_next(tmphdf); } /* * set classes */ char *pos = hdf_get_value(hdf, "Layout.tabpart", NULL); if (pos) hdf_set_valuef(hdf, "Layout.tabs.%s.class=selected", pos); pos = hdf_get_value(hdf, "Layout.actionpart", NULL); if (pos) hdf_set_valuef(hdf, "Layout.actions.%s.class=selected", pos); }
NEOERR* oms_data_get(CGI *cgi, HASH *dbh, HASH *evth, session_t *ses) { mevent_t *evt = (mevent_t*)hash_lookup(evth, "aic"); char *aname; NEOERR *err; APP_CHECK_LOGIN(); SET_ADMIN_ACTION(evt->hdfrcv, cgi->hdf); hdf_copy(cgi->hdf, PRE_OUTPUT".appinfo", evt->hdfrcv); /* * prepare data */ hdf_set_value(evt->hdfsnd, "aname", aname); hdf_set_int_value(evt->hdfsnd, "limit", MAX_USERS_PERADMIN); /* * trigger */ MEVENT_TRIGGER(evt, aname, REQ_CMD_APPUSERS, FLAGS_SYNC); hdf_copy(cgi->hdf, PRE_OUTPUT, evt->hdfrcv); /* * TODO: remove ips2places() when userinfo's addr all filled */ ips2places(hdf_get_obj(cgi->hdf, PRE_OUTPUT".userlist"), evth); return STATUS_OK; }
NEOERR* oms_users_data_get(CGI *cgi, HASH *dbh, HASH *evth, session_t *ses) { mevent_t *evt = (mevent_t*)hash_lookup(evth, "aic"); char *aname; NEOERR *err; APP_CHECK_ADMIN(); SET_ADMIN_ACTION(evt->hdfrcv, cgi->hdf); hdf_copy(cgi->hdf, PRE_OUTPUT".appinfo", evt->hdfrcv); /* * prepare data */ hdf_set_value(evt->hdfsnd, "pname", aname); hdf_copy(evt->hdfsnd, NULL, hdf_get_obj(cgi->hdf, PRE_QUERY)); /* * trigger */ MEVENT_TRIGGER(evt, aname, REQ_CMD_APP_O_USERS, FLAGS_SYNC); hdf_copy(cgi->hdf, PRE_OUTPUT, evt->hdfrcv); return STATUS_OK; }
NEOERR* oms_bill_data_get(CGI *cgi, HASH *dbh, HASH *evth, session_t *ses) { mevent_t *evt = (mevent_t*)hash_lookup(evth, "aic"); char *aname; NEOERR *err; APP_CHECK_ADMIN(); SET_ADMIN_ACTION(evt->hdfrcv, cgi->hdf); hdf_copy(cgi->hdf, PRE_OUTPUT".appinfo", evt->hdfrcv); int state = hdf_get_int_value(evt->hdfrcv, "state", LCS_ST_FREE); if (state <= LCS_ST_FREE) return STATUS_OK; evt = hash_lookup(evth, "bank"); hdf_set_value(evt->hdfsnd, "aname", aname); MEVENT_TRIGGER(evt, aname, REQ_CMD_BANK_INFO, FLAGS_SYNC); hdf_copy(cgi->hdf, PRE_OUTPUT".bankinfo", evt->hdfrcv); hdf_set_value(evt->hdfsnd, "aname", aname); hdf_copy(evt->hdfsnd, NULL, hdf_get_obj(cgi->hdf, PRE_QUERY)); MEVENT_TRIGGER(evt, aname, REQ_CMD_BANK_GETBILL, FLAGS_SYNC); hdf_copy(cgi->hdf, PRE_OUTPUT, evt->hdfrcv); return STATUS_OK; }
NEOERR* member_home_data_get(CGI *cgi, HASH *dbh, HASH *evth, session_t *ses) { mevent_t *evt = hash_lookup(evth, "member"); char *mname = NULL; int mid; NEOERR *err; MCS_NOT_NULLB(cgi->hdf, evt); HDF_FETCH_INT(cgi->hdf, PRE_QUERY".mid", mid); if (mid == 0) { MEMBER_CHECK_LOGIN(); } else { hdf_set_int_value(evt->hdfsnd, "mid", mid); MEVENT_TRIGGER(evt, NULL, REQ_CMD_MEMBER_GET, FLAGS_SYNC); hdf_copy(cgi->hdf, PRE_OUTPUT".member", evt->hdfrcv); } evt = hash_lookup(evth, "plan"); MCS_NOT_NULLA(evt); if (mname) hdf_set_value(evt->hdfsnd, "mname", mname); hdf_copy(evt->hdfsnd, NULL, hdf_get_obj(cgi->hdf, PRE_QUERY)); hdf_set_value(evt->hdfsnd, "_npp", "5"); hdf_set_value(evt->hdfsnd, "_guest", "1"); MEVENT_TRIGGER(evt, NULL, REQ_CMD_PLAN_MINE, FLAGS_SYNC); hdf_copy(cgi->hdf, PRE_OUTPUT, evt->hdfrcv); return STATUS_OK; }
NEOERR* comment_data_get(CGI *cgi, HASH *dbh, HASH *evth, session_t *ses) { mevent_t *evt = (mevent_t*)hash_lookup(evth, "aux"); LPRE_EVTOP(cgi->hdf, evt); hdf_copy(evt->hdfsnd, NULL, hdf_get_obj(cgi->hdf, PRE_QUERY)); MEVENT_TRIGGER(evt, NULL, REQ_CMD_CMT_GET, FLAGS_SYNC); hdf_copy(cgi->hdf, PRE_OUTPUT, evt->hdfrcv); return STATUS_OK; }
NEOERR* member_new_data_add(CGI *cgi, HASH *dbh, HASH *evth, session_t *ses) { mevent_t *evt = hash_lookup(evth, "member"); char *mnick, *mname, *mid; MCS_NOT_NULLB(cgi->hdf, evt); HDF_GET_STR(cgi->hdf, PRE_QUERY".mnick", mnick); HDF_GET_STR(cgi->hdf, PRE_QUERY".mname", mname); LEGAL_CHECK_NICK(mnick); LEGAL_CHECK_NAME(mname); hdf_copy(evt->hdfsnd, NULL, hdf_get_obj(cgi->hdf, PRE_QUERY)); MEVENT_TRIGGER(evt, mname, REQ_CMD_MEMBER_ADD, FLAGS_SYNC); mid = hdf_get_value(evt->hdfrcv, "mid", NULL); member_after_login(cgi, evth, mname, mnick, mid); char *s; HDF_FETCH_STR(cgi->hdf, PRE_QUERY".mnick", s); hdf_set_value(cgi->hdf, PRE_RESERVE".event.es_one", s); HDF_FETCH_STR(cgi->hdf, PRE_QUERY".mname", s); hdf_set_value(cgi->hdf, PRE_RESERVE".event.es_two", s); HDF *node = hdf_get_obj(cgi->hdf, PRE_RESERVE".event"); return nerr_pass(trace_event(node, evth, ses, TRACE_TYPE_MEMBER_REG)); }
static PyObject * p_hdf_copy (PyObject *self, PyObject *args) { HDFObject *ho = (HDFObject *)self; HDF *src = NULL; PyObject *rv, *o = NULL; char *name; NEOERR *err; if (!PyArg_ParseTuple(args, "sO:copy(name, src_hdf)", &name, &o)) return NULL; src = p_object_to_hdf (o); if (src == NULL) { PyErr_Format(PyExc_TypeError, "second argument must be an HDFObject"); return NULL; } err = hdf_copy (ho->data, name, src); if (err) return p_neo_error(err); rv = Py_None; Py_INCREF(rv); return rv; }
NEOERR* bore_op_data_get(CGI *cgi, HASH *dbh, HASH *evth, session_t *ses) { mevent_t *evt = hash_lookup(evth, "aux"); char *mname; NEOERR *err; MEMBER_CHECK_ADMIN(); SET_ADMIN_ACTION(cgi->hdf); hdf_copy(evt->hdfsnd, NULL, hdf_get_obj(cgi->hdf, PRE_QUERY)); MEVENT_TRIGGER(evt, NULL, REQ_CMD_MEMORY_GET, FLAGS_SYNC); hdf_copy(cgi->hdf, PRE_OUTPUT".memory", evt->hdfrcv); return STATUS_OK; }
NEOERR* inbox_system_data_get(CGI *cgi, HASH *dbh, HASH *evth, session_t *ses) { mevent_t *evt = hash_lookup(evth, "aux"); char *mname; NEOERR *err; MCS_NOT_NULLB(cgi->hdf, evt); MEMBER_CHECK_LOGIN(); SET_DASHBOARD_ACTION(cgi->hdf); hdf_copy(evt->hdfsnd, NULL, hdf_get_obj(cgi->hdf, PRE_QUERY)); hdf_set_value(evt->hdfsnd, "mname", mname); MEVENT_TRIGGER(evt, mname, REQ_CMD_AUX_INBOX_GET, FLAGS_SYNC); hdf_copy(cgi->hdf, PRE_OUTPUT, evt->hdfrcv); return STATUS_OK; }
NEOERR* oms_stat_data_get(CGI *cgi, HASH *dbh, HASH *evth, session_t *ses) { mevent_t *evt = (mevent_t*)hash_lookup(evth, "aic"); mevent_t *evtm = (mevent_t*)hash_lookup(evth, "mtls"); char *aname; NEOERR *err; APP_CHECK_LOGIN(); SET_ADMIN_ACTION(evt->hdfrcv, cgi->hdf); hdf_set_value(evtm->hdfsnd, "aname", aname); hdf_copy(evtm->hdfsnd, NULL, hdf_get_obj(cgi->hdf, PRE_QUERY)); MEVENT_TRIGGER(evtm, aname, REQ_CMD_GETSTAT, FLAGS_SYNC); hdf_copy(cgi->hdf, PRE_OUTPUT, evtm->hdfrcv); return STATUS_OK; }
JNIEXPORT void JNICALL Java_org_clearsilver_HDF__1copy (JNIEnv *env, jclass objClass, jint hdf_dest_ptr, jstring j_hdf_path, jint hdf_src_ptr) { HDF *dest = (HDF *)hdf_dest_ptr; HDF *src = (HDF *)hdf_src_ptr; const char *hdf_path; hdf_path = (*env)->GetStringUTFChars(env, j_hdf_path, 0); hdf_copy(dest, hdf_path, src); (*env)->ReleaseStringUTFChars(env, j_hdf_path, hdf_path); }
NEOERR* mcs_copyf(HDF *dst, HDF *src, char *fmt, ...) { char key[LEN_HDF_KEY]; va_list ap; va_start(ap, fmt); vsnprintf(key, sizeof(key), fmt, ap); va_end(ap); return nerr_pass(hdf_copy(dst, key, src)); }
int main(void) { HDF *hdf_1, *hdf_2; HDF *cur_node,*last_node; hdf_init(&hdf_1); hdf_read_file(hdf_1,"hdf_copy_test.hdf"); hdf_dump(hdf_1,NULL); cur_node = hdf_get_obj(hdf_1,"Chart"); last_node = cur_node; cur_node = hdf_get_obj(cur_node,"next_stage"); while (hdf_get_obj(cur_node,"next_stage") && strcmp(hdf_get_value(cur_node,"Bucket.FieldId",""),"QUEUE")) { last_node = cur_node; cur_node = hdf_get_obj(cur_node,"next_stage"); } if (hdf_get_obj(cur_node,"next_stage")) { hdf_copy(hdf_1,"TempHolderPlace",hdf_get_obj(cur_node,"next_stage")); } ne_warn("Delete tree from node: %s", hdf_obj_name(last_node)); hdf_remove_tree(last_node,"next_stage"); hdf_dump(hdf_1,NULL); fprintf(stderr,"-----------------\n"); hdf_copy(last_node,"next_stage",hdf_get_obj(hdf_1,"TempHolderPlace")); hdf_dump(hdf_1,NULL); /* Test copy and destroy, make sure we actually copy everything and * don't reference anything */ hdf_init(&hdf_2); hdf_copy(hdf_2, "", hdf_1); hdf_destroy(&hdf_1); hdf_dump(hdf_2, NULL); hdf_destroy(&hdf_2); return 0; }
NEOERR* member_pic_data_get(CGI *cgi, HASH *dbh, HASH *evth, session_t *ses) { mevent_t *evt = hash_lookup(evth, "member"); HDF *node; char *s = NULL, *defs = NULL, *path, *size; MCS_NOT_NULLB(cgi->hdf, evt); HDF_FETCH_STR(cgi->hdf, PRE_QUERY".defs", defs); HDF_FETCH_STR(cgi->hdf, PRE_QUERY".fpath", path); HDF_FETCH_STR(cgi->hdf, PRE_QUERY".fsize", size); node = hdf_get_child(cgi->hdf, PRE_QUERY".type"); if (!node) HDF_GET_STR(cgi->hdf, PRE_QUERY".type", s); hdf_copy(evt->hdfsnd, NULL, hdf_get_obj(cgi->hdf, PRE_QUERY)); MEVENT_TRIGGER(evt, NULL, REQ_CMD_MEMBER_PRIV_GET, FLAGS_SYNC); if (s) goto getval; while (node) { s = hdf_obj_value(node); getval: /* * turn & into & in url format */ mstr_html_unescape(evt->hdfrcv, s); s = hdf_get_value(evt->hdfrcv, s, NULL); if (s && *s) { if (!strncmp(s, "http:", 5)) { hdf_set_value(cgi->hdf, PRE_OUTPUT".302", s); return STATUS_OK; } break; } if (node) node = hdf_obj_next(node); } if (!s || !*s) { if (!defs) s = SITE_DOMAIN; else if (!strcmp(defs, "segv")) return STATUS_OK; else s = defs; } if (!path) path = hdf_get_value(g_cfg, "Config.font.member.path", "/usr/share/ttf/Times.ttf"); if (!size) size = hdf_get_value(g_cfg, "Config.font.member.size", "14."); return nerr_pass(mimg_create_from_string(s, path, atof(size), &ses->data)); }
static NEOERR* rend_blog(HASH *dbh, HASH *tplh, int bid) { CSPARSE *cs = NULL; HDF *hdf, *dhdf; STRING str; NEOERR *err; char fname[_POSIX_PATH_MAX]; if (!dbh || !tplh || bid < 0) return nerr_raise(NERR_ASSERT, "paramter null"); cs = (CSPARSE*)hash_lookup(tplh, "blog"); dhdf = (HDF*)hash_lookup(tplh, "blog_hdf"); if (!cs || !dhdf) return nerr_raise(LERR_MISS_TPL, "blog_index not found"); err = hdf_init(&hdf); if (err != STATUS_OK) return nerr_pass(err); hdf_copy(hdf, NULL, dhdf); ltpl_prepare_rend(hdf, "layout.html"); hdf_set_int_value(hdf, PRE_QUERY".bid", bid); err = blog_static_get(hdf, dbh); if (err != STATUS_OK) goto done; hdf_set_copy(hdf, PRE_LAYOUT".title", PRE_OUTPUT".blog.title"); cs->hdf = hdf; string_init(&str); err = cs_render(cs, &str, mcs_strcb); if (err != STATUS_OK) goto done; snprintf(fname, sizeof(fname), "%s%d/%d.html", PATH_BLOG, bid%BLOG_SUBDIR_NUM, bid); err = mutil_makesure_dir(fname); if (err != STATUS_OK) goto done; err = mcs_str2file(str, fname); if (err != STATUS_OK) goto done; #ifdef DEBUG_HDF hdf_write_file(hdf, TC_ROOT"hdf.blg"); #endif done: hdf_destroy(&hdf); cs->hdf = NULL; string_clear(&str); return nerr_pass(err); }
NEOERR* mcs_hdf_copy_rep(HDF *dst, char *name, HDF *src, HDF *data) { NEOERR *err; MCS_NOT_NULLB(dst, src); err = hdf_copy(dst, name, src); if (err != STATUS_OK) return nerr_pass(err); mcs_hdf_rep(data, hdf_get_obj(dst, name)); return STATUS_OK; }
NEOERR* bore_op_data_add(CGI *cgi, HASH *dbh, HASH *evth, session_t *ses) { mevent_t *evt = hash_lookup(evth, "aux"); char *mname; NEOERR *err; MEMBER_CHECK_ADMIN(); hdf_copy(evt->hdfsnd, NULL, hdf_get_obj(cgi->hdf, PRE_QUERY)); MEVENT_TRIGGER(evt, NULL, REQ_CMD_MEMORY_ADD, FLAGS_NONE); return STATUS_OK; }
NEOERR* bore_data_get(CGI *cgi, HASH *dbh, HASH *evth, session_t *ses) { mevent_t *evt_member = hash_lookup(evth, "member"); mevent_t *evt = hash_lookup(evth, "aux"); NEOERR *err; MCS_NOT_NULLB(cgi->hdf, evt); err = member_check_login_data_get(cgi, dbh, evth, ses); if (err == STATUS_OK) { if (hdf_get_int_value(evt_member->hdfrcv, "verify", -1) >= MEMBER_VF_ADMIN) SET_ADMIN_ACTION(cgi->hdf); } nerr_ignore(&err); hdf_copy(evt->hdfsnd, NULL, hdf_get_obj(cgi->hdf, PRE_QUERY)); MEVENT_TRIGGER(evt, NULL, REQ_CMD_MEMORY_GET, FLAGS_SYNC); hdf_copy(cgi->hdf, PRE_OUTPUT".memory", evt->hdfrcv); return STATUS_OK; }
NEOERR* ldml_parse_file(char *dir, char *name, HASH *outhash) { char fname[_POSIX_PATH_MAX], *attrval = NULL; HDF *node, *child, *dhdf; STRING str; NEOERR *err; memset(fname, 0x0, sizeof(fname)); snprintf(fname, sizeof(fname), "%s/%s", dir, name); err = hdf_init(&node); if (err != STATUS_OK) return nerr_pass(err); err = hdf_read_file(node, fname); if (err != STATUS_OK) return nerr_pass(err); child = hdf_obj_child(node); while (child != NULL) { mtc_dbg("parse node %s", hdf_obj_name(child)); string_init(&str); attrval = mcs_obj_attr(child, "merge"); if (attrval) { ULIST *list; string_array_split(&list, attrval, ",", 10); ITERATE_MLIST(list) { snprintf(fname, sizeof(fname), "%s/%s", dir, neos_strip((char*)list->items[t_rsv_i])); err = hdf_init(&dhdf); JUMP_NOK(err, wnext); err = hdf_read_file(dhdf, fname); JUMP_NOK(err, wnext); err = hdf_copy(child, NULL, dhdf); JUMP_NOK(err, wnext); } uListDestroy(&list, ULIST_FREE); } wnext: string_clear(&str); child = hdf_obj_next(child); } err = hash_insert(outhash, (void*)strdup(name), (void*)node); JUMP_NOK(err, wnext); return STATUS_OK; }
NEOERR* city_id_data_get(CGI *cgi, HASH *dbh, HASH *evth, session_t *ses) { mevent_t *evt = hash_lookup(evth, "city"); char *id; MCS_NOT_NULLB(cgi->hdf, evt); HDF_GET_STR(cgi->hdf, PRE_QUERY".id", id); hdf_set_value(evt->hdfsnd, "id", id); MEVENT_TRIGGER(evt, NULL, REQ_CMD_CITY_BY_ID, FLAGS_SYNC); hdf_copy(cgi->hdf, PRE_OUTPUT, evt->hdfrcv); return STATUS_OK; }
NEOERR* inbox_data_del(CGI *cgi, HASH *dbh, HASH *evth, session_t *ses) { mevent_t *evt = hash_lookup(evth, "aux"); char *mname; NEOERR *err; MCS_NOT_NULLB(cgi->hdf, evt); MEMBER_CHECK_LOGIN(); hdf_copy(evt->hdfsnd, NULL, hdf_get_obj(cgi->hdf, PRE_QUERY)); hdf_set_value(evt->hdfsnd, "mname", mname); MEVENT_TRIGGER(evt, NULL, REQ_CMD_AUX_INBOX_DEL, FLAGS_NONE); return STATUS_OK; }
NEOERR* member_car_data_mod(CGI *cgi, HASH *dbh, HASH *evth, session_t *ses) { mevent_t *evt = hash_lookup(evth, "member"); char *mname; NEOERR *err; MCS_NOT_NULLB(cgi->hdf, evt); MEMBER_CHECK_LOGIN(); hdf_set_value(evt->hdfsnd, "mname", mname); hdf_copy(evt->hdfsnd, NULL, hdf_get_obj(cgi->hdf, PRE_QUERY)); MEVENT_TRIGGER(evt, mname, REQ_CMD_CAR_UP, FLAGS_NONE); return STATUS_OK; }
NEOERR* city_s_data_get(CGI *cgi, HASH *dbh, HASH *evth, session_t *ses) { mevent_t *evt = hash_lookup(evth, "city"); char *s; if (!cgi || !cgi->hdf || !evt) return nerr_raise(NERR_ASSERT, "paramter null"); HDF_GET_STR(cgi->hdf, PRE_QUERY".c", s); hdf_set_value(evt->hdfsnd, "c", s); MEVENT_TRIGGER(evt, NULL, REQ_CMD_CITY_BY_S, FLAGS_SYNC); hdf_copy(cgi->hdf, PRE_OUTPUT, evt->hdfrcv); return STATUS_OK; }
NEOERR* city_ip_data_get(CGI *cgi, HASH *dbh, HASH *evth, session_t *ses) { mevent_t *evt = hash_lookup(evth, "city"); char *ip; if (!cgi || !cgi->hdf || !evt) return nerr_raise(NERR_ASSERT, "paramter null"); ip = hdf_get_value(cgi->hdf, PRE_QUERY".ip", NULL); if (!ip) ip = hdf_get_value(cgi->hdf, PRE_REQ_IP, "0.0.0.0"); hdf_set_value(evt->hdfsnd, "ip", ip); MEVENT_TRIGGER(evt, NULL, REQ_CMD_CITY_BY_IP, FLAGS_SYNC); hdf_copy(cgi->hdf, PRE_OUTPUT, evt->hdfrcv); return STATUS_OK; }
NEOERR* member_edit_data_mod(CGI *cgi, HASH *dbh, HASH *evth, session_t *ses) { mevent_t *evt = (mevent_t*)hash_lookup(evth, "member"); char *mname, *msn, *omsn, *rlink; NEOERR *err; MEMBER_CHECK_LOGIN(); HDF_FETCH_STR(cgi->hdf, PRE_QUERY".msn", msn); HDF_FETCH_STR(cgi->hdf, PRE_QUERY".omsn", omsn); HDF_FETCH_STR(cgi->hdf, PRE_QUERY".rlink", rlink); if (msn && *msn) { if (omsn && *omsn) { /* * modify msn through msn */ hdf_set_value(evt->hdfsnd, "mname", mname); hdf_set_value(evt->hdfsnd, "msn", omsn); MEVENT_TRIGGER(evt, mname, REQ_CMD_MEMBER_CHECK_MSN, FLAGS_SYNC); } else if (rlink && *rlink) { /* * modify msn through rlink */ hdf_set_value(evt->hdfsnd, "mname", mname); MEVENT_TRIGGER(evt, mname, REQ_CMD_MEMBER_GETRLINK, FLAGS_SYNC); char *s = hdf_get_value(evt->hdfrcv, "rlink", NULL); if (!s || strcmp(s, rlink)) return nerr_raise(LERR_USERINPUT, "验证码错误"); } else return nerr_raise(LERR_USERINPUT, "修改密码需要提供旧密码"); } else { /* * modify base information */ hdf_set_value(evt->hdfsnd, "mname", mname); hdf_copy(evt->hdfsnd, NULL, hdf_get_obj(cgi->hdf, PRE_QUERY)); MEVENT_TRIGGER(evt, mname, REQ_CMD_MEMBER_UP, FLAGS_NONE); } return STATUS_OK; }
NEOERR * rcfs_meta_save (const char *path, HDF *meta) { NEOERR *err; int lock; HDF *m; err = rcfs_lock (path, &lock); if (err) return nerr_pass (err); do { err = rcfs_meta_load (path, &m); if (err) break; err = hdf_copy (m, "Meta", meta); if (err) break; err = _meta_save (path, m); } while (0); rcfs_unlock (lock); return nerr_pass (err); }
NEOERR* oms_edit_data_mod(CGI *cgi, HASH *dbh, HASH *evth, session_t *ses) { mevent_t *evt = (mevent_t*)hash_lookup(evth, "aic"); char *aname; NEOERR *err; APP_CHECK_LOGIN(); /* * prepare data */ hdf_set_value(evt->hdfsnd, "aname", aname); hdf_copy(evt->hdfsnd, NULL, hdf_get_obj(cgi->hdf, PRE_QUERY)); /* * trigger */ MEVENT_TRIGGER(evt, aname, REQ_CMD_APPUP, FLAGS_NONE); return STATUS_OK; }
NEOERR* member_info_data_get(CGI *cgi, HASH *dbh, HASH *evth, session_t *ses) { mevent_t *evt = hash_lookup(evth, "member"); char *mname; NEOERR *err; MCS_NOT_NULLB(cgi->hdf, evt); mname = hdf_get_value(cgi->hdf, PRE_QUERY".mname", NULL); if (!mname) { MEMBER_CHECK_LOGIN(); hdf_set_value(evt->hdfsnd, "mname", mname); MEVENT_TRIGGER(evt, NULL, REQ_CMD_MEMBER_PRIV_GET, FLAGS_SYNC); } else { hdf_set_value(evt->hdfsnd, "mname", mname); MEVENT_TRIGGER(evt, NULL, REQ_CMD_MEMBER_GET, FLAGS_SYNC); } hdf_copy(cgi->hdf, PRE_OUTPUT".member", evt->hdfrcv); return STATUS_OK; }
NEOERR* member_account_data_get(CGI *cgi, HASH *dbh, HASH *evth, session_t *ses) { mevent_t *evt = (mevent_t*)hash_lookup(evth, "member"); char *mnick, *mname, *mid, *rlink; NEOERR *err; MCS_NOT_NULLB(cgi->hdf, evt); HDF_FETCH_STR(cgi->hdf, PRE_QUERY".mname", mname); HDF_FETCH_STR(cgi->hdf, PRE_QUERY".rlink", rlink); if (mname && rlink) { hdf_set_value(evt->hdfsnd, "mname", mname); MEVENT_TRIGGER(evt, mname, REQ_CMD_MEMBER_GETRLINK, FLAGS_SYNC); mnick = hdf_get_value(evt->hdfrcv, "mnick", NULL); char *s = hdf_get_value(evt->hdfrcv, "rlink", NULL); if (!s || strcmp(s, rlink)) return nerr_raise(LERR_USERINPUT, "验证码错误"); hdf_set_value(evt->hdfsnd, "mname", mname); MEVENT_TRIGGER(evt, mname, REQ_CMD_MEMBER_GET, FLAGS_SYNC); hdf_copy(cgi->hdf, PRE_OUTPUT".member", evt->hdfrcv); mid = hdf_get_value(evt->hdfrcv, "mid", NULL); member_after_login(cgi, evth, mname, mnick, mid); hdf_set_value(cgi->hdf, PRE_OUTPUT".rlink", rlink); } else { MEMBER_CHECK_LOGIN(); } SET_DASHBOARD_ACTION(cgi->hdf); return STATUS_OK; }