/* local prototypes */
static struct loadparm_service *getservicebyname(struct loadparm_context *lp_ctx,
const char *pszServiceName);
-static void copy_service(struct loadparm_service *pserviceDest,
- const struct loadparm_service *pserviceSource,
- struct bitmap *pcopymapDest);
static bool lpcfg_service_ok(struct loadparm_service *service);
static bool do_section(const char *pszSectionName, void *);
static void init_copymap(struct loadparm_service *pservice);
* Set a string value, deallocating any existing space, and allocing the space
* for the string
*/
-bool lpcfg_string_set(TALLOC_CTX *mem_ctx, char **dest, const char *src)
+static bool lpcfg_string_set(TALLOC_CTX *mem_ctx, char **dest, const char *src)
{
talloc_free(*dest);
* Set a string value, deallocating any existing space, and allocing the space
* for the string
*/
-bool lpcfg_string_set_upper(TALLOC_CTX *mem_ctx, char **dest, const char *src)
+static bool lpcfg_string_set_upper(TALLOC_CTX *mem_ctx, char **dest, const char *src)
{
talloc_free(*dest);
* If pcopymapDest is NULL then copy all fields
*/
-static void copy_service(struct loadparm_service *pserviceDest,
- const struct loadparm_service *pserviceSource,
- struct bitmap *pcopymapDest)
+void copy_service(struct loadparm_service *pserviceDest,
+ const struct loadparm_service *pserviceSource,
+ struct bitmap *pcopymapDest)
{
int i;
bool bcopyall = (pcopymapDest == NULL);
static const char *get_boolean(bool bool_value);
static int getservicebyname(const char *pszServiceName,
struct loadparm_service *pserviceDest);
-static void copy_service(struct loadparm_service *pserviceDest,
- const struct loadparm_service *pserviceSource,
- struct bitmap *pcopymapDest);
static bool do_parameter(const char *pszParmName, const char *pszParmValue,
void *userdata);
static bool do_section(const char *pszSectionName, void *userdata);
return &sDefault;
}
-
-/***************************************************************************
- Copy a service structure to another.
- If pcopymapDest is NULL then copy all fields
-***************************************************************************/
-
-static void copy_service(struct loadparm_service *pserviceDest,
- const struct loadparm_service *pserviceSource,
- struct bitmap *pcopymapDest)
-{
- int i;
- bool bcopyall = (pcopymapDest == NULL);
- struct parmlist_entry *data;
-
- for (i = 0; parm_table[i].label; i++)
- if (parm_table[i].p_class == P_LOCAL &&
- (bcopyall || bitmap_query(pcopymapDest, i))) {
- const void *src_ptr =
- ((const char *)pserviceSource) + parm_table[i].offset;
- void *dest_ptr =
- ((char *)pserviceDest) + parm_table[i].offset;
-
- switch (parm_table[i].type) {
- case P_BOOL:
- case P_BOOLREV:
- *(bool *)dest_ptr = *(const bool *)src_ptr;
- break;
-
- case P_INTEGER:
- case P_BYTES:
- case P_OCTAL:
- case P_ENUM:
- *(int *)dest_ptr = *(const int *)src_ptr;
- break;
-
- case P_CHAR:
- *(char *)dest_ptr = *(const char *)src_ptr;
- break;
-
- case P_STRING:
- lpcfg_string_set(pserviceDest,
- (char **)dest_ptr,
- *(const char * const *)src_ptr);
- break;
-
- case P_USTRING:
- lpcfg_string_set_upper(pserviceDest,
- (char **)dest_ptr,
- *(const char * const *)src_ptr);
- break;
- case P_LIST:
- TALLOC_FREE(*((char ***)dest_ptr));
- *(const char * const **)dest_ptr = (const char * const *)str_list_copy(pserviceDest,
- *(const char * * const *)src_ptr);
- break;
- default:
- break;
- }
- }
-
- if (bcopyall) {
- init_copymap(pserviceDest);
- if (pserviceSource->copymap)
- bitmap_copy(pserviceDest->copymap,
- pserviceSource->copymap);
- }
-
- data = pserviceSource->param_opt;
- while (data) {
- set_param_opt(pserviceDest, &pserviceDest->param_opt, data->key, data->value, data->priority);
- data = data->next;
- }
-}
-
/***************************************************************************
Check a service for consistency. Return false if the service is in any way
incomplete or faulty, else true.