MC WIN32 build ... gcc'ish

adamyg adamyg at gmail.com
Thu Aug 2 21:34:41 UTC 2012


Having used an old WIN32 native build version for years (4.6.x) I've
recently moved forward and built a native WIN32 version against a current
mc-4.8.4 stable snapshot.

Generally the version is stable (internal editor, most of the vfs subsystem
etc), yet porting raised a number of issues which shall create problems if
these changes are to be released.

The two compiler related issues are visible (i.e. non gcc), firstly use of
'void *' calculations (minor) and secondary non-const structure
initialisation, specifically the QUICK_xxxx
macros which represent numerous changes across the source tree, see below.

        QuickWidget quick_widgets[] = {
            /* 0 */ QUICK_BUTTON (0, dlg_width, dlg_height, dlg_height,
N_("&Cancel"), B_CANCEL, NULL),
            /* 1 */ QUICK_BUTTON (0, dlg_width, dlg_height, dlg_height,
N_("&OK"), B_ENTER, NULL),
            /* 2 */ QUICK_CHECKBOX (0, dlg_width, 5, dlg_height,
N_("&Reverse"), &info->reverse),
            /* 3 */ QUICK_CHECKBOX (0, dlg_width, 4, dlg_height, N_("Case
sensi&tive"), &info->case_sensitive),
            /* 4 */ QUICK_CHECKBOX (0, dlg_width, 3, dlg_height,
N_("Executable &first"), &info->exec_first),
            /* 5 */ QUICK_RADIO (4, dlg_width, 3, dlg_height, 0, NULL,
&sort_idx),
            QUICK_END
        };

which needed to be replaced (current solution as follows):

        QuickWidget quick_widgets[7], *quick_cursor = quick_widgets;

        quick_cursor = /* 0 */ QUICK_PUSH_BUTTON (quick_cursor, 0,
dlg_width, dlg_height, dlg_height, N_("&Cancel"), B_CANCEL, NULL);
        quick_cursor = /* 1 */ QUICK_PUSH_BUTTON (quick_cursor, 0,
dlg_width, dlg_height, dlg_height, N_("&OK"), B_ENTER, NULL);
        quick_cursor = /* 2 */ QUICK_PUSH_CHECKBOX (quick_cursor, 0,
dlg_width, 5, dlg_height, N_("&Reverse"), &info->reverse);
        quick_cursor = /* 3 */ QUICK_PUSH_CHECKBOX (quick_cursor, 0,
dlg_width, 4, dlg_height, N_("Case sensi&tive"), &info->case_sensitive);
        quick_cursor = /* 4 */ QUICK_PUSH_CHECKBOX (quick_cursor, 0,
dlg_width, 3, dlg_height, N_("Executable &first"), &info->exec_first);
        quick_cursor = /* 5 */ QUICK_PUSH_RADIO (quick_cursor, 4,
dlg_width, 3, dlg_height, 0, NULL, &sort_idx);
        quick_cursor = QUICK_PUSH_END (quick_cursor);
        g_assert(quick_cursor == quick_widgets +
G_N_ELEMENTS(quick_widgets));

            Note: the QUICK_PUSH_xxxx inline functions simply wrap the
QUICK_xxxx macros.

Firstly that are the thoughts on an active native WIN32 build and secondary
can these compiler'ish be reworked to support non gcc builds ?

Excluding these changes WIN32 support (so far) represents around 20 patches
mainly for drive and alt-configuration options,
plus a number of new modules to emulate posix functions, built against
libglib-2.0 from gtk.

Comments
Regards
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.midnight-commander.org/pipermail/mc-devel/attachments/20120802/87b93fa2/attachment.html>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: screen1.bmp
Type: image/bmp
Size: 1410254 bytes
Desc: not available
URL: <http://lists.midnight-commander.org/pipermail/mc-devel/attachments/20120802/87b93fa2/attachment.bmp>


More information about the mc-devel mailing list