{"id":18103960,"url":"https://github.com/dearblue/ruby-extattr","last_synced_at":"2025-04-13T19:30:28.479Z","repository":{"id":47008883,"uuid":"84314056","full_name":"dearblue/ruby-extattr","owner":"dearblue","description":"extended filesystem attribute operator for ruby","archived":false,"fork":false,"pushed_at":"2021-09-21T14:38:55.000Z","size":75,"stargazers_count":3,"open_issues_count":0,"forks_count":1,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-04-11T06:16:40.368Z","etag":null,"topics":["extattr","ntfs-ads","ntfs-ea","ruby","xattr"],"latest_commit_sha":null,"homepage":null,"language":"C","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/dearblue.png","metadata":{"files":{"readme":"README.md","changelog":"HISTORY.ja.md","contributing":null,"funding":null,"license":"LICENSE.md","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2017-03-08T11:41:41.000Z","updated_at":"2025-04-01T13:22:38.000Z","dependencies_parsed_at":"2022-09-16T10:23:04.844Z","dependency_job_id":null,"html_url":"https://github.com/dearblue/ruby-extattr","commit_stats":null,"previous_names":[],"tags_count":5,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dearblue%2Fruby-extattr","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dearblue%2Fruby-extattr/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dearblue%2Fruby-extattr/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dearblue%2Fruby-extattr/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/dearblue","download_url":"https://codeload.github.com/dearblue/ruby-extattr/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248767747,"owners_count":21158523,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["extattr","ntfs-ads","ntfs-ea","ruby","xattr"],"created_at":"2024-10-31T22:13:37.541Z","updated_at":"2025-04-13T19:30:28.432Z","avatar_url":"https://github.com/dearblue.png","language":"C","funding_links":[],"categories":[],"sub_categories":[],"readme":"# extattr - filesystem extended attributes manipurator for Ruby\n\nextattr is filesystem extended attributes manipurator for Ruby on FreeBSD, GNU/Linux and Microsoft Windows.\n\n  - [Quick Reference](QUICKREF.ja.md) (in Japanese)\n  - [HISTORY](HISTORY.ja.md) (in Japanese)\n\nextattr はファイルシステムの拡張属性を操作するライブラリで、FreeBSD、GNU/Linux、Windows に対応しています。\n\nサポートされる環境で、統一的なメソッドを提供します。\n\n実装については、以下のようになっています。\n\n  * FreeBSD: extattr (`extattr_list`, `extattr_get`, `extattr_set`, `extattr_delete`)\n  * GNU/Linux: xattr (`listxattr`, `getxattr`, `setxattr`, `removexattr`)\n  * Microsoft Windows: NTFS ADS (代替データストリーム) / 拡張ファイル属性 (`NtQueryEaFile`, `NtSetEaFile`)\n\n\n## Tested system\n\n  * PC-BSD/AMD64 10.0\n  * lubuntu 13.10 (i386)\n  * Microsoft Windows XP Professional SP3\n  * Microsoft Windows 7 Professional SP1\n\n\n## GNU/Linux における特記事項\n\n  * GNU/Linux で利用されている名前空間〈security〉〈trusted〉には未対応です。\n\n\n## Microsoft Windows における特記事項\n\n  * Windows XP 以降を必要とします。Win2k でも動作するかもしれません (未検証)。\u003cbr\u003e\n    Windows 9x シリーズでは `require \"extattr\"` の段階で例外が発生すると思われます (未検証)。\n  * ``ExtAttr::USER`` は (比較的よく利用される) NTFS ADS に対する操作で、``ExtAttr::SYSTEM`` が本来の (あまり利用されていない) 拡張ファイル属性に対する操作となります。\n  * リパースポイント (ジャンクションやシンボリックリンク) に対する NTFS ADS は要素の取得や設定、削除は出来ません。\u003cbr\u003e\n    必ずリンク先に対する操作となります (やり方がわかりません)。\n  * 64 KiB を超える NTFS ADS は取得も設定も出来ません。\u003cbr\u003e\n    これは『拡張属性』と捉えた場合、巨大なデータを扱えるべきではないという考えによるためです\n    (本当のところは FreeBSD の拡張属性が最大 64KiB 弱であることが由来です)。\n  * 巨大な NTFS ADS を扱いたい場合は、``File.open`` でファイルとして扱えるので自由に読み書きできます。\u003cbr\u003e\n    これは Ruby に限ったことではなく、Windows による仕様です。\u003cbr\u003e\n    この場合の与えるファイル名は、``path + \":\" + name`` という形になります。\n\n    ``` ruby:ruby\n    filepath = \"sample.txt\"\n    extattrname = \"category\"\n    ntfs_ads_name = filepath + \":\" + extattrname\n    File.open(ntfs_ads_name, \"r\") do |file|\n      ...\n    end\n    ```\n\n## 既知のバグ\n\n  * ``extattr_list`` のブロック内で ``extattr_set`` ``extattr_delete`` を行うと正確な列挙がされない場合がある\n\n    解決方法: ``extattr_set`` か ``extattr_delete`` のどちらかを同時に利用したい場合、``extattr_list.each`` を用いてください。\n\n\n## 参考資料\n\n  * extattr\n      * \u003chttps://www.freebsd.org/cgi/man.cgi?query=extattr\u0026sektion=2\u003e\n  * xattr\n      * \u003chttps://linuxjm.osdn.jp/html/LDP_man-pages/man2/listxattr.2.html\u003e\n  * windows\n      * \u003chttps://msdn.microsoft.com/en-us/library/cc232069.aspx\u003e\n      * \u003chttps://undocumented.ntinternals.net/UserMode/Undocumented%20Functions/NT%20Objects/File/FILE_INFORMATION_CLASS.html\u003e\n      * \u003chttps://undocumented.ntinternals.net/UserMode/Undocumented%20Functions/NT%20Objects/File/NtQueryInformationFile.html\u003e\n      * \u003chttps://undocumented.ntinternals.net/UserMode/Undocumented%20Functions/NT%20Objects/File/NtQueryEaFile.html\u003e\n      * \u003chttps://undocumented.ntinternals.net/UserMode/Undocumented%20Functions/NT%20Objects/File/NtSetEaFile.html\u003e\n      * FileTest \u003chttp://www.zezula.net/en/fstools/filetest.html\u003e \u003chttps://github.com/ladislav-zezula/FileTest\u003e\n\n## Specification\n\n  - package name: [extattr](https://rubygems.org/gems/extattr)\n  - Author: dearblue\n  - Version: 0.4\n  - Product quality: technical preview\n  - License: [2-clause BSD License](LICENSE.md)\n  - Project page: \u003chttps://github.com/dearblue/ruby-extattr\u003e\n  - Support Ruby: Ruby 2.5+\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdearblue%2Fruby-extattr","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdearblue%2Fruby-extattr","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdearblue%2Fruby-extattr/lists"}