1 /****************************************************************************
2  * odbf.c
3  ****************************************************************************
4  * dbf Reader and Converter for dBASE files
5  * Implementation
6  *
7  * Author: Bjoern Berg <clergyman@gmx.de>
8  * Modifications: Uwe Steinmann <uwe@steinmann.cx>
9  *
10  ****************************************************************************
11  * Functions to write dBASE files
12  ****************************************************************************
13  * $Id: odbf.c,v 1.1 2004/09/07 16:04:36 steinm Exp $
14  ***************************************************************************/
15 
16 #include <libdbf/libdbf.h>
17 #include "dbf.h"
18 
19 static P_DBF *op_dbf;
20 
21 /* writeDBFHeader() {{{
22  * creates the DBF Header with the information provided by DB_FIELD
23  */
24 int
writeDBFHeader(FILE * fp,P_DBF * p_dbf,const char * in,const char * out)25 writeDBFHeader (FILE *fp, P_DBF *p_dbf,
26     const char *in /* __unused */, const char *out /* __unused */)
27 {
28 	int i, columns;
29 	char *fields, *fieldptr;
30 
31 	columns = dbf_NumCols(p_dbf);
32 	if(NULL == (fields = malloc(columns * SIZE_OF_DB_FIELD))) {
33 		return -1;
34 	}
35 
36 	fieldptr = fields;
37 	for (i = 0; i < columns; i++) {
38 		char field_type;
39 		const char *field_name;
40 		int field_length, field_decimals;
41 		field_type = dbf_ColumnType(p_dbf, i);
42 		field_name = dbf_ColumnName(p_dbf, i);
43 		field_length = dbf_ColumnSize(p_dbf, i);
44 		field_decimals = dbf_ColumnDecimals(p_dbf, i);
45 		dbf_SetField((DB_FIELD *)fieldptr, field_type, field_name, field_length, field_decimals);
46 		fieldptr += SIZE_OF_DB_FIELD;
47 	}
48 	op_dbf = dbf_CreateFH(fileno(fp), (DB_FIELD *)fields, columns);
49 
50 	return 0;
51 }
52 /* }}} */
53 
54 /* writeDBFFooter() {{{
55  * creates the DBF Footer
56  */
writeDBFFooter(FILE * fp,P_DBF * p_dbf,const char * filename,const char * export_filename)57 int writeDBFFooter (FILE *fp, P_DBF *p_dbf,
58     const char *filename, const char *export_filename)
59 {
60 	//dbf_Close(op_dbf);
61 }
62 /* }}} */
63 
64 /* writeDBFLine {{{
65  * creates a line in the DBF document for each data set
66  */
67 int
writeDBFLine(FILE * fp,P_DBF * p_dbf,const unsigned char * value,int record_length,const char * in,const char * out)68 writeDBFLine(FILE *fp, P_DBF *p_dbf,
69     const unsigned char *value, int record_length,
70     const char *in /* unused */, const char *out /* unused */)
71 {
72 	if(0 > dbf_WriteRecord(op_dbf, value, record_length))
73 		exit(1);
74 	return 0;
75 }
76 /* }}} */
77 
78 /*
79  * Local variables:
80  * tab-width: 4
81  * c-basic-offset: 4
82  * End:
83  * vim600: sw=4 ts=4 fdm=marker
84  * vim<600: sw=4 ts=4
85  */
86