The following sample .c code is a user exit that calls the AUDITFILE emitter.
/*******************************************************************************
*
* Copyright (C) 1984-2015 Micro Focus International Ltd.
* All rights reserved.
*
******************************************************************************/
#ifdef _WIN32
# define DLLEXPORT __declspec(dllexport)
#else /* _WIN32 */
# define DLLEXPORT
#endif /* _WIN32 */
#include <string.h>
#include <stdarg.h>
#include <stdio.h>
#include "mfaudit.h"
/******************************************************************************/
/* AUDITFILE emitter exit */
/* */
/* AUDITFILE_EMITTER_EXIT(cobuns32_t function, */
/* cobuns8_t *emitter_name, */
/* ...) */
/* */
/* On input: */
/* */
/* function = exit function */
/* */
/* emitter_name = emitter instance name */
/* */
/* ... = dependent upon exit function */
/* */
/* On output: */
/* */
/* <nothing> */
/* */
/* Function returns: */
/* */
/* 0 = normal completion */
/* non-zero = dependent upon exit function */
/******************************************************************************/
DLLEXPORT cobrtncode_t
AUDITFILE_EMITTER_EXIT(
cobuns32_t function,
cobuns8_t *emitter_name,
...)
{
va_list args;
cobuns8_t *filename;
va_start(args, emitter_name);
switch(function)
{
case AUDITFILE_EXIT_FUNC_INIT:
printf("Initialising emitter %s\n", emitter_name);
break;
case AUDITFILE_EXIT_FUNC_DEINIT:
printf("De-initialising emitter %s\n", emitter_name);
break;
case AUDITFILE_EXIT_FUNC_FILE_ACTIVE:
filename = (cobuns8_t *)va_arg(args, cobuns8_t *);
printf("Emitter %s; active file %s\n", emitter_name, filename);
break;
case AUDITFILE_EXIT_FUNC_FILE_FULL:
filename = (cobuns8_t *)va_arg(args, cobuns8_t *);
printf("Emitter %s; full file %s\n", emitter_name, filename);
break;
case AUDITFILE_EXIT_FUNC_NO_FILES:
printf("Emitter %s; no available files\n", emitter_name);
break;
default:
printf("Emitter %s; unknown function %d\n", emitter_name, function);
break;
}
va_end(args);
return 0;
}