Thanks to visit codestin.com
Credit goes to github.com

Skip to content

xFA25E/xattr

Repository files navigation

Xattr

https://github.com/xFA25E/xattr/actions/workflows/test.yml/badge.svg

Emacs library to interact with extended attributes

Overview

This library enables the user to interact with extended attributes (xattrs from now on). Xattrs are key-value metadata that can be added to files if filesystem supports them. This has been tested only on Linux.

Features

Operations that are possible on xattrs: set, get, remove, list, empty-p

MAP implementation: xattr-map.el implements map interface for xattr-map

Motivation

I needed to tag files in dired. I was abusing image-dired package to tag files, but, in the end, it was designed to work only with media files, which gave some troubles. Future work will require to write some dired-tags package based on this library.

Building

You need to get emacs-module.h from emacs source files and set its directory to EMACS_SRC make variable

make EMACS_SRC=/path/to/dir/where/emacs-module.h/is/stored

Usage

(xattr-set "my-file-name.ext" "user.my.attribute" "with value")
;; => "with value"

(xattr-set "my-file-name.ext" "user.my.attribute2" "with value2")
;; => "with value2"

(xattr-get "my-file-name.ext" "user.my.attribute")
;; => "with value"

(xattr-list "my-file-name.ext")
;; => ("user.my.attribute" "user.my.attribute2")

(xattr-remove "my-file-name.ext" "user.my.attribute")
;; => nil

(xattr-list "my-file-name.ext")
;; => ("user.my.attribute2")

(xattr-empty-p "my-file-name.ext")
;; => nil

(require 'xattr-map)
(let ((map (xattr-map "my-file-name.ext")))
  (map-keys map)
  ;; => ("user.my.attribute2")
  (map-values map)
  ;; => ("with value2")
  )

Documentation

(xattr-set FILE NAME VALUE)

(xattr-get FILE NAME)

(xattr-list FILE)

(xattr-empty-p FILE)

(xattr-remove FILE NAME)

All of this functions can signal different errors. Please, inspect define-error definitions in xattr.el to learn more.

(xattr-map FILE)

Todo

Relative paths

C module handles relative files relative to the directory where GNU/Emacs started. Should we handle this in every xattr call?

License

Copyright (c) 2022 Valeriy Litkovskyy Licensed under the GPL3 License.

About

Emacs library to interact with extended attributes

Resources

License

Stars

Watchers

Forks

Packages

No packages published