Use limits.h and PATH_MAX.

This commit is contained in:
Themaister 2012-01-02 13:32:25 +01:00
parent d3af29fa1f
commit c2ba0d474c
7 changed files with 73 additions and 79 deletions

View File

@ -27,17 +27,17 @@
#include "../msvc/msvc_compat.h"
#if !defined(_WIN32) && !defined(__CELLOS_LV2__)
#include <sys/param.h> // MAXPATHLEN
#include <sys/param.h> // PATH_MAX
#elif defined(_WIN32)
#define WIN32_LEAN_AND_MEAN
#include <windows.h>
#endif
#ifndef MAXPATHLEN
#ifndef PATH_MAX
#ifdef PATH_MAX
#define MAXPATHLEN PATH_MAX
#define PATH_MAX PATH_MAX
#else
#define MAXPATHLEN 512
#define PATH_MAX 512
#endif
#endif
@ -195,7 +195,7 @@ static void add_sub_conf(config_file_t *conf, char *line)
add_include_list(conf, path);
char real_path[MAXPATHLEN];
char real_path[PATH_MAX];
#ifdef _WIN32
// Accomodate POSIX systems on Win32.

28
file.c
View File

@ -376,9 +376,9 @@ static void dump_to_file_desperate(const void *data, size_t size, int type)
if (!base)
goto error;
char path[MAXPATHLEN];
char path[PATH_MAX];
snprintf(path, sizeof(path), "%s/SSNES-recovery-", base);
char timebuf[MAXPATHLEN];
char timebuf[PATH_MAX];
time_t time_;
time(&time_);
@ -838,8 +838,8 @@ char **dir_list_new(const char *dir, const char *ext)
WIN32_FIND_DATAW ffd;
HANDLE hFind = INVALID_HANDLE_VALUE;
wchar_t wchar_buf[MAXPATHLEN];
char utf8_buf[MAXPATHLEN];
wchar_t wchar_buf[PATH_MAX];
char utf8_buf[PATH_MAX];
if (strlcpy(utf8_buf, dir, sizeof(utf8_buf)) >= sizeof(utf8_buf))
goto error;
@ -852,7 +852,7 @@ char **dir_list_new(const char *dir, const char *ext)
goto error;
}
if (MultiByteToWideChar(CP_UTF8, 0, utf8_buf, -1, wchar_buf, MAXPATHLEN) == 0)
if (MultiByteToWideChar(CP_UTF8, 0, utf8_buf, -1, wchar_buf, PATH_MAX) == 0)
goto error;
hFind = FindFirstFileW(wchar_buf, &ffd);
@ -881,7 +881,7 @@ char **dir_list_new(const char *dir, const char *ext)
#ifdef _WIN32
if (ffd.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)
continue;
if (WideCharToMultiByte(CP_UTF8, 0, ffd.cFileName, -1, utf8_buf, MAXPATHLEN, NULL, NULL) == 0)
if (WideCharToMultiByte(CP_UTF8, 0, ffd.cFileName, -1, utf8_buf, PATH_MAX, NULL, NULL) == 0)
continue;
if (ext && !strstr(utf8_buf, ext))
continue;
@ -890,16 +890,16 @@ char **dir_list_new(const char *dir, const char *ext)
continue;
#endif
dir_list[cur_ptr] = (char*)malloc(MAXPATHLEN);
dir_list[cur_ptr] = (char*)malloc(PATH_MAX);
if (!dir_list[cur_ptr])
goto error;
strlcpy(dir_list[cur_ptr], dir, MAXPATHLEN);
strlcat(dir_list[cur_ptr], "/", MAXPATHLEN);
strlcpy(dir_list[cur_ptr], dir, PATH_MAX);
strlcat(dir_list[cur_ptr], "/", PATH_MAX);
#ifdef _WIN32
strlcat(dir_list[cur_ptr], utf8_buf, MAXPATHLEN);
strlcat(dir_list[cur_ptr], utf8_buf, PATH_MAX);
#else
strlcat(dir_list[cur_ptr], entry->d_name, MAXPATHLEN);
strlcat(dir_list[cur_ptr], entry->d_name, PATH_MAX);
#endif
cur_ptr++;
@ -952,8 +952,8 @@ void dir_list_free(char **dir_list)
bool path_is_directory(const char *path)
{
#ifdef _WIN32
wchar_t buf[MAXPATHLEN];
if (MultiByteToWideChar(CP_UTF8, 0, path, -1, buf, MAXPATHLEN) == 0)
wchar_t buf[PATH_MAX];
if (MultiByteToWideChar(CP_UTF8, 0, path, -1, buf, PATH_MAX) == 0)
return false;
return PathIsDirectoryW(buf) == FILE_ATTRIBUTE_DIRECTORY;
#elif defined(__CELLOS_LV2__)
@ -984,7 +984,7 @@ bool path_file_exists(const char *path)
void fill_pathname(char *out_path, const char *in_path, const char *replace, size_t size)
{
char tmp_path[MAXPATHLEN];
char tmp_path[PATH_MAX];
ssnes_assert(strlcpy(tmp_path, in_path, sizeof(tmp_path)) < sizeof(tmp_path));
char *tok = strrchr(tmp_path, '.');

View File

@ -22,6 +22,7 @@
#include "boolean.h"
#include <stdio.h>
#include <time.h>
#include <limits.h>
#include "driver.h"
#include "record/ffemu.h"
#include "message.h"
@ -50,22 +51,12 @@
#include "audio/hermite.h"
#if !defined(_WIN32) && !defined(__CELLOS_LV2__)
#include <sys/param.h> // MAXPATHLEN
#elif defined(_WIN32)
#ifdef _WIN32
#define WIN32_LEAN_AND_MEAN
#include <windows.h>
#include "msvc/msvc_compat.h"
#endif
#ifndef MAXPATHLEN
#ifdef PATH_MAX
#define MAXPATHLEN PATH_MAX
#else
#define MAXPATHLEN 512
#endif
#endif
#define MAX_PLAYERS 5
#define MAX_BINDS (SSNES_BIND_LIST_END + 1)
#define SSNES_NO_JOYPAD 0xFFFF
@ -94,20 +85,20 @@ struct settings
bool force_aspect;
bool crop_overscan;
float aspect_ratio;
char cg_shader_path[MAXPATHLEN];
char bsnes_shader_path[MAXPATHLEN];
char filter_path[MAXPATHLEN];
char cg_shader_path[PATH_MAX];
char bsnes_shader_path[PATH_MAX];
char filter_path[PATH_MAX];
enum ssnes_shader_type shader_type;
float refresh_rate;
bool render_to_texture;
double fbo_scale_x;
double fbo_scale_y;
char second_pass_shader[MAXPATHLEN];
char second_pass_shader[PATH_MAX];
bool second_pass_smooth;
char shader_dir[MAXPATHLEN];
char shader_dir[PATH_MAX];
char font_path[MAXPATHLEN];
char font_path[PATH_MAX];
unsigned font_size;
bool font_enable;
float msg_pos_x;
@ -122,7 +113,7 @@ struct settings
bool hires_record;
bool post_filter_record;
char external_driver[MAXPATHLEN];
char external_driver[PATH_MAX];
} video;
struct
@ -132,12 +123,12 @@ struct settings
unsigned out_rate;
float in_rate;
float rate_step;
char device[MAXPATHLEN];
char device[PATH_MAX];
unsigned latency;
bool sync;
char dsp_plugin[MAXPATHLEN];
char external_driver[MAXPATHLEN];
char dsp_plugin[PATH_MAX];
char external_driver[PATH_MAX];
} audio;
struct
@ -149,11 +140,11 @@ struct settings
bool netplay_client_swap_input;
} input;
char libsnes[MAXPATHLEN];
char cheat_database[MAXPATHLEN];
char cheat_settings_path[MAXPATHLEN];
char libsnes[PATH_MAX];
char cheat_database[PATH_MAX];
char cheat_settings_path[PATH_MAX];
char screenshot_directory[MAXPATHLEN];
char screenshot_directory[PATH_MAX];
bool rewind_enable;
size_t rewind_buffer_size;
@ -195,29 +186,29 @@ struct global
enum ssnes_game_type game_type;
uint32_t cart_crc;
char gb_rom_path[MAXPATHLEN];
char bsx_rom_path[MAXPATHLEN];
char sufami_rom_path[2][MAXPATHLEN];
char gb_rom_path[PATH_MAX];
char bsx_rom_path[PATH_MAX];
char sufami_rom_path[2][PATH_MAX];
bool has_set_save_path;
bool has_set_state_path;
#ifdef HAVE_CONFIGFILE
char config_path[MAXPATHLEN];
char config_path[PATH_MAX];
#endif
char basename[MAXPATHLEN];
char savefile_name_srm[MAXPATHLEN];
char savefile_name_rtc[MAXPATHLEN]; // Make sure that fill_pathname has space.
char savefile_name_psrm[MAXPATHLEN];
char savefile_name_asrm[MAXPATHLEN];
char savefile_name_bsrm[MAXPATHLEN];
char savestate_name[MAXPATHLEN];
char xml_name[MAXPATHLEN];
char basename[PATH_MAX];
char savefile_name_srm[PATH_MAX];
char savefile_name_rtc[PATH_MAX]; // Make sure that fill_pathname has space.
char savefile_name_psrm[PATH_MAX];
char savefile_name_asrm[PATH_MAX];
char savefile_name_bsrm[PATH_MAX];
char savestate_name[PATH_MAX];
char xml_name[PATH_MAX];
bool ups_pref;
bool bps_pref;
char ups_name[MAXPATHLEN];
char bps_name[MAXPATHLEN];
char ups_name[PATH_MAX];
char bps_name[PATH_MAX];
unsigned state_slot;
@ -225,7 +216,7 @@ struct global
{
struct snes_geometry geom;
unsigned pitch; // If 0, has classic libsnes semantics.
char fullpath[MAXPATHLEN];
char fullpath[PATH_MAX];
struct snes_system_timing timing;
bool timing_set;
bool need_fullpath;
@ -283,11 +274,11 @@ struct global
struct
{
bsv_movie_t *movie;
char movie_path[MAXPATHLEN];
char movie_path[PATH_MAX];
bool movie_playback;
// Immediate playback/recording.
char movie_start_path[MAXPATHLEN];
char movie_start_path[PATH_MAX];
bool movie_start_recording;
bool movie_start_playback;
bool movie_end;
@ -306,7 +297,7 @@ struct global
// Netplay.
#ifdef HAVE_NETPLAY
netplay_t *netplay;
char netplay_server[MAXPATHLEN];
char netplay_server[PATH_MAX];
bool netplay_enable;
bool netplay_is_client;
unsigned netplay_sync_frames;
@ -316,7 +307,7 @@ struct global
// FFmpeg record.
#ifdef HAVE_FFMPEG
ffemu_t *rec;
char record_path[MAXPATHLEN];
char record_path[PATH_MAX];
bool recording;
unsigned record_width;
unsigned record_height;
@ -400,6 +391,10 @@ static inline uint8_t is_little_endian(void)
return u.y[0];
}
#ifdef GEKKO
#include <unistd.h>
#endif
static inline void ssnes_sleep(unsigned msec)
{
#ifdef __CELLOS_LV2__

View File

@ -690,7 +690,7 @@ static bool load_preset(const char *path)
int shaders;
// Basedir.
char dir_path[MAXPATHLEN];
char dir_path[PATH_MAX];
char *ptr = NULL;
SSNES_LOG("Loading Cg meta-shader: %s\n", path);
@ -874,7 +874,7 @@ static bool load_preset(const char *path)
{
char *shader_path;
char attr_buf[64];
char path_buf[MAXPATHLEN];
char path_buf[PATH_MAX];
print_buf(attr_buf, "shader%u", i);
if (config_get_string(conf, attr_buf, &shader_path))

View File

@ -122,7 +122,7 @@ static char gl_teximage_uniforms[MAX_TEXTURES][64];
static snes_tracker_t *gl_snes_tracker = NULL;
static struct snes_tracker_uniform_info gl_tracker_info[MAX_VARIABLES];
static unsigned gl_tracker_info_cnt = 0;
static char gl_tracker_script[MAXPATHLEN];
static char gl_tracker_script[PATH_MAX];
static char gl_tracker_script_class[64];
static xmlChar *gl_script_program = NULL;
@ -352,7 +352,7 @@ static bool get_texture_image(const char *shader_path, xmlNodePtr ptr)
if (filter && strcmp((const char*)filter, "nearest") == 0)
linear = false;
char tex_path[MAXPATHLEN];
char tex_path[PATH_MAX];
strlcpy(tex_path, shader_path, sizeof(tex_path));
last = strrchr(tex_path, '/');

View File

@ -233,7 +233,7 @@ static config_file_t *open_default_config_file(void)
const char *appdata = getenv("APPDATA");
if (appdata)
{
char conf_path[MAXPATHLEN];
char conf_path[PATH_MAX];
strlcpy(conf_path, appdata, sizeof(conf_path));
strlcat(conf_path, "/ssnes.cfg", sizeof(conf_path));
conf = config_file_new(conf_path);
@ -243,7 +243,7 @@ static config_file_t *open_default_config_file(void)
const char *home = getenv("HOME");
if (home)
{
char conf_path[MAXPATHLEN];
char conf_path[PATH_MAX];
strlcpy(conf_path, home, sizeof(conf_path));
strlcat(conf_path, "/.ssnes.cfg", sizeof(conf_path));
conf = config_file_new(conf_path);
@ -260,14 +260,14 @@ static config_file_t *open_default_config_file(void)
const char *home = getenv("HOME");
if (xdg)
{
char conf_path[MAXPATHLEN];
char conf_path[PATH_MAX];
strlcpy(conf_path, xdg, sizeof(conf_path));
strlcat(conf_path, "/ssnes/ssnes.cfg", sizeof(conf_path));
conf = config_file_new(conf_path);
}
else if (home)
{
char conf_path[MAXPATHLEN];
char conf_path[PATH_MAX];
strlcpy(conf_path, home, sizeof(conf_path));
strlcat(conf_path, "/.ssnes.cfg", sizeof(conf_path));
conf = config_file_new(conf_path);
@ -324,7 +324,7 @@ static void parse_config_file(void)
int tmp_int;
double tmp_double;
bool tmp_bool;
char tmp_str[MAXPATHLEN];
char tmp_str[PATH_MAX];
CONFIG_GET_DOUBLE(video.xscale, "video_xscale");
CONFIG_GET_DOUBLE(video.yscale, "video_yscale");

13
ssnes.c
View File

@ -22,7 +22,6 @@
#include <string.h>
#include <ctype.h>
#include <errno.h>
#include <limits.h>
#include "driver.h"
#include "file.h"
#include "general.h"
@ -1153,7 +1152,7 @@ static void init_movie(void)
}
else if (g_extern.bsv.movie_start_recording)
{
char msg[MAXPATHLEN];
char msg[PATH_MAX];
snprintf(msg, sizeof(msg), "Starting movie record to \"%s\"!",
g_extern.bsv.movie_start_path);
@ -1297,7 +1296,7 @@ static void set_savestate_auto_index(void)
if (!g_settings.savestate_auto_index)
return;
char state_path[MAXPATHLEN];
char state_path[PATH_MAX];
strlcpy(state_path, g_extern.savestate_name, sizeof(state_path));
char *split = strrchr(state_path, '/');
@ -1408,7 +1407,7 @@ static void check_savestates(void)
if (g_settings.savestate_auto_index)
g_extern.state_slot++;
char save_path[MAXPATHLEN];
char save_path[PATH_MAX];
if (g_extern.state_slot > 0)
snprintf(save_path, sizeof(save_path), "%s%u", g_extern.savestate_name, g_extern.state_slot);
@ -1434,7 +1433,7 @@ static void check_savestates(void)
bool should_loadstate = driver.input->key_pressed(driver.input_data, SSNES_LOAD_STATE_KEY);
if (!should_savestate && should_loadstate && !old_should_loadstate)
{
char load_path[MAXPATHLEN];
char load_path[PATH_MAX];
if (g_extern.state_slot > 0)
snprintf(load_path, sizeof(load_path), "%s%u", g_extern.savestate_name, g_extern.state_slot);
@ -1627,7 +1626,7 @@ static void check_movie_record(void)
{
g_settings.rewind_granularity = 1;
char path[MAXPATHLEN];
char path[PATH_MAX];
if (g_extern.state_slot > 0)
{
snprintf(path, sizeof(path), "%s%u.bsv",
@ -1639,7 +1638,7 @@ static void check_movie_record(void)
g_extern.bsv.movie_path);
}
char msg[MAXPATHLEN];
char msg[PATH_MAX];
snprintf(msg, sizeof(msg), "Starting movie record to \"%s\"!", path);
g_extern.bsv.movie = bsv_movie_init(path, SSNES_MOVIE_RECORD);