summaryrefslogtreecommitdiff
path: root/source3/param/loadparm.c
diff options
context:
space:
mode:
authorJames Peach <jpeach@samba.org>2006-02-28 00:59:14 +0000
committerGerald (Jerry) Carter <jerry@samba.org>2007-10-10 11:10:51 -0500
commit51d3bbe2858c8ed1afd9b3fd46ae952fd22d48f0 (patch)
tree4b5ec690e2aae3dab7150e1ee1dd70eaaa246659 /source3/param/loadparm.c
parent554155473b66cb184d1b4f0831d494766f4bc259 (diff)
downloadsamba-51d3bbe2858c8ed1afd9b3fd46ae952fd22d48f0.tar.gz
samba-51d3bbe2858c8ed1afd9b3fd46ae952fd22d48f0.tar.bz2
samba-51d3bbe2858c8ed1afd9b3fd46ae952fd22d48f0.zip
r13736: Don't assume that printf can handle string arguments being NULL. Tidy
up typing and tighten error checking a little. (This used to be commit 37e12a196b1b1ee57b17a21226ba55d3aa6c69a5)
Diffstat (limited to 'source3/param/loadparm.c')
-rw-r--r--source3/param/loadparm.c31
1 files changed, 17 insertions, 14 deletions
diff --git a/source3/param/loadparm.c b/source3/param/loadparm.c
index 92719d9a3a..8c8afbfbe7 100644
--- a/source3/param/loadparm.c
+++ b/source3/param/loadparm.c
@@ -2152,14 +2152,17 @@ static param_opt_struct *get_parametrics(int snum, const char *type, const char
}
+#define MISSING_PARAMETER(name) \
+ DEBUG(0, ("%s(): value is NULL or empty!\n", #name))
+
/*******************************************************************
convenience routine to return int parameters.
********************************************************************/
static int lp_int(const char *s)
{
- if (!s) {
- DEBUG(0,("lp_int(%s): is called with NULL!\n",s));
+ if (!s || !*s) {
+ MISSING_PARAMETER(lp_int);
return (-1);
}
@@ -2169,12 +2172,12 @@ static int lp_int(const char *s)
/*******************************************************************
convenience routine to return unsigned long parameters.
********************************************************************/
-static int lp_ulong(const char *s)
+static unsigned long lp_ulong(const char *s)
{
- if (!s) {
- DEBUG(0,("lp_int(%s): is called with NULL!\n",s));
- return (-1);
+ if (!s || !*s) {
+ MISSING_PARAMETER(lp_ulong);
+ return (0);
}
return strtoul(s, NULL, 10);
@@ -2187,8 +2190,8 @@ static BOOL lp_bool(const char *s)
{
BOOL ret = False;
- if (!s) {
- DEBUG(0,("lp_bool(%s): is called with NULL!\n",s));
+ if (!s || !*s) {
+ MISSING_PARAMETER(lp_bool);
return False;
}
@@ -2207,8 +2210,8 @@ static int lp_enum(const char *s,const struct enum_list *_enum)
{
int i;
- if (!s || !_enum) {
- DEBUG(0,("lp_enum(%s,enum): is called with NULL!\n",s));
+ if (!s || !*s || !_enum) {
+ MISSING_PARAMETER(lp_enum);
return (-1);
}
@@ -2221,6 +2224,7 @@ static int lp_enum(const char *s,const struct enum_list *_enum)
return (-1);
}
+#undef MISSING_PARAMETER
/* DO NOT USE lp_parm_string ANYMORE!!!!
* use lp_parm_const_string or lp_parm_talloc_string
@@ -3485,16 +3489,15 @@ BOOL lp_do_parameter(int snum, const char *pszParmName, const char *pszParmValue
switch (parm_table[parmnum].type)
{
case P_BOOL:
- set_boolean((BOOL *)parm_ptr, pszParmValue);
+ *(BOOL *)parm_ptr = lp_bool(pszParmValue);
break;
case P_BOOLREV:
- set_boolean((BOOL *)parm_ptr, pszParmValue);
- *(BOOL *)parm_ptr = !*(BOOL *)parm_ptr;
+ *(BOOL *)parm_ptr = !lp_bool(pszParmValue);
break;
case P_INTEGER:
- *(int *)parm_ptr = atoi(pszParmValue);
+ *(int *)parm_ptr = lp_int(pszParmValue);
break;
case P_CHAR: