void engine_index(Engine *engine, DocBuf *buffer, long doc_id) { for(int i = 0; i < buffer->term_count; i++) { Term *term = &buffer->terms[i]; Plist *value = lrw_dict_get(engine->term_dictionary, term); if(value == NULL) { value = plist_new(engine->postings); lrw_dict_put(engine->term_dictionary, term, value); // assert(lrw_dict_get(engine->term_dictionary, term)); } PlistEntry entry = { doc_id, term->offset }; plist_append_entry(value, &entry); } }
/* Ready a game structure for actual use: */ void game_finalize(GameData *gd) { Level *lvl; TankList *tl; DrawBuffer *b; PList *pl; Screen *s; ASSERT_CONFIG(); /* Initialize most of the structures: */ s = screen_new (gd->data.config.is_fullscreen); pl = plist_new (); b = drawbuffer_new(gd->data.config.w, gd->data.config.h); lvl = level_new (b, gd->data.config.w, gd->data.config.h); tl = tanklist_new (lvl, pl); /* Generate our random level: */ generate_level(lvl, gd->data.config.gen); level_decorate(lvl); level_make_bases(lvl); /* Debug the starting data, if we're debugging: */ if(gd->is_debug) level_dump_bmp(lvl, "debug_start.bmp"); /* Start drawing! */ drawbuffer_set_default(b, color_rock); level_draw_all(lvl, b); screen_set_mode_level(s, b); /* Set up the players/GUI: */ if (gd->data.config.player_count == 1) init_single_player(s, tl, lvl); else if(gd->data.config.player_count == 2) init_double_player(s, tl, lvl); else { ERR_OUT("Don't know how to draw more than 2 players at once..."); exit(1); } /* Copy all of our variables into the GameData struct: */ gd->is_active = 1; gd->data.active.s = s; gd->data.active.pl = pl; gd->data.active.b = b; gd->data.active.lvl = lvl; gd->data.active.tl = tl; }
ATF_TC_BODY(parse_plist, tc) { struct pkg *p; struct plist *plist; char buf[BUFSIZ]; ATF_REQUIRE_EQ(EPKG_OK, pkg_new(&p, PKG_INSTALLED)); plist = plist_new(p, "/plop"); ATF_REQUIRE(plist != NULL); ATF_REQUIRE(plist->pkg == p); ATF_REQUIRE_EQ(plist->prefix[0], '\0'); strlcpy(buf, "@cwd /myprefix", BUFSIZ); ATF_REQUIRE_EQ(EPKG_OK, plist_parse_line(p, plist, buf)); ATF_REQUIRE_STREQ(p->prefix, "/myprefix"); ATF_REQUIRE_STREQ(plist->prefix, "/myprefix"); ATF_REQUIRE_STREQ(plist->uname, "root"); ATF_REQUIRE_STREQ(plist->gname, "wheel"); strlcpy(buf, "@owner bob", BUFSIZ); ATF_REQUIRE_EQ(EPKG_OK, plist_parse_line(p, plist, buf)); ATF_REQUIRE_STREQ(plist->uname, "bob"); strlcpy(buf, "@group sponge", BUFSIZ); ATF_REQUIRE_EQ(EPKG_OK, plist_parse_line(p, plist, buf)); ATF_REQUIRE_STREQ(plist->gname, "sponge"); strlcpy(buf, "@group", BUFSIZ); ATF_REQUIRE_EQ(EPKG_OK, plist_parse_line(p, plist, buf)); ATF_REQUIRE_STREQ(plist->gname, "wheel"); strlcpy(buf, "@owner", BUFSIZ); ATF_REQUIRE_EQ(EPKG_OK, plist_parse_line(p, plist, buf)); ATF_REQUIRE_STREQ(plist->uname, "root"); strlcpy(buf, "@cwd plop", BUFSIZ); ATF_REQUIRE_EQ(EPKG_OK, plist_parse_line(p, plist, buf)); ATF_REQUIRE_STREQ(plist->prefix, "plop"); strlcpy(buf, "@cwd", BUFSIZ); ATF_REQUIRE_EQ(EPKG_OK, plist_parse_line(p, plist, buf)); ATF_REQUIRE_STREQ(plist->prefix, "/myprefix"); ATF_REQUIRE_STREQ(plist->slash, "/"); strlcpy(buf, "@cwd /another/prefix/", BUFSIZ); ATF_REQUIRE_EQ(EPKG_OK, plist_parse_line(p, plist, buf)); ATF_REQUIRE_STREQ(plist->prefix, "/another/prefix/"); ATF_REQUIRE_STREQ(plist->slash, ""); ATF_REQUIRE_EQ(0, plist->perm); strlcpy(buf, "@mode 0755", BUFSIZ); ATF_REQUIRE_EQ(EPKG_OK, plist_parse_line(p, plist, buf)); ATF_REQUIRE_EQ(0755, plist->perm); strlcpy(buf, "@mode", BUFSIZ); ATF_REQUIRE_EQ(EPKG_OK, plist_parse_line(p, plist, buf)); ATF_REQUIRE_EQ(0, plist->perm); strlcpy(buf, "@blabla", BUFSIZ); ATF_REQUIRE_EQ(EPKG_FATAL, plist_parse_line(p, plist, buf)); strlcpy(buf, "nonexisting/file", BUFSIZ); ATF_REQUIRE_EQ(EPKG_FATAL, plist_parse_line(p, plist, buf)); pkg_free(p); plist_free(plist); }