Good catch, I think I have them all now. Rory
On 12 November 2014 13:35, Sean McNamara <smc...@gmail.com> wrote: > > On Nov 11, 2014 4:13 PM, "Rory McNamara" <pink.banana.f...@gmail.com> wrote: >> >> Well that was stupid. Revision attached. >> I appreciate all the help you've given me. > > There's an extra strlen(name) within the if statement of the first loop. > Since you have a variable now for strlen(name), you can replace the second > call to strlen(name) with just len. > > Sorry, couldn't help myself. :) > > Sean > > P. S. Nice last name... > >> >> Rory >> >> On 11 November 2014 21:07, Ben Boeckel <maths...@gmail.com> wrote: >> > On Tue, Nov 11, 2014 at 20:34:08 +0000, Rory McNamara wrote: >> >> Would have thought the compiler would do that for me, but I've cached >> >> it anyway. >> > >> > Not all compilers are that smart :( . >> > >> >> Good point on the second, missed that when I changed the loops. >> >> Fixed attached. >> > >> > One last nit :) . >> > >> > --Ben >> > >> >> - if (strcmp(name, mpc_table[i].command) == 0) >> >> + if (strncmp(name, mpc_table[i].command, len) == 0 && >> >> strncmp(name, mpc_table[i].command, len) == 0) >> > >> > This is now "if (a && a)" >> >> _______________________________________________ >> mpd-devel mailing list >> mpd-devel@musicpd.org >> http://mailman.blarg.de/listinfo/mpd-devel >>
From 0522ed669c00cd724e144ee05f69e027d4570b94 Mon Sep 17 00:00:00 2001 From: PsychoMario <pink.banana.f...@gmail.com> Date: Tue, 11 Nov 2014 13:05:15 +0000 Subject: [PATCH] added least unambiguous to find_command --- doc/mpc.1 | 1 + src/main.c | 12 +++++++++++- 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/doc/mpc.1 b/doc/mpc.1 index 2bea9a6..b119c81 100644 --- a/doc/mpc.1 +++ b/doc/mpc.1 @@ -96,6 +96,7 @@ If you specify an absolute path, mpc attempts a connection via Unix Domain Socke The port to connect to; if not given, the value of the environment variable MPD_PORT is checked before defaulting to 6600. This default can be changed at compile-time. .br .SH COMMANDS +Commands can be used from the least unambiguous prefix (e.g insert or ins) .TP .B add <file> Adds a song from the music database to the playlist. Can also read input from pipes. Use "mpc ls | mpc add" to add all files to the playlist. diff --git a/src/main.c b/src/main.c index 7c30ff6..77da487 100644 --- a/src/main.c +++ b/src/main.c @@ -214,8 +214,18 @@ setup_connection(void) static struct command * find_command(const char *name) { + unsigned int matches = 0, len = strlen(name); + for (unsigned i = 0; mpc_table[i].command != NULL; ++i) { + if (strncmp(name, mpc_table[i].command, len) == 0) { + matches += 1; + if (strlen(mpc_table[i].command) == len) + return &mpc_table[i]; //Exact match + } + } + if (matches != 1) //Ambiguous or nonexistent + return NULL; for (unsigned i = 0; mpc_table[i].command != NULL; ++i) - if (strcmp(name, mpc_table[i].command) == 0) + if (strncmp(name, mpc_table[i].command, len)) return &mpc_table[i]; return NULL; -- 2.1.2
_______________________________________________ mpd-devel mailing list mpd-devel@musicpd.org http://mailman.blarg.de/listinfo/mpd-devel