Sisyphus repositório
Última atualização: 1 outubro 2023 | SRPMs: 18631 | Visitas: 37398957
en ru br
ALT Linux repositórios
S:1.2-alt2

Group :: Jogos/Enigmas
RPM: ff-clone

 Main   Changelog   Spec   Patches   Sources   Download   Gear   Bugs e FR  Repocop 

Patch: ff-clone-gcc10.patch
Download


diff --git a/X.c b/X.c
index 971cad4..ce76305 100644
--- a/X.c
+++ b/X.c
@@ -3,6 +3,8 @@
 #include "warning.h"
 #include "X.h"
 
+Display *display;
+int screen;
 // Zahaji komunikaci s X serverem, inicializuje promenne display a screen
 void initX()
 {
diff --git a/X.h b/X.h
index dfb5ee1..70906a5 100644
--- a/X.h
+++ b/X.h
@@ -2,7 +2,7 @@
 #include <X11/Xutil.h>
 
 // Nasledujici promenne jsou vyzadujovany nekterymi X-ovymi funkcemi
-Display *display;
-int screen;
+extern Display *display;
+extern int screen;
 
 void initX(); // Zahaji komunikaci s X serverem, inicializuje promenne vyse.
diff --git a/directories.c b/directories.c
index e35abca..481ee5c 100644
--- a/directories.c
+++ b/directories.c
@@ -42,6 +42,8 @@ char *datadir = DATADIR;
 char *datadir = "./data";
 #endif
 
+char *homedir;
+
 int asprintf(char **strp, const char *fmt, ...);
 
 char *savedir = NULL;
diff --git a/directories.h b/directories.h
index d6d5a00..133751b 100644
--- a/directories.h
+++ b/directories.h
@@ -1,6 +1,6 @@
-char *datadir; // cesta k datum
-char *homedir; // cesta do skryteho adresare v home (vcetne cesty k home)
-char *savedir; // cesta do adresare s ulozenymi pozicemi
+extern char *datadir; // cesta k datum
+extern char *homedir; // cesta do skryteho adresare v home (vcetne cesty k home)
+extern char *savedir; // cesta do adresare s ulozenymi pozicemi
 
 char *datafile(char *filename); // vrati datadir/filename
 char *homefile(char *filename); // vrati homedir/filename
diff --git a/draw.c b/draw.c
index 53830f4..3188788 100644
--- a/draw.c
+++ b/draw.c
@@ -17,8 +17,19 @@
 #include "gsaves.h"
 #include "keyboard.h"
 #include "menuevents.h"
-
+float room_x_scale;   // cca 30, transformace pixel->velikost policka
+float room_y_scale;
+int room_x_translate; // souradnice mistnosti v okne
+int room_y_translate;
+int room_x_size; // velikost mistnosti v pixelech
+int room_y_size;
+float anim_phase; // o kolik jsou posunute posouvane objekty
+float heap_x_advance, heap_y_advance; // houpani ryb a predmety na nich
+char safemode; // je hra v uspornem rezimu?
+char img_change;
+cairo_pattern_t *bg_pattern; // barva pozadi -- tmave modra
 static void draw_fish_rectangle(); 
+enum _gridmode gridmode;
 
 #define GRID_THICKNESS 2   // tloustka mrizky v padesatinach policka
 #define GRID_MINTHICK  1.2 /* minimalni tlouska v pixelech
diff --git a/draw.h b/draw.h
index eeb0502..e982204 100644
--- a/draw.h
+++ b/draw.h
@@ -1,23 +1,23 @@
-float room_x_scale;   // cca 30, transformace pixel->velikost policka
-float room_y_scale;
+extern float room_x_scale;   // cca 30, transformace pixel->velikost policka
+extern float room_y_scale;
 
-int room_x_translate; // souradnice mistnosti v okne
-int room_y_translate;
+extern int room_x_translate; // souradnice mistnosti v okne
+extern int room_y_translate;
 
-int room_x_size; // velikost mistnosti v pixelech
-int room_y_size;
+extern int room_x_size; // velikost mistnosti v pixelech
+extern int room_y_size;
 
-float anim_phase; // o kolik jsou posunute posouvane objekty
+extern float anim_phase; // o kolik jsou posunute posouvane objekty
 
-float heap_x_advance, heap_y_advance; // houpani ryb a predmety na nich
+extern float heap_x_advance, heap_y_advance; // houpani ryb a predmety na nich
 
-char safemode; // je hra v uspornem rezimu?
+extern char safemode; // je hra v uspornem rezimu?
 
 /*
   Nasledujici promenna udava, ktere komponenty se zmenily
   a je treba je prekreslit.
 */
-char img_change;
+extern char img_change;
 
 // Moznosti jsou:
 #define CHANGE_ROOM   1 // hlavni okno hry
@@ -26,13 +26,15 @@ char img_change;
 #define CHANGE_ALL    (CHANGE_ROOM | CHANGE_GMOVES | CHANGE_GSAVES)
 
 // mrizka je
-enum {
+enum _gridmode {
   GRID_OFF, // vypnuta
   GRID_BG,  // na pozadi
   GRID_FG   // nebo na popredi
-} gridmode;
+};
 
-cairo_pattern_t *bg_pattern; // barva pozadi -- tmave modra
+extern enum _gridmode gridmode;
+
+extern cairo_pattern_t *bg_pattern; // barva pozadi -- tmave modra
 
 void draw(); // vykresli okno
 void anim_step(); // posune animaci o jeden krok
diff --git a/gmoves.c b/gmoves.c
index 5c1b775..dcbc67a 100644
--- a/gmoves.c
+++ b/gmoves.c
@@ -11,7 +11,13 @@ struct ff_object;
 #include "gmoves.h"
 #include "gsaves.h"
 #include "menuevents.h"
-
+int   FIRSTUNDOWAIT; // auto repeat delay u tlacitek '-' a '+' ve framech
+int   UNDOWAIT; // auto repeat rate u tlacitek '-' a '+' ve framech
+int gmoves_width; // sirka svisleho undo pasecku
+int gmoves_height; // vyska vodorovneho undo pasecku
+char gmoves_vertical; // je undo pasecek svisly?
+int rewinding; // -1 = zmacknute '-', 1 = zmacknute '+', 0 = nezmacknute nic
+char slider_hold; // je drzeny posuvnik?
 /*
   Undo pasecek ma dva hlavni ovladaci prvky:
     1) panel - to, kde jsou tlacitka -, + a pocitadlo tahu
diff --git a/gmoves.h b/gmoves.h
index 60de6ca..52d717f 100644
--- a/gmoves.h
+++ b/gmoves.h
@@ -1,11 +1,11 @@
-int   FIRSTUNDOWAIT; // auto repeat delay u tlacitek '-' a '+' ve framech
-int   UNDOWAIT; // auto repeat rate u tlacitek '-' a '+' ve framech
+extern int   FIRSTUNDOWAIT; // auto repeat delay u tlacitek '-' a '+' ve framech
+extern int   UNDOWAIT; // auto repeat rate u tlacitek '-' a '+' ve framech
 
-int gmoves_width; // sirka svisleho undo pasecku
-int gmoves_height; // vyska vodorovneho undo pasecku
-char gmoves_vertical; // je undo pasecek svisly?
-int rewinding; // -1 = zmacknute '-', 1 = zmacknute '+', 0 = nezmacknute nic
-char slider_hold; // je drzeny posuvnik?
+extern int gmoves_width; // sirka svisleho undo pasecku
+extern int gmoves_height; // vyska vodorovneho undo pasecku
+extern char gmoves_vertical; // je undo pasecek svisly?
+extern int rewinding; // -1 = zmacknute '-', 1 = zmacknute '+', 0 = nezmacknute nic
+extern char slider_hold; // je drzeny posuvnik?
 
 void init_gmoves(); // inicializace promennych undo pasecku, napr gmoves_width
 void level_gmoves_init(); // pri startu levelu nastavi undo pasecek na necinnost
diff --git a/gsaves.c b/gsaves.c
index ebfcd4c..8e69865 100644
--- a/gsaves.c
+++ b/gsaves.c
@@ -20,7 +20,15 @@
 #include "draw.h"
 #include "loop.h"
 #include "keyboard.h"
-
+double GSAVES_ACT_SPEED; // za kolik framu se tlacitko zvetsi / zmensi
+double GSAVES_SPACE_SPEED;
+char gsaves_vertical; // gsaves jsou svisle
+int gsaves_width; // sirka svislych neaktivnich gsaves
+int gsaves_height; // vyska vodorovnych neaktivnich gsaves
+int gsaves_x_size, gsaves_y_size; // rozmery aktivnich gsaves v aktualni orientaci
+int gsaves_length; // delka, tj. vyska (jsou-li gsaves svisle) nebo sirka (jsou-li vodorovne)
+char gsaves_blockanim; // gsaves jsou aktivni, tak nebudeme zatezovat procesor dalsimi animacemi
+unsigned char gsaves_change_mask;
 #define ICON_SIZE         200 // polovina obvodu zvetseneho tlacitka
 #define MINI_SCALE        0.5 // zmenseni neaktivniho tlacitka (nenarazime-li na okraje okna)
 #define BORDER              5 // mezery mezi tlacitky (konstantni pro zvetsena i nezvetsena)
@@ -960,7 +968,7 @@ void gsaves_save()
   int i, j;
   char name[20]; // nazev bez poradoveho cisla
   char used[MAXSAVES]; // ktera poradova cisla jsou jiz pouzita
-  char fullname[20]; // plny nazev
+  char fullname[42]; // plny nazev
   char *type; // typ pozice
   cairo_surface_t *surf; // nahled pozice
   struct gsave *tmp; // pomocny ukazatel pro preusporadani pole save
diff --git a/gsaves.h b/gsaves.h
index 543bb99..e17443b 100644
--- a/gsaves.h
+++ b/gsaves.h
@@ -2,17 +2,17 @@
   Gsaves je mac menu ulozenych pozic, veskere animace v tomto mac menu resim sam.
 */
 
-double GSAVES_ACT_SPEED; // za kolik framu se tlacitko zvetsi / zmensi
-double GSAVES_SPACE_SPEED; /* za kolik framu se presune mezera mezi dvema
+extern double GSAVES_ACT_SPEED; // za kolik framu se tlacitko zvetsi / zmensi
+extern double GSAVES_SPACE_SPEED; /* za kolik framu se presune mezera mezi dvema
 			      tlacitky (pri presouvani tlacitka) */
 
-char gsaves_vertical; // gsaves jsou svisle
-int gsaves_width; // sirka svislych neaktivnich gsaves
-int gsaves_height; // vyska vodorovnych neaktivnich gsaves
-int gsaves_x_size, gsaves_y_size; // rozmery aktivnich gsaves v aktualni orientaci
-int gsaves_length; // delka, tj. vyska (jsou-li gsaves svisle) nebo sirka (jsou-li vodorovne)
+extern char gsaves_vertical; // gsaves jsou svisle
+extern int gsaves_width; // sirka svislych neaktivnich gsaves
+extern int gsaves_height; // vyska vodorovnych neaktivnich gsaves
+extern int gsaves_x_size, gsaves_y_size; // rozmery aktivnich gsaves v aktualni orientaci
+extern int gsaves_length; // delka, tj. vyska (jsou-li gsaves svisle) nebo sirka (jsou-li vodorovne)
 
-char gsaves_blockanim; // gsaves jsou aktivni, tak nebudeme zatezovat procesor dalsimi animacemi
+extern char gsaves_blockanim; // gsaves jsou aktivni, tak nebudeme zatezovat procesor dalsimi animacemi
 
 /*
   Gsaves mohou precuhovat pres ostatni ovladaci prvky. V takovem pripade je treba prekreslit
@@ -20,7 +20,7 @@ char gsaves_blockanim; // gsaves jsou aktivni, tak nebudeme zatezovat procesor d
   udava, prez ktere prvky gsaves precuhuje (v analogickem formatu jako promenna img_change
   z draw.h).
 */
-unsigned char gsaves_change_mask;
+extern unsigned char gsaves_change_mask;
 
 void level_gsaves_init(); /* pri startu levelu spocita nemenne velikosti (napriklad velikost
 			     zvetseneho tlacitka) a nacte seznam ulozenych pozic */
diff --git a/keyboard.c b/keyboard.c
index 13199a0..22cba33 100644
--- a/keyboard.c
+++ b/keyboard.c
@@ -18,6 +18,8 @@
 #include "menuevents.h"
 #include "infowindow.h"
 
+int keyboard_blockanim;
+
 // typy klaves
 #define NO_KEY   -1 // zadna
 
diff --git a/keyboard.h b/keyboard.h
index 09ec8e2..9533f9a 100644
--- a/keyboard.h
+++ b/keyboard.h
@@ -9,7 +9,7 @@ void init_keyboard();  // inicializace modulu
 
 void keyboard_erase_queue(); // promaze frontu klaves
 
-int keyboard_blockanim; /* Pri drzeni klaves Home, End, PgUp, PgDown je zablokovana animace,
+extern int keyboard_blockanim; /* Pri drzeni klaves Home, End, PgUp, PgDown je zablokovana animace,
 			   aby u levelu, ve kterych na zacatku pada predmet, bylo mozne si tento
 			   predmet prohlednot pred padem. Animace je takto blokovana pri
 			   keyboard_blockanim != 0 */
diff --git a/layers.h b/layers.h
index 7c75b3e..acd1a84 100644
--- a/layers.h
+++ b/layers.h
@@ -50,7 +50,7 @@ typedef struct ff_layer{
   Ze je nacitany obrazek lokalni se pozna podle toho, ze je promena local_image_mode
   nastavena na true.
 */
-char local_image_mode;
+extern char local_image_mode;
 
 ff_image *new_image(cairo_surface_t *surf, float x, float y,
 		    float scalex, float scaley);
diff --git a/levelscript.h b/levelscript.h
index 5dfa7a3..1d54fd7 100644
--- a/levelscript.h
+++ b/levelscript.h
@@ -3,7 +3,7 @@
   je nastavena lua skriptem. Bud bude rovna codename prislusneho node v menu nebo
   v pripade uzivatelova levelu "user_<jmeno souboru bez pripony>".
  */
-char *room_codename;
+extern char *room_codename;
 int script_set_codename(lua_State *L); // nastavi room_codename (ocekava jeden parametr -- string)
 
 /*
diff --git a/loop.c b/loop.c
index a7792ab..0cf78fa 100644
--- a/loop.c
+++ b/loop.c
@@ -24,7 +24,8 @@
 #include "menuscript.h"
 #include "loop.h"
 #include "gsaves.h"
-
+int mouse_x, mouse_y; // souradnice mysi v okne
+char mouse_pressed; // je zmacknute leve tlacitko mysi?
 static int sec = 1; // pocet sekund mezi jednotlivymi framy
 static int usec = 0; // pocet mikrosekund mezi jednotlivymi framy
 
diff --git a/loop.h b/loop.h
index 8c1f4c5..3efb300 100644
--- a/loop.h
+++ b/loop.h
@@ -1,9 +1,9 @@
 void loop(); // hlavni cyklus
 void setdelay (int vteriny, int mikro); // nastavi casovou prodlevy mezi jednotlivymi framy
 
-int mouse_x, mouse_y; // souradnice mysi v okne
+extern int mouse_x, mouse_y; // souradnice mysi v okne
 void setmouse(); // nastavi souradnice mysi na mouse_x, mouse_y
 
-char mouse_pressed; // je zmacknute leve tlacitko mysi?
+extern char mouse_pressed; // je zmacknute leve tlacitko mysi?
 
 void loop_noskip(); // oznami modulu, ze se cekalo dobu, kterou neni vhodno kompenzovat
diff --git a/main.c b/main.c
index becfb08..7847cd3 100644
--- a/main.c
+++ b/main.c
@@ -18,6 +18,10 @@
 #include "keyboard.h"
 #include "directories.h"
 
+char *userlev;
+int gargc;
+char **gargv;
+
 static void usage() // kdyz jsou spatne parametry -- vypise Usage a ukonci program
 {
   printf("Usage: ff-clone [-d <data directory>] [<user level path>]\n");
diff --git a/main.h b/main.h
index e21b751..0a3b321 100644
--- a/main.h
+++ b/main.h
@@ -1,9 +1,9 @@
-char *userlev; /* nazev uzivatelova levelu (zadan jako parametr prikazove radky),
+extern char *userlev; /* nazev uzivatelova levelu (zadan jako parametr prikazove radky),
 		  nebyl-li zadan, hodnota je NULL */
 
 // zpristupneni argv a argc i jinym funkcim nez main
-int gargc;
-char **gargv;
+extern int gargc;
+extern char **gargv;
 
 int main();
 void escape(); // unik z mistnosti nebo hry
diff --git a/menuevents.c b/menuevents.c
index 652bcc0..1dab4ad 100644
--- a/menuevents.c
+++ b/menuevents.c
@@ -11,6 +11,7 @@
 #include "levelscript.h"
 
 static menu_node *last_active = NULL; // drzene tlacitko
+char menumode; // je hra v menu?
 
 void menu_click() /* pri kliknuti se nestane nic slozitejsiho, nez ze si
 		     zapamatuji kolecko, na ktere se kliklo */
diff --git a/menuevents.h b/menuevents.h
index 1ddb163..34c8a6c 100644
--- a/menuevents.h
+++ b/menuevents.h
@@ -1,4 +1,4 @@
-char menumode; // je hra v menu?
+extern char menumode; // je hra v menu?
 void menu_click(); // kliknuti mysi v menu
 void menu_unclick(); // pusteni mysi v menu
 void menu_pointer(); // pohyb mysi v menu
diff --git a/menuscript.c b/menuscript.c
index 3ff065f..057daca 100644
--- a/menuscript.c
+++ b/menuscript.c
@@ -10,6 +10,9 @@
 #include "menudraw.h"
 #include "infowindow.h"
 
+menu_node *first_menu_node;  // prvni prvek seznamu
+menu_node *active_menu_node;
+menu_line *first_menu_line; // prvni prvek spojoveho seznamu
 
 // C_add_line(x1, y1, x2, y3) - prida usecku podle zadanych souradnic
 static int menuscript_add_line(lua_State *L)
diff --git a/menuscript.h b/menuscript.h
index 259586f..53abd56 100644
--- a/menuscript.h
+++ b/menuscript.h
@@ -29,9 +29,9 @@ typedef struct menu_node{ // kolecko na mape
 
   struct menu_node *next;
 } menu_node;
-menu_node *first_menu_node;  // prvni prvek seznamu
+extern menu_node *first_menu_node;  // prvni prvek seznamu
 
-menu_node *active_menu_node; /* mistnost, nad kterou je mys, pripadne
+extern menu_node *active_menu_node; /* mistnost, nad kterou je mys, pripadne
 				spustena mistnost */
 
 typedef struct menu_line{  // usecka na mape
@@ -39,7 +39,7 @@ typedef struct menu_line{  // usecka na mape
   double x2, y2; // souradnice konce cary
   struct menu_line *next;
 } menu_line;
-menu_line *first_menu_line; // prvni prvek spojoveho seznamu
+extern menu_line *first_menu_line; // prvni prvek spojoveho seznamu
 
 void menu_initlua(); // inicializuje skript a promenne tohoto modulu
 
diff --git a/moves.c b/moves.c
index 4022faf..f874fce 100644
--- a/moves.c
+++ b/moves.c
@@ -10,6 +10,11 @@
 #include "draw.h"
 #include "main.h"
 
+int moves; // aktualni pocet tahu
+int minmoves; // minimalni pocet tahu: -1 nebo 0 podle
+int maxmoves; // maximalni pocet tahu v teto situaci, tedy kam az dosahne redo
+char room_sol_esc;
+
 /*
   Undo historie je ulozena ve spojovem seznamu struktury movesblock,
   kazda tato struktura ma ulozeno MOVESBLOCK (100) tahu a pozici vsech
diff --git a/moves.h b/moves.h
index 8e0dcaa..a60ae0b 100644
--- a/moves.h
+++ b/moves.h
@@ -1,11 +1,11 @@
 #define FLIPCHANGE 0 // ryba se otocila
 #define LIVECHANGE 1 // ryba zemrela
 
-int moves; // aktualni pocet tahu
-int minmoves; // minimalni pocet tahu: -1 nebo 0 podle
-int maxmoves; // maximalni pocet tahu v teto situaci, tedy kam az dosahne redo
+extern int moves; // aktualni pocet tahu
+extern int minmoves; // minimalni pocet tahu: -1 nebo 0 podle
+extern int maxmoves; // maximalni pocet tahu v teto situaci, tedy kam az dosahne redo
 
-char room_sol_esc;  /* mistnost byla vyresena, a proto se nyni
+extern char room_sol_esc;  /* mistnost byla vyresena, a proto se nyni
 		       ma hra vratit do menu */
 
 void init_moves(); /* inicializuje struktury pro undo historii,
diff --git a/object.c b/object.c
index fcdd296..632a858 100644
--- a/object.c
+++ b/object.c
@@ -14,7 +14,10 @@
 #include "imgsave.h"
 #include "menudraw.h"
 #include "main.h"
-
+int objnum; // pocet objektu
+ff_object **objlist[NUMOBJLISTS];
+int room_width;  // celkovy pocet policek na sirku
+int room_height; // celkovy pocet policek na vysku
 static void analyzeobject(ff_object *obj);
 
 ff_object *first_object = NULL; // prvni objekt ve spojovem seznamu
diff --git a/object.h b/object.h
index ca41bf2..3058b49 100644
--- a/object.h
+++ b/object.h
@@ -47,14 +47,14 @@ typedef struct ff_object{  // predmet ve hre (nebo i ryba / zed)
   struct ff_object *next; // dalsi objekt ve spojovem seznamu
 } ff_object;
 
-ff_object *first_object; // prvni objekt ve spojovem seznamu
-int objnum; // pocet objektu
+extern ff_object *first_object; // prvni objekt ve spojovem seznamu
+extern int objnum; // pocet objektu
 
 /* Vedle spojoveho seznamu jsou objekty v nekolika (NUMOBJLISTS) polich
    objlist[], ruzne sprehazeny. Navic kazdy objekt ma ulozeno, na jake
    pozici daneho pole objlist se nachazi, v polozce index.
  */
-ff_object **objlist[NUMOBJLISTS];
+extern ff_object **objlist[NUMOBJLISTS];
 /*
   Pro prohozeni dvou objektu v danem poli objlist slouzi nasledujici funkce.
   prvni parametr udava objekt, druhy na kterou pozici se ma premistit
@@ -62,8 +62,8 @@ ff_object **objlist[NUMOBJLISTS];
  */
 void swapobject(ff_object *obj1, int index2, int list);
 
-int room_width;  // celkovy pocet policek na sirku
-int room_height; // celkovy pocet policek na vysku
+extern int room_width;  // celkovy pocet policek na sirku
+extern int room_height; // celkovy pocet policek na vysku
 
 ff_object *new_object(const char *color, char type, int x, int y,
 		      int width, int height, const char *data);
diff --git a/rules.c b/rules.c
index 00d1112..cf28659 100644
--- a/rules.c
+++ b/rules.c
@@ -7,7 +7,11 @@
 #include "rules.h"
 #include "main.h"
 #include "menuscript.h"
-
+struct ff_object *active_fish; // prave aktivni ryba (s rameckem)
+struct ff_object *start_active_fish; // ryba aktivni pri startu
+int room_movedir;
+int fishnum; // pocet ryb
+enum _room_state room_state;
 // Zde  pouzivane objlisty: (a pak jeste FISHLIST v rules.h)
 
 // polozka out v ff_object muze nabyvat:
diff --git a/rules.h b/rules.h
index 6f6336d..f3febb8 100644
--- a/rules.h
+++ b/rules.h
@@ -1,19 +1,21 @@
-enum{
+enum _room_state {
   ROOM_IDLE,   // nic se nedeje
   ROOM_MOVE,   // ryba se posunuje
   ROOM_FALL,   // predmety padaji
   ROOM_BEGIN,  // predmety budou padat (pri startu)
-} room_state;
+};
+
+extern enum _room_state room_state;
 
 #define FISHLIST        2  // seznam ryb, viz rulec.c, kapitola 
   // zbyle objlisty definovane v rules.c
 
-struct ff_object *active_fish; // prave aktivni ryba (s rameckem)
-struct ff_object *start_active_fish; // ryba aktivni pri startu
-int room_movedir; /* smer kterym se hybou hybajici se predmety, tedy
+extern struct ff_object *active_fish; // prave aktivni ryba (s rameckem)
+extern struct ff_object *start_active_fish; // ryba aktivni pri startu
+extern int room_movedir; /* smer kterym se hybou hybajici se predmety, tedy
 		     bud smer posunu ryby, nebo DOWN, padaji-li. */
 
-int fishnum; // pocet ryb
+extern int fishnum; // pocet ryb
 
 void init_rules(); /* inicializuje tento modul, nutno spoustet po
 		      finish_objects() */
diff --git a/script.c b/script.c
index b6c7812..01c0de2 100644
--- a/script.c
+++ b/script.c
@@ -9,6 +9,8 @@
 #include "layers.h"
 #include "draw.h"
 
+lua_State *luastat;
+
 static void setluaint(lua_State *L, char *name, int value)
                      // nastavi ve skriptu do daneho nazvu promenne dane cislo.
 {
diff --git a/script.h b/script.h
index 0069404..ecbee74 100644
--- a/script.h
+++ b/script.h
@@ -23,7 +23,7 @@
   stringy datadir a homedir. Opet jejich nazev v lue bude zacinat predponou "C_".
  */
 
-lua_State *luastat;
+extern lua_State *luastat;
 void initlua(); // inicializuje luastat
 
 void *my_luaL_checkludata(lua_State *L, int narg);
diff --git a/window.c b/window.c
index 2cd1753..2ae6941 100644
--- a/window.c
+++ b/window.c
@@ -14,7 +14,14 @@
 #include "gsaves.h"
 #include "warning.h"
 #include "main.h"
-
+Atom wmDeleteMessage; // pomoci tohoto se pozna zavreni krizkem
+Window real_win; // hlavni okno
+Window win; // podokno hlavniho okna, ktere ma stejne rozmery a je mozne do nej krelit
+int win_width, win_height;  // velikost okna
+int owin_width, owin_height; // velikost okna pred fullscreenem
+char win_fs;  // hra je ted ve fullscreenu
+cairo_t *win_cr;
+cairo_surface_t *win_surf;
 char win_resize = 0;
 cairo_t *win_cr = NULL;
 static Pixmap win_pixmap; /* pixmapa, na kterou se ve skutecnosti
diff --git a/window.h b/window.h
index 009efc4..ab85e9e 100644
--- a/window.h
+++ b/window.h
@@ -1,11 +1,11 @@
-Atom wmDeleteMessage; // pomoci tohoto se pozna zavreni krizkem
-Window real_win; // hlavni okno
-Window win; // podokno hlavniho okna, ktere ma stejne rozmery a je mozne do nej krelit
+extern Atom wmDeleteMessage; // pomoci tohoto se pozna zavreni krizkem
+extern Window real_win; // hlavni okno
+extern Window win; // podokno hlavniho okna, ktere ma stejne rozmery a je mozne do nej krelit
 
-int win_width, win_height;  // velikost okna
-int owin_width, owin_height; // velikost okna pred fullscreenem
+extern int win_width, win_height;  // velikost okna
+extern int owin_width, owin_height; // velikost okna pred fullscreenem
 
-char win_fs;  // hra je ted ve fullscreenu
+extern char win_fs;  // hra je ted ve fullscreenu
 
 /* Aby bylo prekreslovani co mozna nejmene rusive, je poreseno nasledovne:
    Kreslici funkce vykresluji pomoci caira (win_cr) na surface win_surf, coz je
@@ -14,9 +14,9 @@ char win_fs;  // hra je ted ve fullscreenu
    velikost, ale pocka se az na prvni vykresleni nove jinak velke pixmapy. Do te
    doby je na true nastavena promenna win_resize.
  */
-cairo_t *win_cr;
-cairo_surface_t *win_surf;
-char win_resize;
+extern cairo_t *win_cr;
+extern cairo_surface_t *win_surf;
+extern char win_resize;
 
 void createwin(); // vyrobi hlavni okno
 void create_win_cr(); // vyrobi pro okno spravne velkou pixmapu a cairo kontext
 
projeto & código: Vladimir Lettiev aka crux © 2004-2005, Andrew Avramenko aka liks © 2007-2008
mantenedor atual: Michael Shigorin
mantenedor da tradução: Fernando Martini aka fmartini © 2009