library_t *lib = (library_t *) malloc ((n + 2) * sizeof (library_t));
CHECKALLOC (lib);
- (lib + n)->board = initboard (1, 1);
- (lib + n)->board->tab[0] = 'X';
+ (lib + n)->board = initboard (3, 3);
+ (lib + n)->board->tab[4] = 'X';
(lib + n)->name = strdup ("Cell");
+ memset (lib + n + 1, 0, sizeof (library_t));
n++;
if (libname) {
char *filename = strtok_r (libname, ":", &saveptr);
while (filename) {
char *name;
- n++;
lib = (library_t *) realloc (lib, (n + 2) * sizeof (library_t));
CHECKALLOC (lib);
(lib + n)->board = processfile (filename, &name);
if ((lib + n)->board != NULL) {
(lib + n)->name = name;
+ memset (lib + n + 1, 0, sizeof (library_t));
n++;
}
- filename = strtok_r (NULL, "\n", &saveptr);
+ filename = strtok_r (NULL, ":", &saveptr);
}
}
/* load library */
library_t *lib = processlibrary (listoffilename);
- board_t *element = (lib + 0)->board;
+ int n = 0;
+ board_t *element = (lib + n)->board;
/* load playground */
board_t *playground = NULL;
case 'l':
xelement = (xelement + 1) % board->xsize;
break;
+ case 'o':
+ n++;
+ if ((lib + n)->board == NULL) {
+ n = 0;
+ }
+ element = (lib + n)->board;
+ break;
case KEY_ESC:
case 'q':
stop = 1;
}
free (ptr);
break;
+ case 'u':
+ n--;
+ if (n < 0) {
+ n = 0;
+ while ((lib + n + 1)->board) {
+ n++;
+ }
+ }
+ element = (lib + n)->board;
+ break;
case KEY_BACKSPACE:
case KEY_DELETE:
case 127:
endwin ();
- int n = 0;
+ n = 0;
while ((lib + n)->board) {
freeboard ((lib + n)->board);
free ((lib + n)->name);