All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH 1/3] Simplify options for including/excluding plugins
@ 2011-05-25 15:39 Luiz Augusto von Dentz
  2011-05-25 15:39 ` [PATCH 2/3] Remove unused obex.conf Luiz Augusto von Dentz
                   ` (2 more replies)
  0 siblings, 3 replies; 6+ messages in thread
From: Luiz Augusto von Dentz @ 2011-05-25 15:39 UTC (permalink / raw)
  To: linux-bluetooth

From: Luiz Augusto von Dentz <luiz.dentz-von@nokia.com>

Plugins options are now handle with --plugin(-p)/--noplugin(-P) which
takes a string set containing the plugin names separated by ',',':' or
' 'similar to bluetoothd, ofono and connman.
---
 src/main.c   |   68 +++++++++++++++------------------------------------------
 src/obexd.h  |    2 +-
 src/plugin.c |   51 +++++++++++++++++++++++++++++++++++++++++-
 3 files changed, 68 insertions(+), 53 deletions(-)

diff --git a/src/main.c b/src/main.c
index 8154e3b..e1ce442 100644
--- a/src/main.c
+++ b/src/main.c
@@ -75,16 +75,11 @@ static char *option_debug = NULL;
 static char *option_root = NULL;
 static char *option_root_setup = NULL;
 static char *option_capability = NULL;
+static char *option_plugin = NULL;
+static char *option_noplugin = NULL;
 
 static gboolean option_autoaccept = FALSE;
-static gboolean option_opp = FALSE;
-static gboolean option_ftp = FALSE;
-static gboolean option_pbap = FALSE;
-static gboolean option_irmc = FALSE;
-static gboolean option_pcsuite = FALSE;
 static gboolean option_symlinks = FALSE;
-static gboolean option_syncevolution = FALSE;
-static gboolean option_mas = FALSE;
 
 static gboolean parse_debug(const char *key, const char *value,
 				gpointer user_data, GError **error)
@@ -114,20 +109,10 @@ static GOptionEntry options[] = {
 				"Specify capability file", "FILE" },
 	{ "auto-accept", 'a', 0, G_OPTION_ARG_NONE, &option_autoaccept,
 				"Automatically accept push requests" },
-	{ "opp", 'o', 0, G_OPTION_ARG_NONE, &option_opp,
-				"Enable Object Push server" },
-	{ "ftp", 'f', 0, G_OPTION_ARG_NONE, &option_ftp,
-				"Enable File Transfer server" },
-	{ "pbap", 'p', 0, G_OPTION_ARG_NONE, &option_pbap,
-				"Enable Phonebook Access server" },
-	{ "irmc", 'i', 0, G_OPTION_ARG_NONE, &option_irmc,
-				"Enable IrMC Sync server" },
-	{ "pcsuite", 's', 0, G_OPTION_ARG_NONE, &option_pcsuite,
-				"Enable PC Suite Services server" },
-	{ "syncevolution", 'e', 0, G_OPTION_ARG_NONE, &option_syncevolution,
-				"Enable OBEX server for SyncEvolution" },
-        { "mas", 'm', 0, G_OPTION_ARG_NONE, &option_mas,
-				"Enable Message Access server" },
+	{ "plugin", 'p', 0, G_OPTION_ARG_STRING, &option_plugin,
+				"Specify plugins to load", "NAME,..." },
+	{ "noplugin", 'P', 0, G_OPTION_ARG_STRING, &option_noplugin,
+				"Specify plugins not to load", "NAME,..." },
 	{ NULL },
 };
 
@@ -212,16 +197,6 @@ int main(int argc, char *argv[])
 		}
 	}
 
-	if (option_opp == FALSE && option_ftp == FALSE &&
-				option_pbap == FALSE &&
-				option_irmc == FALSE &&
-				option_syncevolution == FALSE &&
-				option_mas == FALSE) {
-		fprintf(stderr, "No server selected (use either "
-				"--opp, --ftp, --pbap, --irmc, --mas, or --syncevolution)\n");
-		exit(EXIT_FAILURE);
-	}
-
 	__obex_log_init("obexd", option_debug, option_detach);
 
 	DBG("Entering main loop");
@@ -251,39 +226,32 @@ int main(int argc, char *argv[])
 		}
 	}
 
-	plugin_init();
-
 	if (option_capability == NULL)
 		option_capability = g_strdup(DEFAULT_CAP_FILE);
 
-	if (option_opp == TRUE)
-		obex_server_init(OBEX_OPP, option_root, FALSE,
+	plugin_init(option_plugin, option_noplugin);
+
+	obex_server_init(OBEX_OPP, option_root, FALSE,
 				option_autoaccept, option_symlinks,
 				NULL);
 
-	if (option_ftp == TRUE)
-		obex_server_init(OBEX_FTP, option_root, TRUE,
+	obex_server_init(OBEX_FTP, option_root, TRUE,
 				option_autoaccept, option_symlinks,
 				option_capability);
 
-	if (option_pbap == TRUE)
-		obex_server_init(OBEX_PBAP, NULL, TRUE, FALSE, FALSE, NULL);
-
-	if (option_pcsuite == TRUE)
-		obex_server_init(OBEX_PCSUITE, option_root, TRUE,
+	obex_server_init(OBEX_PCSUITE, option_root, TRUE,
 				option_autoaccept, option_symlinks,
 				option_capability);
 
-	if (option_irmc == TRUE)
-		obex_server_init(OBEX_IRMC, NULL, TRUE, FALSE, FALSE,
-				option_capability);
+	obex_server_init(OBEX_PBAP, NULL, TRUE, FALSE, FALSE,
+							option_capability);
+
+	obex_server_init(OBEX_IRMC, NULL, TRUE, FALSE, FALSE,
+							option_capability);
 
-	if (option_syncevolution == TRUE)
-		obex_server_init(OBEX_SYNCEVOLUTION, NULL, TRUE, FALSE,
-							FALSE, NULL);
+	obex_server_init(OBEX_SYNCEVOLUTION, NULL, TRUE, FALSE, FALSE, NULL);
 
-	if (option_mas == TRUE)
-		obex_server_init(OBEX_MAS, NULL, TRUE, FALSE, FALSE, NULL);
+	obex_server_init(OBEX_MAS, NULL, TRUE, FALSE, FALSE, NULL);
 
 	if (!root_folder_setup(option_root, option_root_setup)) {
 		error("Unable to setup root folder %s", option_root);
diff --git a/src/obexd.h b/src/obexd.h
index df21f00..37106b7 100644
--- a/src/obexd.h
+++ b/src/obexd.h
@@ -21,7 +21,7 @@
  *
  */
 
-gboolean plugin_init(void);
+gboolean plugin_init(const char *pattern, const char *exclude);
 void plugin_cleanup(void);
 
 gboolean manager_init(void);
diff --git a/src/plugin.c b/src/plugin.c
index 14a569f..c8ec642 100644
--- a/src/plugin.c
+++ b/src/plugin.c
@@ -79,10 +79,39 @@ static gboolean add_plugin(void *handle, struct obex_plugin_desc *desc)
 	return TRUE;
 }
 
+static gboolean check_plugin(struct obex_plugin_desc *desc,
+				char **patterns, char **excludes)
+{
+	if (excludes) {
+		for (; *excludes; excludes++)
+			if (g_pattern_match_simple(*excludes, desc->name))
+				break;
+		if (*excludes) {
+			info("Excluding %s", desc->name);
+			return FALSE;
+		}
+	}
+
+	if (patterns) {
+		for (; *patterns; patterns++)
+			if (g_pattern_match_simple(*patterns, desc->name))
+				break;
+		if (*patterns == NULL) {
+			info("Ignoring %s", desc->name);
+			return FALSE;
+		}
+	}
+
+	return TRUE;
+}
+
+
 #include "builtin.h"
 
-gboolean plugin_init(void)
+gboolean plugin_init(const char *pattern, const char *exclude)
 {
+	gchar **patterns = NULL;
+	gchar **excludes = NULL;
 	GDir *dir;
 	const char *file;
 	unsigned int i;
@@ -90,10 +119,21 @@ gboolean plugin_init(void)
 	if (strlen(PLUGINDIR) == 0)
 		return FALSE;
 
+	if (pattern)
+		patterns = g_strsplit_set(pattern, ":, ", -1);
+
+	if (exclude)
+		excludes = g_strsplit_set(exclude, ":, ", -1);
+
 	DBG("Loading builtin plugins");
 
-	for (i = 0; __obex_builtin[i]; i++)
+	for (i = 0; __obex_builtin[i]; i++) {
+		if (check_plugin(__obex_builtin[i],
+					patterns, excludes) == FALSE)
+			continue;
+
 		add_plugin(NULL,  __obex_builtin[i]);
+	}
 
 	DBG("Loading plugins %s", PLUGINDIR);
 
@@ -129,11 +169,18 @@ gboolean plugin_init(void)
 			continue;
 		}
 
+		if (check_plugin(desc, patterns, excludes) == FALSE) {
+			dlclose(handle);
+			continue;
+		}
+
 		if (add_plugin(handle, desc) == FALSE)
 			dlclose(handle);
 	}
 
 	g_dir_close(dir);
+	g_strfreev(patterns);
+	g_strfreev(excludes);
 
 	return TRUE;
 }
-- 
1.7.5.1


^ permalink raw reply related	[flat|nested] 6+ messages in thread

* [PATCH 2/3] Remove unused obex.conf
  2011-05-25 15:39 [PATCH 1/3] Simplify options for including/excluding plugins Luiz Augusto von Dentz
@ 2011-05-25 15:39 ` Luiz Augusto von Dentz
  2011-05-25 15:40 ` [PATCH 3/3] Improve usage documentation for some options Luiz Augusto von Dentz
  2011-05-29 18:25 ` [PATCH 1/3] Simplify options for including/excluding plugins Johan Hedberg
  2 siblings, 0 replies; 6+ messages in thread
From: Luiz Augusto von Dentz @ 2011-05-25 15:39 UTC (permalink / raw)
  To: linux-bluetooth

From: Luiz Augusto von Dentz <luiz.von.dentz@intel.com>

obexd currently does not support configuration files.
---
 Makefile.am   |    2 +-
 src/obex.conf |   20 --------------------
 2 files changed, 1 insertions(+), 21 deletions(-)
 delete mode 100644 src/obex.conf

diff --git a/Makefile.am b/Makefile.am
index 8d8fdc6..0be6c33 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -138,7 +138,7 @@ INCLUDES = -I$(builddir)/src -I$(srcdir)/src -I$(srcdir)/plugins \
 
 CLEANFILES = $(service_DATA) $(builtin_files)
 
-EXTRA_DIST = src/genbuiltin $(doc_files) $(test_files) src/obex.conf \
+EXTRA_DIST = src/genbuiltin $(doc_files) $(test_files) \
 			src/obexd.service.in client/obex-client.service.in \
 			plugins/phonebook-dummy.c plugins/phonebook-ebook.c \
 			plugins/phonebook-tracker.c \
diff --git a/src/obex.conf b/src/obex.conf
deleted file mode 100644
index 12f88b6..0000000
--- a/src/obex.conf
+++ /dev/null
@@ -1,20 +0,0 @@
-# Configuration file for the OBEX Daemon
-[General]
-
-EnabledTransports=Bluetooth
-
-[Bluetooth]
-Enable=OPUSH
-
-# Object Push Server options
-[OPUSH]
-name=OBEX Object Push Server
-channel=9
-folder=/tmp
-auto_accept=true
-
-# FTP Server options
-# [FTP]
-# name=OBEX FTP Server
-# channel=10
-# folder=/tmp
-- 
1.7.5.1


^ permalink raw reply related	[flat|nested] 6+ messages in thread

* [PATCH 3/3] Improve usage documentation for some options
  2011-05-25 15:39 [PATCH 1/3] Simplify options for including/excluding plugins Luiz Augusto von Dentz
  2011-05-25 15:39 ` [PATCH 2/3] Remove unused obex.conf Luiz Augusto von Dentz
@ 2011-05-25 15:40 ` Luiz Augusto von Dentz
  2011-05-25 17:17   ` Anderson Lizardo
  2011-05-29 18:25 ` [PATCH 1/3] Simplify options for including/excluding plugins Johan Hedberg
  2 siblings, 1 reply; 6+ messages in thread
From: Luiz Augusto von Dentz @ 2011-05-25 15:40 UTC (permalink / raw)
  To: linux-bluetooth

From: Luiz Augusto von Dentz <luiz.von.dentz@intel.com>

---
 src/main.c |    8 ++++++--
 1 files changed, 6 insertions(+), 2 deletions(-)

diff --git a/src/main.c b/src/main.c
index e1ce442..5b30f07 100644
--- a/src/main.c
+++ b/src/main.c
@@ -100,13 +100,17 @@ static GOptionEntry options[] = {
 				G_OPTION_ARG_CALLBACK, parse_debug,
 				"Enable debug information output", "DEBUG" },
 	{ "root", 'r', 0, G_OPTION_ARG_STRING, &option_root,
-				"Specify root folder location", "PATH" },
+				"Specify root folder location. Both absolute"
+				"and relative can be use, but relative paths"
+				"are assume to be relative to user $HOME"
+				"folder", "PATH" },
 	{ "root-setup", 'S', 0, G_OPTION_ARG_STRING, &option_root_setup,
 				"Root folder setup script", "SCRIPT" },
 	{ "symlinks", 'l', 0, G_OPTION_ARG_NONE, &option_symlinks,
 				"Enable symlinks on root folder" },
 	{ "capability", 'c', 0, G_OPTION_ARG_STRING, &option_capability,
-				"Specify capability file", "FILE" },
+				"Specify capability file, use '!' mark for"
+				"scripts", "FILE" },
 	{ "auto-accept", 'a', 0, G_OPTION_ARG_NONE, &option_autoaccept,
 				"Automatically accept push requests" },
 	{ "plugin", 'p', 0, G_OPTION_ARG_STRING, &option_plugin,
-- 
1.7.5.1


^ permalink raw reply related	[flat|nested] 6+ messages in thread

* Re: [PATCH 3/3] Improve usage documentation for some options
  2011-05-25 15:40 ` [PATCH 3/3] Improve usage documentation for some options Luiz Augusto von Dentz
@ 2011-05-25 17:17   ` Anderson Lizardo
  2011-05-25 19:45     ` Luiz Augusto von Dentz
  0 siblings, 1 reply; 6+ messages in thread
From: Anderson Lizardo @ 2011-05-25 17:17 UTC (permalink / raw)
  To: Luiz Augusto von Dentz; +Cc: linux-bluetooth

Hi Luiz,

On Wed, May 25, 2011 at 11:40 AM, Luiz Augusto von Dentz
<luiz.dentz@gmail.com> wrote:
> From: Luiz Augusto von Dentz <luiz.von.dentz@intel.com>
>
> ---
>  src/main.c |    8 ++++++--
>  1 files changed, 6 insertions(+), 2 deletions(-)
>
> diff --git a/src/main.c b/src/main.c
> index e1ce442..5b30f07 100644
> --- a/src/main.c
> +++ b/src/main.c
> @@ -100,13 +100,17 @@ static GOptionEntry options[] = {
>                                G_OPTION_ARG_CALLBACK, parse_debug,
>                                "Enable debug information output", "DEBUG" },
>        { "root", 'r', 0, G_OPTION_ARG_STRING, &option_root,
> -                               "Specify root folder location", "PATH" },
> +                               "Specify root folder location. Both absolute"
> +                               "and relative can be use, but relative paths"
> +                               "are assume to be relative to user $HOME"
> +                               "folder", "PATH" },

IIRC, you should add the spaces to the string if you want them on the
printed string, otherwise you will see:

absoluteand
pathsare
etc.

>        { "root-setup", 'S', 0, G_OPTION_ARG_STRING, &option_root_setup,
>                                "Root folder setup script", "SCRIPT" },
>        { "symlinks", 'l', 0, G_OPTION_ARG_NONE, &option_symlinks,
>                                "Enable symlinks on root folder" },
>        { "capability", 'c', 0, G_OPTION_ARG_STRING, &option_capability,
> -                               "Specify capability file", "FILE" },
> +                               "Specify capability file, use '!' mark for"
> +                               "scripts", "FILE" },

Same here.

Regards,
-- 
Anderson Lizardo
Instituto Nokia de Tecnologia - INdT
Manaus - Brazil

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [PATCH 3/3] Improve usage documentation for some options
  2011-05-25 17:17   ` Anderson Lizardo
@ 2011-05-25 19:45     ` Luiz Augusto von Dentz
  0 siblings, 0 replies; 6+ messages in thread
From: Luiz Augusto von Dentz @ 2011-05-25 19:45 UTC (permalink / raw)
  To: Anderson Lizardo; +Cc: linux-bluetooth

Hi,

On Wed, May 25, 2011 at 8:17 PM, Anderson Lizardo
<anderson.lizardo@openbossa.org> wrote:
> Hi Luiz,
>
> On Wed, May 25, 2011 at 11:40 AM, Luiz Augusto von Dentz
> <luiz.dentz@gmail.com> wrote:
>> From: Luiz Augusto von Dentz <luiz.von.dentz@intel.com>
>>
>> ---
>>  src/main.c |    8 ++++++--
>>  1 files changed, 6 insertions(+), 2 deletions(-)
>>
>> diff --git a/src/main.c b/src/main.c
>> index e1ce442..5b30f07 100644
>> --- a/src/main.c
>> +++ b/src/main.c
>> @@ -100,13 +100,17 @@ static GOptionEntry options[] = {
>>                                G_OPTION_ARG_CALLBACK, parse_debug,
>>                                "Enable debug information output", "DEBUG" },
>>        { "root", 'r', 0, G_OPTION_ARG_STRING, &option_root,
>> -                               "Specify root folder location", "PATH" },
>> +                               "Specify root folder location. Both absolute"
>> +                               "and relative can be use, but relative paths"
>> +                               "are assume to be relative to user $HOME"
>> +                               "folder", "PATH" },
>
> IIRC, you should add the spaces to the string if you want them on the
> printed string, otherwise you will see:
>
> absoluteand
> pathsare
> etc.

It sure does need the extra spaces, gonna fix them, thanks.

>>        { "root-setup", 'S', 0, G_OPTION_ARG_STRING, &option_root_setup,
>>                                "Root folder setup script", "SCRIPT" },
>>        { "symlinks", 'l', 0, G_OPTION_ARG_NONE, &option_symlinks,
>>                                "Enable symlinks on root folder" },
>>        { "capability", 'c', 0, G_OPTION_ARG_STRING, &option_capability,
>> -                               "Specify capability file", "FILE" },
>> +                               "Specify capability file, use '!' mark for"
>> +                               "scripts", "FILE" },
>
> Same here.
>
> Regards,
> --
> Anderson Lizardo
> Instituto Nokia de Tecnologia - INdT
> Manaus - Brazil
>



-- 
Luiz Augusto von Dentz
Computer Engineer

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [PATCH 1/3] Simplify options for including/excluding plugins
  2011-05-25 15:39 [PATCH 1/3] Simplify options for including/excluding plugins Luiz Augusto von Dentz
  2011-05-25 15:39 ` [PATCH 2/3] Remove unused obex.conf Luiz Augusto von Dentz
  2011-05-25 15:40 ` [PATCH 3/3] Improve usage documentation for some options Luiz Augusto von Dentz
@ 2011-05-29 18:25 ` Johan Hedberg
  2 siblings, 0 replies; 6+ messages in thread
From: Johan Hedberg @ 2011-05-29 18:25 UTC (permalink / raw)
  To: Luiz Augusto von Dentz; +Cc: linux-bluetooth

Hi Luiz,

On Wed, May 25, 2011, Luiz Augusto von Dentz wrote:
> Plugins options are now handle with --plugin(-p)/--noplugin(-P) which
> takes a string set containing the plugin names separated by ',',':' or
> ' 'similar to bluetoothd, ofono and connman.
> ---
>  src/main.c   |   68 +++++++++++++++------------------------------------------
>  src/obexd.h  |    2 +-
>  src/plugin.c |   51 +++++++++++++++++++++++++++++++++++++++++-
>  3 files changed, 68 insertions(+), 53 deletions(-)

All three patches have been pushed. Thanks.

Johan

^ permalink raw reply	[flat|nested] 6+ messages in thread

end of thread, other threads:[~2011-05-29 18:25 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2011-05-25 15:39 [PATCH 1/3] Simplify options for including/excluding plugins Luiz Augusto von Dentz
2011-05-25 15:39 ` [PATCH 2/3] Remove unused obex.conf Luiz Augusto von Dentz
2011-05-25 15:40 ` [PATCH 3/3] Improve usage documentation for some options Luiz Augusto von Dentz
2011-05-25 17:17   ` Anderson Lizardo
2011-05-25 19:45     ` Luiz Augusto von Dentz
2011-05-29 18:25 ` [PATCH 1/3] Simplify options for including/excluding plugins Johan Hedberg

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.