Lose non-standard GCC attributes.
authorTimo Korvola <tkorvola@iki.fi>
Sun, 4 Mar 2018 20:37:21 +0000 (22:37 +0200)
committerDavid Griffith <dave@661.org>
Sun, 11 Mar 2018 11:48:50 +0000 (04:48 -0700)
Call init routines explicitly instead of relying on an obscure
GCC extension.

src/sdl/sf_frotz.h
src/sdl/sf_ftype.c
src/sdl/sf_osfdlg.c
src/sdl/sf_resource.c

index e7ccac91afa585347747d1f653e404db6f6c36b7..ceae800d57c726f1ab4bea632f91b56865cbd1a0 100644 (file)
@@ -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)
index 89070cecd6ccb8d4a3b755fa04d60f7cf3a67098..e17de931f24e7169a5ae655c74fc7fba4018216a 100644 (file)
@@ -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;
-  }
-
+}
index 16b0a957ce1bf97415c46624aff23730b451ce3e..7e246d759447cc232e5169edb476463120f756e7 100644 (file)
@@ -390,11 +390,10 @@ STATIC int myosdialog( bool existing, const char *def, const char *filt, const c
   return SF_NOTIMP;\r
   }\r
 \r
-static void setdialog(void) __attribute__((constructor));\r
-static void setdialog(void)\r
-  {\r
+void sf_setdialog(void)\r
+{\r
   sf_osdialog = myosdialog;\r
-  }\r
+}\r
 \r
 ///////////////////////////////////\r
 \r
index 99080389976ab440b065a06583dfe119c4270726..5b37f77bdd1038a9658a6f3caabe902168f23e80 100644 (file)
@@ -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;
 }