+ Modified BMimeType::SetSupportedTypes functionality so it keeps track of
stranded types (i.e. previously supported types that have not had the now
unsupporting app signature removed from their supporting apps list yet due
to a false fullSync parameter) over consecutive SetSupportedTypes(...,
false) calls and updates all appropriate stranded types on the next
SetSupportedTypes(..., true) call.
+ Added fullSync parameter to BMimeType::DeleteSupportedTypes
+ Made BMimeType::Delete() do a DeleteSupportedTypes(..., true) call to
properly update the supporting apps lists when a mime type is deleted.
+ Added initial BMimeType::Get/SetSnifferRule
+ Updated BMimeType::CheckSnifferRule() to return B_BAD_VALUE when passed
a NULL rule string.
+ Brought CheckSnifferRule() tests up to date
+ Added lots of Mime::Database doxygen
+ Added any missing mime monitor notifications in Mime::Database
+ Possibly made some other changes as well... :-)
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@1004 a95241bf-73f2-0310-859d-f6bbb57e9c96
Added SetSupportedTypes() documentation
Removed a few unnecessary BMessage copies in a couple of functions
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@1003 a95241bf-73f2-0310-859d-f6bbb57e9c96
OBOS::GetSupportingApps() tests, as the __mime_table is not
currently used.
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@927 a95241bf-73f2-0310-859d-f6bbb57e9c96
information for verbosity >= v2. I'll probably add a command-line
toggle specifically for timing info someday. I also hope to add per-test
and per-suite run time info eventually as well.
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@864 a95241bf-73f2-0310-859d-f6bbb57e9c96
functionality, it became apparent that some restructuring was
needed if I wanted to keep things clean and managble.
storage/MimeDatabase.{h,cpp} have been broken into:
storage/mime/database_support.{h,cpp}
+ MIME database constants
+ high-level database access functions like open_type(),
read_mime_attr(), etc.
storage/mime/database_access.{h,cpp}
+ atomic read functions
+ is_installed()
+ get_icon_data()
storage/mime/Database.{h,cpp}
+ Mime::Database class, which is responsible for all write,
non-atomic read, and mime monitor functionality.
storage/mime/InstalledTypes.{h,cpp}
+ Helper class for Mime::Database::GetInstalled[Super]Types()
storage/mime/Supertype.{h,cpp}
+ Helper class for Mime::InstalledTypes
I haven't merged my intial, somewhat cludgy GetInstalled[Super]Types
implementation into the new setup yet. That comes next, and it ought
to be a more graceful implementation now.
I also implemented BMimeType::Get/SetSupportingTypes(), though
they haven't been tested yet (sorry).
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@862 a95241bf-73f2-0310-859d-f6bbb57e9c96
and friends after installing and deleting from the database.
+ Updated database dir constant per the recent mime migration
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@859 a95241bf-73f2-0310-859d-f6bbb57e9c96
information for verbosity >= v2. I'll probably add a command-line
toggle specifically for timing info someday. I also hope to add per-test
and per-suite run time info eventually as well.
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@858 a95241bf-73f2-0310-859d-f6bbb57e9c96
of BMimeType::Set*(NULL) calls as well as test new
BMimeType::Delete*() calls:
+ PreferredApp
+ AppHint
+ LongDescription
+ ShortDescription
+ Icon
+ IconForType
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@835 a95241bf-73f2-0310-859d-f6bbb57e9c96
- PreferredApp
- AppHint
- Icon
+ Added reduce_color_depth() helper function
B_GRAY1 to B_CMAP8 color conversions still
need to be tested.
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@822 a95241bf-73f2-0310-859d-f6bbb57e9c96
- {Get,Set}PreferredApp()
- {Get,Set}AppHint()
- {Get,Set}Icon()
+ Added any missing doxygen
SetIcon() is currently not implemented as I would like,
due to us needing an OBOS::BBitmap implementation.
Thus there are two versions and the GetIconData()
function until that day comes around.
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@818 a95241bf-73f2-0310-859d-f6bbb57e9c96
+ Brought MIME database protocols up to date
+ Reformatted the standard reply section very slightly
to match the rest of the protocols.
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@816 a95241bf-73f2-0310-859d-f6bbb57e9c96
mime database directory if it already existed in the first place.
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@791 a95241bf-73f2-0310-859d-f6bbb57e9c96
class does for the mime database. Also, if said directory is different than the
system directory, a copy is first made when necessary, and then removed
when the tests are done.
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@790 a95241bf-73f2-0310-859d-f6bbb57e9c96
to allow libstorage to compile using public app kit headers)
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@783 a95241bf-73f2-0310-859d-f6bbb57e9c96
with obos libs and r5 tests are run with r5 libs, two separate
unit testing programs in different directories would be needed.
Thus UnitTester is now just a shell program that calls the
appropriate unittester/UnitTester or unittester_r5/UnitTester_r5
program.
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@703 a95241bf-73f2-0310-859d-f6bbb57e9c96
+ Now gracefully handles situations where a suite and an
individual test both have the same name.
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@702 a95241bf-73f2-0310-859d-f6bbb57e9c96
+ Renamed Expr class to DisjList, which is more descriptive
as to its function
+ Added ' and " to the list of allowed characters in an
unquoted string.
+ Added updated sniffer rule grammar to doxygen for the
Parser class
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@685 a95241bf-73f2-0310-859d-f6bbb57e9c96
NULL characters embedded in the token strings).
+ Added a number of sniffing tests. The rules returned
by the parser appear to sniff properly now.
Incidentally, our sniffer supports conjunctions, i.e the rule
1.0 ('abc') [9] ('xyz')
is equivalent to the rule
1.0 ('abc______xyz' & 0xFFF000000FFF)
This is different than the R5 sniffer, which doesn't reject
rules like the former, but appears to ignore all expressions
in the rule except for the first, i.e. it would treat the first
rule as
1.0 ('abc')
The only problem I can see with this is if someone for
some reason wrote such a rule with multiple expressions
for use with the R5 sniffer. It would likely work differently
with ours. I'm going to search my MIME database and see
if any such rules exist. If so, it'll be easy to switch to the
R5 way of doing things.
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@663 a95241bf-73f2-0310-859d-f6bbb57e9c96
instead of const char*'s to allow for rules with NULL characters
embedded in them.
+ Updated Rule::Sniff() to actually return a useful value
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@662 a95241bf-73f2-0310-859d-f6bbb57e9c96
+ Learned the concept of base 8 again and fixed an octal literal. I hate octal.
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@651 a95241bf-73f2-0310-859d-f6bbb57e9c96
+ Fixed a bug with 0eXXX floats being handled improperly
+ Updated a few error messages to give proper character
stream positions.
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@650 a95241bf-73f2-0310-859d-f6bbb57e9c96
+ Patched up the parser tests so they actually test something
now, and accounted for the variations between the R5 error
messages and our error messages where applicable.
+ Added a few extended notation floating point tests to the
parser tests
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@631 a95241bf-73f2-0310-859d-f6bbb57e9c96
+ Fixed a stupid bug in my hexToChar() function
+ Added code to actually return the parsed in priority to ParsePriority()...
+ Added code to actually SetTo() the result in ParseRule()...
+ Changed most "Sniffer scanner error" messages to "Sniffer
pattern error" messages.
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@630 a95241bf-73f2-0310-859d-f6bbb57e9c96
+ Added support for extended notation floating point numbers,
as well as signed (+ and -) floats.
+ Finished up parsing code
+ Moved Err class into it's own header/source pair, since I
started using it all over the place in the sniffer code.
+ Did my darndest to make sure I wasn't leaking memory
anywhere.
+ Matched up error messages as best as possible with R5's
error message. Some couldn't be matched, some were improved.
There *are* a few things left to do. I don't think priorities are
verified to be valid (0.0 <= x <= 1.0). More tests also need to
be written. Things have solidified enough now that documentation
is a reasonable thing to start considering as well.
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@608 a95241bf-73f2-0310-859d-f6bbb57e9c96
+ Added Priority()
+ Added Sniff()
+ Replaced ExprList typedef with plain old std::vector<Expr*>
so I wouldn't forget what the hell kind of list I was working with.
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@607 a95241bf-73f2-0310-859d-f6bbb57e9c96
+ Added some scanner tests
+ Parser tests still do very little testing
+ The "1e-25 ('ABCD')" test, which apparently fails with
R5's CheckSnifferRule(), has been commented out, as our
version accepts it and I can't currently figure out why it
would be an invalid sniffer rule.
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@602 a95241bf-73f2-0310-859d-f6bbb57e9c96
to be very similar to the BMimeType::Sniffer tests... :-)
These tests have the added bonus of not need full
BMimeType/Registrar functionality, though.
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@534 a95241bf-73f2-0310-859d-f6bbb57e9c96
+ Started on Parser class
+ Moved parsing functions into Parser class
+ Added Pos() member to Err class to allow for
snazzy BMimeType::CheckSnifferRule() error strings.
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@531 a95241bf-73f2-0310-859d-f6bbb57e9c96
+ Octals are now handled properly in both quoted and
unquoted strings
+ Added support for \xXX style hex escapes in both
quoted and unquoted strings
+ Finished up the tests, so I think pretty much everything
should be working
NOTE: signed floating point numbers are no longer supported,
as they have no usefulness to sniffer rules
NOTE: extended format floating point numbers (i.e. 2.4e23) are
no longer supported, as they have no usefulness to sniffer rules.
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@489 a95241bf-73f2-0310-859d-f6bbb57e9c96
+ Added EmptyToken, Integer, and FloatingPoint TokenTypes.
+ Added IntToken and IntegerToken classes.
+ Updated scanner, which now handles numbers as well. I believe
it's nearly complete, although I'm almost positive it doesn't
handle octals correctly yet...
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@477 a95241bf-73f2-0310-859d-f6bbb57e9c96
scanner portion of the parser is done, but completely untested
and unused. More to come...
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@452 a95241bf-73f2-0310-859d-f6bbb57e9c96
(I just stole it from StorageKit::BasicTest, the version of
which has been proven many times over ;-)
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@417 a95241bf-73f2-0310-859d-f6bbb57e9c96
+ Finally checked in my remaining BMimeType tests... :-)
NOTE -- The BMimeType::GetSupportingApps() test is
not yet finished. For some reason GetSupportingApps()
is returning a few strange signatures that don't appear
to be in the database. I'm still figuring out where they're
coming from.
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@408 a95241bf-73f2-0310-859d-f6bbb57e9c96