mirror of
https://git.freebsd.org/ports.git
synced 2025-07-18 01:39:16 -04:00
New maintainer: bob@eager.cx
Add new 'EXAMPLES' option Use OPTIONS helpers Spelling fixes for man pages Add a csv_get_blk_size() function PR: 215720 Submitted by: bob@eager.cx
This commit is contained in:
parent
983abfa234
commit
00adc5c753
Notes:
svn2git
2021-03-31 03:12:20 +00:00
svn path=/head/; revision=430461
5 changed files with 169 additions and 10 deletions
|
@ -3,15 +3,16 @@
|
||||||
|
|
||||||
PORTNAME= libcsv
|
PORTNAME= libcsv
|
||||||
PORTVERSION= 3.0.3
|
PORTVERSION= 3.0.3
|
||||||
|
PORTREVISION= 1
|
||||||
CATEGORIES= textproc
|
CATEGORIES= textproc
|
||||||
MASTER_SITES= SF/${PORTNAME}/${PORTNAME}/${PORTNAME}-${PORTVERSION}
|
MASTER_SITES= SF/${PORTNAME}/${PORTNAME}/${PORTNAME}-${PORTVERSION}
|
||||||
|
|
||||||
MAINTAINER= ports@FreeBSD.org
|
MAINTAINER= bob@eager.cx
|
||||||
COMMENT= Small, simple and fast CSV library
|
COMMENT= Small, simple and fast CSV library
|
||||||
|
|
||||||
LICENSE= LGPL21
|
LICENSE= LGPL21
|
||||||
|
|
||||||
OPTIONS_DEFINE= PROFILE
|
OPTIONS_DEFINE= EXAMPLES PROFILE
|
||||||
|
|
||||||
MAKEFILE= Makefile.lib
|
MAKEFILE= Makefile.lib
|
||||||
USES= uidfix
|
USES= uidfix
|
||||||
|
@ -21,17 +22,16 @@ PLIST_SUB= SHLIB_MAJOR="${SHLIB_MAJOR}"
|
||||||
|
|
||||||
SHLIB_MAJOR= 3
|
SHLIB_MAJOR= 3
|
||||||
|
|
||||||
.include <bsd.port.options.mk>
|
PROFILE_PLIST_SUB= PROFILE=""
|
||||||
|
PROFILE_MAKE_ENV_OFF= NO_PROFILE=true
|
||||||
.if ${PORT_OPTIONS:MPROFILE}
|
PROFILE_PLIST_SUB_OFF= PROFILE="@comment "
|
||||||
PLIST_SUB+= PROFILE=""
|
|
||||||
.else
|
|
||||||
MAKE_ENV+= NO_PROFILE=true
|
|
||||||
PLIST_SUB+= PROFILE="@comment "
|
|
||||||
.endif
|
|
||||||
|
|
||||||
do-configure:
|
do-configure:
|
||||||
@${SED} -e 's|%%SHLIB_MAJOR%%|${SHLIB_MAJOR}|' \
|
@${SED} -e 's|%%SHLIB_MAJOR%%|${SHLIB_MAJOR}|' \
|
||||||
< ${FILESDIR}/Makefile > ${WRKSRC}/${MAKEFILE}
|
< ${FILESDIR}/Makefile > ${WRKSRC}/${MAKEFILE}
|
||||||
|
|
||||||
|
do-install-EXAMPLES-on:
|
||||||
|
@${MKDIR} ${STAGEDIR}${EXAMPLESDIR}
|
||||||
|
(cd ${WRKSRC}/examples && ${COPYTREE_SHARE} . ${STAGEDIR}${EXAMPLESDIR})
|
||||||
|
|
||||||
.include <bsd.port.mk>
|
.include <bsd.port.mk>
|
||||||
|
|
127
textproc/libcsv/files/patch-csv.3
Normal file
127
textproc/libcsv/files/patch-csv.3
Normal file
|
@ -0,0 +1,127 @@
|
||||||
|
--- csv.3.orig 2013-01-10 00:04:17 UTC
|
||||||
|
+++ csv.3
|
||||||
|
@@ -1,4 +1,4 @@
|
||||||
|
-.TH CSV 3 "9 January 2013"
|
||||||
|
+.TH CSV 3 "2 January 2016"
|
||||||
|
.SH NAME
|
||||||
|
csv \- CSV parser and writer library
|
||||||
|
.SH SYNOPSIS
|
||||||
|
@@ -36,6 +36,9 @@ void csv_free(struct csv_parser *\fIp\fB
|
||||||
|
|
||||||
|
unsigned char csv_get_delim(struct csv_parser *\fIp\fB);
|
||||||
|
unsigned char csv_get_quote(struct csv_parser *\fIp\fB);
|
||||||
|
+void csv_set_delim(struct csv_parser *\fIp\fB, unsigned char \fIc\fB);
|
||||||
|
+void csv_set_quote(struct csv_parser *\fIp\fB, unsigned char \fIc\fP);
|
||||||
|
+
|
||||||
|
void csv_set_space_func(struct csv_parser *\fIp\fB, int (*\fIf\fB)(unsigned char));
|
||||||
|
void csv_set_term_func(struct csv_parser *\fIp\fB, int (*\fIf\fB)(unsigned char));
|
||||||
|
|
||||||
|
@@ -75,7 +78,7 @@ The idea behind parsing with \fBlibcsv\f
|
||||||
|
end-of-row events. \fBcsv_parse()\fP parses the data provided calling the
|
||||||
|
user-defined callback functions as it reads fields and rows.
|
||||||
|
When complete, \fBcsv_fini()\fP is called to finish processing the current
|
||||||
|
-field and make a final call to the callback functions if neccessary.
|
||||||
|
+field and make a final call to the callback functions if necessary.
|
||||||
|
\fBcsv_free()\fP is then called to free the parser object.
|
||||||
|
\fBcsv_error()\fP and \fBcsv_strerror()\fP provide information about errors
|
||||||
|
encountered by the functions.
|
||||||
|
@@ -147,8 +150,8 @@ Multiple options can be specified by OR-
|
||||||
|
.RE
|
||||||
|
|
||||||
|
By default \fIcb2\fP is not called when rows that do not contain any fields
|
||||||
|
-are encountered. This behavior is meant to accomodate files using
|
||||||
|
-only either a linefeed or a carriage return as a record seperator to
|
||||||
|
+are encountered. This behavior is meant to accommodate files using
|
||||||
|
+only either a linefeed or a carriage return as a record separator to
|
||||||
|
be parsed properly while at the same time being able to parse files with rows
|
||||||
|
terminated by multiple characters from resulting in blank rows after
|
||||||
|
each actual row of data (for example, processing a text CSV file
|
||||||
|
@@ -178,7 +181,7 @@ functions may be called many times durin
|
||||||
|
depending on the amount of data being processed in a given call.
|
||||||
|
.PP
|
||||||
|
\fBcsv_parse()\fP returns the number of bytes processed, on a successful
|
||||||
|
-call this will be \fIlen\fP, if it is less than len an error has occured.
|
||||||
|
+call this will be \fIlen\fP, if it is less than len an error has occurred.
|
||||||
|
An error can occur, for example, if there is insufficient memory
|
||||||
|
to store the contents of the current field in the entry buffer.
|
||||||
|
An error can also occur if malformed data is encountered while running
|
||||||
|
@@ -192,7 +195,7 @@ of the error. \fBcsv_error()\fP takes a
|
||||||
|
.PP
|
||||||
|
.RS
|
||||||
|
.TP
|
||||||
|
-\fBCSV_EPARSE\fP\ \ \ A parse error has occured while in strict mode
|
||||||
|
+\fBCSV_EPARSE\fP\ \ \ A parse error has occurred while in strict mode
|
||||||
|
.TP
|
||||||
|
\fBCSV_ENOMEM\fP\ \ \ There was not enough memory while attempting to increase the entry buffer for the current field
|
||||||
|
.TP
|
||||||
|
@@ -210,7 +213,7 @@ to call the \fBcsv_fini()\fP function.
|
||||||
|
function with any remaining data in the entry buffer (if there is
|
||||||
|
any) and call the \fIcb2\fP function unless we are already at the end of a row
|
||||||
|
(the last byte processed was a newline character for example).
|
||||||
|
-It is neccessary to call this function because the file being
|
||||||
|
+It is necessary to call this function because the file being
|
||||||
|
processed might not end with a carriage return or newline but the
|
||||||
|
data that has been read in to this point still needs to be
|
||||||
|
submitted to the callback routines.
|
||||||
|
@@ -293,13 +296,14 @@ CUSTOMIZING THE PARSER
|
||||||
|
.br
|
||||||
|
The \fBcsv_set_delim()\fP and \fBcsv_set_quote()\fP functions provide a
|
||||||
|
means to change the characters that the parser will consider the delimiter
|
||||||
|
-and quote characters respetively, cast to unsigned char. \fBcsv_get_delim()\fP and \fBcsv_get_delim()\fP
|
||||||
|
+and quote characters respetively, cast to unsigned char. \fBcsv_get_delim()\fP
|
||||||
|
+and \fBcsv_set_delim()\fP
|
||||||
|
return the current delimiter and quote characters respectively. When
|
||||||
|
\fBcsv_init()\fP is called the delimiter is set to \fBCSV_COMMA\fP and the quote
|
||||||
|
to \fBCSV_QUOTE\fP. Note that the rest of the CSV conventions still apply
|
||||||
|
when these functions are used to change the delimiter and/or quote characters,
|
||||||
|
fields containing the new quote character or delimiter must be quoted and quote
|
||||||
|
-characters must be escaped with an immediately preceeding instance of the same
|
||||||
|
+characters must be escaped with an immediately preceding instance of the same
|
||||||
|
character.
|
||||||
|
Additionally, the \fBcsv_set_space_func()\fP and \fBcsv_set_term_func()\fP
|
||||||
|
allow a user-defined function to be provided which will be used determine
|
||||||
|
@@ -333,7 +337,7 @@ reflect the most common usage of the for
|
||||||
|
.PP
|
||||||
|
.RS
|
||||||
|
.TP
|
||||||
|
-Fields are seperated with commas.
|
||||||
|
+Fields are separated with commas.
|
||||||
|
.TP
|
||||||
|
Rows are delimited by newline sequences (see below).
|
||||||
|
.TP
|
||||||
|
@@ -385,7 +389,7 @@ will be interpreted as 3 fields, equival
|
||||||
|
RFC 4180 limits the allowable characters in a CSV field, \fBlibcsv\fP
|
||||||
|
allows any character to be present in a field provided it adheres
|
||||||
|
to the conventions mentioned above. This makes it possible to
|
||||||
|
-store binary data in CSV format, an attribute that many application rely on.
|
||||||
|
+store binary data in CSV format, an attribute that many applications rely on.
|
||||||
|
.PP
|
||||||
|
RFC 4180 states that a Carriage Return plus Linefeed combination is
|
||||||
|
used to delimit records, \fBlibcsv\fP allows any combination of Carriage
|
||||||
|
@@ -409,7 +413,7 @@ would be parsed equivalently to the corr
|
||||||
|
.fi
|
||||||
|
This is often desirable as there are some applications that do
|
||||||
|
not adhere to the specifications previously discussed. However,
|
||||||
|
-there are instances where malformed CSV data is ambigious, namely
|
||||||
|
+there are instances where malformed CSV data is ambiguous, namely
|
||||||
|
when a comma or newline is the next non-space character following
|
||||||
|
a quote such as:
|
||||||
|
.nf
|
||||||
|
@@ -420,7 +424,7 @@ This could either be parsed as a single
|
||||||
|
|
||||||
|
\fBSally said "Hello", Wally said "Goodbye"\fP
|
||||||
|
|
||||||
|
-or as 2 seperate fields:
|
||||||
|
+or as 2 separate fields:
|
||||||
|
|
||||||
|
.fi
|
||||||
|
\fBSally said "Hello\fP
|
||||||
|
@@ -431,7 +435,7 @@ Since the data is malformed, there is no
|
||||||
|
before the comma is meant to be a literal quote or if it signifies
|
||||||
|
the end of the field. This is of course not an issue for properly
|
||||||
|
formed data as all quotes must be escaped. \fBlibcsv\fP will parse this
|
||||||
|
-example as 2 seperate fields.
|
||||||
|
+example as 2 separate fields.
|
||||||
|
|
||||||
|
\fBlibcsv\fP provides a strict mode that will return with a parse error
|
||||||
|
if a quote is seen inside a non-quoted field or if a non-escaped
|
10
textproc/libcsv/files/patch-csv.h
Normal file
10
textproc/libcsv/files/patch-csv.h
Normal file
|
@ -0,0 +1,10 @@
|
||||||
|
--- csv.h.orig 2012-12-28 22:50:44 UTC
|
||||||
|
+++ csv.h
|
||||||
|
@@ -79,6 +79,7 @@ void csv_set_term_func(struct csv_parser
|
||||||
|
void csv_set_realloc_func(struct csv_parser *p, void *(*)(void *, size_t));
|
||||||
|
void csv_set_free_func(struct csv_parser *p, void (*)(void *));
|
||||||
|
void csv_set_blk_size(struct csv_parser *p, size_t);
|
||||||
|
+size_t csv_get_blk_size(struct csv_parser *p);
|
||||||
|
size_t csv_get_buffer_size(struct csv_parser *p);
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
18
textproc/libcsv/files/patch-libcsv.c
Normal file
18
textproc/libcsv/files/patch-libcsv.c
Normal file
|
@ -0,0 +1,18 @@
|
||||||
|
--- libcsv.c.orig 2012-12-28 22:50:44 UTC
|
||||||
|
+++ libcsv.c
|
||||||
|
@@ -259,6 +259,15 @@ csv_set_blk_size(struct csv_parser *p, s
|
||||||
|
}
|
||||||
|
|
||||||
|
size_t
|
||||||
|
+csv_get_blk_size(struct csv_parser *p)
|
||||||
|
+{
|
||||||
|
+ /* Get the block size used to increment buffer size */
|
||||||
|
+ if (p)
|
||||||
|
+ return p->blk_size;
|
||||||
|
+ return 0;
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
+size_t
|
||||||
|
csv_get_buffer_size(struct csv_parser *p)
|
||||||
|
{
|
||||||
|
/* Get the size of the entry buffer */
|
|
@ -4,3 +4,7 @@ lib/libcsv.so
|
||||||
lib/libcsv.so.%%SHLIB_MAJOR%%
|
lib/libcsv.so.%%SHLIB_MAJOR%%
|
||||||
%%PROFILE%%lib/libcsv_p.a
|
%%PROFILE%%lib/libcsv_p.a
|
||||||
man/man3/csv.3.gz
|
man/man3/csv.3.gz
|
||||||
|
%%PORTEXAMPLES%%%%EXAMPLESDIR%%/csvfix.c
|
||||||
|
%%PORTEXAMPLES%%%%EXAMPLESDIR%%/csvinfo.c
|
||||||
|
%%PORTEXAMPLES%%%%EXAMPLESDIR%%/csvtest.c
|
||||||
|
%%PORTEXAMPLES%%%%EXAMPLESDIR%%/csvvalid.c
|
||||||
|
|
Loading…
Add table
Reference in a new issue