Compare commits
5 Commits
969a4cfc3e
...
8a8437634a
| Author | SHA1 | Date | |
|---|---|---|---|
|
8a8437634a
|
|||
|
e78b410a6a
|
|||
|
bf44e827e8
|
|||
|
8386af0420
|
|||
|
f04cc2c61e
|
15
cmake/toolchains/MinGW-w64-x64.cmake
Normal file
15
cmake/toolchains/MinGW-w64-x64.cmake
Normal file
@@ -0,0 +1,15 @@
|
|||||||
|
set (CMAKE_SYSTEM_NAME "Windows")
|
||||||
|
set (CMAKE_SYSTEM_PROCESSOR "x86_64")
|
||||||
|
|
||||||
|
set (CMAKE_C_COMPILER "x86_64-w64-mingw32-gcc")
|
||||||
|
set (CMAKE_CXX_COMPILER "x86_64-w64-mingw32-g++")
|
||||||
|
set (CMAKE_RC_COMPILER "x86_64-w64-mingw32-windres")
|
||||||
|
|
||||||
|
# Remember to set WINEPATH for library dependencies
|
||||||
|
set (CMAKE_CROSSCOMPILING_EMULATOR "wine64")
|
||||||
|
|
||||||
|
set (CMAKE_FIND_ROOT_PATH "/usr/x86_64-w64-mingw32")
|
||||||
|
|
||||||
|
set (CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER)
|
||||||
|
set (CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY)
|
||||||
|
set (CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)
|
||||||
15
cmake/toolchains/MinGW-w64-x86.cmake
Normal file
15
cmake/toolchains/MinGW-w64-x86.cmake
Normal file
@@ -0,0 +1,15 @@
|
|||||||
|
set (CMAKE_SYSTEM_NAME "Windows")
|
||||||
|
set (CMAKE_SYSTEM_PROCESSOR "x86")
|
||||||
|
|
||||||
|
set (CMAKE_C_COMPILER "i686-w64-mingw32-gcc")
|
||||||
|
set (CMAKE_CXX_COMPILER "i686-w64-mingw32-g++")
|
||||||
|
set (CMAKE_RC_COMPILER "i686-w64-mingw32-windres")
|
||||||
|
|
||||||
|
# Remember to set WINEPATH for library dependencies
|
||||||
|
set (CMAKE_CROSSCOMPILING_EMULATOR "wine")
|
||||||
|
|
||||||
|
set (CMAKE_FIND_ROOT_PATH "/usr/i686-w64-mingw32")
|
||||||
|
|
||||||
|
set (CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER)
|
||||||
|
set (CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY)
|
||||||
|
set (CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)
|
||||||
@@ -1381,7 +1381,7 @@ struct mpd_client
|
|||||||
|
|
||||||
// Protocol:
|
// Protocol:
|
||||||
|
|
||||||
bool got_hello; ///< Got the OK MPD hello message
|
char *got_hello; ///< Version from OK MPD hello message
|
||||||
|
|
||||||
bool idling; ///< Sent idle as the last command
|
bool idling; ///< Sent idle as the last command
|
||||||
unsigned idling_subsystems; ///< Subsystems we're idling for
|
unsigned idling_subsystems; ///< Subsystems we're idling for
|
||||||
@@ -1482,7 +1482,7 @@ mpd_client_reset (struct mpd_client *self)
|
|||||||
str_reset (&self->read_buffer);
|
str_reset (&self->read_buffer);
|
||||||
str_reset (&self->write_buffer);
|
str_reset (&self->write_buffer);
|
||||||
|
|
||||||
self->got_hello = false;
|
cstr_set (&self->got_hello, NULL);
|
||||||
self->idling = false;
|
self->idling = false;
|
||||||
self->idling_subsystems = 0;
|
self->idling_subsystems = 0;
|
||||||
self->in_list = false;
|
self->in_list = false;
|
||||||
@@ -1549,7 +1549,8 @@ mpd_client_parse_hello (struct mpd_client *self, const char *line)
|
|||||||
|
|
||||||
// TODO: call "on_connected" now. We should however also set up a timer
|
// TODO: call "on_connected" now. We should however also set up a timer
|
||||||
// so that we don't wait on this message forever.
|
// so that we don't wait on this message forever.
|
||||||
return self->got_hello = true;
|
cstr_set (&self->got_hello, xstrdup (line + sizeof hello - 1));
|
||||||
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
static bool
|
static bool
|
||||||
@@ -1634,30 +1635,30 @@ mpd_client_on_ready (const struct pollfd *pfd, void *user_data)
|
|||||||
|
|
||||||
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
|
|
||||||
static bool
|
|
||||||
mpd_client_must_quote_char (char c)
|
|
||||||
{
|
|
||||||
return (unsigned char) c <= ' ' || c == '"' || c == '\'';
|
|
||||||
}
|
|
||||||
|
|
||||||
static bool
|
static bool
|
||||||
mpd_client_must_quote (const char *s)
|
mpd_client_must_quote (const char *s)
|
||||||
{
|
{
|
||||||
if (!*s)
|
if (!*s)
|
||||||
return true;
|
return true;
|
||||||
for (; *s; s++)
|
for (; *s; s++)
|
||||||
if (mpd_client_must_quote_char (*s))
|
if ((unsigned char) *s <= ' ' || *s == '"' || *s == '\'')
|
||||||
return true;
|
return true;
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static bool
|
||||||
|
mpd_client_must_escape_in_quote (char c)
|
||||||
|
{
|
||||||
|
return c == '"' || c == '\'' || c == '\\';
|
||||||
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
mpd_client_quote (const char *s, struct str *output)
|
mpd_client_quote (const char *s, struct str *output)
|
||||||
{
|
{
|
||||||
str_append_c (output, '"');
|
str_append_c (output, '"');
|
||||||
for (; *s; s++)
|
for (; *s; s++)
|
||||||
{
|
{
|
||||||
if (mpd_client_must_quote_char (*s))
|
if (mpd_client_must_escape_in_quote (*s))
|
||||||
str_append_c (output, '\\');
|
str_append_c (output, '\\');
|
||||||
str_append_c (output, *s);
|
str_append_c (output, *s);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -24,12 +24,12 @@
|
|||||||
// It is surprisingly hard to find a good library to handle Unicode shenanigans,
|
// It is surprisingly hard to find a good library to handle Unicode shenanigans,
|
||||||
// and there's enough of those for it to be impractical to reimplement them.
|
// and there's enough of those for it to be impractical to reimplement them.
|
||||||
//
|
//
|
||||||
// GLib ICU libunistring utf8proc
|
// GLib ICU libunistring utf8proc libgrapheme
|
||||||
// Decently sized . . x x
|
// Decently sized . . x x x
|
||||||
// Grapheme breaks . x . x
|
// Grapheme breaks . x . x x
|
||||||
// Character width x . x x
|
// Character width x . x x .
|
||||||
// Locale handling . . x .
|
// Locale handling . . x . .
|
||||||
// Liberal license . x . x
|
// Liberal license . x . x x
|
||||||
//
|
//
|
||||||
// Also note that the ICU API is icky and uses UTF-16 for its primary encoding.
|
// Also note that the ICU API is icky and uses UTF-16 for its primary encoding.
|
||||||
//
|
//
|
||||||
|
|||||||
@@ -292,7 +292,8 @@ xreallocarray (void *o, size_t n, size_t m)
|
|||||||
static char *
|
static char *
|
||||||
xstrdup (const char *s)
|
xstrdup (const char *s)
|
||||||
{
|
{
|
||||||
return strcpy (xmalloc (strlen (s) + 1), s);
|
size_t len = strlen (s) + 1;
|
||||||
|
return memcpy (xmalloc (len), s, len);
|
||||||
}
|
}
|
||||||
|
|
||||||
static char *
|
static char *
|
||||||
|
|||||||
Reference in New Issue
Block a user