return color;
}
-static void _init_color_pairs () {
- int fg, bg;
- for (bg = 0; bg < 8; bg++) {
- for (fg = 0; fg < 8; fg ++) {
+static void _init_color_pairs ()
+{
+ for (int bg = 0; bg < 8; bg++) {
+ for (int fg = 0; fg < 8; fg ++) {
init_pair (_color_num (fg, bg), _color_trans (fg), _color_trans (bg));
}
}
void mvaddcb (int y, int x, cblock_t color)
{
- int init = 1;
+ static int init = 1;
if (init) {
_init_color_pairs ();
init = 0;
}
- int symb = ACS_CKBOARD;
+ int symb;
switch (color) {
case black:
case gray:
void _displaytitle (char *title, int xoffset, int yoffset)
{
- int i;
- for (i = 0; title[i] != '\0'; i++) {
+ for (int i = 0; title[i] != '\0'; i++) {
mvaddch (yoffset, xoffset + i, title[i]);
mvaddch (yoffset + 1, xoffset + i, ACS_HLINE);
}
void _dobound (int xsize, int ysize, int xoffset, int yoffset)
{
- int i, j;
-
- for (i = 0; i < xsize; i++) {
+ for (int i = 0; i < xsize; i++) {
mvaddch (yoffset - 1, xoffset + i, ACS_HLINE);
mvaddch (yoffset + ysize, xoffset + i, ACS_HLINE);
}
- for (j = 0; j < ysize; j++) {
+ for (int j = 0; j < ysize; j++) {
mvaddch (yoffset + j, xoffset - 1, ACS_VLINE);
mvaddch (yoffset + j, xoffset + xsize, ACS_VLINE);
}
void boardwindow (board_t *board, int mode)
{
- int i, j;
-
setcolor (mode ? gray_black : black_gray);
_dobound (board->xsize, board->ysize, board->xoffset, board->yoffset);
setcolor (gray_black);
- for (i = 0; i < board->width; i++) {
- for (j = 0; j < board->height; j++) {
+ for (int i = 0; i < board->width; i++) {
+ for (int j = 0; j < board->height; j++) {
_element (board, i, j, *getcell (board, i, j));
}
}
_dobound (length, 1, xoffset, yoffset);
setcolor (gray_black);
- int i = 0, j;
+ int i = 0;
int stop = 0;
while (!stop) {
- for (j = 0; j < length; j++) {
+ for (int j = 0; j < length; j++) {
setcolor ((j == i) ? yellow_black : black_gray);
mvaddch (yoffset, xoffset + j, name[j]);
setcolor (gray_black);
}
if (name) {
- for (j = length - 1; j >= 0; j--) {
+ for (int j = length - 1; j >= 0; j--) {
if (name[j] == ' ') {
name[j] = '\0';
}
setcolor (gray_black);
_dobound ((length > 0) ? length : (int)strlen (msg), 1, xoffset, yoffset);
if (length > 0) {
- int i;
- for (i = 0; i < length; i++) {
+ for (int i = 0; i < length; i++) {
mvaddch (yoffset, xoffset + i, ' ');
}
}
void displaysnake (board_t *board, snake_t *snake)
{
- int i;
-
_element (board, snake->x[0], snake->y[0], '2');
- for (i = 1; i < snake->length - 1; i++) {
+ for (int i = 1; i < snake->length - 1; i++) {
_element (board, snake->x[i], snake->y[i], '3');
}
_element (board, snake->x[snake->length - 1], snake->y[snake->length - 1], '4');
int _makecomments (char *buffer, board_t *board)
{
- int i, j, l = 0;
- for (j = 0; j < board->height; j++) {
+ int l = 0;
+ for (int j = 0; j < board->height; j++) {
l += sprintf (buffer + l, "rem: \"");
- for (i = 0; i < board->width; i++) {
+ for (int i = 0; i < board->width; i++) {
l += sprintf (buffer + l, "%c", *getcell (board, i, j));
}
l += sprintf (buffer + l, "\"\n");
int _sprinttab (char *buffer, char *name, int *tab, int nb)
{
- int i;
int l = sprintf (buffer, "%s: \"", name);
- for (i = 0; i < nb; i++) {
+ for (int i = 0; i < nb; i++) {
l += sprintf (buffer + l, "%c", _itoz (tab[i]));
}
l += sprintf (buffer + l, "\"\n");
if (fd) {
fseek (fd, 0, SEEK_END);
int size = ftell (fd);
- buffer = (char *) calloc (size + 1, 1);
- CHECKALLOC (buffer);
+ if (size == -1) {
+ VERBOSE (WARNING, printf ("can't read file (%s)\n", filename));
+ } else {
+ buffer = (char *) calloc (size + 1, 1);
+ CHECKALLOC (buffer);
- fseek (fd, 0, SEEK_SET);
- int nb = fread (buffer, 1, size, fd);
- if (nb != size) {
- VERBOSE (WARNING, printf ("can't fully read file (%s)\n", filename));
+ fseek (fd, 0, SEEK_SET);
+ int nb = fread (buffer, 1, size, fd);
+ if (nb != size) {
+ VERBOSE (WARNING, printf ("can't fully read file (%s)\n", filename));
+ }
}
fclose (fd);
}
if ((tab) && (strlen (tab) == (size_t)maxlen) && (length <= maxlen) &&
(xsnake) && (strlen (xsnake) == (size_t)length) &&
(ysnake) && (strlen (ysnake) == (size_t)length)) {
- int i;
data = initdata (width, height);
data->duration = duration;
data->score = score;
data->wide = wide;
data->snake->dir = direction;
data->snake->length = length;
- for (i = 0; i < length; i++) {
+ for (int i = 0; i < length; i++) {
data->snake->x[i] = _ztoi (xsnake[i]);
data->snake->y[i] = _ztoi (ysnake[i]);
}
int isown (snake_t *snake, int x, int y)
{
int ret = 0;
- int i;
- for (i = 0; i < snake->length; i++) {
+ for (int i = 0; i < snake->length; i++) {
if ((snake->x[i] == x) && (snake->y[i] == y)) {
ret = 1;
break;
int movesnake (board_t *board, snake_t *snake, int dir)
{
- int i;
int ret = -1;
int x = snake->x[0];
}
/* fall through */
case ' ': /* only forward */
- for (i = snake->length - 1; i > 0; i--) {
+ for (int i = snake->length - 1; i > 0; i--) {
snake->x[i] = snake->x[i - 1];
snake->y[i] = snake->y[i - 1];
}
break;
case '5': /* increase size */
- for (i = snake->length - 1; i >= 0; i--) {
+ for (int i = snake->length - 1; i >= 0; i--) {
snake->x[i + 1] = snake->x[i];
snake->y[i + 1] = snake->y[i];
}
void drawbonus (board_t *board, snake_t *snake, int malus, int bonus)
{
- int x, y;
- int i;
-
memset (board->tab, ' ', board->width * board->height);
- for (i = 0; i < malus; i++) {
+ for (int i = 0; i < malus; i++) {
+ int x, y;
do {
x = rand () % board->width;
y = rand () % board->height;
*getcell (board, x, y) = '5';
}
- for (i = 0; i < bonus; i++) {
+ for (int i = 0; i < bonus; i++) {
+ int x, y;
do {
x = rand () % board->width;
y = rand () % board->height;
#INCLUDES = -I../debug -D__MEMORY_ALLOCATION__
INCLUDES =
OFLAGS = -O4 -Os
+#OFLAGS = -O0
#OFLAGS = -O4 -ffast-math -finline-functions
#OFLAGS = -O4 -finline-functions
#OFLAGS += -mtune=pentium3 -mmmx -msse -msse2 -m3dnow
# Linux
else ifneq (, $(findstring mingw, $(MAKE_HOST)))
# Windows MinGw
+CFLAGS += -DWIN32
#LDLIBS += -lws2_32
LDOPT = winlnk
else ifneq (, $(findstring cygwin, $(MAKE_HOST)))
+CFLAGS += -DWIN32
# Windows CygWin
LDOPT = winlnk
else ifneq (, $(findstring msdos, $(MAKE_HOST)))
# Targets
-ALLEXE =
-ALLEXE += snake
+ALLEXE = $(shell for f in *.c; do grep -q '/\*\slinker:' $$f && echo $${f/.c}; done)
SHELL = bash
all: depends
$(MAKE) $(ALLEXE:%=%.exe)
+analyze:
+ make purge
+ scan-build make
+ #scan-build -stats make
+
count:
wc $(wildcard *.c *.h) $(MAKEFILE_LIST)
touch gcov
rm -f gcov $(wildcard *.gcda *.gcno)
$(MAKE) purge
- grep '#####' *.c.gcov || true
+ grep '^ *#####' *.c.gcov || true
gprof_%:
$(MAKE) purge
eval $$test; \
[ $$? -eq 0 ] && echo -e "\033[1;32mSUCCESS\033[0;0m" \
|| { echo -e "\033[1;31mFAILED\033[0;0m"; RC=1; }; \
+ test "$$RC" = 1 -a "$(STOP)" = 1 && break; \
done; \
test "$$RC" -ne 1
## Phony
-.PHONY: all clean count depends gcovs purge tests
+.PHONY: all analyze clean count depends gcovs purge tests
## Precious