This is an automated email from the ASF dual-hosted git repository. pengzheng pushed a commit to branch feature/trim_string_in_place in repository https://gitbox.apache.org/repos/asf/celix.git
commit 36872594bc93c7d0a9669e4f348740eb4a5e942c Author: PengZheng <[email protected]> AuthorDate: Sat May 6 12:33:21 2023 +0800 Add celix_utils_trimInPlace, and replace all uses of utils_stringTrim. --- bundles/pubsub/pubsub_admin_tcp/src/pubsub_tcp_common.c | 3 ++- .../discovery_common/src/endpoint_discovery_poller.c | 3 ++- .../discovery_common/src/endpoint_discovery_server.c | 4 ++-- .../remote_service_admin_dfi/src/remote_service_admin_dfi.c | 5 +++-- bundles/shell/remote_shell/src/remote_shell.c | 6 +++--- bundles/shell/shell_tui/src/shell_tui.c | 5 +++-- libs/framework/src/manifest_parser.c | 3 ++- libs/framework/src/module.c | 2 +- libs/utils/gtest/src/CelixUtilsTestSuite.cc | 2 +- libs/utils/include/celix_utils.h | 8 ++++++++ libs/utils/src/celix_convert_utils.c | 4 ++-- libs/utils/src/properties.c | 5 +++-- libs/utils/src/utils.c | 3 +++ 13 files changed, 35 insertions(+), 18 deletions(-) diff --git a/bundles/pubsub/pubsub_admin_tcp/src/pubsub_tcp_common.c b/bundles/pubsub/pubsub_admin_tcp/src/pubsub_tcp_common.c index d8f05f79..b46e39c6 100644 --- a/bundles/pubsub/pubsub_admin_tcp/src/pubsub_tcp_common.c +++ b/bundles/pubsub/pubsub_admin_tcp/src/pubsub_tcp_common.c @@ -19,6 +19,7 @@ #include <stdio.h> #include <string.h> #include "pubsub_tcp_common.h" +#include "celix_utils.h" bool psa_tcp_isPassive(const char* buffer) { @@ -27,7 +28,7 @@ bool psa_tcp_isPassive(const char* buffer) { if (buffer != NULL) { char buf[32]; snprintf(buf, 32, "%s", buffer); - char *trimmed = utils_stringTrim(buf); + char *trimmed = celix_utils_trimInPlace(buf); if (strncasecmp("true", trimmed, strlen("true")) == 0) { isPassive = true; } else if (strncasecmp("false", trimmed, strlen("false")) == 0) { diff --git a/bundles/remote_services/discovery_common/src/endpoint_discovery_poller.c b/bundles/remote_services/discovery_common/src/endpoint_discovery_poller.c index 355e5438..5589c846 100644 --- a/bundles/remote_services/discovery_common/src/endpoint_discovery_poller.c +++ b/bundles/remote_services/discovery_common/src/endpoint_discovery_poller.c @@ -34,6 +34,7 @@ #include "bundle_context.h" #include "celix_log_helper.h" +#include "celix_utils.h" #include "utils.h" #include "endpoint_descriptor_reader.h" @@ -99,7 +100,7 @@ celix_status_t endpointDiscoveryPoller_create(discovery_t *discovery, celix_bund char *save_ptr = NULL; char* tok = strtok_r(endpoints, sep, &save_ptr); while (tok) { - endpointDiscoveryPoller_addDiscoveryEndpoint(*poller, utils_stringTrim(tok)); + endpointDiscoveryPoller_addDiscoveryEndpoint(*poller, celix_utils_trimInPlace(tok)); tok = strtok_r(NULL, sep, &save_ptr); } // Clean up after ourselves... diff --git a/bundles/remote_services/discovery_common/src/endpoint_discovery_server.c b/bundles/remote_services/discovery_common/src/endpoint_discovery_server.c index 46144ee7..a845f826 100644 --- a/bundles/remote_services/discovery_common/src/endpoint_discovery_server.c +++ b/bundles/remote_services/discovery_common/src/endpoint_discovery_server.c @@ -26,6 +26,7 @@ #endif #include "civetweb.h" #include "celix_errno.h" +#include "celix_utils.h" #include "utils.h" #include "celix_log_helper.h" #include "discovery.h" @@ -293,8 +294,7 @@ celix_status_t endpointDiscoveryServer_removeEndpoint(endpoint_discovery_server_ } static char* format_path(const char* path) { - char* result = strdup(path); - result = utils_stringTrim(result); + char* result = celix_utils_trim(path); // check whether the path starts with a leading slash... if (result[0] != '/') { size_t len = strlen(result); diff --git a/bundles/remote_services/remote_service_admin_dfi/src/remote_service_admin_dfi.c b/bundles/remote_services/remote_service_admin_dfi/src/remote_service_admin_dfi.c index 9ba47546..db50d005 100644 --- a/bundles/remote_services/remote_service_admin_dfi/src/remote_service_admin_dfi.c +++ b/bundles/remote_services/remote_service_admin_dfi/src/remote_service_admin_dfi.c @@ -33,6 +33,7 @@ #include <jansson.h> #include "json_serializer.h" #include "utils.h" +#include "celix_utils.h" #include "import_registration_dfi.h" #include "export_registration_dfi.h" @@ -597,7 +598,7 @@ celix_status_t remoteServiceAdmin_exportService(remote_service_admin_t *admin, c token = strtok_r(ecCopy, delimiter, &savePtr); while (token != NULL) { - if (strncmp(utils_stringTrim(token), RSA_DFI_CONFIGURATION_TYPE, 1024) == 0) { + if (strncmp(celix_utils_trimInPlace(token), RSA_DFI_CONFIGURATION_TYPE, 1024) == 0) { export = true; break; } @@ -897,7 +898,7 @@ celix_status_t remoteServiceAdmin_importService(remote_service_admin_t *admin, e token = strtok_r(ecCopy, delimiter, &savePtr); while (token != NULL) { - if (strncmp(utils_stringTrim(token), RSA_DFI_CONFIGURATION_TYPE, 1024) == 0) { + if (strncmp(celix_utils_trimInPlace(token), RSA_DFI_CONFIGURATION_TYPE, 1024) == 0) { importService = true; break; } diff --git a/bundles/shell/remote_shell/src/remote_shell.c b/bundles/shell/remote_shell/src/remote_shell.c index f55d613a..86c281b5 100644 --- a/bundles/shell/remote_shell/src/remote_shell.c +++ b/bundles/shell/remote_shell/src/remote_shell.c @@ -32,6 +32,7 @@ #include <sys/socket.h> #include "celix_log_helper.h" +#include "celix_utils.h" #include "remote_shell.h" @@ -215,8 +216,7 @@ static celix_status_t remoteShell_connection_execute(connection_pt connection, c celix_status_t status = CELIX_SUCCESS; if (status == CELIX_SUCCESS) { - char *dline = strdup(command); - char *line = utils_stringTrim(dline); + char *line = celix_utils_trim(command); int len = strlen(line); if (len == 0) { @@ -228,7 +228,7 @@ static celix_status_t remoteShell_connection_execute(connection_pt connection, c fflush(connection->socketStream); } - free(dline); + free(line); } return status; diff --git a/bundles/shell/shell_tui/src/shell_tui.c b/bundles/shell/shell_tui/src/shell_tui.c index a8f101b7..3f284db7 100644 --- a/bundles/shell/shell_tui/src/shell_tui.c +++ b/bundles/shell/shell_tui/src/shell_tui.c @@ -26,6 +26,7 @@ #include "celix_array_list.h" #include "celix_shell.h" +#include "celix_utils.h" #include "shell_tui.h" #include "utils.h" #include <signal.h> @@ -277,7 +278,7 @@ static int shellTui_parseInputPlain(shell_tui_t* shellTui, shell_context_t* ctx) int nr_chars = read(shellTui->inputFd, buffer, LINE_SIZE-pos-1); for(int bufpos = 0; bufpos < nr_chars; bufpos++) { if (buffer[bufpos] == KEY_ENTER) { //end of line -> forward command - line = utils_stringTrim(in); + line = celix_utils_trimInPlace(in); celixThreadMutex_lock(&shellTui->mutex); if (shellTui->shell != NULL) { shellTui->shell->executeCommand(shellTui->shell->handle, line, shellTui->output, shellTui->error); @@ -392,7 +393,7 @@ static int shellTui_parseInputForControl(shell_tui_t* shellTui, shell_context_t* pos = 0; in[pos] = '\0'; - line = utils_stringTrim(dline); + line = celix_utils_trimInPlace(dline); if ((strlen(line) == 0)) { continue; } diff --git a/libs/framework/src/manifest_parser.c b/libs/framework/src/manifest_parser.c index d53d42c7..074945e3 100644 --- a/libs/framework/src/manifest_parser.c +++ b/libs/framework/src/manifest_parser.c @@ -28,6 +28,7 @@ #include <string.h> #include "utils.h" +#include "celix_utils.h" #include "celix_constants.h" #include "manifest_parser.h" #include "capability.h" @@ -155,7 +156,7 @@ static linked_list_pt manifestParser_parseDelimitedString(const char * value, co } if (strlen(buffer) > 0) { - linkedList_addElement(list, strdup(utils_stringTrim(buffer))); + linkedList_addElement(list, celix_utils_trim(buffer)); } } } diff --git a/libs/framework/src/module.c b/libs/framework/src/module.c index 1dec4ffb..24d00731 100644 --- a/libs/framework/src/module.c +++ b/libs/framework/src/module.c @@ -439,7 +439,7 @@ static celix_status_t celix_module_loadLibrariesInManifestEntry(celix_module_t* char lib[128]; lib[127] = '\0'; strncpy(lib, pathToken, 127); - char *trimmedLib = utils_stringTrim(lib); + char *trimmedLib = celix_utils_trimInPlace(lib); status = celix_module_loadLibraryForManifestEntry(module, trimmedLib, archive, &handle); if ( (status == CELIX_SUCCESS) && (activator != NULL) && (strcmp(trimmedLib, activator) == 0) ) { diff --git a/libs/utils/gtest/src/CelixUtilsTestSuite.cc b/libs/utils/gtest/src/CelixUtilsTestSuite.cc index 5ab42120..6d287550 100644 --- a/libs/utils/gtest/src/CelixUtilsTestSuite.cc +++ b/libs/utils/gtest/src/CelixUtilsTestSuite.cc @@ -259,7 +259,7 @@ TEST_F(UtilsTestSuite, StringTrimTest) { free(trimmed); // Empty string - trimmed = utils_stringTrim(celix_utils_strdup(" abc ")); + trimmed = celix_utils_trim(" abc "); EXPECT_STREQ("abc", trimmed); free(trimmed); } diff --git a/libs/utils/include/celix_utils.h b/libs/utils/include/celix_utils.h index b7e8a8c5..53a98d08 100644 --- a/libs/utils/include/celix_utils.h +++ b/libs/utils/include/celix_utils.h @@ -105,6 +105,14 @@ CELIX_UTILS_EXPORT bool celix_utils_containsWhitespace(const char* s); * Caller is owner of the returned string. */ CELIX_UTILS_EXPORT char* celix_utils_trim(const char* string); +/** + * @brief Trims the provided string in place. + * + * The trim will remove eny leading and trailing whitespaces (' ', '\t', etc based on `isspace`)/ + * @param string the string to be trimmed. + * @return string. + */ +CELIX_UTILS_EXPORT char* celix_utils_trimInPlace(char* string); /** * @brief Check if a string is NULL or empty "". diff --git a/libs/utils/src/celix_convert_utils.c b/libs/utils/src/celix_convert_utils.c index e5aa2251..bccc4801 100644 --- a/libs/utils/src/celix_convert_utils.c +++ b/libs/utils/src/celix_convert_utils.c @@ -52,7 +52,7 @@ bool celix_utils_convertStringToBool(const char* val, bool defaultValue, bool* c if (valCopy == NULL) { return result; } - char *trimmed = utils_stringTrim(valCopy); + char *trimmed = celix_utils_trimInPlace(valCopy); if (strcasecmp("true", trimmed) == 0) { result = true; if (converted) { @@ -114,7 +114,7 @@ celix_version_t* celix_utils_convertStringToVersion(const char* val, const celix if (firstDot != NULL && lastDot != NULL && firstDot != lastDot) { char buf[64]; char* valCopy = celix_utils_writeOrCreateString(buf, sizeof(buf), "%s", val); - char *trimmed = utils_stringTrim(valCopy); + char *trimmed = celix_utils_trimInPlace(valCopy); result = celix_version_createVersionFromString(trimmed); celix_utils_freeStringIfNotEqual(buf, valCopy); } diff --git a/libs/utils/src/properties.c b/libs/utils/src/properties.c index e2792c53..d49870fa 100644 --- a/libs/utils/src/properties.c +++ b/libs/utils/src/properties.c @@ -26,6 +26,7 @@ #include "properties.h" #include "celix_build_assert.h" #include "celix_properties.h" +#include "celix_utils.h" #include "utils.h" #include "hash_map_private.h" #include <errno.h> @@ -191,7 +192,7 @@ static void parseLine(const char* line, celix_properties_t *props) { if (!isComment) { //printf("putting 'key'/'value' '%s'/'%s' in properties\n", utils_stringTrim(key), utils_stringTrim(value)); - celix_properties_set(props, utils_stringTrim(key), utils_stringTrim(value)); + celix_properties_set(props, celix_utils_trimInPlace(key), celix_utils_trimInPlace(value)); } if(key) { free(key); @@ -451,7 +452,7 @@ bool celix_properties_getAsBool(const celix_properties_t *props, const char *key if (val != NULL) { char buf[32]; snprintf(buf, 32, "%s", val); - char *trimmed = utils_stringTrim(buf); + char *trimmed = celix_utils_trimInPlace(buf); if (strncasecmp("true", trimmed, strlen("true")) == 0) { result = true; } else if (strncasecmp("false", trimmed, strlen("false")) == 0) { diff --git a/libs/utils/src/utils.c b/libs/utils/src/utils.c index da17f1a4..95ab561f 100644 --- a/libs/utils/src/utils.c +++ b/libs/utils/src/utils.c @@ -152,6 +152,9 @@ static char* celix_utilsTrimInternal(char *string) { char* celix_utils_trim(const char* string) { return celix_utilsTrimInternal(celix_utils_strdup(string)); } +char* celix_utils_trimInPlace(char* string) { + return celix_utilsTrimInternal(string); +} char* utils_stringTrim(char* string) { return celix_utilsTrimInternal(string);
