/** * Return the dynamic stub with the given name. If no such stub exists and * generate is true, a new stub is generated. */ struct mapi_stub * stub_find_dynamic(const char *name, int generate) { u_mutex_declare_static(dynamic_mutex); struct mapi_stub *stub = NULL; int count, i; u_mutex_lock(dynamic_mutex); if (generate) assert(!stub_find_public(name)); count = num_dynamic_stubs; for (i = 0; i < count; i++) { if (strcmp(name, (const char *) dynamic_stubs[i].name) == 0) { stub = &dynamic_stubs[i]; break; } } /* generate a dynamic stub */ if (generate && !stub) stub = stub_add_dynamic(name); u_mutex_unlock(dynamic_mutex); return stub; }
/** * Return the dynamic stub with the given name. If no such stub exists and * generate is true, a new stub is generated. */ struct mapi_stub * stub_find_dynamic(const char *name, int generate) { struct mapi_stub *stub = NULL; int count, i; if (generate) assert(!stub_find_public(name)); count = num_dynamic_stubs; for (i = 0; i < count; i++) { if (strcmp(name, (const char *) dynamic_stubs[i].nameBuffer) == 0) { stub = &dynamic_stubs[i]; break; } } /* generate a dynamic stub */ if (generate && !stub) stub = stub_add_dynamic(name); return stub; }