From db571a9fd7fbce1c13ed652616ad9725db00b49f Mon Sep 17 00:00:00 2001 From: Simo Sorce Date: Wed, 30 Apr 2003 00:44:45 +0000 Subject: [PATCH] auto-init for utility functions --- source/sam/idmap.c | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/source/sam/idmap.c b/source/sam/idmap.c index e3747d07004..e0634681de1 100644 --- a/source/sam/idmap.c +++ b/source/sam/idmap.c @@ -38,6 +38,16 @@ static struct { static struct idmap_methods *local_map; static struct idmap_methods *remote_map; +static void lazy_initialize_idmap(void) +{ + static BOOL initialized = False; + if (initialized) return; + idmap_init(); + initialized = True; +} + + + static struct idmap_methods *get_methods(const char *name) { int i = 0; @@ -90,6 +100,8 @@ NTSTATUS idmap_set_mapping(const DOM_SID *sid, unid_t id, int id_type) { NTSTATUS ret; + lazy_initialize_idmap(); + if (!lp_idmap_only()) { if (id_type & ID_USERID) { uid_t low, high; @@ -145,6 +157,8 @@ NTSTATUS idmap_get_id_from_sid(unid_t *id, int *id_type, const DOM_SID *sid) NTSTATUS ret; int loc_type; + lazy_initialize_idmap(); + loc_type = *id_type; if (remote_map) { /* We have a central remote idmap */ loc_type |= ID_NOMAP; @@ -174,6 +188,8 @@ NTSTATUS idmap_get_sid_from_id(DOM_SID *sid, unid_t id, int id_type) NTSTATUS ret; int loc_type; + lazy_initialize_idmap(); + loc_type = id_type; if (remote_map) { loc_type = id_type | ID_NOMAP; @@ -218,6 +234,8 @@ NTSTATUS idmap_close(void) /* Dump backend status */ void idmap_status(void) { + lazy_initialize_idmap(); + local_map->status(); if (remote_map) remote_map->status(); }