1 // ----------------------------------------------------------------------------
3 // ----------------------------------------------------------------------------
15 /* helper functions for constructs not supported by C */
19 void *REDIM_1D(int data_size, int first_data_pos, int last_data_pos)
21 /* for a buffer of n elements, first_data_pos is 0 and last_data_pos is n-1 */
22 /* a negative value for "first_data_pos" indicates a preceding buffer zone */
24 int data_count = last_data_pos - first_data_pos + 1;
25 int buffer_size = data_size * data_count;
26 int buffer_start = data_size * first_data_pos;
28 return (checked_calloc(buffer_size) - buffer_start);
33 void *REDIM_1D(int a, int b, int c)
35 return checked_calloc(a * (c - b + 1));
40 void *REDIM_2D(int a, int b, int c, int d, int e)
45 boolean IS_NOTHING(void *a, int b)
50 void SET_TO_NOTHING(void *a, int b)
55 void MESSAGE_BOX(char *a)
61 char *CAT(const char *a, ...)
66 char *GET_PATH(char *a, ...)
71 char *INT_TO_STR(int a)
77 boolean STRING_IS_LIKE(char *a, char *b)
79 if (*b == '*') // something like "*.sp"
81 return (strSuffix(a, &b[1]));
85 // more sophisticated patterns currently not supported
92 void FILE_GET(FILE *file, int offset, void *buffer, int num_bytes)
95 fseek(file, offset - 1, SEEK_SET);
98 *(byte *)buffer++ = fgetc(file);
101 int FILE_PUT(FILE *a, int b, void *c, int d)
107 /* this is just a workaround -- handle array definitions later */
108 void *Array(int a, ...)
114 /* VB functions that do not return "int" (and would cause compiler errors) */
120 char *Left(char *a, int b)
125 char *left(char *a, int b)
130 char *Right(char *a, int b)
135 char *right(char *a, int b)
140 char *StrReverse(char *a)
145 int InStr(int a, char *b, char *c)
155 char *Dir_Without_Args()
170 char *String(int a, char *b)
190 if (stat(a, &buffer) == 0)
192 return buffer.st_size;
202 return random_linux_libc(RANDOM_SIMPLE);
215 void SaveSetting(const char * a, const char *b, char *c, int d)
220 long GetTempPath(long a, char *b)