20 #ifndef MENU_INDEX_FILE
38 #if 0 && !(defined(FREEFORM) && defined(XVT))
50 #ifndef ROWSIZE_STRUCT_DEFINED
51 #define ROWSIZE_STRUCT_DEFINED
58 #define ulong unsigned long
138 typedef struct menu_open_struct {
139 MENU_INDEX_PTR mindex;
141 int menu_navigation_count;
148 char *menu_file_name;
149 } MENU_OPEN, *MENU_OPEN_PTR;
154 #define MENU_SECTION_TYPE_SELECTION 0
155 #define MENU_SECTION_TYPE_HELP 1
158 #define MENU_DIRECTIVE_NEW_SECTION 0
159 #define MENU_DIRECTIVE_TERM_SECTION 1
160 #define MENU_DIRECTIVE_NEW_MENU_FILE 2
161 #define MENU_DIRECTIVE_DATA_FILE 3
164 #define MENU_INDEX_FILE 0
165 #define MENU_INDEX_MEM 1
168 #define MENU_IN_FILE 0
169 #define MENU_IN_MEM 1
172 #define MENU_DIR_SEP '\\'
175 #define MENU_UNTITLED "Untitled"
178 #define MENU_TEXT_CONTENT "ASCII"
181 #define MENU_DATA_SECTION "_DATASEC"
184 #define MENU_INDEX_SECTION "*MENU INDEX"
185 #define MENU_INDEX_SECTION_LEN 11
188 #define MENU_TEXT_CONTENT_SEC "TEXT_CONTENT"
190 #define MENU_FOPEN_R "rb"
191 #define MENU_FOPEN_W "wb"
192 #define MENU_FOPEN_U "r+b"
204 #ifndef MENU_ERR_PUSH
205 #define MENU_ERR_PUSH(a, b, c) err_push(b, c)
213 int mn_index_find_title(MENU_INDEX_PTR mindex,
char *postfix, ROW_SIZES_PTR rowsize,
char **buffer);
215 char *
mn_binary_fgets(
char *
string,
int n, FILE *stream,
char *file_eol_str);
219 int mn_sec_titles_to_buf(MENU_INDEX_PTR mindex,
char *buf_to_use,
int *num_sections,
char **buf_filled);
220 int mn_section_get(MENU_INDEX_PTR mindex,
char *buf_to_use, ROW_SIZES_PTR rowsize,
char **buf_filled);
221 int mn_help_sec_find(MENU_INDEX_PTR mindex,
char *lookup, ROW_SIZES_PTR rowsize,
char *section_name);
222 int mn_sec_process(MENU_INDEX_PTR mindex,
char *section_title, ROW_SIZES_PTR rowsize,
char *parent_menu, MENU_SECTION_PTR *menu_sec);
223 int mn_help_sec_get(MENU_INDEX_PTR mindex,
char *lookup, ROW_SIZES_PTR rowsize,
char **buf_filled);
234 #define MENU_NEXT_SELECTION(a) ((a)->next_selection)
235 #define MENU_PREV_SELECTION(a) ((a)->previous_selection)
236 #define MENU_REWIND_SELECTION_DLL(a) {while((a)->previous_selection) (a)=(a)->previous_selection;}
239 #define MENU_REMOVE_SELECTION(rmv, newptr) { \
241 if(rmv->previous_selection){ \
242 rmv->previous_selection->next_selection = rmv->next_selection; \
243 newptr = rmv->previous_selection; \
245 if(rmv->next_selection){ \
246 rmv->next_selection->previous_selection = rmv->previous_selection; \
247 newptr = rmv->next_selection; \
249 mn_selection_free(rmv); \
253 #define MENU_INSERT_SELECTION(ins, list) { \
255 ins->previous_selection = list; \
256 ins->next_selection = list->next_selection; \
257 list->next_selection = ins; \
258 if(ins->next_selection) \
259 ins->next_selection->previous_selection = ins; \
268 #define mAlloc(sz) mn_malloc(sz, __LINE__, ROUTINE_NAME)
269 #define reAlloc(mptr, sz) mn_realloc(mptr, sz, __LINE__, ROUTINE_NAME)
270 #define fRee(sz) mn_free(sz, __LINE__, ROUTINE_NAME)
272 void *mn_malloc(
size_t memsize,
int linenum,
char *routine);
273 void *mn_realloc(
void *memblk,
size_t memsize,
int linenum,
char *routine);
274 void mn_free(
void *memblk,
int linenum,
char *routine);
276 #define MEMTRAPFILE "c:\\memtrap"
280 #define mAlloc(sz) memMalloc(sz, "menu")
281 #define reAlloc(mptr, sz) memRealloc(mptr, sz, "menu")
282 #define fRee(sz) memFree(sz, "menu")
289 char *mn_strnstr(
char *pcPattern,
char *pcText,
size_t uTextLen);
290 #define MN_STRNSTR(strpattern, strtext, textsize) mn_strnstr(strpattern, strtext, textsize)
295 #define MN_STRNSTR(strpattern, strtext, textsize) ff_strnstr(strpattern, strtext, textsize)