Ralf Kirchner wrote:
+ssize_t
+msdos_filename_utf8_to_long_name_for_save (
...
+ if (name_size_tmp<= (MSDOS_NAME_MAX_LNF_LEN *
MSDOS_NAME_LFN_BYTES_PER_CHAR))
Can MSDOS_NAME_MAX_LNF_LEN * MSDOS_NAME_LFN_BYTES_PER_CHAR be shortened ?
There are a few places where this would help the line length. For example ..
+ssize_t
+msdos_filename_utf8_to_short_name_for_compare (
...
+ uint8_t name_normalized_buf[(MSDOS_SHORT_NAME_LEN +1) *
MSDOS_NAME_MAX_UTF8_BYTES_PER_CHAR];
+ssize_t
+msdos_filename_utf8_to_short_name_for_save (
...
+ if (name_size> 0) {
+ /*
+ * Finally convert from UTF-8 to codepage
+ */
+ name_size_tmp = sizeof ( name_to_format_buf );
+ eno = (*converter->handler->utf8_to_codepage) (
I have not been over all the code to check so I will ask. Is there
always a set of converters even for the default case ? These pointers
are never checked.
+ converter,
+ name_ptr,
+ name_size,
+&name_to_format_buf[0],
+&name_size_tmp);
+ if ( eno != 0 ) {
+ /* The UTF-8 name my well be long name, for which we now want to
... name may well be ..
+
+static int msdos_default_utf8_to_codepage(
+ rtems_dosfs_convert_control *super,
+ const uint8_t *src,
+ const size_t src_size,
+ char *dst,
+ size_t *dst_size
+)
+{
+ int eno = 0;
+ size_t bytes_to_copy = MIN( src_size, *dst_size );
+
+ (void) super;
Why ? If this is for compiler warning please comment this is the case.
This is the default destroy function and it free's 'super'..
+
+static void msdos_default_destroy(
+ rtems_dosfs_convert_control *super
+)
+{
+ free( super );
+}
+
... and this code assumes 'super' is always first ...
+
+typedef struct {
+ rtems_dosfs_convert_control super;
+ uint8_t buffer[MSDOS_NAME_MAX_LFN_BYTES];
+} msdos_default_convert_control;
+
+rtems_dosfs_convert_control *rtems_dosfs_create_default_converter(void)
+{
+ msdos_default_convert_control *self = malloc( sizeof( *self ) );
+
+ if ( self != NULL ) {
.. because this code references the element and sure it worked because
it is first I just wonder if it could be more robust. At least a comment
in the struct stating do not move the super field would be a good idea.
+ rtems_dosfs_convert_control *super =&self->super;
+
+ super->handler =&msdos_default_convert_handler;
+ super->buffer.data =&self->buffer;
+ super->buffer.size = sizeof( self->buffer );
+ }
+
+ return&self->super;
+}
Chris
_______________________________________________
rtems-devel mailing list
[email protected]
http://www.rtems.org/mailman/listinfo/rtems-devel