On Fri, Apr 03, 2009 at 12:40:02PM +0800, Ryan Li wrote:
>  Hello Chris,
> 
> I've been working on the sms parser for Barry, the code is raw, since the
> data structure for SMS is really strange and I can't use a packed struct to
> handle this effectively. But at least, it works now. And I'll do some
> refinement later when I have finished my homework.

Thanks!  And thanks for using the same headers as the rest of the code...
that takes care of the GPL licensing issue I had before. :-)

I've applied your patches, with some changes.  I have a few comments:

        - Does the Encoding need to be public?  It looks like technical
                details that the parser class should handle automatically.
                I suppose if it is a read-only item, through a member
                function, that's ok.

                Remember that the goal is to expose this data to applications,
                so that apps can write SMS records back into the device
                if appropriate, so we need to make the API easy, or at
                least as bullet proof as possible.

                Hmmm... looking at the charset issues you had, maybe
                Encoding is important... If contacts use WINDOWS-1252,
                and SMS messages use a combination of charsets, this
                may need to be more flexible.

        - Timestamps should be in time_t by default.  The parser class
                should do the conversion as it is reading/writing from
                the device.  The application programmer should be able
                to look at the class and know immediately what to do
                with a time_t.  He won't know what to do with a uint64_t. :-)

                If you could send me a patch for this, that would be great.

        - be careful with the sizes... when parsing, check that the data
                exists before actually accessing it.  I added some size
                checks to the parser, but it's a good thing to keep in mind.
                In general we should never trust data from external sources,
                including data from the Blackberry.

        - the Encoding value is taken straight from the Blackberry and
                passed through to the API without change.  This has been
                done elsewhere in the code, but with comments.  The thing
                we have to watch for is that the Blackberry might change,
                but our API should not.  See r_contact.cc for my attempt
                at doing this with functions, with the enums there.
                Another clean way to do it is to do what you did with
                MessageStatus, and set the value through if statements.
                That way, if the Blackberry changes, we can update the code
                without changing the enum API for applications that depend
                on it.



> However, I've checked the common.h file and found that the iconv.cc in Barry
> converts WINDOWS-1252 to UTF-8, but with SMS encoded as UCS-2, btool
> displays my Chinese messages as garbled text. Furthermore, after I changed
> the definition of BLACKBERRY_CHARSET to `UCS-2', the output doesn't change.
> I thought there's something wrong with iconv.cc? My Memo in 100% English
> can't be interpreted correctly either.

Btool doesn't use IConverter unless it is specified on the command line.
Instead of changing BLACKBERRY_CHARSET, try using btool's -i switch and see
if that changes your output at all.

Thanks for the patch!
- Chris


------------------------------------------------------------------------------
_______________________________________________
Barry-devel mailing list
Barry-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/barry-devel

Reply via email to