Skip to content

Instantly share code, notes, and snippets.

View scifinder's full-sized avatar

Дмитрий Филатов scifinder

  • Новосибирск
View GitHub Profile
@scifinder
scifinder / about.txt
Last active October 2, 2023 17:04
Патчи для утилит find и cp во FreeBSD, реализующие полноценную работу с расширенными атрибутами
Механизм расширенных атрибутов во FreeBSD (extattr) позволяет управлять дополнительной информацией, связанной с файлом или директорией. При помощи семейства команд setextattr, getextattr и rmextattr можно редактировать расширенные атрибуты файла, принадлежащие к двум пространствам имён: системному и пользовательскому. Редактирование пользовательских атрибутов может пригодиться для классификации файла: добавления описания, ключевых слов и других метаданных. Вот пример использования этих команд.
a) Установить атрибут: user - пользовательское пространство имён, keywords - название атрибута, далее значение и имя файла
$ setextattr user keywords forest,lake,stone 20190621.jpg
b) Прочесть значение атрибута
$ getextattr user keywords 20190621.jpg
20190621.jpg forest,lake,stone
@scifinder
scifinder / patch-cp.diff
Last active October 2, 2023 17:05
Патч для утилиты cp ОС FreeBSD 11.2.0-RELEASE, добавляющий функционал копирования расширенных атрибутов файла. Подробнее: https://gist.github.com/scifinder/567c971d6a7ffa87c85301e6e3087ed0
--- /usr/src/bin/cp/extern.h.orig
+++ /usr/src/bin/cp/extern.h
@@ -49,4 +49,5 @@
int preserve_dir_acls(struct stat *, char *, char *);
int preserve_fd_acls(int, int);
void usage(void);
+int user_extattr_copy_fd(int, int);
__END_DECLS
--- /usr/src/bin/cp/utils.c.orig
+++ /usr/src/bin/cp/utils.c
@scifinder
scifinder / patch-find.diff
Last active October 2, 2023 17:06
Патч для утилиты find ОС FreeBSD 11.2.0-RELEASE, позволяющий осуществлять поиск файлов по их расширенным атрибутам (extattr). Использование: find . -userattr attrname=attrvalue Подробнее: https://gist.github.com/scifinder/567c971d6a7ffa87c85301e6e3087ed0
--- /usr/src/usr.bin/find/extern.h.orig
+++ /usr/src/usr.bin/find/extern.h
@@ -76,6 +76,7 @@
creat_f c_sparse;
creat_f c_type;
creat_f c_user;
+creat_f c_userattr;
creat_f c_xdev;
exec_f f_Xmin;