summaryrefslogtreecommitdiff
path: root/src/basic
diff options
context:
space:
mode:
authorZbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl>2016-04-29 14:27:23 -0400
committerZbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl>2016-04-29 14:27:23 -0400
commit26ccc1d0875b0e0c4306b03a52aff712c23d46c7 (patch)
tree4907223eceff5cfdd2556a5305f9a3c01801435f /src/basic
parent1c5ed0e2b4923b12be52c9c3e8f43682403dcf32 (diff)
parent94a0ef6e572896140b8f28f688e881e198e2f2ab (diff)
Merge pull request #3151 from keszybz/pr3149-2
Assorted fixes #3149 + one commit tacked on top
Diffstat (limited to 'src/basic')
-rw-r--r--src/basic/copy.c4
-rw-r--r--src/basic/path-util.c18
2 files changed, 19 insertions, 3 deletions
diff --git a/src/basic/copy.c b/src/basic/copy.c
index 03487a6878..3001234a01 100644
--- a/src/basic/copy.c
+++ b/src/basic/copy.c
@@ -364,7 +364,7 @@ static int fd_copy_directory(
q = fd_copy_symlink(dirfd(d), de->d_name, &buf, fdt, de->d_name);
else if (S_ISFIFO(buf.st_mode))
q = fd_copy_fifo(dirfd(d), de->d_name, &buf, fdt, de->d_name);
- else if (S_ISBLK(buf.st_mode) || S_ISCHR(buf.st_mode))
+ else if (S_ISBLK(buf.st_mode) || S_ISCHR(buf.st_mode) || S_ISSOCK(buf.st_mode))
q = fd_copy_node(dirfd(d), de->d_name, &buf, fdt, de->d_name);
else
q = -EOPNOTSUPP;
@@ -396,7 +396,7 @@ int copy_tree_at(int fdf, const char *from, int fdt, const char *to, bool merge)
return fd_copy_symlink(fdf, from, &st, fdt, to);
else if (S_ISFIFO(st.st_mode))
return fd_copy_fifo(fdf, from, &st, fdt, to);
- else if (S_ISBLK(st.st_mode) || S_ISCHR(st.st_mode))
+ else if (S_ISBLK(st.st_mode) || S_ISCHR(st.st_mode) || S_ISSOCK(st.st_mode))
return fd_copy_node(fdf, from, &st, fdt, to);
else
return -EOPNOTSUPP;
diff --git a/src/basic/path-util.c b/src/basic/path-util.c
index 100e3f5af2..b2fa81a294 100644
--- a/src/basic/path-util.c
+++ b/src/basic/path-util.c
@@ -772,6 +772,19 @@ bool hidden_or_backup_file(const char *filename) {
if (!p)
return false;
+ /* Please, let's not add more entries to the list below. If external projects think it's a good idea to come up
+ * with always new suffixes and that everybody else should just adjust to that, then it really should be on
+ * them. Hence, in future, let's not add any more entries. Instead, let's ask those packages to instead adopt
+ * one of the generic suffixes/prefixes for hidden files or backups, possibly augmented with an additional
+ * string. Specifically: there's now:
+ *
+ * The generic suffixes "~" and ".bak" for backup files
+ * The generic prefix "." for hidden files
+ *
+ * Thus, if a new package manager "foopkg" wants its own set of ".foopkg-new", ".foopkg-old", ".foopkg-dist"
+ * or so registered, let's refuse that and ask them to use ".foopkg.new", ".foopkg.old" or ".foopkg~" instead.
+ */
+
return STR_IN_SET(p + 1,
"rpmnew",
"rpmsave",
@@ -786,7 +799,10 @@ bool hidden_or_backup_file(const char *filename) {
"ucf-new",
"ucf-old",
"ucf-dist",
- "swp");
+ "swp",
+ "bak",
+ "old",
+ "new");
}
bool is_device_path(const char *path) {