summaryrefslogtreecommitdiff
path: root/firmware/export/rbpaths.h
blob: cd87888cef92373cfba021f9fab5a73ff9ffbcab (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
/***************************************************************************
 *             __________               __   ___.
 *   Open      \______   \ ____   ____ |  | _\_ |__   _______  ___
 *   Source     |       _//  _ \_/ ___\|  |/ /| __ \ /  _ \  \/  /
 *   Jukebox    |    |   (  <_> )  \___|    < | \_\ (  <_> > <  <
 *   Firmware   |____|_  /\____/ \___  >__|_ \|___  /\____/__/\_ \
 *                     \/            \/     \/    \/            \/
 * $Id$
 *
 * Copyright (C) 2010 Thomas Martitz
 *
 * This program is free software; you can redistribute it and/or
 * modify it under the terms of the GNU General Public License
 * as published by the Free Software Foundation; either version 2
 * of the License, or (at your option) any later version.
 *
 * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 * KIND, either express or implied.
 *
 ****************************************************************************/

#ifndef __PATHS_H__
#define __PATHS_H__

#include <stdbool.h>
#include "autoconf.h"
#include "string-extra.h"

/* flags for get_user_file_path() */
/* whether you need write access to that file/dir, especially true
 * for runtime generated files (config.cfg) */
#define NEED_WRITE          (1<<0)
/* file or directory? */
#define IS_FILE             (1<<1)
/* make sure the path is copied into the passed buffer (it may return
 * the passed path directly otherwise, e.g. always on target builds) */
#define FORCE_BUFFER_COPY   (1<<2)



/* name of directory where configuration, fonts and other data
 * files are stored */
#ifdef __PCTOOL__
#undef ROCKBOX_DIR
#undef ROCKBOX_DIR_LEN
#undef WPS_DIR
#define ROCKBOX_DIR "."
#define ROCKBOX_DIR_LEN 1
#else

/* ROCKBOX_DIR is now defined in autoconf.h for flexible build types */
#ifndef ROCKBOX_DIR
#error ROCKBOX_DIR not defined (should be in autoconf.h)
#endif
#define ROCKBOX_DIR_LEN (sizeof(ROCKBOX_DIR)-1)
#endif /* def __PCTOOL__ */

#ifndef APPLICATION

/* make sure both are the same for native builds */
#undef ROCKBOX_LIBRARY_PATH
#define ROCKBOX_LIBRARY_PATH ROCKBOX_DIR

#define PLUGIN_DIR          ROCKBOX_DIR "/rocks"
#define CODECS_DIR          ROCKBOX_DIR "/codecs"

#define REC_BASE_DIR        "/"
#define PLAYLIST_CATALOG_DEFAULT_DIR "/Playlists"

#ifndef PLUGIN
static inline __attribute__((always_inline)) const char* get_user_file_path(const char *path,
                               unsigned flags,
                               char* buf,
                               const size_t bufsize)
{
    if (flags & FORCE_BUFFER_COPY)
    {
        strlcpy(buf, path, bufsize);
        return buf;
    }
    return path;
}
#endif

#define paths_init()
#else /* application */

#define PLUGIN_DIR          ROCKBOX_LIBRARY_PATH "/rockbox/rocks"
#define CODECS_DIR          ROCKBOX_LIBRARY_PATH "/rockbox/codecs"

#define REC_BASE_DIR        ROCKBOX_DIR  "/"
#define PLAYLIST_CATALOG_DEFAULT_DIR ROCKBOX_DIR "/Playlists"

extern void paths_init(void);
extern const char* get_user_file_path(const char *path,
                               unsigned flags,
                               char* buf,
                               const size_t bufsize);
#endif /* APPLICATION */

#define LANG_DIR            ROCKBOX_DIR "/langs"

#define PLUGIN_GAMES_DIR    PLUGIN_DIR "/games"
#define PLUGIN_APPS_DIR     PLUGIN_DIR "/apps"
#define PLUGIN_DEMOS_DIR    PLUGIN_DIR "/demos"
#define VIEWERS_DIR         PLUGIN_DIR "/viewers"


#define WPS_DIR             ROCKBOX_DIR "/wps"
#define SBS_DIR             WPS_DIR
#define THEME_DIR           ROCKBOX_DIR "/themes"
#define FONT_DIR            ROCKBOX_DIR "/fonts"
#define ICON_DIR            ROCKBOX_DIR "/icons"

#define BACKDROP_DIR        ROCKBOX_DIR "/backdrops"
#define EQS_DIR             ROCKBOX_DIR "/eqs"

/* need to fix this once the application gets record/radio abilities */
#define RECPRESETS_DIR      ROCKBOX_DIR "/recpresets"
#define FMPRESET_PATH       ROCKBOX_DIR "/fmpresets"

#define DIRCACHE_FILE       ROCKBOX_DIR "/dircache.dat"
#define CODEPAGE_DIR        ROCKBOX_DIR "/codepages"

#define VIEWERS_CONFIG      ROCKBOX_DIR "/viewers.config"
#define CONFIGFILE          ROCKBOX_DIR "/config.cfg"
#define FIXEDSETTINGSFILE   ROCKBOX_DIR "/fixed.cfg"

#define PLAYLIST_CONTROL_FILE   ROCKBOX_DIR "/.playlist_control"
#define NVRAM_FILE              ROCKBOX_DIR "/nvram.bin"
#define GLYPH_CACHE_FILE        ROCKBOX_DIR "/.glyphcache"
#endif /* __PATHS_H__ */