diff --git a/worm.c b/worm.c index b35c7ae..67176e3 100644 --- a/worm.c +++ b/worm.c @@ -88,6 +88,8 @@ char outbuf[BUFSIZ]; void crash(void) __attribute__((__noreturn__)); void display(const struct body *, char); int main(int, char **); +int run_size(int); +int run_worm(); void leave(int) __attribute__((__noreturn__)); void life(void); void newpos(struct body *); @@ -97,12 +99,24 @@ int rnd(int); void setup(void); void wake(int); -int -main(argc, argv) - int argc; - char **argv; -{ +int main(int argc, char **argv) { + if (argc == 2) + run_size(atoi(argv[1])); + if ((start_len <= 0) || (start_len > ((LINES-3) * (COLS-2)) / 3)) + run_size(LENGTH); + + int retval = run_worm(); + + return retval; +} + +int run_size(int sl) { + start_len = sl; + run_worm(); +} + +int run_worm() { /* Revoke setgid privileges */ setregid(getgid(), getgid()); @@ -128,10 +142,6 @@ main(argc, argv) endwin(); errx(1, "screen too small"); } - if (argc == 2) - start_len = atoi(argv[1]); - if ((start_len <= 0) || (start_len > ((LINES-3) * (COLS-2)) / 3)) - start_len = LENGTH; stw = newwin(1, COLS-1, 0, 0); tv = newwin(LINES-1, COLS-1, 1, 0); box(tv, '*', '*');