diff options
-rw-r--r-- | lib/param/loadparm.c | 33 | ||||
-rw-r--r-- | lib/param/param.h | 4 | ||||
-rw-r--r-- | source3/include/proto.h | 3 | ||||
-rw-r--r-- | source3/param/loadparm.c | 16 |
4 files changed, 56 insertions, 0 deletions
diff --git a/lib/param/loadparm.c b/lib/param/loadparm.c index 9b36c7e3684..9a3451f4e35 100644 --- a/lib/param/loadparm.c +++ b/lib/param/loadparm.c @@ -329,6 +329,20 @@ unsigned long lp_ulong(const char *s) } /** + * convenience routine to return unsigned long long parameters. + */ +unsigned long long lp_ulonglong(const char *s) +{ + + if (!s || !*s) { + DEBUG(0, ("lp_ulonglong(%s): is called with NULL!\n", s)); + return -1; + } + + return strtoull(s, NULL, 0); +} + +/** * convenience routine to return unsigned long parameters. */ static long lp_long(const char *s) @@ -473,6 +487,25 @@ unsigned long lpcfg_parm_ulong(struct loadparm_context *lp_ctx, return default_v; } +/** + * Return parametric option from a given service. + * Type is a part of option before ':' + * Parametric option has following syntax: 'Type: option = value' + */ +unsigned long long lpcfg_parm_ulonglong(struct loadparm_context *lp_ctx, + struct loadparm_service *service, + const char *type, const char *option, + unsigned long long default_v) +{ + const char *value = lpcfg_get_parametric(lp_ctx, service, type, option); + + if (value) { + return lp_ulonglong(value); + } + + return default_v; +} + long lpcfg_parm_long(struct loadparm_context *lp_ctx, struct loadparm_service *service, const char *type, const char *option, long default_v) diff --git a/lib/param/param.h b/lib/param/param.h index 500f52d56a7..fb28218e3b8 100644 --- a/lib/param/param.h +++ b/lib/param/param.h @@ -98,6 +98,10 @@ int lpcfg_parm_bytes(struct loadparm_context *lp_ctx, unsigned long lpcfg_parm_ulong(struct loadparm_context *lp_ctx, struct loadparm_service *service, const char *type, const char *option, unsigned long default_v); +unsigned long long lpcfg_parm_ulonglong(struct loadparm_context *lp_ctx, + struct loadparm_service *service, + const char *type, const char *option, + unsigned long long default_v); long lpcfg_parm_long(struct loadparm_context *lp_ctx, struct loadparm_service *service, const char *type, const char *option, long default_v); diff --git a/source3/include/proto.h b/source3/include/proto.h index ce9e277187c..e18aaf48115 100644 --- a/source3/include/proto.h +++ b/source3/include/proto.h @@ -966,6 +966,9 @@ const char *lp_parm_const_string_service(struct loadparm_service *service, const const char **lp_parm_string_list(int snum, const char *type, const char *option, const char **def); int lp_parm_int(int snum, const char *type, const char *option, int def); unsigned long lp_parm_ulong(int snum, const char *type, const char *option, unsigned long def); +unsigned long long lp_parm_ulonglong(int snum, const char *type, + const char *option, + unsigned long long def); bool lp_parm_bool(int snum, const char *type, const char *option, bool def); struct enum_list; int lp_parm_enum(int snum, const char *type, const char *option, diff --git a/source3/param/loadparm.c b/source3/param/loadparm.c index f8ecab716b4..31d9e2ddb3a 100644 --- a/source3/param/loadparm.c +++ b/source3/param/loadparm.c @@ -1245,6 +1245,22 @@ unsigned long lp_parm_ulong(int snum, const char *type, const char *option, unsi /* Return parametric option from a given service. Type is a part of option before ':' */ /* Parametric option has following syntax: 'Type: option = value' */ +unsigned long long lp_parm_ulonglong(int snum, const char *type, + const char *option, unsigned long long def) +{ + struct parmlist_entry *data = get_parametrics(snum, type, option); + + if (data && data->value && *data->value) { + return lp_ulonglong(data->value); + } + + return def; +} + +/* Return parametric option from a given service. Type is a part of option + * before ':' */ +/* Parametric option has following syntax: 'Type: option = value' */ + bool lp_parm_bool(int snum, const char *type, const char *option, bool def) { struct parmlist_entry *data = get_parametrics(snum, type, option); |