Demo of use of errors in applications.

This commit is contained in:
Dr. Stephen Henson 2014-01-29 14:03:05 +00:00
parent d162584b11
commit 9f9ab1dc66
5 changed files with 75 additions and 0 deletions

17
demos/err/Makefile Normal file
View File

@ -0,0 +1,17 @@
# Minimal makefile to generate error codes and link a test app
SRC= main.c
OBJ= main.o
HEADER=test_err.h
ERROBJ= test_err.o
CC=gcc
CFLAGS=-I../../include
LDFLAGS=-L../.. -lcrypto
PERL=perl
testapp: $(OBJ) $(ERROBJ) $(HEADER)
$(CC) -o testapp $(OBJ) $(ERROBJ) $(LDFLAGS)
errors:
$(PERL) ../../util/mkerr.pl -conf test_err.ec \
-nostatic -write $(SRC)

12
demos/err/README Normal file
View File

@ -0,0 +1,12 @@
This directory contains a simple example of how to use the ERR functions of
OpenSSL to add error codes to an external application.
To test it first do "make errors". This will build error codes and add them
to the header files. It will also create some functions to load error codes.
Notice how "test_err.h" is updated after this call and the C source file
"test_err.c" is created. These names are in the test_err.ec file passed to the
mkerr.pl script.
Then do "make" which will build the test application.

19
demos/err/main.c Normal file
View File

@ -0,0 +1,19 @@
#include <openssl/err.h>
#include "test_err.h"
/* Simple error test routine */
void a_test_function(void)
{
TESTerr(TEST_F_A_TEST_FUNCTION, TEST_R_TEST_REASON_CODE);
TESTerr(TEST_F_A_TEST_FUNCTION, TEST_R_ANOTHER_TEST_REASON_CODE);
ERR_add_error_data(1, "some additional error data");
}
int main(int argc, char **argv)
{
ERR_load_TEST_strings();
a_test_function();
ERR_print_errors_fp(stderr);
}

3
demos/err/test_err.ec Normal file
View File

@ -0,0 +1,3 @@
# Details: name of library, header file to use and
# file to output error codes to.
L TEST test_err.h test_err.c

24
demos/err/test_err.h Normal file
View File

@ -0,0 +1,24 @@
/* Demo of use of error library */
#ifndef TEST_ERR_H
#define TEST_ERR_H
#ifdef __cplusplus
extern "C" {
#endif
/* Test library name */
#define TEST_LIB_NAME "demo test library routines"
/* Normal header details go here */
/* Prototypes are picked up by the error script to generate strings for
* function names.
*/
void a_test_function(void);
/* Everything after this point is auto generated when you do
* "make errors"
*/