rnd-20091024-1-src
[rocksndiamonds.git] / src / game_sp / vb_lib.c
index c4df2cf3d853ce0493659bcec7a4623251287b6b..d88c8e36061e3d3d67685232923c4c8df4f15e2b 100644 (file)
@@ -9,6 +9,8 @@
 
 #include "main_sp.h"
 
+#include <sys/stat.h>
+
 
 /* helper functions for constructs not supported by C */
 void *REDIM_1D(int a, int b, int c)
@@ -55,16 +57,25 @@ char *INT_TO_STR(int a)
 
 boolean STRING_IS_LIKE(char *a, char *b)
 {
-  return 0;
+  if (*b == '*')               // something like "*.sp"
+  {
+    return (strSuffix(a, &b[1]));
+  }
+  else
+  {
+    // more sophisticated patterns currently not supported
+
+    return 0;
+  }
 }
 
 
-void FILE_GET(FILE *a, int b, void *c, int d)
+void FILE_GET(FILE *file, int offset, void *buffer, int num_bytes)
 {
-  fseek(a, b, SEEK_SET);
+  fseek(file, offset - 1, SEEK_SET);
 
-  while (d--)
-    *(byte *)c++ = fgetc(a);
+  while (num_bytes--)
+    *(byte *)buffer++ = fgetc(file);
 }
 
 int FILE_PUT(FILE *a, int b, void *c, int d)
@@ -154,12 +165,21 @@ char *Hex(int a)
 
 int FileLen(char *a)
 {
-  return 0;
+  struct stat buffer;
+
+  if (stat(a, &buffer) == 0)
+  {
+    return buffer.st_size;
+  }
+  else
+  {
+    return 0;
+  }
 }
 
 long GetTickCount()
 {
-  return 0;
+  return random_linux_libc(RANDOM_SIMPLE);
 }
 
 int GetAttr(char *a)