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);
 

Reply via email to