#include #include #include #include #include #include #include typedef int (*func) (...); extern "C" { int mail$mailfile_begin (...); int mail$mailfile_end (...); int mail$mailfile_open (...); int mail$mailfile_close (...); int mail$mailfile_info_file (...); int mail$message_begin (...); int mail$message_select (...); int mail$message_end (...); } typedef struct itmlst { short buffer_length; short item_code; long buffer_address; long return_length_address; } ITMLST; void main (void) { int message_context = 0, file_context = 0, messages_selected = 0, total_folders = 0, total_messages = 0; ITMLST nulllist[] = {{0,0,0,0}}, message_in_itmlst[] = { {sizeof(file_context),MAIL$_MESSAGE_FILE_CTX,(long) &file_context,0}, {0,0,0,0}}, mailfile_info_itmlst[] = { {4,MAIL$_MAILFILE_FOLDER_ROUTINE,(long) ((func) folder_routine),0}, {4,MAIL$_MAILFILE_USER_DATA,(long) &list,0}, {0,0,0,0}}, message_select_in_itmlst[] = { {0,MAIL$_MESSAGE_FOLDER,0,0}, {0,0,0,0}}, message_select_out_itmlst[] = { {sizeof(messages_selected),MAIL$_MESSAGE_SELECTED,(long) &messages_selected,0}, {0,0,0,0}}; if (mail$mailfile_begin(&file_context, nulllist, nulllist) == SS$_NORMAL) { if (mail$mailfile_open(&file_context, nulllist, nulllist) == SS$_NORMAL) { if (mail$mailfile_info_file(&file_context,mailfile_info_itmlst,nulllist) == SS$_NORMAL) { if (mail$message_begin(&message_context,message_in_itmlst,nulllist) == SS$_NORMAL) { message_select_in_itmlst[0].buffer_address = (long) tmp->folder_name; message_select_in_itmlst[0].buffer_length = strlen(tmp->folder_name); if (mail$message_select(&message_context,message_select_in_itmlst,message_select_out_itmlst) == SS$_NORMAL) { printf("Folder %s has %d messages\n",tmp->folder_name, messages_selected); total_messages += messages_selected; } } printf("Total of %d messages in %d folders\n",total_messages, total_folders); } mail$message_end(&message_context, nulllist, nulllist); } mail$mailfile_close(&file_context, nulllist, nulllist); } mail$mailfile_end(&file_context, nulllist, nulllist); } }