Includes a small linux-only bash script to generate locale partitionscustom
parent
a231fd1c8a
commit
964da15a0b
Binary file not shown.
@ -0,0 +1,24 @@ |
||||
This tool, which only works on Linux, uses your system's locale data to |
||||
generate a collator partition for Tangara. This partition is uses to sort |
||||
database information (album names, etc.) in a way that makes sense to humans. |
||||
|
||||
Because this script isn't portable, `Generic.LC_COLLATE` is included as a |
||||
pregenerated collator partition that should work well for most people's |
||||
music libraries. |
||||
|
||||
## Partition format |
||||
|
||||
The collator partition has 3MiB reserved for it in the partition table, which |
||||
is enough to hold the compiled collation data for ISO14651 character sorting, |
||||
plus a small amount of free space. |
||||
|
||||
The first 8 bytes of the partition are reserved for a partition name; usually |
||||
the name of the locale that the collation data was compiled for, or 'Generic' |
||||
for ISO14651 data. |
||||
|
||||
Following the 8 byte name, is a complete LC_COLLATE file, as generate by GNU |
||||
libc's `localedef` utility. Debian's version 2.37 of this utility is known to |
||||
work. |
||||
|
||||
FIXME: We should vendor this version of the tool, so that our format remains |
||||
stable across glibc changes. |
@ -0,0 +1,16 @@ |
||||
#!/bin/bash |
||||
set -eu |
||||
|
||||
if [ -z "${2:-}" ]; then |
||||
name="Generic" |
||||
locale="iso14651_t1" |
||||
else |
||||
name="$1" |
||||
locale="$2" |
||||
fi |
||||
|
||||
working_dir=$(mktemp -d) |
||||
|
||||
echo -n "$name" | dd iflag=fullblock bs=8 count=1 conv=sync of="$working_dir/name" |
||||
localedef -f UTF-8 -i "$locale" --no-archive "$working_dir" || true |
||||
cat "$working_dir/name" "$working_dir/LC_COLLATE" > "$name.LC_COLLATE" |
Loading…
Reference in new issue