http://git-wip-us.apache.org/repos/asf/celix/blob/a1c30887/shell/README.md ---------------------------------------------------------------------- diff --git a/shell/README.md b/shell/README.md index b830edc..76f1cc7 100644 --- a/shell/README.md +++ b/shell/README.md @@ -19,10 +19,15 @@ While the shell can be extended with additional commands by other bundles, it al Further information about a command can be retrieved by using `help` combined with the command. +## CMake options + BUILD_SHELL=ON + ## Shell Config Options -- SHELL_USE_ANSI_COLORS - Wether shell command are allowed to use +- SHELL_USE_ANSI_COLORS - Whether shell command are allowed to use ANSI colors when printing info. default is true. -## CMake options - BUILD_SHELL=ON +## Using info + +If the Celix Shell is installed The `FindCelix.cmake` will set: + - The `Celix::dependency_manager_cxx_static` library target
http://git-wip-us.apache.org/repos/asf/celix/blob/a1c30887/shell/include/command.h ---------------------------------------------------------------------- diff --git a/shell/include/command.h b/shell/include/command.h new file mode 100644 index 0000000..0e86dcc --- /dev/null +++ b/shell/include/command.h @@ -0,0 +1,57 @@ +/** + *Licensed to the Apache Software Foundation (ASF) under one + *or more contributor license agreements. See the NOTICE file + *distributed with this work for additional information + *regarding copyright ownership. The ASF licenses this file + *to you under the Apache License, Version 2.0 (the + *"License"); you may not use this file except in compliance + *with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + *Unless required by applicable law or agreed to in writing, + *software distributed under the License is distributed on an + *"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + *specific language governing permissions and limitations + *under the License. + */ +/* + * command.h + * + * \date Aug 13, 2010 + * \author <a href="mailto:[email protected]">Apache Celix Project Team</a> + * \copyright Apache License, Version 2.0 + */ + +#ifndef COMMAND_H_ +#define COMMAND_H_ + +#include "celix_errno.h" +#include <stdio.h> + +#define OSGI_SHELL_COMMAND_NAME "command.name" +#define OSGI_SHELL_COMMAND_USAGE "command.usage" +#define OSGI_SHELL_COMMAND_DESCRIPTION "command.description" + +static const char * const OSGI_SHELL_COMMAND_SERVICE_NAME = "commandService"; + +typedef struct commandService command_service_t; +typedef command_service_t * command_service_pt; + +/** + * The command service can be used to register additional shell commands. + * The service should be register with the following properties: + * - command.name: mandatory, name of the command e.g. 'lb' + * - command.usage: optional, string describing how tu use the commmand e.g. 'lb [-l | -s | -u]' + * - command.descrription: optional, string describing the command e.g. 'list bundles.' + */ +struct commandService { + void *handle; + celix_status_t (*executeCommand)(void *handle, char * commandLine, FILE *outStream, FILE *errorStream); +}; + + + + +#endif /* COMMAND_H_ */ http://git-wip-us.apache.org/repos/asf/celix/blob/a1c30887/shell/include/shell.h ---------------------------------------------------------------------- diff --git a/shell/include/shell.h b/shell/include/shell.h new file mode 100644 index 0000000..c8e7d60 --- /dev/null +++ b/shell/include/shell.h @@ -0,0 +1,51 @@ +/** + *Licensed to the Apache Software Foundation (ASF) under one + *or more contributor license agreements. See the NOTICE file + *distributed with this work for additional information + *regarding copyright ownership. The ASF licenses this file + *to you under the Apache License, Version 2.0 (the + *"License"); you may not use this file except in compliance + *with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + *Unless required by applicable law or agreed to in writing, + *software distributed under the License is distributed on an + *"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + *specific language governing permissions and limitations + *under the License. + */ +/* + * shell.h + * + * \date Aug 12, 2010 + * \author <a href="mailto:[email protected]">Apache Celix Project Team</a> + * \copyright Apache License, Version 2.0 + */ + +#ifndef SHELL_H_ +#define SHELL_H_ + +#include "array_list.h" +#include "service_reference.h" + +static const char * const OSGI_SHELL_SERVICE_NAME = "shellService"; + +typedef struct shell shell_t; +typedef shell_t* shell_pt; + +struct shellService { + shell_pt shell; + + celix_status_t (*getCommands)(shell_pt shell_ptr, array_list_pt *commands_ptr); + celix_status_t (*getCommandUsage)(shell_pt shell_ptr, char *command_name_str, char **usage_str); + celix_status_t (*getCommandDescription)(shell_pt shell_ptr, char *command_name_str, char **command_description_str); + celix_status_t (*getCommandReference)(shell_pt shell_ptr, char *command_name_str, service_reference_pt *command_reference_ptr); + celix_status_t (*executeCommand)(shell_pt shell_ptr, char * command_line_str, FILE *out, FILE *err); +}; + +typedef struct shellService shell_service_t; +typedef shell_service_t* shell_service_pt; + +#endif /* SHELL_H_ */ http://git-wip-us.apache.org/repos/asf/celix/blob/a1c30887/shell/include/shell_constants.h ---------------------------------------------------------------------- diff --git a/shell/include/shell_constants.h b/shell/include/shell_constants.h new file mode 100644 index 0000000..1e7f875 --- /dev/null +++ b/shell/include/shell_constants.h @@ -0,0 +1,27 @@ +/** + *Licensed to the Apache Software Foundation (ASF) under one + *or more contributor license agreements. See the NOTICE file + *distributed with this work for additional information + *regarding copyright ownership. The ASF licenses this file + *to you under the Apache License, Version 2.0 (the + *"License"); you may not use this file except in compliance + *with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + *Unless required by applicable law or agreed to in writing, + *software distributed under the License is distributed on an + *"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + *specific language governing permissions and limitations + *under the License. + */ + + +#ifndef SHELL_CONSTANTS_H_ +#define SHELL_CONSTANTS_H_ + +#define SHELL_USE_ANSI_COLORS "SHELL_USE_ANSI_COLORS" +#define SHELL_USE_ANSI_COLORS_DEFAULT_VALUE "true" + +#endif /* SHELL_CONSTANTS_H_ */ http://git-wip-us.apache.org/repos/asf/celix/blob/a1c30887/shell/private/include/shell_private.h ---------------------------------------------------------------------- diff --git a/shell/private/include/shell_private.h b/shell/private/include/shell_private.h deleted file mode 100644 index 7270fa2..0000000 --- a/shell/private/include/shell_private.h +++ /dev/null @@ -1,51 +0,0 @@ -/** - *Licensed to the Apache Software Foundation (ASF) under one - *or more contributor license agreements. See the NOTICE file - *distributed with this work for additional information - *regarding copyright ownership. The ASF licenses this file - *to you under the Apache License, Version 2.0 (the - *"License"); you may not use this file except in compliance - *with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - *Unless required by applicable law or agreed to in writing, - *software distributed under the License is distributed on an - *"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - *specific language governing permissions and limitations - *under the License. - */ -/* - * shell_private.h - * - * \date Aug 13, 2010 - * \author <a href="mailto:[email protected]">Apache Celix Project Team</a> - * \copyright Apache License, Version 2.0 - */ - -#ifndef SHELL_PRIVATE_H_ -#define SHELL_PRIVATE_H_ - -#include "bundle_context.h" -#include "shell.h" -#include "hash_map.h" -#include "command.h" -#include "log_helper.h" - -struct shell { - bundle_context_pt bundle_context_ptr; - hash_map_pt command_reference_map_ptr; - hash_map_pt command_name_map_ptr; - log_helper_pt logHelper; -}; - -celix_status_t shell_create(bundle_context_pt context_ptr, shell_service_pt *shell_service_ptr); -celix_status_t shell_destroy(shell_service_pt *shell_service_ptr); -celix_status_t shell_addCommand(shell_pt shell_ptr, service_reference_pt reference_ptr, void *svc); -celix_status_t shell_removeCommand(shell_pt shell_ptr, service_reference_pt reference_ptr, void *svc); - -celix_status_t shell_getCommandReference(shell_pt shell_ptr, char *command_name_str, service_reference_pt *command_reference_ptr); -celix_status_t shell_executeCommand(shell_pt shell_ptr, char *command_line_str, FILE *out, FILE *err); - -#endif /* SHELL_PRIVATE_H_ */ http://git-wip-us.apache.org/repos/asf/celix/blob/a1c30887/shell/private/include/std_commands.h ---------------------------------------------------------------------- diff --git a/shell/private/include/std_commands.h b/shell/private/include/std_commands.h deleted file mode 100644 index ef7f37e..0000000 --- a/shell/private/include/std_commands.h +++ /dev/null @@ -1,44 +0,0 @@ -/** - *Licensed to the Apache Software Foundation (ASF) under one - *or more contributor license agreements. See the NOTICE file - *distributed with this work for additional information - *regarding copyright ownership. The ASF licenses this file - *to you under the Apache License, Version 2.0 (the - *"License"); you may not use this file except in compliance - *with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - *Unless required by applicable law or agreed to in writing, - *software distributed under the License is distributed on an - *"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - *specific language governing permissions and limitations - *under the License. - */ -/* - * std_commands.h - * - * \date March 27, 2014 - * \author <a href="mailto:[email protected]">Apache Celix Project Team</a> - * \copyright Apache License, Version 2.0 - */ - -#ifndef __STD_COMMANDS_H_ -#define __STD_COMMANDS_H_ - -#include "celix_errno.h" - -#define OSGI_SHELL_COMMAND_SEPARATOR " " - -celix_status_t psCommand_execute(void *_ptr, char *command_line_str, FILE *out_ptr, FILE *err_ptr); -celix_status_t startCommand_execute(void *_ptr, char *command_line_str, FILE *out_ptr, FILE *err_ptr); -celix_status_t stopCommand_execute(void *handle, char * commandline, FILE *outStream, FILE *errStream); -celix_status_t installCommand_execute(void *handle, char * commandline, FILE *outStream, FILE *errStream); -celix_status_t uninstallCommand_execute(void *handle, char * commandline, FILE *outStream, FILE *errStream); -celix_status_t updateCommand_execute(void *handle, char * commandline, FILE *outStream, FILE *errStream); -celix_status_t logCommand_execute(void *handle, char * commandline, FILE *outStream, FILE *errStream); -celix_status_t inspectCommand_execute(void *handle, char * commandline, FILE *outStream, FILE *errStream); -celix_status_t helpCommand_execute(void *handle, char * commandline, FILE *outStream, FILE *errStream); - -#endif http://git-wip-us.apache.org/repos/asf/celix/blob/a1c30887/shell/private/src/activator.c ---------------------------------------------------------------------- diff --git a/shell/private/src/activator.c b/shell/private/src/activator.c deleted file mode 100644 index ac298d8..0000000 --- a/shell/private/src/activator.c +++ /dev/null @@ -1,269 +0,0 @@ -/** - *Licensed to the Apache Software Foundation (ASF) under one - *or more contributor license agreements. See the NOTICE file - *distributed with this work for additional information - *regarding copyright ownership. The ASF licenses this file - *to you under the Apache License, Version 2.0 (the - *"License"); you may not use this file except in compliance - *with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - *Unless required by applicable law or agreed to in writing, - *software distributed under the License is distributed on an - *"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - *specific language governing permissions and limitations - *under the License. - */ -/* - * activator.c - * - * \date Aug 13, 2010 - * \author <a href="mailto:[email protected]">Apache Celix Project Team</a> - * \copyright Apache License, Version 2.0 - */ -#include <stdlib.h> -#include <string.h> - -#include "shell_private.h" -#include "bundle_activator.h" -#include "std_commands.h" -#include "service_tracker.h" -#include "constants.h" - -#define NUMBER_OF_COMMANDS 10 - -struct command { - celix_status_t (*exec)(void *handle, char *commandLine, FILE *out, FILE *err); - char *name; - char *description; - char *usage; - command_service_pt service; - service_registration_pt reg; - properties_pt props; -}; - -struct bundle_instance { - shell_service_pt shellService; - service_registration_pt registration; - service_tracker_pt tracker; - - struct command std_commands[NUMBER_OF_COMMANDS]; -}; - -typedef struct bundle_instance *bundle_instance_pt; - -celix_status_t bundleActivator_create(bundle_context_pt context_ptr, void **_pptr) { - celix_status_t status = CELIX_SUCCESS; - - bundle_instance_pt instance_ptr = NULL; - - if (!_pptr || !context_ptr) { - status = CELIX_ENOMEM; - } - - if (status == CELIX_SUCCESS) { - instance_ptr = (bundle_instance_pt) calloc(1, sizeof(struct bundle_instance)); - if (!instance_ptr) { - status = CELIX_ENOMEM; - } - } - - if (status == CELIX_SUCCESS) { - status = shell_create(context_ptr, &instance_ptr->shellService); - } - - if (status == CELIX_SUCCESS) { - instance_ptr->std_commands[0] = - (struct command) { - .exec = psCommand_execute, - .name = "lb", - .description = "list bundles.", - .usage = "lb [-l | -s | -u]" - }; - instance_ptr->std_commands[1] = - (struct command) { - .exec = startCommand_execute, - .name = "start", - .description = "start bundle(s).", - .usage = "start <id> [<id> ...]" - }; - instance_ptr->std_commands[2] = - (struct command) { - .exec = stopCommand_execute, - .name = "stop", - .description = "stop bundle(s).", - .usage = "stop <id> [<id> ...]" - }; - instance_ptr->std_commands[3] = - (struct command) { - .exec = installCommand_execute, - .name = "install", - .description = "install bundle(s).", - .usage = "install <file> [<file> ...]" - }; - instance_ptr->std_commands[4] = - (struct command) { - .exec = uninstallCommand_execute, - .name = "uninstall", - .description = "uninstall bundle(s).", - .usage = "uninstall <file> [<file> ...]" - }; - instance_ptr->std_commands[5] = - (struct command) { - .exec = updateCommand_execute, - .name = "update", - .description = "update bundle(s).", - .usage = "update <id> [<URL>]" - }; - instance_ptr->std_commands[6] = - (struct command) { - .exec = helpCommand_execute, - .name = "help", - .description = "display available commands and description.", - .usage = "help <command>]" - }; - instance_ptr->std_commands[7] = - (struct command) { - .exec = logCommand_execute, - .name = "log", - .description = "print log.", - .usage = "log" - }; - instance_ptr->std_commands[8] = - (struct command) { - .exec = inspectCommand_execute, - .name = "inspect", - .description = "inspect services and components.", - .usage = "inspect (service) (capability|requirement) [<id> ...]" - }; - instance_ptr->std_commands[9] = - (struct command) { NULL, NULL, NULL, NULL, NULL, NULL, NULL }; /*marker for last element*/ - - unsigned int i = 0; - while (instance_ptr->std_commands[i].exec != NULL) { - instance_ptr->std_commands[i].props = properties_create(); - if (!instance_ptr->std_commands[i].props) { - status = CELIX_BUNDLE_EXCEPTION; - break; - } - - properties_set(instance_ptr->std_commands[i].props, OSGI_SHELL_COMMAND_NAME, instance_ptr->std_commands[i].name); - properties_set(instance_ptr->std_commands[i].props, OSGI_SHELL_COMMAND_USAGE, instance_ptr->std_commands[i].usage); - properties_set(instance_ptr->std_commands[i].props, OSGI_SHELL_COMMAND_DESCRIPTION, instance_ptr->std_commands[i].description); - properties_set(instance_ptr->std_commands[i].props, CELIX_FRAMEWORK_SERVICE_LANGUAGE, CELIX_FRAMEWORK_SERVICE_C_LANGUAGE); - - instance_ptr->std_commands[i].service = calloc(1, sizeof(*instance_ptr->std_commands[i].service)); - if (!instance_ptr->std_commands[i].service) { - status = CELIX_ENOMEM; - break; - } - - instance_ptr->std_commands[i].service->handle = context_ptr; - instance_ptr->std_commands[i].service->executeCommand = instance_ptr->std_commands[i].exec; - - i += 1; - } - } - - if (status == CELIX_SUCCESS) { - *_pptr = instance_ptr; - } - - - if (status != CELIX_SUCCESS) { - bundleActivator_destroy(instance_ptr, context_ptr); - } - - return status; -} - -celix_status_t bundleActivator_start(void *_ptr, bundle_context_pt context_ptr) { - celix_status_t status = CELIX_SUCCESS; - - bundle_instance_pt instance_ptr = (bundle_instance_pt) _ptr; - - if (!instance_ptr || !context_ptr) { - status = CELIX_ILLEGAL_ARGUMENT; - } - - if (status == CELIX_SUCCESS) { - properties_pt props = properties_create(); - properties_set(props, CELIX_FRAMEWORK_SERVICE_LANGUAGE, CELIX_FRAMEWORK_SERVICE_C_LANGUAGE); - status = bundleContext_registerService(context_ptr, (char *) OSGI_SHELL_SERVICE_NAME, instance_ptr->shellService, props, &instance_ptr->registration); - } - - if (status == CELIX_SUCCESS) { - service_tracker_customizer_pt cust = NULL; - serviceTrackerCustomizer_create(instance_ptr->shellService->shell, NULL, (void *)shell_addCommand, NULL, (void *)shell_removeCommand, &cust); - serviceTracker_create(context_ptr, (char *)OSGI_SHELL_COMMAND_SERVICE_NAME, cust, &instance_ptr->tracker); - serviceTracker_open(instance_ptr->tracker); - } - - - if (status == CELIX_SUCCESS) { - for (unsigned int i = 0; instance_ptr->std_commands[i].exec != NULL; i++) { - status = bundleContext_registerService(context_ptr, (char *) OSGI_SHELL_COMMAND_SERVICE_NAME, - instance_ptr->std_commands[i].service, - instance_ptr->std_commands[i].props, - &instance_ptr->std_commands[i].reg); - if (status != CELIX_SUCCESS) { - break; - } - - } - } - - return status; -} - -celix_status_t bundleActivator_stop(void *_ptr, bundle_context_pt context_ptr) { - celix_status_t status = CELIX_SUCCESS; - - bundle_instance_pt instance_ptr = (bundle_instance_pt) _ptr; - - if (instance_ptr) { - for (unsigned int i = 0; instance_ptr->std_commands[i].exec != NULL; i++) { - if (instance_ptr->std_commands[i].reg != NULL) { - status = serviceRegistration_unregister(instance_ptr->std_commands[i].reg); - instance_ptr->std_commands[i].reg = NULL; - instance_ptr->std_commands[i].props = NULL; - } - } - - if (instance_ptr->tracker != NULL) { - serviceTracker_close(instance_ptr->tracker); - } - } else { - status = CELIX_ILLEGAL_ARGUMENT; - } - - return status; -} - -celix_status_t bundleActivator_destroy(void *_ptr, bundle_context_pt __attribute__((__unused__)) context_ptr) { - celix_status_t status = CELIX_SUCCESS; - - bundle_instance_pt instance_ptr = (bundle_instance_pt) _ptr; - - if (instance_ptr) { - serviceRegistration_unregister(instance_ptr->registration); - - for (unsigned int i = 0; instance_ptr->std_commands[i].exec != NULL; i++) { - free(instance_ptr->std_commands[i].service); - } - - shell_destroy(&instance_ptr->shellService); - - if (instance_ptr->tracker != NULL) { - serviceTracker_destroy(instance_ptr->tracker); - } - - free(instance_ptr); - } else { - status = CELIX_ILLEGAL_ARGUMENT; - } - - return status; -} http://git-wip-us.apache.org/repos/asf/celix/blob/a1c30887/shell/private/src/help_command.c ---------------------------------------------------------------------- diff --git a/shell/private/src/help_command.c b/shell/private/src/help_command.c deleted file mode 100644 index 48615ae..0000000 --- a/shell/private/src/help_command.c +++ /dev/null @@ -1,112 +0,0 @@ -/** - *Licensed to the Apache Software Foundation (ASF) under one - *or more contributor license agreements. See the NOTICE file - *distributed with this work for additional information - *regarding copyright ownership. The ASF licenses this file - *to you under the Apache License, Version 2.0 (the - *"License"); you may not use this file except in compliance - *with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - *Unless required by applicable law or agreed to in writing, - *software distributed under the License is distributed on an - *"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - *specific language governing permissions and limitations - *under the License. - */ -/* - * help_command.c - * - * \date Aug 20, 2010 - * \author <a href="mailto:[email protected]">Apache Celix Project Team</a> - * \copyright Apache License, Version 2.0 - */ -#include <stdlib.h> -#include <string.h> -#include <stdint.h> - -#include "array_list.h" -#include "bundle_context.h" -#include "shell.h" -#include "std_commands.h" - -celix_status_t helpCommand_execute(void *_ptr, char *line_str, FILE *out_ptr, FILE *err_ptr) { - celix_status_t status = CELIX_SUCCESS; - - bundle_context_pt context_ptr = _ptr; - service_reference_pt shell_service_reference_ptr = NULL; - shell_service_pt shell_ptr = NULL; - - if (!context_ptr || !line_str || !out_ptr || !err_ptr) { - status = CELIX_ILLEGAL_ARGUMENT; - } - - if (status == CELIX_SUCCESS) { - status = bundleContext_getServiceReference(context_ptr, (char *) OSGI_SHELL_SERVICE_NAME, &shell_service_reference_ptr); - } - - if (status == CELIX_SUCCESS) { - status = bundleContext_getService(context_ptr, shell_service_reference_ptr, (void **) &shell_ptr); - } - - if (status == CELIX_SUCCESS) { - uint32_t out_len = 256; - char *sub = NULL; - char *save_ptr = NULL; - char out_str[out_len]; - - memset(out_str, 0, sizeof(out_str)); - - strtok_r(line_str, OSGI_SHELL_COMMAND_SEPARATOR, &save_ptr); - sub = strtok_r(NULL, OSGI_SHELL_COMMAND_SEPARATOR, &save_ptr); - - if (sub == NULL) { - unsigned int i; - array_list_pt commands = NULL; - - status = shell_ptr->getCommands(shell_ptr->shell, &commands); - for (i = 0; i < arrayList_size(commands); i++) { - char *name = arrayList_get(commands, i); - fprintf(out_ptr, "%s\n", name); - } - fprintf(out_ptr, "\nUse 'help <command-name>' for more information.\n"); - arrayList_destroy(commands); - } else { - celix_status_t sub_status_desc; - celix_status_t sub_status_usage; - int i; - array_list_pt commands = NULL; - shell_ptr->getCommands(shell_ptr->shell, &commands); - for (i = 0; i < arrayList_size(commands); i++) { - char *name = arrayList_get(commands, i); - if (strcmp(sub, name) == 0) { - char *usage_str = NULL; - char *desc_str = NULL; - - sub_status_desc = shell_ptr->getCommandDescription(shell_ptr->shell, name, &desc_str); - sub_status_usage = shell_ptr->getCommandUsage(shell_ptr->shell, name, &usage_str); - - if (sub_status_usage == CELIX_SUCCESS && sub_status_desc == CELIX_SUCCESS) { - fprintf(out_ptr, "Command : %s\n", name); - fprintf(out_ptr, "Usage : %s\n", usage_str == NULL ? "" : usage_str); - fprintf(out_ptr, "Description : %s\n", desc_str == NULL ? "" : desc_str); - } else { - fprintf(err_ptr, "Error retreiving help info for command '%s'\n", sub); - } - - if (sub_status_desc != CELIX_SUCCESS && status == CELIX_SUCCESS) { - status = sub_status_desc; - } - if (sub_status_usage != CELIX_SUCCESS && status == CELIX_SUCCESS) { - status = sub_status_usage; - } - } - } - arrayList_destroy(commands); - } - } - - return status; -} http://git-wip-us.apache.org/repos/asf/celix/blob/a1c30887/shell/private/src/inspect_command.c ---------------------------------------------------------------------- diff --git a/shell/private/src/inspect_command.c b/shell/private/src/inspect_command.c deleted file mode 100644 index cb93e9c..0000000 --- a/shell/private/src/inspect_command.c +++ /dev/null @@ -1,277 +0,0 @@ -/** - *Licensed to the Apache Software Foundation (ASF) under one - *or more contributor license agreements. See the NOTICE file - *distributed with this work for additional information - *regarding copyright ownership. The ASF licenses this file - *to you under the Apache License, Version 2.0 (the - *"License"); you may not use this file except in compliance - *with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - *Unless required by applicable law or agreed to in writing, - *software distributed under the License is distributed on an - *"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - *specific language governing permissions and limitations - *under the License. - */ -/* - * inspect_command.c - * - * \date Oct 13, 2011 - * \author <a href="mailto:[email protected]">Apache Celix Project Team</a> - * \copyright Apache License, Version 2.0 - */ - -#include <stdlib.h> -#include <string.h> - -#include "array_list.h" -#include "bundle_context.h" - -#include "std_commands.h" - -#define SERVICE_TYPE "service" -#define CAPABILITY "capability" -#define REQUIREMENT "requirement" - -celix_status_t inspectCommand_printExportedServices(bundle_context_pt context, array_list_pt ids, FILE *outStream, FILE *errStream); -celix_status_t inspectCommand_printImportedServices(bundle_context_pt context, array_list_pt ids, FILE *outStream, FILE *errStream); - -celix_status_t inspectCommand_execute(void *handle, char * commandline, FILE *outStream, FILE *errStream) { - celix_status_t status = CELIX_SUCCESS; - - bundle_context_pt context = handle; - - char *token; - strtok_r(commandline, " ", &token); - char *type = strtok_r(NULL, " ", &token); - if (type != NULL) { - char *direction = strtok_r(NULL, " ", &token); - if (direction != NULL) { - array_list_pt ids = NULL; - char *id = strtok_r(NULL, " ", &token); - - arrayList_create(&ids); - while (id != NULL) { - arrayList_add(ids, id); - id = strtok_r(NULL, " ", &token); - } - - if (strcmp(type, SERVICE_TYPE) == 0) { - if (strcmp(direction, CAPABILITY) == 0) { - status = inspectCommand_printExportedServices(context, ids, outStream, errStream); - if (status != CELIX_SUCCESS) { - fprintf(errStream, "INSPECT: Error\n"); - } - } else if (strcmp(direction, REQUIREMENT) == 0) { - status = inspectCommand_printImportedServices(context, ids, outStream, errStream); - if (status != CELIX_SUCCESS) { - fprintf(errStream, "INSPECT: Error\n"); - } - } else { - fprintf(errStream, "INSPECT: Invalid argument\n"); - } - } else { - fprintf(errStream, "INSPECT: Invalid argument\n"); - } - arrayList_destroy(ids); - } else { - fprintf(errStream, "INSPECT: Too few arguments\n"); - } - } else { - fprintf(errStream, "INSPECT: Too few arguments\n"); - } - return status; -} - -celix_status_t inspectCommand_printExportedServices(bundle_context_pt context, array_list_pt ids, FILE *outStream, FILE *errStream) { - celix_status_t status = CELIX_SUCCESS; - array_list_pt bundles = NULL; - - if (arrayList_isEmpty(ids)) { - status = bundleContext_getBundles(context, &bundles); - } else { - unsigned int i; - - arrayList_create(&bundles); - for (i = 0; i < arrayList_size(ids); i++) { - char *idStr = (char *) arrayList_get(ids, i); - long id = atol(idStr); - bundle_pt b = NULL; - celix_status_t st = bundleContext_getBundleById(context, id, &b); - if (st == CELIX_SUCCESS) { - arrayList_add(bundles, b); - } else { - fprintf(outStream, "INSPECT: Invalid bundle ID: %ld\n", id); - } - } - } - - if (status == CELIX_SUCCESS) { - unsigned int i = 0; - for (i = 0; i < arrayList_size(bundles); i++) { - bundle_pt bundle = (bundle_pt) arrayList_get(bundles, i); - - if (i > 0) { - fprintf(outStream, "\n"); - } - - if (bundle != NULL) { - array_list_pt refs = NULL; - - if (bundle_getRegisteredServices(bundle, &refs) == CELIX_SUCCESS) { - module_pt module = NULL; - const char * name = NULL; - status = bundle_getCurrentModule(bundle, &module); - if (status == CELIX_SUCCESS) { - status = module_getSymbolicName(module, &name); - if (status == CELIX_SUCCESS) { - fprintf(outStream, "%s provides services:\n", name); - fprintf(outStream, "==============\n"); - - if (refs == NULL || arrayList_size(refs) == 0) { - fprintf(outStream, "Nothing\n"); - } else { - unsigned int j = 0; - for (j = 0; j < arrayList_size(refs); j++) { - service_reference_pt ref = (service_reference_pt) arrayList_get(refs, j); - unsigned int size = 0; - char **keys; - - serviceReference_getPropertyKeys(ref, &keys, &size); - for (int k = 0; k < size; k++) { - char *key = keys[k]; - const char *value = NULL; - serviceReference_getProperty(ref, key, &value); - - fprintf(outStream, "%s = %s\n", key, value); - } - - free(keys); - -// objectClass = properties_get(props, (char *) OSGI_FRAMEWORK_OBJECTCLASS); -// sprintf(line, "ObjectClass = %s\n", objectClass); - if ((j + 1) < arrayList_size(refs)) { - fprintf(outStream, "----\n"); - } - } - } - } - } - } - - if(refs!=NULL){ - arrayList_destroy(refs); - } - } - } - } - - if (bundles != NULL) { - arrayList_destroy(bundles); - } - - return status; -} - -celix_status_t inspectCommand_printImportedServices(bundle_context_pt context, array_list_pt ids, FILE *outStream, FILE *errStream) { - celix_status_t status = CELIX_SUCCESS; - array_list_pt bundles = NULL; - - if (arrayList_isEmpty(ids)) { - status = bundleContext_getBundles(context, &bundles); - } else { - unsigned int i; - - arrayList_create(&bundles); - for (i = 0; i < arrayList_size(ids); i++) { - char *idStr = (char *) arrayList_get(ids, i); - long id = atol(idStr); - bundle_pt b = NULL; - celix_status_t st = bundleContext_getBundleById(context, id, &b); - if (st == CELIX_SUCCESS) { - arrayList_add(bundles, b); - } else { - fprintf(outStream, "INSPECT: Invalid bundle ID: %ld\n", id); - } - } - } - - if (status == CELIX_SUCCESS) { - unsigned int i = 0; - for (i = 0; i < arrayList_size(bundles); i++) { - bundle_pt bundle = (bundle_pt) arrayList_get(bundles, i); - - if (i > 0) { - fprintf(outStream, "\n"); - } - - if (bundle != NULL) { - array_list_pt refs = NULL; - - if (bundle_getServicesInUse(bundle, &refs) == CELIX_SUCCESS) { - module_pt module = NULL; - const char * name = NULL; - status = bundle_getCurrentModule(bundle, &module); - if (status == CELIX_SUCCESS) { - status = module_getSymbolicName(module, &name); - if (status == CELIX_SUCCESS) { - fprintf(outStream, "%s requires services:\n", name); - fprintf(outStream, "==============\n"); - - if (refs == NULL || arrayList_size(refs) == 0) { - fprintf(outStream, "Nothing\n"); - } else { - unsigned int j = 0; - for (j = 0; j < arrayList_size(refs); j++) { - service_reference_pt ref = (service_reference_pt) arrayList_get(refs, j); - bundle_pt usedBundle = NULL; - module_pt usedModule = NULL; - const char *usedSymbolicName = NULL; - long usedBundleId; - - serviceReference_getBundle(ref, &usedBundle); - bundle_getBundleId(usedBundle, &usedBundleId); - bundle_getCurrentModule(usedBundle, &usedModule); - module_getSymbolicName(usedModule, &usedSymbolicName); - - fprintf(outStream, "%s [%ld]\n", usedSymbolicName, usedBundleId); - - unsigned int size = 0; - char **keys; - - serviceReference_getPropertyKeys(ref, &keys, &size); - for (int k = 0; k < size; k++) { - char *key = keys[k]; - const char *value = NULL; - serviceReference_getProperty(ref, key, &value); - - fprintf(outStream, "%s = %s\n", key, value); - } - free(keys); - -// objectClass = properties_get(props, (char *) OSGI_FRAMEWORK_OBJECTCLASS); -// sprintf(line, "ObjectClass = %s\n", objectClass); - if ((j + 1) < arrayList_size(refs)) { - fprintf(outStream, "----\n"); - } - } - } - } - } - } - - if(refs!=NULL){ - arrayList_destroy(refs); - } - } - } - } - - arrayList_destroy(bundles); - - - return status; -} http://git-wip-us.apache.org/repos/asf/celix/blob/a1c30887/shell/private/src/install_command.c ---------------------------------------------------------------------- diff --git a/shell/private/src/install_command.c b/shell/private/src/install_command.c deleted file mode 100644 index 067ba2b..0000000 --- a/shell/private/src/install_command.c +++ /dev/null @@ -1,76 +0,0 @@ -/** - *Licensed to the Apache Software Foundation (ASF) under one - *or more contributor license agreements. See the NOTICE file - *distributed with this work for additional information - *regarding copyright ownership. The ASF licenses this file - *to you under the Apache License, Version 2.0 (the - *"License"); you may not use this file except in compliance - *with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - *Unless required by applicable law or agreed to in writing, - *software distributed under the License is distributed on an - *"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - *specific language governing permissions and limitations - *under the License. - */ -/* - * install_command.c - * - * \date Apr 4, 2011 - * \author <a href="mailto:[email protected]">Apache Celix Project Team</a> - * \copyright Apache License, Version 2.0 - */ -#include <stdlib.h> -#include <string.h> - -#include "array_list.h" -#include "bundle_context.h" - -void installCommand_execute(void *handle, char * line, FILE *outStream, FILE *errStream) { - bundle_context_pt context = handle; - - char delims[] = " "; - char * sub = NULL; - char *save_ptr = NULL; - char info[256]; - - // ignore the command - sub = strtok_r(line, delims, &save_ptr); - sub = strtok_r(NULL, delims, &save_ptr); - - if (sub == NULL) { - fprintf(errStream, "Incorrect number of arguments.\n"); - } else { - info[0] = '\0'; - while (sub != NULL) { - bundle_pt bundle = NULL; - bundleContext_installBundle(context, sub, &bundle); - if (bundle != NULL) { - long id; - bundle_archive_pt archive = NULL; - char bundleId[sizeof(id) + 1]; - - if (strlen(info) > 0) { - strcat(info, ", "); - } - bundle_getArchive(bundle, &archive); - bundleArchive_getId(archive, &id); - sprintf(bundleId, "%ld", id); - strcat(info, bundleId); - } - sub = strtok_r(NULL, delims, &save_ptr); - } - if (strchr(info, ',') != NULL) { - fprintf(outStream, "Bundle IDs: "); - fprintf(outStream, "%s", info); - fprintf(outStream, "\n"); - } else if (strlen(info) > 0) { - fprintf(outStream, "Bundle ID: "); - fprintf(outStream, "%s", info); - fprintf(outStream, "\n"); - } - } -} \ No newline at end of file http://git-wip-us.apache.org/repos/asf/celix/blob/a1c30887/shell/private/src/lb_command.c ---------------------------------------------------------------------- diff --git a/shell/private/src/lb_command.c b/shell/private/src/lb_command.c deleted file mode 100644 index d0504f6..0000000 --- a/shell/private/src/lb_command.c +++ /dev/null @@ -1,205 +0,0 @@ -/** - *Licensed to the Apache Software Foundation (ASF) under one - *or more contributor license agreements. See the NOTICE file - *distributed with this work for additional information - *regarding copyright ownership. The ASF licenses this file - *to you under the Apache License, Version 2.0 (the - *"License"); you may not use this file except in compliance - *with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - *Unless required by applicable law or agreed to in writing, - *software distributed under the License is distributed on an - *"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - *specific language governing permissions and limitations - *under the License. - */ -/* - * std_shell_commands.c - * - * \date March 27, 2014 - * \author <a href="mailto:[email protected]">Apache Celix Project Team</a> - * \copyright Apache License, Version 2.0 - */ -#include <stdlib.h> -#include <string.h> - -#include "array_list.h" -#include "bundle_context.h" -#include "std_commands.h" -#include "shell_constants.h" - -static const char * const HEAD_COLOR = "\033[4m"; //underline -static const char * const EVEN_COLOR = "\033[1m"; //bold -static const char * const ODD_COLOR = "\033[3m"; //italic -static const char * const END_COLOR = "\033[0m"; - -static char * psCommand_stateString(bundle_state_e state); - -celix_status_t psCommand_execute(void *_ptr, char *command_line_str, FILE *out_ptr, FILE *err_ptr) { - celix_status_t status = CELIX_SUCCESS; - bundle_context_t* ctx = _ptr; - - const char* config = NULL; - bundleContext_getPropertyWithDefault(ctx, SHELL_USE_ANSI_COLORS, SHELL_USE_ANSI_COLORS_DEFAULT_VALUE, &config); - bool useColors = config != NULL && strncmp("true", config, 5) == 0; - - bundle_context_pt context_ptr = _ptr; - array_list_pt bundles_ptr = NULL; - - bool show_location = false; - bool show_symbolic_name = false; - bool show_update_location = false; - char *message_str = "Name"; - - if (!context_ptr || !command_line_str || !out_ptr || !err_ptr) { - status = CELIX_ILLEGAL_ARGUMENT; - } - - if (status == CELIX_SUCCESS) { - status = bundleContext_getBundles(context_ptr, &bundles_ptr); - } - - if (status == CELIX_SUCCESS) { - char *sub_str = NULL; - char *save_ptr = NULL; - - strtok_r(command_line_str, OSGI_SHELL_COMMAND_SEPARATOR, &save_ptr); - sub_str = strtok_r(NULL, OSGI_SHELL_COMMAND_SEPARATOR, &save_ptr); - while (sub_str != NULL) { - if (strcmp(sub_str, "-l") == 0) { - show_location = true; - message_str = "Location"; - } else if (strcmp(sub_str, "-s") == 0) { - show_symbolic_name = true; - message_str = "Symbolic name"; - } else if (strcmp(sub_str, "-u") == 0) { - show_update_location = true; - message_str = "Update location"; - } - sub_str = strtok_r(NULL, OSGI_SHELL_COMMAND_SEPARATOR, &save_ptr); - } - - const char* startColor = ""; - const char* endColor = ""; - if (useColors) { - startColor = HEAD_COLOR; - endColor = END_COLOR; - } - fprintf(out_ptr, "%s %-5s %-12s %s%s\n", startColor, "ID", "State", message_str, endColor); - - unsigned int size = arrayList_size(bundles_ptr); - - bundle_pt bundles_array_ptr[size]; - - for (unsigned int i = 0; i < size; i++) { - bundles_array_ptr[i] = arrayList_get(bundles_ptr, i); - } - - for (unsigned int i = 0; i < size - 1; i++) { - for (unsigned int j = i + 1; j < size; j++) { - bundle_pt first_ptr = bundles_array_ptr[i]; - bundle_pt second_ptr = bundles_array_ptr[j]; - - bundle_archive_pt first_archive_ptr = NULL; - bundle_archive_pt second_archive_ptr = NULL; - - long first_id; - long second_id; - - bundle_getArchive(first_ptr, &first_archive_ptr); - bundle_getArchive(second_ptr, &second_archive_ptr); - - bundleArchive_getId(first_archive_ptr, &first_id); - bundleArchive_getId(second_archive_ptr, &second_id); - - if (first_id > second_id) { - bundle_pt temp_ptr = bundles_array_ptr[i]; - bundles_array_ptr[i] = bundles_array_ptr[j]; - bundles_array_ptr[j] = temp_ptr; - } - } - } - - for (unsigned int i = 0; i < size; i++) { - celix_status_t sub_status; - - bundle_pt bundle_ptr = bundles_array_ptr[i]; - - bundle_archive_pt archive_ptr = NULL; - long id = 0; - bundle_state_e state = OSGI_FRAMEWORK_BUNDLE_UNKNOWN; - const char *state_str = NULL; - module_pt module_ptr = NULL; - const char *name_str = NULL; - - sub_status = bundle_getArchive(bundle_ptr, &archive_ptr); - if (sub_status == CELIX_SUCCESS) { - sub_status = bundleArchive_getId(archive_ptr, &id); - } - - if (sub_status == CELIX_SUCCESS) { - sub_status = bundle_getState(bundle_ptr, &state); - } - - if (sub_status == CELIX_SUCCESS) { - state_str = psCommand_stateString(state); - - sub_status = bundle_getCurrentModule(bundle_ptr, &module_ptr); - } - - if (sub_status == CELIX_SUCCESS) { - sub_status = module_getSymbolicName(module_ptr, &name_str); - } - - if (sub_status == CELIX_SUCCESS) { - if (show_location) { - sub_status = bundleArchive_getLocation(archive_ptr, &name_str); - } else if (show_symbolic_name) { - // do nothing - } else if (show_update_location) { - sub_status = bundleArchive_getLocation(archive_ptr, &name_str); - } - } - - if (sub_status == CELIX_SUCCESS) { - startColor = ""; - endColor = ""; - if (useColors) { - startColor = i % 2 == 0 ? EVEN_COLOR : ODD_COLOR; - endColor = END_COLOR; - } - fprintf(out_ptr, "%s %-5ld %-12s %s%s\n", startColor, id, state_str, name_str, endColor); - - } - - if (sub_status != CELIX_SUCCESS) { - status = sub_status; - break; - } - } - - arrayList_destroy(bundles_ptr); - } - - return status; -} - -static char * psCommand_stateString(bundle_state_e state) { - switch (state) { - case OSGI_FRAMEWORK_BUNDLE_ACTIVE: - return "Active "; - case OSGI_FRAMEWORK_BUNDLE_INSTALLED: - return "Installed "; - case OSGI_FRAMEWORK_BUNDLE_RESOLVED: - return "Resolved "; - case OSGI_FRAMEWORK_BUNDLE_STARTING: - return "Starting "; - case OSGI_FRAMEWORK_BUNDLE_STOPPING: - return "Stopping "; - default: - return "Unknown "; - } -} http://git-wip-us.apache.org/repos/asf/celix/blob/a1c30887/shell/private/src/log_command.c ---------------------------------------------------------------------- diff --git a/shell/private/src/log_command.c b/shell/private/src/log_command.c deleted file mode 100644 index 8b0244a..0000000 --- a/shell/private/src/log_command.c +++ /dev/null @@ -1,94 +0,0 @@ -/** - *Licensed to the Apache Software Foundation (ASF) under one - *or more contributor license agreements. See the NOTICE file - *distributed with this work for additional information - *regarding copyright ownership. The ASF licenses this file - *to you under the Apache License, Version 2.0 (the - *"License"); you may not use this file except in compliance - *with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - *Unless required by applicable law or agreed to in writing, - *software distributed under the License is distributed on an - *"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - *specific language governing permissions and limitations - *under the License. - */ -/* - * log_command.c - * - * \date Jun 26, 2011 - * \author <a href="mailto:[email protected]">Apache Celix Project Team</a> - * \copyright Apache License, Version 2.0 - */ - -#include <stdlib.h> -#include <string.h> - -#include "bundle_context.h" -#include "log_reader_service.h" -#include "linked_list_iterator.h" - -celix_status_t logCommand_levelAsString(bundle_context_pt context, log_level_t level, char **string); - -void logCommand_execute(bundle_context_pt context, char *line, FILE *outStream, FILE *errStream) { - celix_status_t status; - service_reference_pt readerService = NULL; - - status = bundleContext_getServiceReference(context, (char *) OSGI_LOGSERVICE_READER_SERVICE_NAME, &readerService); - if (status != CELIX_SUCCESS || readerService != NULL) { - linked_list_pt list = NULL; - linked_list_iterator_pt iter = NULL; - log_reader_service_pt reader = NULL; - - - bundleContext_getService(context, readerService, (void **) &reader); - reader->getLog(reader->reader, &list); - iter = linkedListIterator_create(list, 0); - while (linkedListIterator_hasNext(iter)) { - log_entry_pt entry = linkedListIterator_next(iter); - char time[20]; - char *level = NULL; - char errorString[256]; - - strftime(time, 20, "%Y-%m-%d %H:%M:%S", localtime(&entry->time)); - logCommand_levelAsString(context, entry->level, &level); - - if (entry->errorCode > 0) { - celix_strerror(entry->errorCode, errorString, 256); - fprintf(outStream, "%s - Bundle: %s - %s - %d %s\n", time, entry->bundleSymbolicName, entry->message, entry->errorCode, errorString); - } else { - fprintf(outStream, "%s - Bundle: %s - %s\n", time, entry->bundleSymbolicName, entry->message); - } - } - linkedListIterator_destroy(iter); - linkedList_destroy(list); - bool result = true; - bundleContext_ungetService(context, readerService, &result); - bundleContext_ungetServiceReference(context, readerService); - } else { - fprintf(outStream, "No log reader available\n"); - } -} - -celix_status_t logCommand_levelAsString(bundle_context_pt context, log_level_t level, char **string) { - switch (level) { - case OSGI_LOGSERVICE_ERROR: - *string = "ERROR"; - break; - case OSGI_LOGSERVICE_WARNING: - *string = "WARNING"; - break; - case OSGI_LOGSERVICE_INFO: - *string = "INFO"; - break; - case OSGI_LOGSERVICE_DEBUG: - default: - *string = "DEBUG"; - break; - } - - return CELIX_SUCCESS; -} http://git-wip-us.apache.org/repos/asf/celix/blob/a1c30887/shell/private/src/shell.c ---------------------------------------------------------------------- diff --git a/shell/private/src/shell.c b/shell/private/src/shell.c deleted file mode 100644 index ac8603e..0000000 --- a/shell/private/src/shell.c +++ /dev/null @@ -1,305 +0,0 @@ -/** - *Licensed to the Apache Software Foundation (ASF) under one - *or more contributor license agreements. See the NOTICE file - *distributed with this work for additional information - *regarding copyright ownership. The ASF licenses this file - *to you under the Apache License, Version 2.0 (the - *"License"); you may not use this file except in compliance - *with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - *Unless required by applicable law or agreed to in writing, - *software distributed under the License is distributed on an - *"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - *specific language governing permissions and limitations - *under the License. - */ -/* - * shell.c - * - * \date Aug 13, 2010 - * \author <a href="mailto:[email protected]">Apache Celix Project Team</a> - * \copyright Apache License, Version 2.0 - */ -#include <stdlib.h> -#include <string.h> -#include <log_helper.h> - -#include "celix_errno.h" - -#include "shell_private.h" - - -#include "utils.h" - -celix_status_t shell_getCommands(shell_pt shell_ptr, array_list_pt *commands_ptr); -celix_status_t shell_getCommandUsage(shell_pt shell_ptr, char *command_name_str, char **usage_pstr); -celix_status_t shell_getCommandDescription(shell_pt shell_ptr, char *command_name_str, char **command_description_pstr); - -celix_status_t shell_create(bundle_context_pt context_ptr, shell_service_pt *shell_service_ptr) { - celix_status_t status = CELIX_SUCCESS; - - if (!context_ptr || !shell_service_ptr) { - status = CELIX_ILLEGAL_ARGUMENT; - } - - if (status == CELIX_SUCCESS) { - *shell_service_ptr = calloc(1, sizeof(**shell_service_ptr)); - if (!*shell_service_ptr) { - status = CELIX_ENOMEM; - } - } - - if (status == CELIX_SUCCESS) { - (*shell_service_ptr)->shell = calloc(1, sizeof(*(*shell_service_ptr)->shell)); - if (!(*shell_service_ptr)->shell) { - status = CELIX_ENOMEM; - } - } - - if (status == CELIX_SUCCESS) { - (*shell_service_ptr)->shell->bundle_context_ptr = context_ptr; - (*shell_service_ptr)->shell->command_name_map_ptr = hashMap_create(utils_stringHash, NULL, utils_stringEquals, NULL); - (*shell_service_ptr)->shell->command_reference_map_ptr = hashMap_create(NULL, NULL, NULL, NULL); - - (*shell_service_ptr)->getCommands = shell_getCommands; - (*shell_service_ptr)->getCommandDescription = shell_getCommandDescription; - (*shell_service_ptr)->getCommandUsage = shell_getCommandUsage; - (*shell_service_ptr)->getCommandReference = shell_getCommandReference; - (*shell_service_ptr)->executeCommand = shell_executeCommand; - - status = logHelper_create(context_ptr, &(*shell_service_ptr)->shell->logHelper); - } - - if (status != CELIX_SUCCESS) { - shell_destroy(shell_service_ptr); - } - - return status; -} - -celix_status_t shell_destroy(shell_service_pt *shell_service_ptr) { - celix_status_t status = CELIX_SUCCESS; - - if (!shell_service_ptr || !*shell_service_ptr) { - status = CELIX_ILLEGAL_ARGUMENT; - } - - if (status == CELIX_SUCCESS) { - if ((*shell_service_ptr)->shell) { - if ((*shell_service_ptr)->shell->command_name_map_ptr) { - hashMap_destroy((*shell_service_ptr)->shell->command_name_map_ptr, false, false); - } - if ((*shell_service_ptr)->shell->command_reference_map_ptr) { - hashMap_destroy((*shell_service_ptr)->shell->command_reference_map_ptr, false, false); - } - if ((*shell_service_ptr)->shell->logHelper) { - logHelper_destroy(&((*shell_service_ptr)->shell->logHelper)); - } - free((*shell_service_ptr)->shell); - (*shell_service_ptr)->shell = NULL; - } - free(*shell_service_ptr); - *shell_service_ptr = NULL; - } - - return status; -} - -celix_status_t shell_addCommand(shell_pt shell_ptr, service_reference_pt reference_ptr, void *svc) { - celix_status_t status = CELIX_SUCCESS; - command_service_pt command_ptr = NULL; - const char *name_str = NULL; - - if (!shell_ptr || !reference_ptr) { - return CELIX_ILLEGAL_ARGUMENT; - } - - if (status == CELIX_SUCCESS) { - command_ptr = svc; - } - - if (status == CELIX_SUCCESS) { - status = serviceReference_getProperty(reference_ptr, "command.name", &name_str); - if (!name_str) { - logHelper_log(shell_ptr->logHelper, OSGI_LOGSERVICE_ERROR, "Command service must contain a 'command.name' property!"); - status = CELIX_BUNDLE_EXCEPTION; - } - } - - if (status == CELIX_SUCCESS) { - hashMap_put(shell_ptr->command_name_map_ptr, (char *)name_str, command_ptr); - hashMap_put(shell_ptr->command_reference_map_ptr, reference_ptr, command_ptr); - } - - if (status != CELIX_SUCCESS) { - shell_removeCommand(shell_ptr, reference_ptr, svc); - char err[32]; - celix_strerror(status, err, 32); - logHelper_log(shell_ptr->logHelper, OSGI_LOGSERVICE_ERROR, "Could not add command, got error %s\n", err); - } - - return status; -} - -celix_status_t shell_removeCommand(shell_pt shell_ptr, service_reference_pt reference_ptr, void *svc) { - celix_status_t status = CELIX_SUCCESS; - - command_service_pt command_ptr = NULL; - const char *name_str = NULL; - - if (!shell_ptr || !reference_ptr) { - status = CELIX_ILLEGAL_ARGUMENT; - } - - if (status == CELIX_SUCCESS) { - command_ptr = hashMap_remove(shell_ptr->command_reference_map_ptr, reference_ptr); - if (!command_ptr) { - status = CELIX_ILLEGAL_ARGUMENT; - } - } - - if (status == CELIX_SUCCESS) { - status = serviceReference_getProperty(reference_ptr, "command.name", &name_str); - if (!name_str) { - status = CELIX_BUNDLE_EXCEPTION; - } - } - - if (status == CELIX_SUCCESS) { - hashMap_remove(shell_ptr->command_name_map_ptr, (char *)name_str); - } - - return status; -} - -celix_status_t shell_getCommands(shell_pt shell_ptr, array_list_pt *commands_ptr) { - celix_status_t status = CELIX_SUCCESS; - - hash_map_iterator_pt iter = NULL; - - if (!shell_ptr || !commands_ptr) { - status = CELIX_ILLEGAL_ARGUMENT; - } - - if (status == CELIX_SUCCESS) { - iter = hashMapIterator_create(shell_ptr->command_name_map_ptr); - if (!iter) { - status = CELIX_BUNDLE_EXCEPTION; - } - } - - if (status == CELIX_SUCCESS) { - arrayList_create(commands_ptr); - while (hashMapIterator_hasNext(iter)) { - char *name_str = hashMapIterator_nextKey(iter); - arrayList_add(*commands_ptr, name_str); - } - hashMapIterator_destroy(iter); - } - - return status; -} - - -celix_status_t shell_getCommandUsage(shell_pt shell_ptr, char *command_name_str, char **usage_pstr) { - celix_status_t status = CELIX_SUCCESS; - - service_reference_pt reference = NULL; - - if (!shell_ptr || !command_name_str || !usage_pstr) { - status = CELIX_ILLEGAL_ARGUMENT; - } - - if (status == CELIX_SUCCESS) { - status = shell_getCommandReference(shell_ptr, command_name_str, &reference); - if (!reference) { - status = CELIX_BUNDLE_EXCEPTION; - } - } - - if (status == CELIX_SUCCESS) { - status = serviceReference_getProperty(reference, "command.usage", (const char**)usage_pstr); - } - - return status; -} - -celix_status_t shell_getCommandDescription(shell_pt shell_ptr, char *command_name_str, char **command_description_pstr) { - celix_status_t status = CELIX_SUCCESS; - - service_reference_pt reference = NULL; - - if (!shell_ptr || !command_name_str || !command_description_pstr) { - status = CELIX_ILLEGAL_ARGUMENT; - } - - if (status == CELIX_SUCCESS) { - status = shell_getCommandReference(shell_ptr, command_name_str, &reference); - if (!reference) { - status = CELIX_BUNDLE_EXCEPTION; - } - } - - if (status == CELIX_SUCCESS) { - serviceReference_getProperty(reference, "command.description", (const char**)command_description_pstr); - } - - return status; -} - -celix_status_t shell_getCommandReference(shell_pt shell_ptr, char *command_name_str, service_reference_pt *command_reference_ptr) { - celix_status_t status = CELIX_SUCCESS; - - if (!shell_ptr || !command_name_str || !command_reference_ptr) { - status = CELIX_ILLEGAL_ARGUMENT; - } - - if (status == CELIX_SUCCESS) { - *command_reference_ptr = NULL; - hash_map_iterator_pt iter = hashMapIterator_create(shell_ptr->command_reference_map_ptr); - while (hashMapIterator_hasNext(iter)) { - hash_map_entry_pt entry = hashMapIterator_nextEntry(iter); - service_reference_pt reference = hashMapEntry_getKey(entry); - const char *name_str = NULL; - serviceReference_getProperty(reference, "command.name", &name_str); - if (strcmp(name_str, command_name_str) == 0) { - *command_reference_ptr = (service_reference_pt) hashMapEntry_getKey(entry); - break; - } - } - hashMapIterator_destroy(iter); - } - - return status; -} - -celix_status_t shell_executeCommand(shell_pt shell_ptr, char *command_line_str, FILE *out, FILE *err) { - celix_status_t status = CELIX_SUCCESS; - - command_service_pt command_ptr = NULL; - - if (!shell_ptr || !command_line_str || !out || !err) { - status = CELIX_ILLEGAL_ARGUMENT; - } - - if (status == CELIX_SUCCESS) { - size_t pos = strcspn(command_line_str, " "); - - char *command_name_str = (pos != strlen(command_line_str)) ? strndup(command_line_str, pos) : strdup(command_line_str); - command_ptr = hashMap_get(shell_ptr->command_name_map_ptr, command_name_str); - free(command_name_str); - if (!command_ptr) { - fprintf(err, "No such command\n"); - status = CELIX_BUNDLE_EXCEPTION; - } - } - - if (status == CELIX_SUCCESS) { - status = command_ptr->executeCommand(command_ptr->handle, command_line_str, out, err); - } - - return status; -} http://git-wip-us.apache.org/repos/asf/celix/blob/a1c30887/shell/private/src/start_command.c ---------------------------------------------------------------------- diff --git a/shell/private/src/start_command.c b/shell/private/src/start_command.c deleted file mode 100644 index f43699a..0000000 --- a/shell/private/src/start_command.c +++ /dev/null @@ -1,84 +0,0 @@ -/** - *Licensed to the Apache Software Foundation (ASF) under one - *or more contributor license agreements. See the NOTICE file - *distributed with this work for additional information - *regarding copyright ownership. The ASF licenses this file - *to you under the Apache License, Version 2.0 (the - *"License"); you may not use this file except in compliance - *with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - *Unless required by applicable law or agreed to in writing, - *software distributed under the License is distributed on an - *"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - *specific language governing permissions and limitations - *under the License. - */ -/* - * start_command.c - * - * \date Aug 20, 2010 - * \author <a href="mailto:[email protected]">Apache Celix Project Team</a> - * \copyright Apache License, Version 2.0 - */ -#include <stdlib.h> -#include <string.h> -#include <stdio.h> - -#include "std_commands.h" -#include "bundle_context.h" - -celix_status_t startCommand_execute(void *_ptr, char *command_line_str, FILE *out_ptr, FILE *err_ptr) { - celix_status_t status = CELIX_SUCCESS; - - bundle_context_pt context_ptr = _ptr; - - if (!context_ptr || !command_line_str || !out_ptr || !err_ptr) { - status = CELIX_ILLEGAL_ARGUMENT; - } - - if (status == CELIX_SUCCESS) { - char *sub_str = NULL; - char *save_ptr = NULL; - - strtok_r(command_line_str, OSGI_SHELL_COMMAND_SEPARATOR, &save_ptr); - sub_str = strtok_r(NULL, OSGI_SHELL_COMMAND_SEPARATOR, &save_ptr); - - if (sub_str == NULL) { - fprintf(out_ptr, "Incorrect number of arguments.\n"); - } else { - while (sub_str != NULL) { - celix_status_t sub_status = CELIX_SUCCESS; - - bundle_pt bundle_ptr = NULL; - - char *end_str = NULL; - long id = strtol(sub_str, &end_str, 10); - if (*end_str) { - sub_status = CELIX_ILLEGAL_ARGUMENT; - fprintf(err_ptr, "Bundle id '%s' is invalid, problem at %s\n", sub_str, end_str); - } - - if (sub_status == CELIX_SUCCESS) { - sub_status = bundleContext_getBundleById(context_ptr, id, &bundle_ptr); - } - - if (sub_status == CELIX_SUCCESS) { - bundle_startWithOptions(bundle_ptr, 0); - } - - if (sub_status != CELIX_SUCCESS) { - status = sub_status; - break; - } - - sub_str = strtok_r(NULL, OSGI_SHELL_COMMAND_SEPARATOR, &save_ptr); - } - } - - } - - return status; -} http://git-wip-us.apache.org/repos/asf/celix/blob/a1c30887/shell/private/src/stop_command.c ---------------------------------------------------------------------- diff --git a/shell/private/src/stop_command.c b/shell/private/src/stop_command.c deleted file mode 100644 index 0093c99..0000000 --- a/shell/private/src/stop_command.c +++ /dev/null @@ -1,82 +0,0 @@ -/** - *Licensed to the Apache Software Foundation (ASF) under one - *or more contributor license agreements. See the NOTICE file - *distributed with this work for additional information - *regarding copyright ownership. The ASF licenses this file - *to you under the Apache License, Version 2.0 (the - *"License"); you may not use this file except in compliance - *with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - *Unless required by applicable law or agreed to in writing, - *software distributed under the License is distributed on an - *"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - *specific language governing permissions and limitations - *under the License. - */ -/* - * stop_command.c - * - * \date Aug 20, 2010 - * \author <a href="mailto:[email protected]">Apache Celix Project Team</a> - * \copyright Apache License, Version 2.0 - */ -#include <stdlib.h> -#include <string.h> - -#include "bundle_context.h" -#include "std_commands.h" - -celix_status_t stopCommand_execute(void *_ptr, char *command_line_str, FILE *out_ptr, FILE *err_ptr) { - celix_status_t status = CELIX_SUCCESS; - - bundle_context_pt context_ptr = _ptr; - - if (!context_ptr || !command_line_str || !out_ptr || !err_ptr) { - status = CELIX_ILLEGAL_ARGUMENT; - } - - if (status == CELIX_SUCCESS) { - char *sub_str = NULL; - char *save_ptr = NULL; - - strtok_r(command_line_str, OSGI_SHELL_COMMAND_SEPARATOR, &save_ptr); - sub_str = strtok_r(NULL, OSGI_SHELL_COMMAND_SEPARATOR, &save_ptr); - - if (sub_str == NULL) { - fprintf(out_ptr, "Incorrect number of arguments.\n"); - } else { - while (sub_str != NULL) { - celix_status_t sub_status = CELIX_SUCCESS; - - bundle_pt bundle_ptr = NULL; - - char *end_str = NULL; - long id = strtol(sub_str, &end_str, 10); - if (*end_str) { - sub_status = CELIX_ILLEGAL_ARGUMENT; - fprintf(err_ptr, "Bundle id '%s' is invalid, problem at %s\n", sub_str, end_str); - } - - if (sub_status == CELIX_SUCCESS) { - sub_status = bundleContext_getBundleById(context_ptr, id, &bundle_ptr); - } - - if (sub_status == CELIX_SUCCESS) { - bundle_stopWithOptions(bundle_ptr, 0); - } - - if (sub_status != CELIX_SUCCESS) { - status = sub_status; - break; - } - - sub_str = strtok_r(NULL, OSGI_SHELL_COMMAND_SEPARATOR, &save_ptr); - } - } - } - - return status; -} http://git-wip-us.apache.org/repos/asf/celix/blob/a1c30887/shell/private/src/uninstall_command.c ---------------------------------------------------------------------- diff --git a/shell/private/src/uninstall_command.c b/shell/private/src/uninstall_command.c deleted file mode 100644 index fb30831..0000000 --- a/shell/private/src/uninstall_command.c +++ /dev/null @@ -1,58 +0,0 @@ -/** - *Licensed to the Apache Software Foundation (ASF) under one - *or more contributor license agreements. See the NOTICE file - *distributed with this work for additional information - *regarding copyright ownership. The ASF licenses this file - *to you under the Apache License, Version 2.0 (the - *"License"); you may not use this file except in compliance - *with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - *Unless required by applicable law or agreed to in writing, - *software distributed under the License is distributed on an - *"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - *specific language governing permissions and limitations - *under the License. - */ -/* - * uninstall_command.c - * - * \date Aug 20, 2010 - * \author <a href="mailto:[email protected]">Apache Celix Project Team</a> - * \copyright Apache License, Version 2.0 - */ -#include <stdlib.h> -#include <string.h> - -#include "array_list.h" -#include "bundle_context.h" - -celix_status_t uninstallCommand_execute(void *handle, char * line, FILE *outStream, FILE *errStream) { - bundle_context_pt context = handle; - char delims[] = " "; - char * sub = NULL; - char *save_ptr = NULL; - celix_status_t status = CELIX_SUCCESS; - - sub = strtok_r(line, delims, &save_ptr); - sub = strtok_r(NULL, delims, &save_ptr); - - if (sub == NULL) { - fprintf(errStream, "Incorrect number of arguments.\n"); - } else { - while (sub != NULL) { - long id = atol(sub); - bundle_pt bundle = NULL; - status = bundleContext_getBundleById(context, id, &bundle); - if (status==CELIX_SUCCESS && bundle!=NULL) { - bundle_uninstall(bundle); - } else { - fprintf(errStream, "Bundle id is invalid."); - } - sub = strtok_r(NULL, delims, &save_ptr); - } - } - return status; -} http://git-wip-us.apache.org/repos/asf/celix/blob/a1c30887/shell/private/src/update_command.c ---------------------------------------------------------------------- diff --git a/shell/private/src/update_command.c b/shell/private/src/update_command.c deleted file mode 100644 index 64999ac..0000000 --- a/shell/private/src/update_command.c +++ /dev/null @@ -1,117 +0,0 @@ -/** - *Licensed to the Apache Software Foundation (ASF) under one - *or more contributor license agreements. See the NOTICE file - *distributed with this work for additional information - *regarding copyright ownership. The ASF licenses this file - *to you under the Apache License, Version 2.0 (the - *"License"); you may not use this file except in compliance - *with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - *Unless required by applicable law or agreed to in writing, - *software distributed under the License is distributed on an - *"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - *specific language governing permissions and limitations - *under the License. - */ -/* - * update_command.c - * - * \date Aug 20, 2010 - * \author <a href="mailto:[email protected]">Apache Celix Project Team</a> - * \copyright Apache License, Version 2.0 - * - */ -#include <stdlib.h> -#include <string.h> -#include <curl/curl.h> -#include <sys/stat.h> - -#include "array_list.h" -#include "bundle_context.h" - -celix_status_t updateCommand_download(bundle_context_pt context, char * url, char **inputFile); -size_t updateCommand_writeData(void *ptr, size_t size, size_t nmemb, FILE *stream); - -void updateCommand_execute(void *handle, char * line, FILE *outStream, FILE *errStream) { - bundle_context_pt context = handle; - bundle_pt bundle = NULL; - char delims[] = " "; - char * sub = NULL; - char *save_ptr = NULL; - - sub = strtok_r(line, delims, &save_ptr); - sub = strtok_r(NULL, delims, &save_ptr); - - if (sub == NULL) { - fprintf(errStream, "Incorrect number of arguments.\n"); - } else { - long id = atol(sub); - celix_status_t ret = bundleContext_getBundleById(context, id, &bundle); - if (ret==CELIX_SUCCESS && bundle!=NULL) { - char inputFile[256]; - sub = strtok_r(NULL, delims, &save_ptr); - inputFile[0] = '\0'; - if (sub != NULL) { - char *test = inputFile; - printf("URL: %s\n", sub); - - if (updateCommand_download(context, sub, &test) == CELIX_SUCCESS) { - printf("Update bundle with stream\n"); - bundle_update(bundle, inputFile); - } else { - fprintf(errStream, "Unable to download from %s\n", sub); - } - } else { - bundle_update(bundle, NULL); - } - } else { - fprintf(errStream, "Bundle id is invalid.\n"); - } - } -} - -celix_status_t updateCommand_download(bundle_context_pt context, char * url, char **inputFile) { - CURL *curl = NULL; - CURLcode res = CURLE_FILE_COULDNT_READ_FILE; - curl = curl_easy_init(); - if (curl) { - FILE *fp = NULL; - snprintf(*inputFile, 13,"updateXXXXXX"); - umask(0011); - int fd = mkstemp(*inputFile); - if (fd) { - fp = fopen(*inputFile, "wb+"); - if(fp!=NULL){ - printf("Temp file: %s\n", *inputFile); - curl_easy_setopt(curl, CURLOPT_NOSIGNAL, 1); - curl_easy_setopt(curl, CURLOPT_URL, url); - curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, updateCommand_writeData); - curl_easy_setopt(curl, CURLOPT_WRITEDATA, fp); - //curl_easy_setopt(curl, CURLOPT_NOPROGRESS, 0); - //curl_easy_setopt(curl, CURLOPT_PROGRESSFUNCTION, updateCommand_downloadProgress); - res = curl_easy_perform(curl); - fclose(fp); - } - /* always cleanup */ - curl_easy_cleanup(curl); - if(fp==NULL){ - return CELIX_FILE_IO_EXCEPTION; - } - } - } - if (res != CURLE_OK) { - printf("Error: %d\n", res); - *inputFile[0] = '\0'; - return CELIX_ILLEGAL_STATE; - } else { - return CELIX_SUCCESS; - } -} - -size_t updateCommand_writeData(void *ptr, size_t size, size_t nmemb, FILE *stream) { - size_t written = fwrite(ptr, size, nmemb, stream); - return written; -} http://git-wip-us.apache.org/repos/asf/celix/blob/a1c30887/shell/public/include/command.h ---------------------------------------------------------------------- diff --git a/shell/public/include/command.h b/shell/public/include/command.h deleted file mode 100644 index 0e86dcc..0000000 --- a/shell/public/include/command.h +++ /dev/null @@ -1,57 +0,0 @@ -/** - *Licensed to the Apache Software Foundation (ASF) under one - *or more contributor license agreements. See the NOTICE file - *distributed with this work for additional information - *regarding copyright ownership. The ASF licenses this file - *to you under the Apache License, Version 2.0 (the - *"License"); you may not use this file except in compliance - *with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - *Unless required by applicable law or agreed to in writing, - *software distributed under the License is distributed on an - *"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - *specific language governing permissions and limitations - *under the License. - */ -/* - * command.h - * - * \date Aug 13, 2010 - * \author <a href="mailto:[email protected]">Apache Celix Project Team</a> - * \copyright Apache License, Version 2.0 - */ - -#ifndef COMMAND_H_ -#define COMMAND_H_ - -#include "celix_errno.h" -#include <stdio.h> - -#define OSGI_SHELL_COMMAND_NAME "command.name" -#define OSGI_SHELL_COMMAND_USAGE "command.usage" -#define OSGI_SHELL_COMMAND_DESCRIPTION "command.description" - -static const char * const OSGI_SHELL_COMMAND_SERVICE_NAME = "commandService"; - -typedef struct commandService command_service_t; -typedef command_service_t * command_service_pt; - -/** - * The command service can be used to register additional shell commands. - * The service should be register with the following properties: - * - command.name: mandatory, name of the command e.g. 'lb' - * - command.usage: optional, string describing how tu use the commmand e.g. 'lb [-l | -s | -u]' - * - command.descrription: optional, string describing the command e.g. 'list bundles.' - */ -struct commandService { - void *handle; - celix_status_t (*executeCommand)(void *handle, char * commandLine, FILE *outStream, FILE *errorStream); -}; - - - - -#endif /* COMMAND_H_ */ http://git-wip-us.apache.org/repos/asf/celix/blob/a1c30887/shell/public/include/shell.h ---------------------------------------------------------------------- diff --git a/shell/public/include/shell.h b/shell/public/include/shell.h deleted file mode 100644 index c8e7d60..0000000 --- a/shell/public/include/shell.h +++ /dev/null @@ -1,51 +0,0 @@ -/** - *Licensed to the Apache Software Foundation (ASF) under one - *or more contributor license agreements. See the NOTICE file - *distributed with this work for additional information - *regarding copyright ownership. The ASF licenses this file - *to you under the Apache License, Version 2.0 (the - *"License"); you may not use this file except in compliance - *with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - *Unless required by applicable law or agreed to in writing, - *software distributed under the License is distributed on an - *"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - *specific language governing permissions and limitations - *under the License. - */ -/* - * shell.h - * - * \date Aug 12, 2010 - * \author <a href="mailto:[email protected]">Apache Celix Project Team</a> - * \copyright Apache License, Version 2.0 - */ - -#ifndef SHELL_H_ -#define SHELL_H_ - -#include "array_list.h" -#include "service_reference.h" - -static const char * const OSGI_SHELL_SERVICE_NAME = "shellService"; - -typedef struct shell shell_t; -typedef shell_t* shell_pt; - -struct shellService { - shell_pt shell; - - celix_status_t (*getCommands)(shell_pt shell_ptr, array_list_pt *commands_ptr); - celix_status_t (*getCommandUsage)(shell_pt shell_ptr, char *command_name_str, char **usage_str); - celix_status_t (*getCommandDescription)(shell_pt shell_ptr, char *command_name_str, char **command_description_str); - celix_status_t (*getCommandReference)(shell_pt shell_ptr, char *command_name_str, service_reference_pt *command_reference_ptr); - celix_status_t (*executeCommand)(shell_pt shell_ptr, char * command_line_str, FILE *out, FILE *err); -}; - -typedef struct shellService shell_service_t; -typedef shell_service_t* shell_service_pt; - -#endif /* SHELL_H_ */ http://git-wip-us.apache.org/repos/asf/celix/blob/a1c30887/shell/public/include/shell_constants.h ---------------------------------------------------------------------- diff --git a/shell/public/include/shell_constants.h b/shell/public/include/shell_constants.h deleted file mode 100644 index 1e7f875..0000000 --- a/shell/public/include/shell_constants.h +++ /dev/null @@ -1,27 +0,0 @@ -/** - *Licensed to the Apache Software Foundation (ASF) under one - *or more contributor license agreements. See the NOTICE file - *distributed with this work for additional information - *regarding copyright ownership. The ASF licenses this file - *to you under the Apache License, Version 2.0 (the - *"License"); you may not use this file except in compliance - *with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - *Unless required by applicable law or agreed to in writing, - *software distributed under the License is distributed on an - *"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - *specific language governing permissions and limitations - *under the License. - */ - - -#ifndef SHELL_CONSTANTS_H_ -#define SHELL_CONSTANTS_H_ - -#define SHELL_USE_ANSI_COLORS "SHELL_USE_ANSI_COLORS" -#define SHELL_USE_ANSI_COLORS_DEFAULT_VALUE "true" - -#endif /* SHELL_CONSTANTS_H_ */
