Added PROPERTY_MAX_VALUE and PROPERTY_MAX_NAME defines to libutil.h so

that applications know how large of a buffer they must allocate before
calling property_find().  Also added a $FreeBSD$ tag while I'm here.

Approved by:	jkh
This commit is contained in:
Murray Stokely 2000-11-08 11:57:03 +00:00
parent edd5302d4d
commit f9f81f78d2
Notes: svn2git 2020-12-20 02:59:44 +00:00
svn path=/head/; revision=68488
3 changed files with 13 additions and 9 deletions

View File

@ -31,6 +31,9 @@
#include <sys/cdefs.h>
#define PROPERTY_MAX_NAME 64
#define PROPERTY_MAX_VALUE 512
/* for properties.c */
typedef struct _property {
struct _property *next;

View File

@ -66,7 +66,9 @@ of error.
.Fn property_find
Returns the associated value string for the property named
.Fa name
if found, otherwise NULL.
if found, otherwise NULL. The value returned may be up to
.Dv PROPERTY_MAX_VALUE
bytes in length.
.Pp
.Fn properties_free
is used to free the structure returned by

View File

@ -28,6 +28,8 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
* $FreeBSD$
*
*/
#include <ctype.h>
@ -39,9 +41,6 @@
#include <sys/types.h>
#include <libutil.h>
#define MAX_NAME 64
#define MAX_VALUE 512
static properties
property_alloc(char *name, char *value)
{
@ -58,8 +57,8 @@ properties
properties_read(int fd)
{
properties head, ptr;
char hold_n[MAX_NAME + 1];
char hold_v[MAX_VALUE + 1];
char hold_n[PROPERTY_MAX_NAME + 1];
char hold_v[PROPERTY_MAX_VALUE + 1];
char buf[BUFSIZ * 4];
int bp, n, v, max;
enum { LOOK, COMMENT, NAME, VALUE, MVALUE, COMMIT, FILL, STOP } state;
@ -97,7 +96,7 @@ properties_read(int fd)
continue;
}
else if (isalnum(ch) || ch == '_') {
if (n >= MAX_NAME) {
if (n >= PROPERTY_MAX_NAME) {
n = 0;
state = COMMENT;
}
@ -146,7 +145,7 @@ properties_read(int fd)
state = COMMIT;
}
else {
if (v >= MAX_VALUE) {
if (v >= PROPERTY_MAX_VALUE) {
state = COMMENT;
v = n = 0;
break;
@ -158,7 +157,7 @@ properties_read(int fd)
case MVALUE:
/* multiline value */
if (v >= MAX_VALUE) {
if (v >= PROPERTY_MAX_VALUE) {
warn("properties_read: value exceeds max length");
state = COMMENT;
n = v = 0;