From d802d1ca3008d00a494641268dcb63ec0f5d41c2 Mon Sep 17 00:00:00 2001 From: Timo Korvola Date: Sun, 4 Mar 2018 22:37:21 +0200 Subject: [PATCH] Lose non-standard GCC attributes. Call init routines explicitly instead of relying on an obscure GCC extension. --- src/sdl/sf_frotz.h | 3 +++ src/sdl/sf_ftype.c | 8 +++----- src/sdl/sf_osfdlg.c | 7 +++---- src/sdl/sf_resource.c | 35 +++++++++++++++++++---------------- 4 files changed, 28 insertions(+), 25 deletions(-) diff --git a/src/sdl/sf_frotz.h b/src/sdl/sf_frotz.h index e7ccac9..ceae800 100644 --- a/src/sdl/sf_frotz.h +++ b/src/sdl/sf_frotz.h @@ -181,6 +181,9 @@ int sf_initsound(void); void sf_initfonts(void); +void sf_setdialog(void); +void sf_initloader(void); + void sf_cleanup_all(void); void sf_regcleanfunc( void *f, const char *nam); #define CLEANREG( f) sf_regcleanfunc( (void *)f, #f) diff --git a/src/sdl/sf_ftype.c b/src/sdl/sf_ftype.c index 89070ce..e17de93 100644 --- a/src/sdl/sf_ftype.c +++ b/src/sdl/sf_ftype.c @@ -278,10 +278,8 @@ SFONT * sf_loadftype( char *fspec, int *err) ////////////////////////////////////////// -static void initloader() __attribute__((constructor)); -static void initloader() - { +void sf_initloader() +{ ttfontloader = sf_loadftype; ttfontsdone = libfinish; - } - +} diff --git a/src/sdl/sf_osfdlg.c b/src/sdl/sf_osfdlg.c index 16b0a95..7e246d7 100644 --- a/src/sdl/sf_osfdlg.c +++ b/src/sdl/sf_osfdlg.c @@ -390,11 +390,10 @@ STATIC int myosdialog( bool existing, const char *def, const char *filt, const c return SF_NOTIMP; } -static void setdialog(void) __attribute__((constructor)); -static void setdialog(void) - { +void sf_setdialog(void) +{ sf_osdialog = myosdialog; - } +} /////////////////////////////////// diff --git a/src/sdl/sf_resource.c b/src/sdl/sf_resource.c index 9908038..5b37f77 100644 --- a/src/sdl/sf_resource.c +++ b/src/sdl/sf_resource.c @@ -904,6 +904,7 @@ int sf_getresource( int num, int ispic, int method, myresource * res) if (ispic) usage = bb_ID_Pict; else usage = bb_ID_Snd; + //XXX Should use bb_load_resource_{pict,snd} with auxdata? st = bb_load_resource(bmap,method,(bb_result_t *)res,usage,num); if (st == bb_err_None) { @@ -1018,20 +1019,22 @@ static FILE * findfromlist( int ispic, int num, int *size) void os_init_setup(void) { - f_setup.attribute_assignment = 0; - f_setup.attribute_testing = 0; - f_setup.context_lines = 0; - f_setup.object_locating = 0; - f_setup.object_movement = 0; - f_setup.left_margin = 0; - f_setup.right_margin = 0; - f_setup.ignore_errors = 0; - f_setup.piracy = 0; /* enable the piracy opcode */ - f_setup.undo_slots = MAX_UNDO_SLOTS; - f_setup.expand_abbreviations = 0; - f_setup.script_cols = 80; - f_setup.sound = 1; - f_setup.err_report_mode = ERR_DEFAULT_REPORT_MODE; - f_setup.restore_mode = 0; - + sf_setdialog(); + sf_initloader(); + + f_setup.attribute_assignment = 0; + f_setup.attribute_testing = 0; + f_setup.context_lines = 0; + f_setup.object_locating = 0; + f_setup.object_movement = 0; + f_setup.left_margin = 0; + f_setup.right_margin = 0; + f_setup.ignore_errors = 0; + f_setup.piracy = 0; /* enable the piracy opcode */ + f_setup.undo_slots = MAX_UNDO_SLOTS; + f_setup.expand_abbreviations = 0; + f_setup.script_cols = 80; + f_setup.sound = 1; + f_setup.err_report_mode = ERR_DEFAULT_REPORT_MODE; + f_setup.restore_mode = 0; } -- 2.34.1