1
0
mirror of https://github.com/SuperBFG7/ympd synced 2024-07-04 02:23:15 +00:00
ympd/src/global.h.in

192 lines
5.4 KiB
C
Raw Normal View History

2019-01-05 00:01:34 +00:00
/* myMPD
(c) 2018-2019 Juergen Mang <mail@jcgames.de>
This project's homepage is: https://github.com/jcorporation/mympd
myMPD ist fork of:
ympd
(c) 2013-2014 Andrew Karpow <andy@ndyk.de>
This project's homepage is: http://www.ympd.org
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; version 2 of the License.
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.,
Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
*/
#ifndef __GLOBAL_H__
#define __GLOBAL_H__
2019-01-05 00:01:34 +00:00
#include <signal.h>
2019-01-05 00:01:34 +00:00
//architecture
#cmakedefine PKGARCH64
//myMPD version from cmake
#define MYMPD_VERSION_MAJOR ${CPACK_PACKAGE_VERSION_MAJOR}
#define MYMPD_VERSION_MINOR ${CPACK_PACKAGE_VERSION_MINOR}
#define MYMPD_VERSION_PATCH ${CPACK_PACKAGE_VERSION_PATCH}
#define MYMPD_VERSION "${CPACK_PACKAGE_VERSION_MAJOR}.${CPACK_PACKAGE_VERSION_MINOR}.${CPACK_PACKAGE_VERSION_PATCH}"
//Webserver document root
#define DOC_ROOT "${ASSETS_PATH}"
//Max size of mpd_client response buffer
2019-01-05 00:01:34 +00:00
#define MAX_SIZE 2048 * 400
#define MAX_ELEMENTS_PER_PAGE 400
//central logging definition
#cmakedefine DEBUG
2019-01-05 00:01:34 +00:00
#define LOG_INFO() if (config.loglevel >= 1)
#define LOG_VERBOSE() if (config.loglevel >= 2)
#define LOG_DEBUG() if (config.loglevel == 3)
#define LOG_INFO2() if (config->loglevel >= 1)
#define LOG_VERBOSE2() if (config->loglevel >= 2)
#define LOG_DEBUG2() if (config->loglevel == 3)
2019-01-05 21:28:18 +00:00
//check and return buffer size
#define CHECK_RETURN_LEN() do { \
if (len > MAX_SIZE) \
printf("Buffer truncated: %d, %d\n", len, MAX_SIZE); \
return len; \
} while (0)
//API cmds
#define MYMPD_CMDS(X) \
X(MPD_API_UNKNOWN) \
X(MPD_API_QUEUE_CLEAR) \
X(MPD_API_QUEUE_CROP) \
X(MPD_API_QUEUE_SAVE) \
X(MPD_API_QUEUE_LIST) \
X(MPD_API_QUEUE_SEARCH) \
X(MPD_API_QUEUE_RM_TRACK) \
X(MPD_API_QUEUE_RM_RANGE) \
X(MPD_API_QUEUE_MOVE_TRACK) \
X(MPD_API_QUEUE_ADD_TRACK_AFTER) \
X(MPD_API_QUEUE_ADD_TRACK) \
X(MPD_API_QUEUE_ADD_PLAY_TRACK) \
X(MPD_API_QUEUE_REPLACE_TRACK) \
X(MPD_API_QUEUE_ADD_PLAYLIST) \
X(MPD_API_QUEUE_REPLACE_PLAYLIST) \
X(MPD_API_QUEUE_SHUFFLE) \
X(MPD_API_QUEUE_LAST_PLAYED) \
X(MPD_API_PLAYLIST_CLEAR) \
X(MPD_API_PLAYLIST_RENAME) \
X(MPD_API_PLAYLIST_MOVE_TRACK) \
X(MPD_API_PLAYLIST_ADD_TRACK) \
X(MPD_API_PLAYLIST_RM_TRACK) \
X(MPD_API_PLAYLIST_RM) \
X(MPD_API_PLAYLIST_LIST) \
X(MPD_API_PLAYLIST_CONTENT_LIST) \
X(MPD_API_SMARTPLS_UPDATE_ALL) \
X(MPD_API_SMARTPLS_SAVE) \
X(MPD_API_SMARTPLS_GET) \
X(MPD_API_DATABASE_SEARCH_ADV) \
X(MPD_API_DATABASE_SEARCH) \
X(MPD_API_DATABASE_UPDATE) \
X(MPD_API_DATABASE_RESCAN) \
X(MPD_API_DATABASE_FILESYSTEM_LIST) \
X(MPD_API_DATABASE_TAG_LIST) \
X(MPD_API_DATABASE_TAG_ALBUM_LIST) \
X(MPD_API_DATABASE_TAG_ALBUM_TITLE_LIST) \
X(MPD_API_DATABASE_STATS) \
X(MPD_API_DATABASE_SONGDETAILS) \
X(MPD_API_PLAYER_PLAY_TRACK) \
X(MPD_API_PLAYER_VOLUME_SET) \
X(MPD_API_PLAYER_VOLUME_GET) \
X(MPD_API_PLAYER_PAUSE) \
X(MPD_API_PLAYER_PLAY) \
X(MPD_API_PLAYER_STOP) \
X(MPD_API_PLAYER_SEEK) \
X(MPD_API_PLAYER_NEXT) \
X(MPD_API_PLAYER_PREV) \
X(MPD_API_PLAYER_OUTPUT_LIST) \
X(MPD_API_PLAYER_TOGGLE_OUTPUT) \
X(MPD_API_PLAYER_CURRENT_SONG) \
X(MPD_API_PLAYER_STATE) \
X(MPD_API_SETTINGS_GET) \
X(MPD_API_SETTINGS_SET) \
X(MPD_API_LIKE) \
X(MPD_API_COLS_SAVE) \
X(MYMPD_API_SYSCMD)
#define GEN_ENUM(X) X,
#define GEN_STR(X) #X,
enum mypd_cmd_ids {
MYMPD_CMDS(GEN_ENUM)
};
//message queue
tiny_queue_t *web_server_queue;
tiny_queue_t *mpd_client_queue;
tiny_queue_t *mympd_api_queue;
struct work_request_t {
long conn_id; // needed to identify the connection where to send the reply
char data[1000];
int length;
enum mypd_cmd_ids cmd_id;
} work_request_t;
struct work_result_t {
long conn_id; // needed to identify the connection where to send the reply
char data[MAX_SIZE];
int length;
} work_result_t;
//signal handler
sig_atomic_t s_signal_received;
//myMPD configuration
2019-01-05 00:01:34 +00:00
typedef struct {
long mpdport;
const char *mpdhost;
const char *mpdpass;
const char *webport;
bool ssl;
const char *sslport;
const char *sslcert;
const char *sslkey;
const char *user;
bool coverimage;
const char *coverimagename;
long coverimagesize;
bool stickers;
bool mixramp;
const char *taglist;
const char *searchtaglist;
const char *browsetaglist;
bool smartpls;
const char *varlibdir;
const char *etcdir;
unsigned long max_elements_per_page;
bool syscmds;
bool localplayer;
long streamport;
const char *streamurl;
unsigned long last_played_count;
long loglevel;
void *syscmd_list;
2019-01-05 00:01:34 +00:00
} t_config;
t_config config;
2019-01-05 21:28:18 +00:00
//global functions
2019-01-06 09:36:34 +00:00
int randrange(int n);
2019-01-05 00:01:34 +00:00
void sanitize_string(const char *data);
bool validate_string(const char *data);
2019-01-05 00:01:34 +00:00
int copy_string(char * const dest, char const * const src, size_t const dst_len, size_t const src_len);
enum mypd_cmd_ids get_cmd_id(const char *cmd);
2019-01-05 00:01:34 +00:00
#endif