summaryrefslogtreecommitdiff
path: root/src/interface.c
diff options
context:
space:
mode:
authorjacksonmj <mj-pt@jacksonmj.co.uk>2011-06-22 18:22:48 (GMT)
committer Simon Robertshaw <simon@hardwired.org.uk>2011-06-25 14:52:24 (GMT)
commit36e2a07a5b5e0eb07bd9fcea48004dd8b5890322 (patch)
treecfdb0166c3d18c41a9dacc82326711fdea564ab6 /src/interface.c
parent04b3eb11fd32daaf094df676d2037ed613c172a0 (diff)
downloadpowder-36e2a07a5b5e0eb07bd9fcea48004dd8b5890322.zip
powder-36e2a07a5b5e0eb07bd9fcea48004dd8b5890322.tar.gz
Visual Studio fixes
Diffstat (limited to 'src/interface.c')
-rw-r--r--src/interface.c78
1 files changed, 50 insertions, 28 deletions
diff --git a/src/interface.c b/src/interface.c
index 1cbf0d6..a85ea1f 100644
--- a/src/interface.c
+++ b/src/interface.c
@@ -16,7 +16,11 @@
#include <misc.h>
#include <console.h>
#include <images.h>
+#if defined(WIN32) && !defined(__GNUC__)
+#include <io.h>
+#else
#include <dirent.h>
+#endif
SDLMod sdl_mod;
int sdl_key, sdl_wheel, sdl_caps=0, sdl_ascii, sdl_zoom_trig=0;
@@ -5109,9 +5113,26 @@ typedef struct savelist_e savelist_e;
savelist_e *get_local_saves(char *folder, char *search, int *results_ret)
{
int index = 0, results = 0;
- struct dirent *derp;
savelist_e *new_savelist = NULL;
- savelist_e *current_item = NULL;
+ savelist_e *current_item = NULL, *new_item = NULL;
+ char *fname;
+#if defined(WIN32) && !defined(__GNUC__)
+ struct _finddata_t current_file;
+ intptr_t findfile_handle;
+ char *filematch = malloc(strlen(folder)+4);
+ sprintf(filematch, "%s%s", folder, "*.*");
+ findfile_handle = _findfirst(filematch, &current_file);
+ free(filematch);
+ if (findfile_handle == -1L)
+ {
+ *results_ret = 0;
+ return NULL;
+ }
+ do
+ {
+ fname = current_file.name;
+#else
+ struct dirent *derp;
DIR *directory = opendir(folder);
if(!directory)
{
@@ -5119,39 +5140,40 @@ savelist_e *get_local_saves(char *folder, char *search, int *results_ret)
*results_ret = 0;
return NULL;
}
- while(derp = readdir(directory)){
- char *ext;
- if(strlen(derp->d_name)>4)
+ while(derp = readdir(directory))
+ {
+ fname = derp->d_name;
+#endif
+ if(strlen(fname)>4)
{
- ext = derp->d_name+(strlen(derp->d_name)-4);
- if((!strncmp(ext, ".cps", 4) || !strncmp(ext, ".stm", 4)) && (search==NULL || strstr(derp->d_name, search)))
+ char *ext = fname+(strlen(fname)-4);
+ if((!strncmp(ext, ".cps", 4) || !strncmp(ext, ".stm", 4)) && (search==NULL || strstr(fname, search)))
{
+ new_item = malloc(sizeof(savelist_e));
+ new_item->filename = malloc(strlen(folder)+strlen(fname)+1);
+ sprintf(new_item->filename, "%s%s", folder, fname);
+ new_item->name = mystrdup(fname);
+ new_item->image = NULL;
+ new_item->next = NULL;
if(new_savelist==NULL){
- new_savelist = malloc(sizeof(savelist_e));
- new_savelist->filename = malloc(strlen(folder)+strlen(derp->d_name)+1);
- sprintf(new_savelist->filename, "%s%s", folder, derp->d_name);
- new_savelist->name = mystrdup(derp->d_name);
- new_savelist->image = NULL;
- new_savelist->next = NULL;
- new_savelist->prev = NULL;
- current_item = new_savelist;
+ new_savelist = new_item;
+ new_item->prev = NULL;
} else {
- savelist_e *prev_item = current_item;
- current_item->next = malloc(sizeof(savelist_e));
- current_item = current_item->next;
- current_item->filename = malloc(strlen(folder)+strlen(derp->d_name)+1);
- sprintf(current_item->filename, "%s%s", folder, derp->d_name);
- current_item->name = mystrdup(derp->d_name);
- current_item->image = NULL;
- current_item->next = NULL;
- current_item->prev = prev_item;
+ current_item->next = new_item;
+ new_item->prev = current_item;
}
+ current_item = new_item;
results++;
}
}
}
- *results_ret = results;
+#if defined(WIN32) && !defined(__GNUC__)
+ while (_findnext(findfile_handle, &current_file) == 0);
+ _findclose(findfile_handle);
+#else
closedir(directory);
+#endif
+ *results_ret = results;
return new_savelist;
}
@@ -5306,6 +5328,7 @@ void catalogue_ui(pixel * vid_buf)
float scrollvel, offsetf = 0.0f;
char savetext[128] = "";
char * last = mystrdup("");
+ savelist_e *saves, *cssave, *csave;
ui_edit ed;
vid_buf2 = calloc((XRES+BARSIZE)*(YRES+MENUSIZE), PIXELSIZE);
@@ -5321,9 +5344,8 @@ void catalogue_ui(pixel * vid_buf)
ed.nx = 0;
strcpy(ed.str, "");
- savelist_e *saves = get_local_saves(LOCAL_SAVE_DIR PATH_SEP, NULL, &rescount);
- savelist_e *cssave = saves;
- savelist_e *csave = saves;
+ saves = get_local_saves(LOCAL_SAVE_DIR PATH_SEP, NULL, &rescount);
+ cssave = csave = saves;
while (!sdl_poll())
{
b = SDL_GetMouseState(&mx, &my);