5786079d91
sprinkle snprintf around while we're at it.
97 lines
2.3 KiB
Plaintext
97 lines
2.3 KiB
Plaintext
$OpenBSD: patch-moon_lander_c,v 1.2 2003/04/16 10:31:24 espie Exp $
|
|
--- moon_lander.c.orig Wed Aug 22 22:52:28 2001
|
|
+++ moon_lander.c Wed Apr 16 12:28:42 2003
|
|
@@ -20,6 +20,7 @@
|
|
|
|
#include <stdio.h>
|
|
#include <stdlib.h>
|
|
+#include <string.h>
|
|
#include <math.h>
|
|
#include <sys/types.h>
|
|
#include <unistd.h>
|
|
@@ -37,7 +38,7 @@
|
|
#define YSIZE 480
|
|
#define TERRAIN_YSIZE (YSIZE / 2)
|
|
#define FPS (1000 / 35)
|
|
-#define DATAPATH ""
|
|
+#define DATAPATH "/usr/local/share/moonlander/"
|
|
|
|
#define FRESHRUN 0
|
|
#define GAMEOVER 1
|
|
@@ -175,9 +176,10 @@ void get_new_background(Game *game) {
|
|
|
|
char filename[1024];
|
|
DIR *dir;
|
|
- struct dirent *files[100];
|
|
- int done = 0;
|
|
+ char *bg[100];
|
|
+ struct dirent *d;
|
|
int count = 0;
|
|
+ int i;
|
|
|
|
/* read images/backgrounds dir and choose a random image from there.
|
|
* put it's filename in image_file
|
|
@@ -185,27 +187,20 @@ void get_new_background(Game *game) {
|
|
|
|
|
|
|
|
- sprintf(filename, "%simages/backgrounds", DATAPATH);
|
|
+ snprintf(filename, sizeof filename, "%simages/backgrounds", DATAPATH);
|
|
|
|
if ( !(dir = opendir(filename)) ){
|
|
/* error */
|
|
printf("cannot open dir %s\n", filename);
|
|
exit(0);
|
|
}
|
|
-
|
|
- while (!done){
|
|
- if ( files[count] = readdir(dir) ){
|
|
-
|
|
- //printf("I see - %d %s\n", count, files[count]->d_name);
|
|
- count++;
|
|
- }
|
|
- else{
|
|
- done = 1;
|
|
- }
|
|
-
|
|
- if (count > 99) {
|
|
- done = 1;
|
|
- }
|
|
+
|
|
+ while ( (d = readdir(dir)) != NULL){
|
|
+ if (!strcmp(d->d_name, ".") || !strcmp(d->d_name, ".."))
|
|
+ continue;
|
|
+ bg[count++] = strdup(d->d_name);
|
|
+ if (count >= 100)
|
|
+ break;
|
|
}
|
|
|
|
closedir(dir);
|
|
@@ -221,12 +216,12 @@ void get_new_background(Game *game) {
|
|
|
|
game->back_no++;
|
|
|
|
- if (game->back_no < 2){
|
|
- game->back_no = 2;
|
|
+ if (game->back_no < 0){
|
|
+ game->back_no = 0;
|
|
}
|
|
|
|
if (game->back_no >= count){
|
|
- game->back_no = 2;
|
|
+ game->back_no = 0;
|
|
}
|
|
|
|
|
|
@@ -240,7 +235,9 @@ void get_new_background(Game *game) {
|
|
|
|
//printf("about to get new background: %d\n", game->back_no );
|
|
|
|
- sprintf(filename, "%simages/backgrounds/%s", DATAPATH, files[game->back_no]->d_name);
|
|
+ snprintf(filename, sizeof(filename), "%simages/backgrounds/%s", DATAPATH, bg[game->back_no]);
|
|
+ for (i = 0; i < count; i++)
|
|
+ free(bg[i]);
|
|
|
|
// printf("got %s\n", filename);
|
|
|