xaizek / pms (License: GPLv3+) (since 2018-12-07)
Older version of Practical Music Search written in C++.
<root> / src / pms.h (ac75316bd871cc6bdbd49eb6c3652e4a502328c9) (1,809B) (mode 100644) [raw]
/* vi:set ts=4 sts=4 sw=4 et:
 *
 * Practical Music Search
 * Copyright (c) 2006-2014 Kim Tore Jensen
 *
 * 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 3 of the License, or
 * (at your option) any later version.
 *
 * 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, see <http://www.gnu.org/licenses/>.
 */

#include "build.h"

#ifndef HAVE_PTHREAD
    #error "POSIX thread library required."
#endif

#include <pthread.h>
#include <stdarg.h>
#include <mpd/client.h>

#include "curses.h"
#include "window.h"
#include "console.h"
#include "topbar.h"
#include "input.h"
#include "mpd.h"
#include "song.h"
#include "songlist.h"

#define PMS_EXIT_SUCCESS 0
#define PMS_EXIT_MEMORY 1
#define PMS_EXIT_NCURSES 2
#define PMS_EXIT_THREAD 3
#define PMS_EXIT_KILLED 4

#define PMS_HAS_INPUT_STDIN 1
#define PMS_HAS_INPUT_MPD 2

struct options_t {
    char * server;
    unsigned int port;
    unsigned int timeout;
    unsigned int console_size;
    bool debug;

};

struct pms_state_t {
    /* Set to false when shutting down. */
    int running;
    struct mpd_status * status;
    struct songlist_t * queue;
    struct songlist_t * library;
};

/**
 * Shut down program with fatal error.
 */
void fatal(int exitcode, const char * format, ...);

/**
 * Exit program.
 */
void shutdown();

/**
 * Print a debug message to stderr
 */
void debug(const char * format, ...);
Hints

Before first commit, do not forget to setup your git environment:
git config --global user.name "your_name_here"
git config --global user.email "your@email_here"

Clone this repository using HTTP(S):
git clone https://code.reversed.top/user/xaizek/pms

Clone this repository using ssh (do not forget to upload a key first):
git clone ssh://rocketgit@code.reversed.top/user/xaizek/pms

You are allowed to anonymously push to this repository.
This means that your pushed commits will automatically be transformed into a pull request:
... clone the repository ...
... make some changes and some commits ...
git push origin master