From fec171d75fd1f23bec86073be5ba570b582a3f0e Mon Sep 17 00:00:00 2001 From: Enno Rehling Date: Sat, 24 May 2008 16:15:31 +0000 Subject: [PATCH] - vset, vmap and graph are obsolete - LASTORDER define is dead --- src/common/gamecode/creation.c | 2 - src/common/gamecode/creport.c | 10 ---- src/common/gamecode/laws.c | 39 ---------------- src/common/gamecode/monster.c | 8 ---- src/common/gamecode/randenc.c | 8 ++-- src/common/gamecode/report.c | 10 ---- src/common/gamecode/spy.c | 84 ++++++++-------------------------- src/common/gamecode/study.c | 4 -- src/common/kernel/build.c | 8 ---- src/common/kernel/eressea.c | 3 -- src/common/kernel/faction.h | 2 +- src/common/kernel/move.c | 4 -- src/common/kernel/reports.c | 7 --- src/common/kernel/save.c | 36 ++++----------- src/common/kernel/unit.c | 7 --- src/common/kernel/unit.h | 4 -- src/common/modules/arena.c | 3 -- src/common/util/Jamfile | 5 -- src/config.h | 5 -- src/eressea/korrektur.c | 2 - src/premake.lua | 15 +----- src/scripts/run-tests.lua | 15 +++--- 22 files changed, 43 insertions(+), 238 deletions(-) diff --git a/src/common/gamecode/creation.c b/src/common/gamecode/creation.c index 271bedf3e..19388be40 100644 --- a/src/common/gamecode/creation.c +++ b/src/common/gamecode/creation.c @@ -41,8 +41,6 @@ /* util includes */ #include #include -#include -#include /* libc includes */ #include diff --git a/src/common/gamecode/creport.c b/src/common/gamecode/creport.c index d02c04cec..04000bbac 100644 --- a/src/common/gamecode/creport.c +++ b/src/common/gamecode/creport.c @@ -826,12 +826,6 @@ cr_output_unit(FILE * F, const region * r, } /* default commands */ fprintf(F, "COMMANDS\n"); -#ifdef LASTORDER - if (u->lastorder) { - fwriteorder(F, u->lastorder, f->locale); - fputc('\n', F); - } -#else for (ord = u->old_orders; ord; ord = ord->next) { /* this new order will replace the old defaults */ if (is_persistent(ord)) { @@ -839,11 +833,7 @@ cr_output_unit(FILE * F, const region * r, fputc('\n', F); } } -#endif for (ord = u->orders; ord; ord = ord->next) { -#ifdef LASTORDER - if (ord==u->lastorder) continue; -#endif if (u->old_orders && is_repeated(ord)) continue; /* unit has defaults */ if (is_persistent(ord)) { fwriteorder(F, ord, f->locale); diff --git a/src/common/gamecode/laws.c b/src/common/gamecode/laws.c index ca252c753..72a05ed60 100644 --- a/src/common/gamecode/laws.c +++ b/src/common/gamecode/laws.c @@ -157,9 +157,6 @@ restart_race(unit *u, const race * rc) *ordp = ord->next; ord->next = NULL; if (u->thisorder == ord) set_order(&u->thisorder, NULL); -#ifdef LASTORDER - if (u->lastorder == ord) set_order(&u->lastorder, NULL); -#endif } else { ordp = &ord->next; } @@ -3155,21 +3152,13 @@ setdefaults(unit *u) /* Hungernde Einheiten führen NUR den default-Befehl aus */ set_order(&u->thisorder, default_order(u->faction->locale)); } -#ifdef LASTORDER - else { - /* by default the default long order becomes the new long order. */ - u->thisorder = copy_order(u->lastorder); - } -#endif /* check all orders for a potential new long order this round: */ for (ord = u->orders; ord; ord = ord->next) { -#ifndef LASTORDER if (u->old_orders && is_repeated(ord)) { /* this new order will replace the old defaults */ free_orders(&u->old_orders); if (hunger) break; } -#endif if (hunger) continue; if (is_exclusive(ord)) { @@ -3223,28 +3212,6 @@ setdefaults(unit *u) /* fset(u, UFL_LONGACTION|UFL_NOTMOVING); */ set_order(&u->thisorder, NULL); } - /* thisorder kopieren wir nun nach lastorder. in lastorder steht - * der DEFAULT befehl der einheit. da MOVE kein default werden - * darf, wird MOVE nicht in lastorder kopiert. MACHE TEMP wurde ja - * schon gar nicht erst in thisorder kopiert, so dass MACHE TEMP - * durch diesen code auch nicht zum default wird Ebenso soll BIETE - * nicht hierher, da i.A. die Einheit dann ja weg ist (und damit - * die Einheitsnummer ungueltig). Auch Attackiere sollte nie in - * den Default übernommen werden */ - -#ifdef LASTORDER - switch (get_keyword(u->thisorder)) { - case K_MOVE: - case K_ATTACK: - case K_WEREWOLF: - case NOKEYWORD: - /* these can never be default orders */ - break; - - default: - set_order(&u->lastorder, copy_order(u->thisorder)); - } -#endif } static int @@ -3391,9 +3358,7 @@ defaultorders (void) for (r=regions;r;r=r->next) { unit *u; for (u=r->units;u;u=u->next) { -#ifndef LASTORDER boolean neworders = false; -#endif order ** ordp = &u->orders; while (*ordp!=NULL) { order * ord = *ordp; @@ -3407,9 +3372,6 @@ defaultorders (void) *ordp = ord->next; ord->next = NULL; free_order(ord); -#ifdef LASTORDER - if (new_order) set_order(&u->lastorder, new_order); -#else if (!neworders) { /* lange Befehle aus orders und old_orders löschen zu gunsten des neuen */ remove_exclusive(&u->orders); @@ -3418,7 +3380,6 @@ defaultorders (void) ordp = &u->orders; /* we could have broken ordp */ } if (new_order) addlist(&u->old_orders, new_order); -#endif } else ordp = &ord->next; } diff --git a/src/common/gamecode/monster.c b/src/common/gamecode/monster.c index 1d3fbd1f4..b5b9e0a99 100644 --- a/src/common/gamecode/monster.c +++ b/src/common/gamecode/monster.c @@ -816,11 +816,7 @@ recruit_dracoids(unit * dragon, int size) } if (new_order!=NULL) { -#ifdef LASTORDER - set_order(&un->lastorder, new_order); -#else addlist(&un->orders, new_order); -#endif } } @@ -1022,11 +1018,7 @@ plan_monsters(void) } if (long_order) { set_order(&u->thisorder, copy_order(long_order)); -#ifdef LASTORDER - set_order(&u->lastorder, copy_order(long_order)); -#else addlist(&u->orders, long_order); -#endif } } } diff --git a/src/common/gamecode/randenc.c b/src/common/gamecode/randenc.c index 0fb0ccdb9..0e325e134 100644 --- a/src/common/gamecode/randenc.c +++ b/src/common/gamecode/randenc.c @@ -676,9 +676,11 @@ volcano_outbreak(region *r) unit *u, **up; faction *f; - for (u=r->units; u; u=u->next) { - f = u->faction; - freset(f, FFL_SELECT); + for (f=NULL,u=r->units; u; u=u->next) { + if (f!=u->faction) { + f = u->faction; + freset(f, FFL_SELECT); + } } rn = rrandneighbour(r); diff --git a/src/common/gamecode/report.c b/src/common/gamecode/report.c index 71fe07256..253618477 100644 --- a/src/common/gamecode/report.c +++ b/src/common/gamecode/report.c @@ -1452,7 +1452,6 @@ report_template(const char * filename, report_context * ctx, const char * charse rps_nowrap(F, buf); rnl(F); -#ifndef LASTORDER for (ord = u->old_orders; ord; ord = ord->next) { /* this new order will replace the old defaults */ strcpy(buf, " "); @@ -1460,7 +1459,6 @@ report_template(const char * filename, report_context * ctx, const char * charse rps_nowrap(F, buf); rnl(F); } -#endif for (ord = u->orders; ord; ord = ord->next) { if (u->old_orders && is_repeated(ord)) continue; /* unit has defaults */ if (is_persistent(ord)) { @@ -1473,14 +1471,6 @@ report_template(const char * filename, report_context * ctx, const char * charse /* If the lastorder begins with an @ it should have * been printed in the loop before. */ -#ifdef LASTORDER - if (u->lastorder && !is_persistent(u->lastorder)) { - strcpy(buf, " "); - write_order(u->lastorder, u->faction->locale, buf+2, sizeof(buf)-2); - rps_nowrap(F, buf); - rnl(F); - } -#endif } } } diff --git a/src/common/gamecode/spy.c b/src/common/gamecode/spy.c index 9c79284a2..c5771b036 100644 --- a/src/common/gamecode/spy.c +++ b/src/common/gamecode/spy.c @@ -48,7 +48,6 @@ #include #include #include -#include /* libc includes */ #include @@ -442,21 +441,23 @@ try_destruction(unit * u, unit * u2, const ship *sh, int skilldiff) } static void -sink_ship(region * r, ship * sh, const char *name, char spy, unit * saboteur) +sink_ship(region * r, ship * sh, const char *name, unit * saboteur) { - unit **ui; + unit **ui, *u; region *safety = r; int i; direction_t d; - unsigned int index; double probability = 0.0; - vset informed; - vset survivors; message * sink_msg = NULL; - message * enemy_discovers_spy_msg = NULL; + faction * f; - vset_init(&informed); - vset_init(&survivors); + for (f=NULL,u=r->units;u;u=u->next) { + /* slight optimization to avoid dereferencing u->faction each time */ + if (f!=u->faction) { + f = u->faction; + freset(f, FFL_SELECT); + } + } /* figure out what a unit's chances of survival are: */ if (!fval(r->terrain, SEA_REGION)) { @@ -475,7 +476,14 @@ sink_ship(region * r, ship * sh, const char *name, char spy, unit * saboteur) unit *u = *ui; /* inform this faction about the sinking ship: */ - vset_add(&informed, u->faction); + if (!fval(u->faction, FFL_SELECT)) { + fset(u->faction, FFL_SELECT); + if (sink_msg==NULL) { + sink_msg = msg_message("sink_msg", "ship region", sh, r); + } + add_message(&f->msgs, sink_msg); + } + if (u->ship == sh) { int dead = 0; message * msg; @@ -485,10 +493,8 @@ sink_ship(region * r, ship * sh, const char *name, char spy, unit * saboteur) if (chance(probability)) ++dead; - if (dead != u->number) + if (dead != u->number) { /* she will live. but her items get stripped */ - { - vset_add(&survivors, u); if (dead > 0) { msg = msg_message("sink_lost_msg", "dead region unit", dead, safety, u); } else { @@ -516,59 +522,9 @@ sink_ship(region * r, ship * sh, const char *name, char spy, unit * saboteur) } } } - - /* inform everyone, and reduce money to the absolutely necessary - * amount: */ - while (informed.size != 0) { - unit *lastunit = 0; - int money = 0, maintain = 0; - faction * f = (faction *) informed.data[0]; - - /* find out how much money this faction still has: */ - for (index = 0; index != survivors.size; ++index) { - unit *u = (unit *) survivors.data[index]; - - if (u->faction == f) { - maintain += maintenance_cost(u); - money += get_money(u); - lastunit = u; - } - } - /* 'money' shall be the maintenance-surplus of the survivng - * units: */ - money = money - maintain; - for (index = 0; money > 0; ++index) { - int remove; - unit *u = (unit *) survivors.data[index]; - - assert(index < survivors.size); - if (u->faction == f && playerrace(u->race)) { - remove = min(get_money(u), money); - money -= remove; - change_money(u, -remove); - } - } - /* finally, report to this faction that the ship sank: */ - if (sink_msg==NULL) { - sink_msg = msg_message("sink_msg", "ship region", sh, r); - } - add_message(&f->msgs, sink_msg); - vset_erase(&informed, f); - if (spy == 1 && f != saboteur->faction && faction_skill(r, f, SK_PERCEPTION) - eff_skill(saboteur, SK_STEALTH, r) > 0) { - /* the unit is discovered */ - ADDMSG(&f->msgs, msg_message("spy_discovered_msg", "unit saboteur ship", lastunit, saboteur, sh)); - if (enemy_discovers_spy_msg==NULL) { - enemy_discovers_spy_msg = msg_message("enemy_discovers_spy_msg", "unit ship", saboteur, sh); - } - add_message(&saboteur->faction->msgs, sink_msg); - } - } - if (enemy_discovers_spy_msg) msg_release(enemy_discovers_spy_msg); if (sink_msg) msg_release(sink_msg); /* finally, get rid of the ship */ remove_ship(&sh->region->ships, sh); - vset_destroy(&informed); - vset_destroy(&survivors); } int @@ -598,7 +554,7 @@ sabotage_cmd(unit * u, struct order * ord) u2 = shipowner(sh); skdiff = eff_skill(u, SK_SPY, r)-crew_skill(r, u2->faction, sh, SK_PERCEPTION); if (try_destruction(u, u2, sh, skdiff)) { - sink_ship(r, sh, buffer, 1, u); + sink_ship(r, sh, buffer, u); } break; default: diff --git a/src/common/gamecode/study.c b/src/common/gamecode/study.c index e6ee69836..7a85df2ff 100644 --- a/src/common/gamecode/study.c +++ b/src/common/gamecode/study.c @@ -437,12 +437,8 @@ teach_cmd(unit * u, struct order * ord) teaching -= teach_unit(u, u2, teaching, sk, false, &academy); } new_order = create_order(K_TEACH, u->faction->locale, "%s", zOrder); -#ifdef LASTORDER - set_order(&u->lastorder, new_order); -#else replace_order(&u->orders, ord, new_order); free_order(new_order); /* parse_order & set_order have each increased the refcount */ -#endif } if (academy && sk!=NOSKILL) { academy = academy/30; /* anzahl gelehrter wochen, max. 10 */ diff --git a/src/common/kernel/build.c b/src/common/kernel/build.c index ffc060047..5c9008999 100644 --- a/src/common/kernel/build.c +++ b/src/common/kernel/build.c @@ -942,12 +942,8 @@ build_building(unit * u, const building_type * btype, int want, order * ord) } if (new_order) { -#ifdef LASTORDER - set_order(&u->lastorder, new_order); -#else replace_order(&u->orders, ord, new_order); free_order(new_order); -#endif } b->size += built; @@ -1031,12 +1027,8 @@ create_ship(region * r, unit * u, const struct ship_type * newtype, int want, or } fset(u, UFL_OWNER); new_order = create_order(K_MAKE, u->faction->locale, "%s %i", LOC(u->faction->locale, parameters[P_SHIP]), sh->no); -#ifdef LASTORDER - set_order(&u->lastorder, new_order); -#else replace_order(&u->orders, ord, new_order); free_order(new_order); -#endif build_ship(u, sh, want); } diff --git a/src/common/kernel/eressea.c b/src/common/kernel/eressea.c index 8b6b88949..caf99227f 100644 --- a/src/common/kernel/eressea.c +++ b/src/common/kernel/eressea.c @@ -2459,9 +2459,6 @@ weight(const unit * u) void make_undead_unit(unit * u) { -#ifdef LASTORDER - set_order(&u->lastorder, NULL); -#endif free_orders(&u->orders); name_unit(u); fset(u, UFL_ISNEW); diff --git a/src/common/kernel/faction.h b/src/common/kernel/faction.h index ab8cf9ee1..fd211f0e6 100644 --- a/src/common/kernel/faction.h +++ b/src/common/kernel/faction.h @@ -43,7 +43,7 @@ typedef struct shortpwd { #define FFL_NOAID (1<<21) /* Hilfsflag Kampf */ #define FFL_MARK (1<<23) /* für markierende algorithmen, die das * hinterher auch wieder löschen müssen! - * (FL_DH muss man vorher initialisieren, + * (FFL_SELECT muss man vorher initialisieren, * FL_MARK hinterher löschen) */ #define FFL_NOIDLEOUT (1<<24) /* Partei stirbt nicht an NMRs */ #define FFL_OVERRIDE (1<<27) /* Override-Passwort wurde benutzt */ diff --git a/src/common/kernel/move.c b/src/common/kernel/move.c index 294012270..5d3177c72 100644 --- a/src/common/kernel/move.c +++ b/src/common/kernel/move.c @@ -1016,12 +1016,8 @@ cycle_route(order * ord, unit *u, int gereist) strcat(neworder, tail); norder = create_order(K_ROUTE, u->faction->locale, "%s", neworder); -#ifdef LASTORDER - set_order(&u->lastorder, norder); -#else replace_order(&u->orders, ord, norder); free_order(norder); -#endif } static boolean diff --git a/src/common/kernel/reports.c b/src/common/kernel/reports.c index cbb7eb382..6ecc27385 100644 --- a/src/common/kernel/reports.c +++ b/src/common/kernel/reports.c @@ -532,12 +532,6 @@ bufunit(const faction * f, const unit * u, int indent, int mode, char * buf, siz } } } -#ifdef LASTORDER - if (!isbattle && u->lastorder) { - bytes = buforder(bufp, size, u->lastorder, 0); - if (wrptr(&bufp, &size, bytes)!=0) WARN_STATIC_BUFFER(); - } -#else if (!isbattle) { boolean printed = 0; order * ord;; @@ -558,7 +552,6 @@ bufunit(const faction * f, const unit * u, int indent, int mode, char * buf, siz } } } -#endif } i = 0; diff --git a/src/common/kernel/save.c b/src/common/kernel/save.c index 7255eb629..5339b4fef 100644 --- a/src/common/kernel/save.c +++ b/src/common/kernel/save.c @@ -619,30 +619,16 @@ write_items(struct storage * store, item *ilist) int lastturn(void) { + char zText[MAX_PATH]; int turn = 0; -#ifdef HAVE_READDIR - DIR *data_dir = NULL; - struct dirent *entry = NULL; - const char * dir = datapath(); - data_dir = opendir(dir); - if (data_dir != NULL) { - entry = readdir(data_dir); + FILE * f; + + sprintf(zText, "%s/turn", basepath()); + f = cfopen(zText, "r"); + if (f) { + fscanf(f, "%d\n", &turn); + fclose(f); } - if (data_dir != NULL && entry != NULL) { - turn = 0; - do { - int i = atoi(entry->d_name); - if (i > turn) - turn = i; - entry = readdir(data_dir); - } while (entry != NULL); -#ifdef HAVE_CLOSEDIR - closedir(data_dir); -#endif - } -#else -# error "requires dirent.h or an equivalent to compile!" -#endif return turn; } @@ -800,11 +786,7 @@ readunit(struct storage * store) store->r_str_buf(store, obuf, sizeof(obuf)); ord = parse_order(obuf, u->faction->locale); if (ord!=NULL) { -#ifdef LASTORDER - set_order(&u->lastorder, ord); -#else addlist(&u->orders, ord); -#endif } } set_order(&u->thisorder, NULL); @@ -866,7 +848,6 @@ writeunit(struct storage * store, const unit * u) store->w_int(store, u->status); store->w_int(store, u->flags & UFL_SAVEMASK); store->w_brk(store); -#ifndef LASTORDER for (ord = u->old_orders; ord; ord=ord->next) { if (++pfaction->locale); @@ -875,7 +856,6 @@ writeunit(struct storage * store, const unit * u) break; } } -#endif for (ord = u->orders; ord; ord=ord->next) { if (u->old_orders && is_repeated(ord)) continue; /* has new defaults */ if (is_persistent(ord)) { diff --git a/src/common/kernel/unit.c b/src/common/kernel/unit.c index ad8616aa7..a9c0feff1 100644 --- a/src/common/kernel/unit.c +++ b/src/common/kernel/unit.c @@ -1017,9 +1017,6 @@ u_setfaction(unit * u, faction * f) join_group(u, NULL); free_orders(&u->orders); set_order(&u->thisorder, NULL); -#ifdef LASTORDER - set_order(&u->lastorder, NULL); -#endif iunit = &u->faction->units; while (*iunit && *iunit!=u) { @@ -1409,11 +1406,7 @@ create_unit(region * r, faction * f, int number, const struct race *urace, int i assert(f->alive); u_setfaction(u, f); set_order(&u->thisorder, NULL); -#ifdef LASTORDER - set_order(&u->lastorder, deford); -#else addlist(&u->orders, deford); -#endif u_seteffstealth(u, -1); u->race = urace; u->irace = urace; diff --git a/src/common/kernel/unit.h b/src/common/kernel/unit.h index 9759d7f4b..d1fe8a8d9 100644 --- a/src/common/kernel/unit.h +++ b/src/common/kernel/unit.h @@ -96,11 +96,7 @@ typedef struct unit { /* orders */ struct order * orders; struct order * thisorder; -#ifdef LASTORDER - struct order * lastorder; -#else struct order * old_orders; -#endif /* race and illusionary race */ const struct race * race; diff --git a/src/common/modules/arena.c b/src/common/modules/arena.c index 9b9aea931..d9e5ac014 100644 --- a/src/common/modules/arena.c +++ b/src/common/modules/arena.c @@ -345,9 +345,6 @@ guardian_faction(plane * pl, int id) set_string(&u->name, "Igjarjuks Auge"); set_item(u, I_RING_OF_INVISIBILITY, 1); set_order(&u->thisorder, NULL); -#ifdef LASTORDER - set_order(&u->lastorder, NULL); -#endif fset(u, UFL_PARTEITARNUNG); set_money(u, 1000); } diff --git a/src/common/util/Jamfile b/src/common/util/Jamfile index a043c982f..a3f4cccf1 100644 --- a/src/common/util/Jamfile +++ b/src/common/util/Jamfile @@ -19,14 +19,12 @@ SOURCES = filereader.c functions.c goodies.c - graph.c language.c lists.c log.c message.c nrmessage.c parser.c - patricia.c rand.c resolve.c sql.c @@ -34,9 +32,6 @@ SOURCES = translation.c umlaut.c unicode.c - vmap.c - vset.c - windir.c xml.c ; diff --git a/src/config.h b/src/config.h index 9289e93ed..ef30cd7fe 100644 --- a/src/config.h +++ b/src/config.h @@ -102,8 +102,6 @@ extern "C" { #endif #ifdef WIN32 -# include -# define HAVE_READDIR # define HAVE__MKDIR_WITHOUT_PERMISSION # define HAVE__SLEEP_MSEC #endif @@ -116,9 +114,6 @@ extern "C" { # define HAVE_ACCESS # define HAVE_STAT typedef struct stat stat_type; -# include -# define HAVE_READDIR -# define HAVE_OPENDIR # include # define HAVE_STRDUP # define HAVE_SNPRINTF diff --git a/src/eressea/korrektur.c b/src/eressea/korrektur.c index b0d6f3251..49add37a3 100644 --- a/src/eressea/korrektur.c +++ b/src/eressea/korrektur.c @@ -68,7 +68,6 @@ /* util includes */ #include #include -#include #include #include #include @@ -77,7 +76,6 @@ #include #include #include -#include /* libc includes */ #include diff --git a/src/premake.lua b/src/premake.lua index 3a2eae0b7..15604575f 100644 --- a/src/premake.lua +++ b/src/premake.lua @@ -114,25 +114,14 @@ package.path = "eressea" package.includepaths = { "..", "../common" } package.files = { "gmtool.h", "gmtool.c", "editing.c", "editing.h", "curses/listbox.h", "curses/listbox.c", "lua/gm.cpp" } for k,v in project.configs do - package.config[v].objdir = v - package.config[v].bindir = v + package.config[v].objdir = v .. "/" .. package.name + package.config[v].libdir = v .. "/" .. package.name table.insert(package.config[v].buildflags, "extra-warnings") table.insert(package.config[v].buildflags, "no-debug-runtime") table.insert(package.config[v].buildflags, "singlethread-runtime") for index, name in c_defines do table.insert(package.config[v].defines, name) end - if (windows) then - if target=="vs2005" then - if v=="Debug" then - package.config[v].links = { "lua5.1_d", "luabind_d" } - else - package.config[v].links = { "lua5.1", "luabind" } - end - else - package.config[v].links = { "lua50", "luabind" } - end - end if v~="Debug" then table.insert(package.config[v].defines, "NDEBUG") end diff --git a/src/scripts/run-tests.lua b/src/scripts/run-tests.lua index b9c0c08c4..e66e60e10 100644 --- a/src/scripts/run-tests.lua +++ b/src/scripts/run-tests.lua @@ -58,13 +58,13 @@ end function test_realloc() local t1 = os.clock() - read_game("571.dat.2", "binary") + read_game("571.4.dat", "binary") print(os.clock() - t1) free_game() print(os.clock() - t1) -- and again local t2 = os.clock() - read_game("571.dat.2", "binary") + read_game("571.4.dat", "binary") print(os.clock() - t2) free_game() print(os.clock() - t2) @@ -79,14 +79,13 @@ end loadscript("default.lua") run_scripts() -- go -local now = os.clock() -- test_free() -test_bmark() +-- test_bmark() +test_realloc() -- test_hse() --- test_realloc() -local elapsed = os.clock() - now -print(elapsed) +io.stdin:read("*line") -- text: 50.574 -- bin0: 19.547 -- bin1: 18.953 --- io.stdin:read("*line") +-- bin1: 18.313 +-- bin2: 17.938