56 Commits

Author SHA1 Message Date
eientei
004ab05ebb DEVTOOLS: Set the modified time for folders in dumper_companion 2021-11-13 11:32:19 -05:00
Misty De Meo
1e82f0760d DEVTOOLS: allow correcting filenames when punycoding 2021-11-12 16:31:31 +01:00
eientei
cb06b8ce2e DEVTOOLS: Return string encoded in Mac-Roman on error 2021-11-12 00:23:06 +01:00
Misty De Meo
954e1d61db DEVTOOLS: add a new filename to test_decode_name 2021-11-12 00:18:41 +01:00
Misty De Meo
915826fda5 DEVTOOLS: mac mode operates on raw byte paths 2021-11-12 00:18:41 +01:00
Misty De Meo
0a3af55866 DEVTOOLS: fix overeager ArgumentError catch 2021-11-12 00:18:41 +01:00
eientei
ad6125955b DEVTOOLS: Add test for previous dumpercompanion workaround; correctly use "MacJapanese" 2021-11-03 09:03:15 +02:00
Eugene Sandulenko
cbc14ac558
DEVTOOLS: COMPANION: Fix typo in error message 2021-11-02 18:58:31 +02:00
eientei
7fcad50f71 DEVTOOLS: Work around Mac-Japanese sequences missing low byte 2021-11-02 17:57:01 +01:00
Eugene Sandulenko
55a171867e
DEVTOOLS: COMPANION: Added test for higher Unicode characters 2021-10-31 23:00:35 +02:00
Eugene Sandulenko
e1804df203
DEVTOOLS: COMPANION: Fix punycode tests 2021-10-31 21:51:55 +02:00
Eugene Sandulenko
7fa0d97e32
DEVTOOLS: Added more tests for punycode 2021-10-31 19:27:34 +02:00
Eugene Sandulenko
dfd34fc163
DEVTOOLS: COMPANION: Added one more test for encoding 2021-10-31 16:37:11 +02:00
eientei
34e58d9abb DEVTOOLS: simplify macbinary packing a bit 2021-10-22 13:05:46 +02:00
Misty De Meo
7def925d9c DEVTOOLS: dumper-companion: work around bug 2021-10-22 13:04:54 +02:00
Misty De Meo
a62ef12546 DEVTOOLS: fix filename for mac command 2021-10-22 13:04:01 +02:00
Roland van Laar
45aa7e12bc DEVTOOLS: COMPANION: Remove old comments
The dates are correct when creating a mac binary.
Example from the binary Majestic:

Majestic: MacBinary II, inited, busy, Thu Nov  9 05:09:33 1995, modified Thu Nov  9 05:11:55 1995, creator 'PJ93', type application, 23374400 bytes "Majestic" , at 0x164aac0 486640 bytes resource
2021-09-15 21:05:29 +02:00
Roland van Laar
898dfcdae3 DEVTOOLS: COMPANION: Fix masking lower flag bits 2021-09-15 21:03:56 +02:00
Eugene Sandulenko
81002f425e
DEVTOOLS: Added more documentation 2021-08-24 02:08:12 +02:00
Roland van Laar
61f7390b32 JANITORIAL: DEVTOOLS: COMPANION: formatting 2021-08-23 22:15:22 +02:00
Roland van Laar
f5fa418864 DEVTOOLS: COMPANION: fix skipping first path
The new glob **/* does not include the root director. Skipping the first
element resulted in the first file being skipped.
2021-08-23 22:15:22 +02:00
Roland van Laar
6cfd387798 JANITORAL: DEVTOOLS: fix formatting companion 2021-08-23 18:16:07 +02:00
Roland van Laar
c957c45d7d DEVTOOLS: COMPANION: include suffix in dir mode
The file stem, i.e. the part before the suffix, was used to punyencode
it. Now it takes the whole file, including suffix for encoding.
2021-08-23 18:16:07 +02:00
Roland van Laar
9ddc4a88a3 DEVTOOLS: COMPANION: add decode string option
Will automatically decode punyencoded strings in str mode.
2021-08-23 18:16:07 +02:00
Roland van Laar
e542099638 DEVTOOLS: COMPANION: Fix dir globbing
There were two problems:

- glob pattern only found directories:
    Now it returns both directories and files.

- top level dir was included in the punyencoding
2021-08-23 17:16:15 +02:00
einstein95
465f242f0a DEVTOOLS: COMPANION: Set last modified time to one from volume 2021-08-23 13:26:42 +02:00
Roland van Laar
c242dcbeb8 DEVTOOLS: COMPANION: fix dir mode
Last refactor left the dir mode in a broken state.
Thanks to @trembyle for spotting it.
2021-08-22 23:04:07 +02:00
Roland van Laar
fb95877874 DEVTOOLS: COMPANION: remove escape chars
It was decided on discord that we're only escaping chars that windows
absolutely can't handle.

These chars are now not escaped: ,;=
2021-08-22 22:56:33 +02:00
Roland van Laar
d38a147019 DEVTOOLS: COMPANION: improve special char handling
We follow [1] in which chars need to be escaped.
    - we now allow the following chars in filenames: []+
    - filenames can't end in a dot or space

Includes updated tests.

[1] https://en.wikipedia.org/wiki/Filename#Reserved_characters_and_words
2021-08-22 11:10:00 +02:00
Roland van Laar
581dd9c9d2 DEVTOOLS: COMPANION: cleanup
- Remove a superfluous import
2021-08-22 11:10:00 +02:00
Roland van Laar
d32d232e05 DEVTOOLS: DUMPERCOMPANION: handle all filenames
Always punyencode filenames when the filename contains a char that
should be escaped. This makes it work better with windows.

Windows has a short list of chars that not allowed:
https://docs.microsoft.com/en-us/windows/win32/fileio/naming-a-file#naming-conventions
2021-08-22 00:51:34 +02:00
Roland van Laar
1e9ca945b9 JANITORAL: DEVTOOLS: reformat code
Using # fmt: off and # fmt: off allows for excluding the decode map when
formatting. Other lines are formatted with black
2021-08-22 00:51:34 +02:00
Roland van Laar
81be6b459b DEVTOOLS: DUMPERCOMPANION: fix double encoding
\x81 is used as a control character to denote a special char.
\x81 was encoded put in the end result twice because of a missing elif.

Includes unittest fix.
2021-08-21 09:40:17 +02:00
Roland van Laar
00d54a3358 DEVTOOLS: DUMPERCOMPANION: fix logging mac mode
Re-enable printing messages when punyencoding files in mac mode.
2021-08-21 09:18:43 +02:00
Roland van Laar
32991d2152 DEVTOOLS: DUMPERCOMPANION: punyencode dirs on mac
Enable punyencoding of directory names in mac mode.

A refactor of the code to handle punyencoding in mac mode.
It's now a two step process:
  - first collect the resource forks into macbinaries and
  - second punyencode recursively all files and directories
2021-08-21 00:15:16 +02:00
Roland van Laar
86f6c137f5 DEVTOOLS: DUMPERCOMPANION: support mac_japanese
The dumper companion now support dumping mac_japanese isos. MachFS
expects encodes everything in mac_roman. For mac_japanese we decode it
as mac_roman and then encode it ourselve.

    `dumper-companion.py iso --japanese --punycode path/to/iso path/to/dir`

- A conversion table and code was added: taken from:
    https://www.unicode.org/Public/MAPPINGS/VENDORS/APPLE/JAPANESE.TXT
- file_to_macbin takes an encoded filename to allow for both mac_japanse
  and mac_roman encodings.
- punyfication is now an explicit option when dumping isos
2021-08-20 23:56:18 +02:00
Roland van Laar
b61e973099 DEVTOOLS: DUMPERCOMPANION fix macbinary padding
Macbinary forks are padded to be a multiple of 128 bytes.
An extra padding of 128 bytes was added when 0 were needed.

This fixes that.
2021-08-20 23:56:18 +02:00
Roland van Laar
f73f481ec2 DEVTOOLS: COMPANION: linter fixes
- remove encoding parameter from `punyencode`
- fix return types of type hints
2021-08-20 23:56:18 +02:00
Roland van Laar
82ba7e9830 DEVTOOL: COMPANION
Added support for Japanese encoding.

Remove option for specifying encodings. All input is expected to be
unicode.
2021-08-18 22:39:06 +02:00
Roland van Laar
f825c39d64 DEVTOOLS: COMPANION: code improvements
- mac mode: show which file's attributes can't be read
- mac mode: use exit code 1 when bailing
- implement exit codes for all modes
- fix spelling mistake
- sort imports, python once first, then external packages
- refactor: use os.path.join only once per file
2021-08-12 21:57:28 +02:00
Eugene Sandulenko
b10c55abcb
DEVTOOLS: COMPANION: Fix error processing 2021-08-12 20:34:57 +02:00
Eugene Sandulenko
0e69fb7e61
DEVTOOLS: COMPANION: Use xattr module for creator/type extraction 2021-08-12 19:36:58 +02:00
Eugene Sandulenko
9ba6f1fe01
DEVTOOLS: COMPANION: Keep the file names in mac mode, set the modification time 2021-08-09 23:03:00 +02:00
Eugene Sandulenko
681fc2eaa3
DEVTOOLS: COMPANION: Set the macbinary type and creator for mac mode 2021-08-09 22:41:12 +02:00
Eugene Sandulenko
8952db2dfd
DEVTOOLS: COMPANION: Fix mac mode and set file timestamps 2021-08-09 22:09:03 +02:00
Roland van Laar
0e0aef0201 DEVTOOLS: COMPANION: add macbinary mode
`dumper-companion.py mac [--punycode] directory` will recursively look
for resourceforks and encode them inplace as macbinary.

When `--punycode` is enabled it will encode filenames in punycode.

This is a MacOS only feature.
2021-08-09 15:54:05 +02:00
Roland van Laar
66568ca700 DEVTOOLS: COMPANION: Improve helptext
Make it clear that punyencoding of stdin is supported.
2021-08-09 15:54:05 +02:00
Roland van Laar
4d00111acf DEVTOOLS: COMPANION: hfs dump use existing dir
Don't complain when the directory to write to already exists.
2021-08-09 15:54:05 +02:00
Roland van Laar
8ddb3aec3a DEVTOOLS: COMPANION: remove superfluous statement 2021-08-09 15:54:05 +02:00
Roland van Laar
c586311c26 DEVTOOLS: COMPANION: add development info helptext 2021-08-09 15:54:05 +02:00