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

Reply via email to