diff --git a/Makefile b/Makefile index 45e22d7ab..f00bd5dda 100644 --- a/Makefile +++ b/Makefile @@ -46,7 +46,7 @@ comptest = $(shell if $(CC) $(CPPFLAGS) $(CFLAGS) $(1) $(2) -o dummy.o dummy.c $ echo "$(1)"; \ fi ;) -beos_RSRC_CMD:=xres -o tuxpaint src/tuxpaint.rsrc +beos_RSRC_CMD:=rc src/tuxpaint.rdef && xres -o tuxpaint src/tuxpaint.rsrc RSRC_CMD:=$($(OS)_RSRC_CMD) beos_MIMESET_CMD:=mimeset -f tuxpaint @@ -79,7 +79,7 @@ FRIBIDI_CFLAGS:=$(shell pkg-config --cflags fribidi) windows_ARCH_LINKS:=-lintl $(PNG) -lwinspool -lshlwapi $(FRIBIDI_LIB) osx_ARCH_LINKS:=$(PAPER_LIB) $(FRIBIDI_LIB) -beos_ARCH_LINKS:="-lintl $(PNG) -lz -lbe -liconv $(FRIBIDI_LIB)" +beos_ARCH_LINKS:="-lintl $(PNG) -lz -lbe -lnetwork -liconv $(FRIBIDI_LIB)" linux_ARCH_LINKS:=$(PAPER_LIB) $(FRIBIDI_LIB) ARCH_LINKS:=$($(OS)_ARCH_LINKS) @@ -92,11 +92,10 @@ ARCH_HEADERS:=$($(OS)_ARCH_HEADERS) # Where things will go when ultimately installed: windows_PREFIX:=/usr/local osx_PREFIX:=/usr/local -beos_PREFIX:=/boot/apps/Games/TuxPaint +beos_PREFIX:=$(shell finddir B_APPS_DIRECTORY)/TuxPaint linux_PREFIX:=/usr/local PREFIX:=$($(OS)_PREFIX) - # Root directory to place files when creating packages. # PKG_ROOT is the old name for this, and should be undefined. # "TuxPaint-1" is the OLPC XO name. Installing to ./ is bad! @@ -139,6 +138,10 @@ else CONFDIR:=$(DESTDIR)$(PREFIX)/etc/tuxpaint endif +ifeq ($(SYSNAME),Haiku) + CONFDIR:=$(shell finddir B_USER_SETTINGS_DIRECTORY)/TuxPaint +endif + # Icons and launchers: ICON_PREFIX:=$(DESTDIR)$(PREFIX)/share/pixmaps X11_ICON_PREFIX:=$(DESTDIR)$(PREFIX)/X11R6/include/X11/pixmaps @@ -396,7 +399,7 @@ trans: windows_ARCH_INSTALL:= osx_ARCH_INSTALL:= -beos_ARCH_INSTALL:= +beos_ARCH_INSTALL:=install-haiku linux_ARCH_INSTALL:=install-gnome install-kde install-kde-icons ARCH_INSTALL:=$($(OS)_ARCH_INSTALL) @@ -778,6 +781,13 @@ install-dlls: strip -s $(BIN_PREFIX)/lib/pango/1.6.0/modules/*.dll; \ fi +# Install symlink: +.PHONY: install-haiku +install-haiku: + @echo + @echo "...Installing symlink in apps/TuxPaint to tuxpaint executable file..." + @ln -sf $(DESTDIR)$(shell finddir B_APPS_DIRECTORY)/TuxPaint/bin/tuxpaint $(DESTDIR)$(shell finddir B_APPS_DIRECTORY)/TuxPaint/tuxpaint + # Install the import script: .PHONY: install-importscript install-importscript: diff --git a/src/BeOS_print.h b/src/BeOS_print.h index 26f7a6b59..ec4fbfcd9 100644 --- a/src/BeOS_print.h +++ b/src/BeOS_print.h @@ -22,7 +22,7 @@ /* Jan. 17, 2003 */ /* $Id$ */ - + #ifndef __BEOS_PRINT_H__ #define __BEOS_PRINT_H__ @@ -32,12 +32,11 @@ extern "C" { -#endif /* */ - extern int SurfacePrint(SDL_Surface * surf); - extern int IsPrinterAvailable(); - +#endif /* __cplusplus */ + extern int SurfacePrint(SDL_Surface * surf); + extern int IsPrinterAvailable(); #ifdef __cplusplus } -#endif /* */ +#endif /* __cplusplus */ -#endif /* */ +#endif /* __BEOS_PRINT__ */ diff --git a/src/fonts.c b/src/fonts.c index 9fc6fe765..9214537e6 100644 --- a/src/fonts.c +++ b/src/fonts.c @@ -67,6 +67,11 @@ #include "win32_print.h" #endif +#ifdef __HAIKU__ +#include +#include +#endif + #ifdef __APPLE__ #include "wrapperdata.h" extern WrapperData macosx; @@ -1013,7 +1018,9 @@ void run_font_scanner(SDL_Surface * screen, const char *restrict const locale) close(sv[1]); return; } +#ifndef __HAIKU__ nice(42); // be nice, letting the main thread get the CPU +#endif sched_yield(); // try to let the parent run right now prctl(PR_SET_PDEATHSIG, 9); // get killed if parent exits if(getppid()==1) diff --git a/src/tuxpaint.c b/src/tuxpaint.c index af900d9f3..1cab820e1 100644 --- a/src/tuxpaint.c +++ b/src/tuxpaint.c @@ -218,8 +218,11 @@ char *strcasestr(const char *haystack, const char *needle) #include -#ifdef __BEOS__ +#if defined __BEOS__ || defined __HAIKU__ #include +#include +#define FALSE false +#define TRUE true #else #include #include @@ -251,7 +254,7 @@ char *strcasestr(const char *haystack, const char *needle) #include #include -#ifdef __BEOS__ +#if defined __BEOS__ //|| defined __HAIKU__ /* BeOS */ @@ -1096,7 +1099,7 @@ enum { static magic_api *magic_api_struct; /* Pointer to our internal functions; passed to shared object's functions when we call them */ -#if !defined(WIN32) && !defined(__APPLE__) && !defined(__BEOS__) +#if !defined(WIN32) && !defined(__APPLE__) && !defined(__BEOS__) && !defined(__HAIKU__) #include #if !defined(PAPER_H) #error "---------------------------------------------------" @@ -1923,6 +1926,8 @@ static void mainloop(void) int *thing_scroll; int cur_thing, do_draw, max; int ignoring_motion; + int j; + unsigned int i; SDL_TimerID scrolltimer = NULL; SDL_Event event; SDLKey key; @@ -3778,8 +3783,7 @@ static void mainloop(void) cur_font = select_cur_font; text_state = select_text_state; text_size = select_text_size; - - int j; + // int j; for (j = 0; j < num_font_families; j++) { if (user_font_families[j] @@ -5474,6 +5478,8 @@ static void show_version(int details) printf(" Built for Windows (WIN32)\n"); #elif __BEOS__ printf(" Built for BeOS (__BEOS__)\n"); +#elif __HAIKU__ + printf(" Built for Haiku (__HAIKU__)\n"); #elif NOKIA_770 printf(" Built for Maemo (NOKIA_770)\n"); #elif OLPC_XO @@ -5594,7 +5600,7 @@ static void show_usage(int exitcode) #endif " %s [--printdelay=SECONDS]\n" " %s [--altprintmod | --altprintalways | --altprintnever]\n" -#if !defined(WIN32) && !defined(__APPLE__) && !defined(__BEOS__) +#if !defined(WIN32) && !defined(__APPLE__) && !defined(__BEOS__) && !defined(__HAIKU__) " %s [--papersize PAPERSIZE | --papersize help]\n" #endif " %s [--lang LANGUAGE | --locale LOCALE | --lang help]\n" @@ -5613,7 +5619,7 @@ static void show_usage(int exitcode) blank, #endif blank, blank, -#if !defined(WIN32) && !defined(__APPLE__) && !defined(__BEOS__) +#if !defined(WIN32) && !defined(__APPLE__) && !defined(__BEOS__) && !defined(__HAIKU__) blank, #endif blank, blank, blank, blank, blank); @@ -8998,7 +9004,7 @@ static void reset_avail_tools(void) disallow_print = 1; #endif -#ifdef __BEOS__ +#if defined __BEOS__ || __HAIKU__ if (!IsPrinterAvailable()) disallow_print = disable_print = 1; #endif @@ -14685,8 +14691,8 @@ void do_print(void) if (error) fprintf(stderr, "%s\n", error); } -#elif defined(__BEOS__) - /* BeOS */ +#elif defined(__BEOS__) || defined(__HAIKU__) + /* BeOS and Haiku*/ SurfacePrint(save_canvas); #elif defined(__APPLE__) @@ -18511,7 +18517,7 @@ static void simply_render_node(struct label_node* node) SDL_Rect dest, src; wchar_t *str; wchar_t tmp_str[256]; - int w,h; + int j,w,h; unsigned i; if (node->label_node_surface == NULL) @@ -18535,7 +18541,6 @@ static void simply_render_node(struct label_node* node) text_state = node->save_text_state; text_size = node->save_text_size; - int j; for (j = 0; j < num_font_families; j++) { if (user_font_families[j] @@ -19036,18 +19041,18 @@ static void show_available_papersizes(int exitcode) static void parse_file_options(struct cfginfo *restrict tmpcfg, const char *filename) { + char str[256]; + char* arg; FILE *fi = fopen(filename, "r"); if(!fi) return; - char str[256]; - while(fgets(str, sizeof(str), fi)) { if(!isalnum(*str)) continue; strip_trailing_whitespace(str); - char *arg = strchr(str,'='); + arg = strchr(str,'='); if(arg) *arg++ = '\0'; // FIXME: leaking mem here, but the trouble is that these @@ -19192,7 +19197,7 @@ static void setup_config(char *argv[]) #if defined(_WIN32) /* Default local config file in users savedir directory on Windows */ snprintf(str, sizeof(str), "%s/tuxpaint.cfg", savedir); /* FIXME */ -#elif defined(__BEOS__) +#elif defined(__BEOS__) || defined(__HAIKU__) /* BeOS: Use a "tuxpaint.cfg" file: */ strcpy(str, "tuxpaint.cfg"); #elif defined(__APPLE__)