mirror of
https://github.com/weechat/weechat.git
synced 2026-06-25 04:16:38 +02:00
core: remove trailing directory separators in home directories (closes #2070)
This commit is contained in:
@@ -24,6 +24,7 @@ New features::
|
||||
|
||||
Bug fixes::
|
||||
|
||||
* core: remove trailing directory separators in home directories (issue #2070)
|
||||
* irc: fix random date displayed when a received message contains tags but no "time" (issue #2064)
|
||||
* scripts: fix crash on script unload when a hook is created in a buffer close callback (issue #2067)
|
||||
|
||||
|
||||
@@ -629,6 +629,29 @@ use_xdg:
|
||||
return 1;
|
||||
}
|
||||
|
||||
/*
|
||||
* Removes trailing separators in path, which is modified in place
|
||||
* (each trailing separator is replaced by NUL char).
|
||||
*
|
||||
* Example on Linux: "/home/xxx/" => "/home/xxx".
|
||||
*/
|
||||
|
||||
void
|
||||
dir_remove_trailing_separators (char *path)
|
||||
{
|
||||
int length;
|
||||
|
||||
if (!path || !path[0])
|
||||
return;
|
||||
|
||||
length = strlen (path);
|
||||
while ((length > 1) && (path[length - 1] == DIR_SEPARATOR_CHAR))
|
||||
{
|
||||
path[length - 1] = '\0';
|
||||
length--;
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
* Creates a home directory.
|
||||
*
|
||||
@@ -681,6 +704,11 @@ dir_create_home_dirs ()
|
||||
if (!dir_find_home_dirs ())
|
||||
goto error;
|
||||
|
||||
dir_remove_trailing_separators (weechat_config_dir);
|
||||
dir_remove_trailing_separators (weechat_data_dir);
|
||||
dir_remove_trailing_separators (weechat_cache_dir);
|
||||
dir_remove_trailing_separators (weechat_runtime_dir);
|
||||
|
||||
rc = dir_create_home_dir (weechat_config_dir);
|
||||
if (rc && (strcmp (weechat_config_dir, weechat_data_dir) != 0))
|
||||
rc = dir_create_home_dir (weechat_data_dir);
|
||||
|
||||
@@ -29,6 +29,8 @@ extern "C"
|
||||
#include <sys/time.h>
|
||||
#include "src/core/wee-dir.h"
|
||||
#include "src/core/wee-string.h"
|
||||
|
||||
extern void dir_remove_trailing_separators (char *path);
|
||||
}
|
||||
|
||||
TEST_GROUP(CoreDir)
|
||||
@@ -162,6 +164,42 @@ TEST(CoreDir, SetHomePath)
|
||||
/* TODO: write tests */
|
||||
}
|
||||
|
||||
/*
|
||||
* Tests functions:
|
||||
* dir_remove_trailing_separators
|
||||
*/
|
||||
|
||||
TEST(CoreDir, RemoveTrailingSeparators)
|
||||
{
|
||||
char path[128];
|
||||
|
||||
dir_remove_trailing_separators (NULL);
|
||||
|
||||
snprintf (path, sizeof (path), "");
|
||||
dir_remove_trailing_separators (path);
|
||||
STRCMP_EQUAL("", path);
|
||||
|
||||
snprintf (path, sizeof (path), "/");
|
||||
dir_remove_trailing_separators (path);
|
||||
STRCMP_EQUAL("/", path);
|
||||
|
||||
snprintf (path, sizeof (path), "///");
|
||||
dir_remove_trailing_separators (path);
|
||||
STRCMP_EQUAL("/", path);
|
||||
|
||||
snprintf (path, sizeof (path), "/tmp");
|
||||
dir_remove_trailing_separators (path);
|
||||
STRCMP_EQUAL("/tmp", path);
|
||||
|
||||
snprintf (path, sizeof (path), "/tmp/");
|
||||
dir_remove_trailing_separators (path);
|
||||
STRCMP_EQUAL("/tmp", path);
|
||||
|
||||
snprintf (path, sizeof (path), "/tmp///////");
|
||||
dir_remove_trailing_separators (path);
|
||||
STRCMP_EQUAL("/tmp", path);
|
||||
}
|
||||
|
||||
/*
|
||||
* Tests functions:
|
||||
* dir_create_home_temp_dir
|
||||
|
||||
Reference in New Issue
Block a user