chiark
/
gitweb
/
~mdw
/
disorder
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Convert track names and input lines to NFC. This is a database format
[disorder]
/
server
/
server.c
diff --git
a/server/server.c
b/server/server.c
index 603b7db0922b2d8ba6324111a2207050717c27ba..64502c0330d7588e4afcd27b242abefcfd9c23c7 100644
(file)
--- a/
server/server.c
+++ b/
server/server.c
@@
-63,6
+63,7
@@
#include "eventlog.h"
#include "defs.h"
#include "cache.h"
#include "eventlog.h"
#include "defs.h"
#include "cache.h"
+#include "unicode.h"
#ifndef NONCE_SIZE
# define NONCE_SIZE 16
#ifndef NONCE_SIZE
# define NONCE_SIZE 16
@@
-921,6
+922,10
@@
static int c_tags(struct conn *c,
static int c_set_global(struct conn *c,
char **vec,
int attribute((unused)) nvec) {
static int c_set_global(struct conn *c,
char **vec,
int attribute((unused)) nvec) {
+ if(vec[0][0] == '_') {
+ sink_writes(ev_writer_sink(c->w), "550 cannot set internal global preferences\n");
+ return 1;
+ }
trackdb_set_global(vec[0], vec[1], c->who);
sink_printf(ev_writer_sink(c->w), "250 OK\n");
return 1;
trackdb_set_global(vec[0], vec[1], c->who);
sink_printf(ev_writer_sink(c->w), "250 OK\n");
return 1;
@@
-1040,6
+1045,11
@@
static int command(struct conn *c, char *line) {
int nvec, n;
D(("server command %s", line));
int nvec, n;
D(("server command %s", line));
+ /* We force everything into NFC as early as possible */
+ if(!(line = utf8_compose_canon(line, strlen(line), 0))) {
+ sink_writes(ev_writer_sink(c->w), "500 cannot normalize command\n");
+ return 1;
+ }
if(!(vec = split(line, &nvec, SPLIT_QUOTES, command_error, c))) {
sink_writes(ev_writer_sink(c->w), "500 cannot parse command\n");
return 1;
if(!(vec = split(line, &nvec, SPLIT_QUOTES, command_error, c))) {
sink_writes(ev_writer_sink(c->w), "500 cannot parse command\n");
return 1;