2009-04-22 20:04:28 +02:00

124 lines
3.6 KiB
C

/*
Copyright (C) 1997-2007 ZSNES Team ( zsKnight, _Demo_, pagefault, Nach )
http://www.zsnes.com
http://sourceforge.net/projects/zsnes
https://zsnes.bountysource.com
This program is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License
version 2 as published by the Free Software Foundation.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*/
#ifndef ZPATH_H
#define ZPATH_H
#include <zlib.h>
#include <stdio.h>
#include <sys/stat.h>
#include "zip/zunzip.h"
#ifndef NO_JMA
#include "jma/zsnesjma.h"
#endif
#ifdef _MSC_VER
#define F_OK 0
#define X_OK F_OK //Drop down to F_OK because MSVC is stupid
#define W_OK 2
#define R_OK 4
typedef unsigned short mode_t;
#endif
#if !defined(__cplusplus) && !defined(bool)
//C++ style code in C
#define bool unsigned char
#define true 1
#define false 0
#endif
#ifdef __UNIXSDL__
#define DIR_SLASH "/"
#define DIR_SLASH_C '/'
#define DIR_SLASH_C_OTHER '\\'
#define ROOT_LEN 1 //"/"
#define DIR_R_ACCESS (R_OK|X_OK)
#define IS_ABSOLUTE(path) ((*(path) == '/') || (*(path) == '~'))
#else
#define DIR_SLASH "\\"
#define DIR_SLASH_C '\\'
#define DIR_SLASH_C_OTHER '/'
#define ROOT_LEN 3 //"A:\"
#define DIR_R_ACCESS (F_OK)
#define IS_ABSOLUTE(path) ((*(path) == '\\') || (*(path) && ((path)[1] == ':')))
#endif
#ifndef __MSDOS__
#define PATH_SIZE 4096
#define NAME_SIZE 512
#define realpath_native realpath
#else
#define PATH_SIZE 256
#define NAME_SIZE 13
#define realpath_native realpath_sfn
#endif
extern char ZCfgFile[];
extern char *ZStartPath, *ZCfgPath, *ZSramPath, *ZRomPath;
extern char *ZSnapPath, *ZSpcPath;
extern char *ZCartName, *ZSaveName, *ZStateName, *ZSaveST2Name;
bool init_paths(char *launch_command);
void init_save_paths();
bool init_rom_path(char *path);
char *strdupcat(const char *str1, const char *str2);
int access_dir(const char *path, const char *file, int mode);
int stat_dir(const char *path, const char *file, struct stat *buf);
FILE *fopen_dir(const char *path, const char *file, const char *mode);
gzFile gzopen_dir(const char *path, const char *file, const char *mode);
unzFile unzopen_dir(const char *path, const char *file);
#ifndef NO_JMA
void load_jma_file_dir(const char *path, const char *file);
#endif
int remove_dir(const char *path, const char *file);
int mkdir_dir(const char *path, const char *dir);
char *realpath_dir(const char *path, const char *file, char *buf);
#ifdef __MSDOS__
char *realpath_sfn_dir(const char *path, const char *file, char *buf);
#endif
FILE *fdreopen_dir(const char *path, const char *file, const char *mode, int fd);
int system_dir(const char *path, const char *command);
FILE *popen_dir(const char *path, char *command, const char *type);
void natify_slashes(char *str);
char *strcutslash(char *str);
char *strcatslash(char *str);
void setextension(char *base, const char *ext);
bool isextension(const char *fname, const char *ext);
void strdirname(char *str);
void strbasename(char *str);
bool mkpath(const char *path, mode_t mode);
#ifdef __UNIXSDL__
char *realpath_link(const char *path, char *resolved_path);
char *realpath_tilde(const char *path, char *resolved_path);
#else
#define realpath_link realpath_native
#endif
void psr_cfg_run(unsigned char (*psr_func)(const char *), const char *dir, const char *fname);
#endif