X-Git-Url: https://git.artsoft.org/?a=blobdiff_plain;f=src%2Fgame_sp%2Fvb_lib.c;h=f9372a1ae10774b7e664f78cb32d7fa686f75587;hb=34e8c8894f9aa655a87577c946c31a3f9b6134c5;hp=d32a62f85b9a8e2c359f79ebbba75e4267081f56;hpb=0f5b7f63f2d3d75ba646795a3c1ea9fc4cee4845;p=rocksndiamonds.git diff --git a/src/game_sp/vb_lib.c b/src/game_sp/vb_lib.c index d32a62f8..f9372a1a 100644 --- a/src/game_sp/vb_lib.c +++ b/src/game_sp/vb_lib.c @@ -9,13 +9,34 @@ #include "main_sp.h" +#include + /* 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; @@ -55,13 +76,23 @@ 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 *file, int offset, void *buffer, int num_bytes) { - fseek(file, offset - 1, SEEK_SET); + if (offset != -1) + fseek(file, offset - 1, SEEK_SET); while (num_bytes--) *(byte *)buffer++ = fgetc(file); @@ -154,12 +185,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() +long MyGetTickCount() { - return 0; + return random_linux_libc(RANDOM_SIMPLE); } int GetAttr(char *a) @@ -167,17 +207,16 @@ int GetAttr(char *a) return 0; } -void DoEvents() -{ - return; -} - void SaveSetting(const char * a, const char *b, char *c, int d) { return; } +#if 0 + long GetTempPath(long a, char *b) { return 0; } + +#endif