#include <dirent.h>
#include <sys/stat.h>
+#include "libgame/libgame.h"
+
#include "files.h"
#include "tools.h"
-#include "misc.h"
#include "tape.h"
#include "joystick.h"
/* file names and filename extensions */
#if !defined(PLATFORM_MSDOS)
-#define USERDATA_DIRECTORY ".rocksndiamonds"
#define LEVELSETUP_DIRECTORY "levelsetup"
#define SETUP_FILENAME "setup.conf"
#define LEVELSETUP_FILENAME "levelsetup.conf"
#define TAPEFILE_EXTENSION "tape"
#define SCOREFILE_EXTENSION "score"
#else
-#define USERDATA_DIRECTORY "userdata"
#define LEVELSETUP_DIRECTORY "lvlsetup"
#define SETUP_FILENAME "setup.cnf"
#define LEVELSETUP_FILENAME "lvlsetup.cnf"
#define SCOREFILE_EXTENSION "sco"
#endif
-#if !defined(PLATFORM_UNIX)
-#define ERROR_FILENAME "error.out"
-#endif
-
#if defined(PLATFORM_WIN32)
#ifndef S_IRGRP
#define S_IRGRP S_IRUSR
#define MODE_R_ALL (S_IRUSR | S_IRGRP | S_IROTH)
#define MODE_W_ALL (S_IWUSR | S_IWGRP | S_IWOTH)
#define MODE_X_ALL (S_IXUSR | S_IXGRP | S_IXOTH)
-#define USERDATA_DIR_MODE (MODE_R_ALL | MODE_X_ALL | S_IWUSR)
#define LEVEL_PERMS (MODE_R_ALL | MODE_W_ALL)
#define SCORE_PERMS LEVEL_PERMS
#define TAPE_PERMS LEVEL_PERMS
static void SaveUserLevelInfo(); /* for 'InitUserLevelDir()' */
static char *getSetupLine(char *, int); /* for 'SaveUserLevelInfo()' */
-char *getUserDataDir()
-{
- static char *userdata_dir = NULL;
-
- if (!userdata_dir)
- {
- char *home_dir = getHomeDir();
- char *data_dir = USERDATA_DIRECTORY;
-
- userdata_dir = getPath2(home_dir, data_dir);
- }
-
- return userdata_dir;
-}
-
static char *getSetupDir()
{
return getUserDataDir();
return filename;
}
-static void createDirectory(char *dir, char *text)
-{
- if (access(dir, F_OK) != 0)
-#if defined(PLATFORM_WIN32)
- if (mkdir(dir) != 0)
-#else
- if (mkdir(dir, USERDATA_DIR_MODE) != 0)
-#endif
- Error(ERR_WARN, "cannot create %s directory '%s'", text, dir);
-}
-
-static void InitUserDataDirectory()
-{
- createDirectory(getUserDataDir(), "user data");
-}
-
static void InitTapeDirectory(char *level_subdir)
{
createDirectory(getUserDataDir(), "user data");
chmod(filename, SETUP_PERMS);
}
-
-#if !defined(PLATFORM_UNIX)
-void initErrorFile()
-{
- char *filename;
-
- InitUserDataDirectory();
-
- filename = getPath2(getUserDataDir(), ERROR_FILENAME);
- unlink(filename);
- free(filename);
-}
-
-FILE *openErrorFile()
-{
- char *filename;
- FILE *error_file;
-
- filename = getPath2(getUserDataDir(), ERROR_FILENAME);
- error_file = fopen(filename, "a");
- free(filename);
-
- return error_file;
-}
-
-void dumpErrorFile()
-{
- char *filename;
- FILE *error_file;
-
- filename = getPath2(getUserDataDir(), ERROR_FILENAME);
- error_file = fopen(filename, "r");
- free(filename);
-
- if (error_file != NULL)
- {
- while (!feof(error_file))
- fputc(fgetc(error_file), stderr);
-
- fclose(error_file);
- }
-}
-#endif