Commit Graph

82 Commits

Author SHA1 Message Date
Dietrich Epp e5e7749d2e Collect notes into technical documentation
Creates a Jekyll site containing both personal notes about how
filesystems work on Mac OS, as well as some more general explanations.
2022-04-07 19:40:21 -04:00
Dietrich Epp 3d7537f7f6 Use Mozilla Public License, version 2.0 2022-04-04 13:59:26 -04:00
Dietrich Epp 68665d1fff Update documentation comments in extract.py 2022-04-04 13:54:37 -04:00
Dietrich Epp 36ab91617c VS Code: Use spaces for indenting Python 2022-04-04 13:53:01 -04:00
Dietrich Epp 39ebe32975 Extract hexadecimal constants from enums 2022-04-01 12:17:43 -04:00
Dietrich Epp 4b20b30330 Take Mac OS text encoding constants from headers
Among other uses, these constants are used on HFS+ volumes to choose
which encoding to use when converting Unicode filenames back to an 8-bit
string for old Mac OS APIs.

This is documented in TN 1150 under "Text Encodings".

https://developer.apple.com/library/archive/technotes/tn/tn1150.html
2022-04-01 12:05:15 -04:00
Dietrich Epp 3dcda5579e Add remaining tests to Xcode project 2022-03-31 15:10:05 -04:00
Dietrich Epp 7ee3dd3d99 Remove duplicate typedef 2022-03-31 15:09:55 -04:00
Dietrich Epp 940614c032 Update Xcode project
Tests pass on Mac OS X 10.4 PPC.

- Added new source files

- The target is now convert_test instead of syncfiles, because that's
  what it is

- Header search paths moved to project settings instead of target
  settings
2022-03-31 15:04:56 -04:00
Dietrich Epp 70abe95ff1 Create a tree structure for storing file metadata
This adds a a "simple" red-black tree that can store a record of each
file both on the local and remote side.
2022-03-30 05:23:37 -04:00
Dietrich Epp 56c8229dd5 Annotate test size 2022-03-30 05:18:21 -04:00
Dietrich Epp c4bf86786e Reorganize
- Extracted functions to //lib:test for writing tests

- Extracted functions to lib/util.h if they are useful outside tests
2022-03-30 03:46:19 -04:00
Dietrich Epp d980169ec6 Add byte order conversion utilities 2022-03-29 15:34:27 -04:00
Dietrich Epp 16f3764790 Update README to reflect new project direction 2022-03-25 15:42:02 -04:00
Dietrich Epp 8e2efa707e Refactor allocation API
This way we don't need to expose MemError() to platform-independent
code.
2022-03-25 13:33:24 -04:00
Dietrich Epp 617bf831d8 Extract common code into //lib package 2022-03-25 01:45:55 -04:00
Dietrich Epp 66d46452ab Remove usage of Carbon from command-line tool
The use of Carbon turns out to be less useful than originally thought,
so it makes sense to remove it.
2022-03-24 23:44:37 -04:00
Dietrich Epp ee685ec9ea Update Xcode project
Test passes on Mac OS X 10.4 again.
2022-03-24 23:44:37 -04:00
Dietrich Epp ecc7b30844 VS Code: refine indentation settings 2022-03-24 23:44:37 -04:00
Dietrich Epp 5ad207f785 Embed character map tables in executable
This simplifies the conversion test, since we don't need to be careful
about which data we run the conversion test in. It will also simplify
the command-line conversion tool and its distribution. The classic Mac
OS version of this program will continue to embed conversion tables in
the resource fork.
2022-03-24 23:44:37 -04:00
Dietrich Epp 6267606293 Run test on Mac OS X
Add an Xcode 2.5 project, and define USE_CARBON for Mac OS X testing.
Tested on Mac OS X 10.4.
2022-03-24 12:26:38 -04:00
Dietrich Epp 651a2fb674 Add .gitignore for generated data 2022-03-24 12:03:20 -04:00
Dietrich Epp d6cb7935fe Define include path in one place 2022-03-23 18:04:39 -04:00
Dietrich Epp bc46e1e982 Rename src directory to convert 2022-03-23 17:51:55 -04:00
Dietrich Epp 491950e57d Allow data generator to be run directly from Bazel
When run from Bazel without additional arguments, it will write data
files directly to the source directory.
2022-03-23 12:00:18 -04:00
Dietrich Epp 7e7a6a9da2 Test line break conversions 2022-03-23 03:00:52 -04:00
Dietrich Epp 798d5eca5c Remove unused Bazel setting 2022-03-23 02:08:01 -04:00
Dietrich Epp c96bb9cd0a Implement extended ASCII converter engine
This adds support for the simplest 8-bit character encodings, which are
compatible with ASCII.
2022-03-23 01:26:25 -04:00
Dietrich Epp 612aad382f VS Code: use tabs 2022-03-23 01:25:59 -04:00
Dietrich Epp 43cb03c572 Adjust clang-format settings
The main intent is to not allow enums to get condensed to a single line,
but this has the side effect of making clang-format stop attaching
braces to the start of the enum. I felt it made sense to use a different
brace style everywhere rather than live with just enums with braces on a
separate line.
2022-03-23 01:24:16 -04:00
Dietrich Epp 6ec3549cd7 Build charmap.c generated file 2022-03-22 19:05:13 -04:00
Dietrich Epp a4d2de2120 Create replacements for Mac OS toolbox functions 2022-03-22 19:04:29 -04:00
Dietrich Epp f2317d0ce7 Create build rules for generated data
Add flags to the generator code to specify the location of input and
output files.
2022-03-22 19:02:57 -04:00
Dietrich Epp 094f2c5016 Add Bazel build scripts 2022-03-22 19:02:57 -04:00
Dietrich Epp 3d8bf3721e Add VS Code settings 2022-03-17 12:46:04 -04:00
Dietrich Epp 3f1b059de2 Add missing MacTypes.r include to Rez file 2022-03-15 17:35:03 -04:00
Dietrich Epp 7c5699b508 Update README to reflect changes 2022-03-15 16:27:52 -04:00
Dietrich Epp f94a65d245 Generate conversion data for extended ASCII
This creates conversion tables for 11 of the 21 character sets.
2022-03-15 16:19:56 -04:00
Dietrich Epp f49e81388c Generate charmap string resources
The string resources contain names of scripts, regions, and character
maps.
2022-03-15 15:34:39 -04:00
Dietrich Epp ca074ce387 Write conversion from script and region to charmap
The generation tool creates a GetCharmap function in C which takes the
script and region as input and returns the charmap index.
2022-03-15 14:31:12 -04:00
Dietrich Epp e901b5baaa Parse script and region constants as numbers
This simplifies code generation, since we don't have to worry about what
happens if two symbolic constants have the same value.
2022-03-15 13:51:23 -04:00
Dietrich Epp 022d11fa14 Parse character map information
This adds associations between scripts, regions, and character maps, and
parses them from a Go utility.
2022-03-15 13:38:45 -04:00
Dietrich Epp 7bc44f4a5a Add script and region constants
These are extracted from the Universal Interfaces Script.h file.
2022-03-15 12:07:16 -04:00
Dietrich Epp 8713cb96aa Remove duplicate README
This prevented the source code from being checked out on
case-insensitive file systems.
2022-03-14 21:54:16 -04:00
Dietrich Epp faa2460468 Add charmap parser 2021-12-14 23:48:47 -05:00
Dietrich Epp d2401b963a Add Apple Unicode mapping data
Mirrored from ftp://ftp.unicode.org/Public/MAPPINGS/VENDORS/APPLE
2021-12-14 15:50:04 -05:00
Dietrich Epp db4187b65b Refactor table generator, handle line breaks
Extract table generation to its own file, table.go, and refactor the
interface. This exposed an inconsistency in the way that line breaks
were handled: both CR and LF on the Mac side were mapped to LF on the
UTF-8 side, but when the conversion table was inverted, the reverse
mappings would conflict. Previously, there was no explicit handling for
it, and whichever Mac charecter had a higher byte value would take
precedence. Conflicts are now detected and return an error, so line
breaks must be mapped explicitly. The new code maps CR, LF, and CRLF to
CR when converting UTF-8 to Mac.
2021-12-14 13:12:52 -05:00
Dietrich Epp d77ccf009e Extract packbits into separate repository 2021-12-14 12:23:14 -05:00
Dietrich Epp f39ab85222 Ignore conversion table generator binary 2021-12-14 11:01:37 -05:00
Dietrich Epp 2768a0c856 Add plain text and XML files to filter list
GitOrigin-RevId: 2c5ded355b43463d20e6e9e65c32a6c566df82a7
2021-03-26 03:47:55 -04:00