Hi!
Marcus, do you accept the attached patch?
The patch compiles and works for me. It holds some cleanups, optimisations
and one bugfix in checkmode.
Christoph Egger
E-Mail: [EMAIL PROTECTED]
diff -uNr 20000130/degas/lib/libggi/display/file/fileio.c
degas/lib/libggi/display/file/fileio.c
--- 20000130/degas/lib/libggi/display/file/fileio.c Tue Apr 13 07:07:28 1999
+++ degas/lib/libggi/display/file/fileio.c Sun Feb 6 20:43:58 2000
@@ -36,7 +36,7 @@
#include <ggi/internal/ggi-dl.h>
#include <ggi/display/file.h>
-
+#include <ggi/system.h>
int _ggi_file_create_file(ggi_visual *vis, char *filename)
{
@@ -99,8 +99,24 @@
void _ggi_file_write_word(ggi_visual *vis, int val)
{
+#ifdef GGI_LITTLE_ENDIAN
_ggi_file_write_byte(vis, val >> 8);
_ggi_file_write_byte(vis, val & 0xff);
+#else
+ _ggi_file_write_byte(vis, val & 0xff);
+ _ggi_file_write_byte(vis, val >> 8);
+#endif
+}
+
+void _ggi_file_write_longword(ggi_visual *vis, long val)
+{
+#ifdef GGI_LITTLE_ENDIAN
+ _ggi_file_write_word(vis, (int)(val >> 16));
+ _ggi_file_write_word(vis, (int)(val & 0xFFFF));
+#else
+ _ggi_file_write_word(vis, (int)(val & 0xFFFF));
+ _ggi_file_write_word(vis, (int)(val >> 16));
+#endif
}
void _ggi_file_write_string(ggi_visual *vis, char *str)
@@ -112,7 +128,31 @@
void _ggi_file_write_zeros(ggi_visual *vis, int count)
{
- for (; count > 0; count--) {
+ while (count--) {
_ggi_file_write_byte(vis, 0);
}
}
+
+/* _ggi_file_get_extension:
+ * When passed a complete filename (with or without path information)
+ * this returns a pointer to the file extension.
+ */
+char *_ggi_file_get_extension(char *filename)
+{
+ int pos, end;
+
+ pos = end = strlen(filename);
+
+ while ((pos > 0)
+ && (filename[pos - 1] != '.')
+ && (filename[pos - 1] != '/')
+ && (filename[pos - 1] != '\0')
+ && (filename[pos - 1] != '#'))
+ pos--;
+
+ if (filename[pos - 1] == '.')
+ return filename + pos;
+
+ return filename + end;
+}
+
diff -uNr 20000130/degas/lib/libggi/display/file/mode.c
degas/lib/libggi/display/file/mode.c
--- 20000130/degas/lib/libggi/display/file/mode.c Mon Dec 13 07:10:45 1999
+++ degas/lib/libggi/display/file/mode.c Sun Feb 6 20:46:08 2000
@@ -46,11 +46,12 @@
#define MAP_FAILED ((void*)-1)
#endif
-#define write_byte _ggi_file_write_byte
-#define write_word _ggi_file_write_word
-#define write_string _ggi_file_write_string
-#define write_zeros _ggi_file_write_zeros
-#define write_flush _ggi_file_flush
+#define write_byte _ggi_file_write_byte
+#define write_word _ggi_file_write_word
+#define write_string _ggi_file_write_string
+#define write_longword _ggi_file_write_longword
+#define write_zeros _ggi_file_write_zeros
+#define write_flush _ggi_file_flush
static void dowritefile(ggi_visual *vis)
{
@@ -427,7 +428,7 @@
err--;
}
- if (mode->virt.x < mode->visible.x) {
+ if (mode->virt.y < mode->visible.y) {
mode->virt.y = mode->visible.y;
err--;
}
diff -uNr 20000130/degas/lib/libggi/display/file/visual.c
degas/lib/libggi/display/file/visual.c
--- 20000130/degas/lib/libggi/display/file/visual.c Sat Jan 30 07:08:17 1999
+++ degas/lib/libggi/display/file/visual.c Sun Feb 6 20:48:51 2000
@@ -33,14 +33,21 @@
#include <ggi/internal/ggi-dl.h>
#include <ggi/display/file.h>
-#define NUM_OPTS 3
-static gg_option file_options[NUM_OPTS] =
+static gg_option file_options[] =
{
{ "flushcmd", "" },
{ "flushframe", "0" },
{ "flushtime", "0.0" }
};
+#define OPT_FLUSHCMD 0
+#define OPT_FLUSHFRAME 1
+#define OPT_FLUSHTIME 2
+
+#define NUM_OPTS (sizeof(file_options)/sizeof(gg_option))
+
+
+
int GGIdlinit(ggi_visual *vis, const char *args,void *argptr)
{
FileHook *ff;
@@ -87,9 +94,9 @@
}
ff->filename = strdup(args);
- ff->flushcmd = file_options[0].result[0] ? strdup(file_options[0].result) :
NULL;
- ff->flushevery = atoi(file_options[1].result);
- fltime = atof(file_options[2].result);
+ ff->flushcmd = file_options[OPT_FLUSHCMD].result[0] ?
+strdup(file_options[OPT_FLUSHCMD].result) : NULL;
+ ff->flushevery = atoi(file_options[OPT_FLUSHFRAME].result);
+ fltime = atof(file_options[OPT_FLUSHTIME].result);
ff->flushcnt = 0;
ff->flushtotal = 0;
gettimeofday(&ff->flushlast,NULL);
diff -uNr 20000130/degas/lib/libggi/include/ggi/display/file.h
degas/lib/libggi/include/ggi/display/file.h
--- 20000130/degas/lib/libggi/include/ggi/display/file.h Tue Jan 19 07:07:25
1999
+++ degas/lib/libggi/include/ggi/display/file.h Sun Feb 6 20:43:42 2000
@@ -86,9 +86,11 @@
extern void _ggi_file_close_file(ggi_visual *vis);
extern void _ggi_file_rewind(ggi_visual *vis);
extern void _ggi_file_flush(ggi_visual *vis);
+extern char *_ggi_file_get_extension(char *filename);
extern void _ggi_file_write_byte(ggi_visual *vis, int val);
extern void _ggi_file_write_word(ggi_visual *vis, int val);
+extern void _ggi_file_write_longword(ggi_visual *vis, long val);
extern void _ggi_file_write_string(ggi_visual *vis, char *str);
extern void _ggi_file_write_zeros(ggi_visual *vis, int count);