#include "main_sp.h"
+#include <sys/stat.h>
+
/* helper functions for constructs not supported by C */
+
+#if 1
+
+void *REDIM_1D(int data_size, int first_data_pos, int last_data_pos)
+{
+ /* for a buffer of n elements, first_data_pos is 0 and last_data_pos is n-1 */
+ /* a negative value for "first_data_pos" indicates a preceding buffer zone */
+
+ int data_count = last_data_pos - first_data_pos + 1;
+ int buffer_size = data_size * data_count;
+ int buffer_start = data_size * first_data_pos;
+
+ return (checked_calloc(buffer_size) - buffer_start);
+}
+
+#else
+
void *REDIM_1D(int a, int b, int c)
{
return checked_calloc(a * (c - b + 1));
}
+#endif
+
void *REDIM_2D(int a, int b, int c, int d, int e)
{
return 0;
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);
+ if (offset != -1)
+ 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)
int FileLen(char *a)
{
- return 0;
+ struct stat buffer;
+
+ if (stat(a, &buffer) == 0)
+ {
+ return buffer.st_size;
+ }
+ else
+ {
+ return 0;
+ }
}
-long GetTickCount()
+long MyGetTickCount()
{
- return 0;
+ return random_linux_libc(RANDOM_SIMPLE);
}
int GetAttr(char *a)
return;
}
+#if 0
+
long GetTempPath(long a, char *b)
{
return 0;
}
+
+#endif