diff options
| author | Dusan Durech <dusan@debian.debian> | 2009-04-14 23:21:40 +0200 |
|---|---|---|
| committer | Dusan Durech <dusan@debian.debian> | 2009-04-14 23:21:40 +0200 |
| commit | 75e3e2c04b1d2b324dc8d2314e570bcba215c93f (patch) | |
| tree | 9922d9ece567409e7f2cb999b44bac882aebe1bc | |
| parent | 5772138044d95f931f285bbaf76a1faf67864e1e (diff) | |
new path API ( need old path.h )
| -rw-r--r-- | src/CMakeLists.txt | 2 | ||||
| -rw-r--r-- | src/audio/music.c | 7 | ||||
| -rw-r--r-- | src/base/arenaFile.c | 7 | ||||
| -rw-r--r-- | src/base/modules.c | 6 | ||||
| -rw-r--r-- | src/base/my_path.c | 110 | ||||
| -rw-r--r-- | src/base/my_path.h | 27 | ||||
| -rw-r--r-- | src/client/game.c | 7 | ||||
| -rw-r--r-- | src/client/image.c | 8 | ||||
| -rw-r--r-- | src/server/publicServer.c | 3 |
9 files changed, 162 insertions, 15 deletions
diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index fed8130..f6a2d83 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -42,7 +42,7 @@ SET ( SRC_base ${WORKDIR}/base/homeDirector ${WORKDIR}/base/proto ${WORKDIR}/base/shareFunction ${WORKDIR}/base/buffer ${WORKDIR}/base/archive ${WORKDIR}/base/downServer - ${WORKDIR}/net/dns + ${WORKDIR}/base/my_path ${WORKDIR}/net/dns ) SET ( SRC_client diff --git a/src/audio/music.c b/src/audio/music.c index 1b526c6..4e811e1 100644 --- a/src/audio/music.c +++ b/src/audio/music.c @@ -9,6 +9,7 @@ #include "interface.h" #include "audio.h" #include "music.h" +#include "my_path.h" static list_t *listStorage; @@ -58,11 +59,7 @@ static Mix_Music *loadMixMusic(char *file) DEBUG_MSG(_("Loading a file with music: %s\n"), file); - if (isFillPath(file)) { - strcpy(str, file); - } else { - sprintf(str, PATH_MUSIC "%s", file); - } + path_set_prefix(str, STR_PATH_SIZE, PATH_PREFIX_MUSIC, file); accessExistFile(str); diff --git a/src/base/arenaFile.c b/src/base/arenaFile.c index 45ba4ac..36b172a 100644 --- a/src/base/arenaFile.c +++ b/src/base/arenaFile.c @@ -16,6 +16,7 @@ #include "modules.h" #include "archive.h" #include "homeDirector.h" +#include "my_path.h" #ifndef PUBLIC_SERVER # include "configFile.h" @@ -371,13 +372,17 @@ static void load_arenaFromDirector(char *director) void arena_file_init() { + char path[STR_PATH_SIZE]; + #ifndef PUBLIC_SERVER assert(image_is_inicialized() == TRUE); #endif isArenaFileInit = TRUE; listArenaFile = list_new(); - load_arenaFromDirector(PATH_ARENA); + path_set_prefix(path, STR_PATH_SIZE, PATH_PREFIX_ARENA, ""); + + load_arenaFromDirector(path); #ifndef PUBLIC_SERVER load_arenaFromDirector(home_director_get()); diff --git a/src/base/modules.c b/src/base/modules.c index 7b0b7c2..ea4d450 100644 --- a/src/base/modules.c +++ b/src/base/modules.c @@ -16,6 +16,7 @@ #include "arenaFile.h" #include "proto.h" #include "shareFunction.h" +#include "my_path.h" #ifndef PUBLIC_SERVER # include "interface.h" @@ -123,7 +124,10 @@ static void unmapImage(void *image) static void setModulePath(char *name, char *path) { - sprintf(path, PATH_MODULES "%s" MODULE_TYPE_UNIX, name); // linux + path_set_prefix(path, STR_PATH_SIZE, PATH_PREFIX_MODULE, name); + strcat(path, ".so"); + + //sprintf(path, PATH_MODULES "%s" MODULE_TYPE_UNIX, name); // linux #ifdef __WIN32__ sprintf(path, PATH_MODULES "%s" MODULE_TYPE_WIN, name); // windows #endif diff --git a/src/base/my_path.c b/src/base/my_path.c new file mode 100644 index 0000000..2cf25f8 --- /dev/null +++ b/src/base/my_path.c @@ -0,0 +1,110 @@ + +#include <stdio.h> +#include <stdlib.h> +#include <string.h> +#include <unistd.h> + +#include "main.h" +#include "homeDirector.h" +#include "textFile.h" +#include "path.h" +#include "my_path.h" + +static char *path_prefix; + +int path_init() +{ +#if 0 + char str[STR_PATH_SIZE]; + textFile_t *text_file; + + sprintf(str, "%s/path", home_director_get()); + + text_file = text_file_load(str); + + if( text_file == NULL ) + { + fprintf(stderr, "I dont load path\n"); + exit(-1); + } + + if( text_file->text->count == 0 ) + { + fprintf(stderr, "%s is empty\n", str); + exit(-1); + } + + path_prefix = strdup(text_file->text->list[0]); + + text_file_destroy(text_file); + +#endif + + path_prefix = malloc((strlen(PREFIX)+1)* sizeof(char)); + strcpy(path_prefix, PREFIX); + strcat(path_prefix, "/"); + + printf("use prefix:%s\n", path_prefix); + + return 0; +} + +char* path_get_prefix() +{ + return path_prefix; +} + +int path_set_prefix(char *path, int size, const char *subpath, const char *name) +{ + char *prefix; + char *slash; + int len; + + prefix = path_prefix; + +/* + printf("subpath = %s\n", subpath); + printf("name = %s\n", name); +*/ + if( isFillPath(name) ) + { + snprintf(path, size, "%s", name); + //printf("%s\n", path); + return 1; + } + + if( isFillPath(subpath) ) + { + snprintf(path, size, "%s", subpath); + //printf("%s\n", path); + return 1; + } + + len = strlen(subpath); + + slash = "/"; + + if( subpath[len-1] == '/' ) + { + slash = ""; + } + +/* + printf("slash = %s\n", slash); + printf("prefix = %s\n", prefix); +*/ + snprintf(path, size, "%s%s%s%s", prefix, subpath, slash, name); + //printf("file %s\n", path); + + return 1; +} + +int path_quit() +{ + if( path_prefix != NULL ) + { + free(path_prefix); + } + + return 0; +} diff --git a/src/base/my_path.h b/src/base/my_path.h new file mode 100644 index 0000000..18e2c92 --- /dev/null +++ b/src/base/my_path.h @@ -0,0 +1,27 @@ + +#ifndef MY_PATH_H + +#define MY_PATH_H + +#ifdef PUBLIC_SERVER +#define PATH_PREFIX "share/tuxanci-server" +#define PATH_PREFIX_MODULE "lib/tuxanci-server" +#endif + +#ifndef PUBLIC_SERVER +#define PATH_PREFIX "share/tuxanci" +#define PATH_PREFIX_MODULE "lib/tuxanci" +#endif + +#define PATH_PREFIX_IMAGE PATH_PREFIX "/images" +#define PATH_PREFIX_ARENA PATH_PREFIX "/arena" +#define PATH_PREFIX_MUSIC PATH_PREFIX "/music" +#define PATH_PREFIX_SOUND PATH_PREFIX "/sound" + +extern int path_init(); +extern char* path_get_prefix(); +extern int path_set_prefix(char *path, int size, const char *subpath, const char *name); +extern int path_quit(); + +#endif + diff --git a/src/client/game.c b/src/client/game.c index 8e0c30a..42a5868 100644 --- a/src/client/game.c +++ b/src/client/game.c @@ -14,6 +14,7 @@ #include "item.h" #include "shot.h" #include "arenaFile.h" +#include "my_path.h" #include "image.h" #include "layer.h" @@ -45,7 +46,8 @@ static void initGame() { home_director_create(); - + + path_init(); interface_init(); font_init(); layer_init(); @@ -77,6 +79,7 @@ static void initGame() void game_quit() { + interface_quit(); main_menu_quit(); @@ -106,6 +109,8 @@ void game_quit() audio_quit(); #endif + path_quit(); + DEBUG_MSG(_("Quitting TUXANCI...\n")); exit(0); diff --git a/src/client/image.c b/src/client/image.c index fa34760..b17e471 100644 --- a/src/client/image.c +++ b/src/client/image.c @@ -6,6 +6,7 @@ #include "main.h" #include "list.h" #include "storage.h" +#include "my_path.h" #include "interface.h" #include "image.h" @@ -39,12 +40,7 @@ static SDL_Surface *loadImage(const char *filename, int alpha) char str[STR_PATH_SIZE]; - - if (isFillPath(filename)) { - strcpy(str, filename); - } else { - sprintf(str, PATH_IMAGE "%s", filename); - } + path_set_prefix(str, STR_PATH_SIZE, PATH_PREFIX_IMAGE, filename); accessExistFile(str); diff --git a/src/server/publicServer.c b/src/server/publicServer.c index 19e2f75..8004e49 100644 --- a/src/server/publicServer.c +++ b/src/server/publicServer.c @@ -31,6 +31,7 @@ #include "proto.h" #include "modules.h" #include "net_multiplayer.h" +#include "my_path.h" #include "publicServer.h" #include "serverConfigFile.h" @@ -241,6 +242,7 @@ int public_server_init() int ret; int i; + path_init(); id_init_list(); module_init(); arena_file_init(); @@ -338,6 +340,7 @@ void public_server_quit() id_quit_list(); high_score_quit(); log_quit(); + path_quit(); exit(0); } |