/* load a specified version of the file, version -1 is latest */ NEOERR * rcfs_load (const char *path, int version, char **data) { NEOERR *err; char fpath[_POSIX_PATH_MAX]; if (version == -1) { HDF *meta, *vers; int x; err = rcfs_meta_load (path, &meta); if (err) return nerr_pass (err); for (vers = hdf_get_child (meta, "Versions"); vers; vers = hdf_obj_next (vers)) { x = atoi (hdf_obj_name (vers)); if (x > version) version = x; } hdf_destroy (&meta); } snprintf (fpath, sizeof (fpath), "%s,%d", path, version); err = ne_load_file (fpath, data); return nerr_pass (err); }
static EventEntry* city_init_driver(void) { struct city_entry *e = calloc(1, sizeof(struct city_entry)); if (e == NULL) return NULL; NEOERR *err; e->base.name = (unsigned char*)strdup(PLUGIN_NAME); e->base.ksize = strlen(PLUGIN_NAME); e->base.process_driver = city_process_driver; e->base.stop_driver = city_stop_driver; //mevent_add_timer(&e->base.timers, 60, true, hint_timer_up_term); char *s = hdf_get_value(g_cfg, CONFIG_PATH".dbsn", NULL); err = mdb_init(&e->db, s); JUMP_NOK(err, error); e->cd = cache_create(hdf_get_int_value(g_cfg, CONFIG_PATH".numobjs", 1024), 0); if (e->cd == NULL) { wlog("init cache failure"); goto error; } s = hdf_get_value(g_cfg, CONFIG_PATH".ipfile", "QQWry.Dat"); err = ne_load_file(s, (char**)&ips); JUMP_NOK(err, error); ipbgn = b2int(ips, 4); ipend = b2int(ips+4, 4); if (ipbgn < 0 || ipend < 0) { wlog("%s format error", s); goto error; } return (EventEntry*)e; error: if (e->base.name) free(e->base.name); if (e->db) mdb_destroy(e->db); if (e->cd) cache_free(e->cd); if (ips) free(ips); free(e); return NULL; }
static NEOERR* hdf_read_file_internal (HDF *hdf, const char *path, int include_handle) { NEOERR *err; int lineno = 0; char fpath[PATH_BUF_SIZE]; char *ibuf = NULL; const char *ptr = NULL; HDF *top = hdf->top; STRING line; string_init(&line); if (path == NULL) return nerr_raise(NERR_ASSERT, "Can't read NULL file"); if (top->fileload) { err = top->fileload(top->fileload_ctx, hdf, path, &ibuf); } else { if (path[0] != '/') { err = hdf_search_path (hdf, path, fpath, PATH_BUF_SIZE); if (err != STATUS_OK) return nerr_pass(err); path = fpath; } err = ne_load_file (path, &ibuf); } if (err) return nerr_pass(err); ptr = ibuf; err = _hdf_read_string(hdf, &ptr, &line, path, &lineno, include_handle); free(ibuf); string_clear(&line); return nerr_pass(err); }
NEOERR* hdf_read_file (HDF *hdf, const char *path) { NEOERR *err; int lineno = 0; char fpath[_POSIX_PATH_MAX]; char *ibuf = NULL; const char *ptr = NULL; HDF *top = hdf->top; STRING line; string_init(&line); if (path == NULL) return nerr_raise(NERR_ASSERT, "Can't read NULL file"); if (top->fileload) { err = top->fileload(top->fileload_ctx, hdf, path, &ibuf); } else { if (path[0] != '/') { err = hdf_search_path (hdf, path, fpath); if (err != STATUS_OK) return nerr_pass(err); path = fpath; } err = ne_load_file (path, &ibuf); } if (err) return nerr_pass(err); ptr = ibuf; err = _hdf_read_string(hdf, &ptr, &line, path, &lineno, INCLUDE_FILE); free(ibuf); string_clear(&line); return nerr_pass(err); }