@@ -, +, @@ --- .../ucs-4.1-2/management/univention-directory-listener/src/handlers.h | 4 ---- 1 file changed, 4 deletions(-) --- a/branches/ucs-4.1/ucs-4.1-2/management/univention-directory-listener/src/handlers.h +++ a/branches/ucs-4.1/ucs-4.1-2/management/univention-directory-listener/src/handlers.h @@ -50,10 +50,6 @@ #define HANDLER_PREPARED 000000004 -#define HANDLER_HAS_FLAG(handler, flag) ((handler->state & flag) == flag) -#define HANDLER_SET_FLAG(handler, flag) handler->state |= flag -#define HANDLER_UNSET_FLAG(handler, flag) handler->state &= ~flag - struct filter { char *base; int scope; -- --- .../management/univention-directory-listener/src/handlers.c | 2 +- .../management/univention-directory-listener/src/handlers.h | 11 ++++++----- 2 files changed, 7 insertions(+), 6 deletions(-) --- a/branches/ucs-4.1/ucs-4.1-2/management/univention-directory-listener/src/handlers.c +++ a/branches/ucs-4.1/ucs-4.1-2/management/univention-directory-listener/src/handlers.c @@ -262,7 +262,7 @@ static int handler_import(char* filename) if (state_fp == NULL) { handler->state = 0; } else { - fscanf(state_fp, "%d", &handler->state); + fscanf(state_fp, "%u", &handler->state); fclose(state_fp); } --- a/branches/ucs-4.1/ucs-4.1-2/management/univention-directory-listener/src/handlers.h +++ a/branches/ucs-4.1/ucs-4.1-2/management/univention-directory-listener/src/handlers.h @@ -45,10 +45,11 @@ initializing, HANDLER_READY will be set; however, if the initialization fails, it will be removed again. If it's successful, both, HANDLER_INITIALIZED and HANDLER_READY will be set */ -#define HANDLER_INITIALIZED 000000001 -#define HANDLER_READY 000000002 - -#define HANDLER_PREPARED 000000004 +enum state { + HANDLER_INITIALIZED = 1 << 0, + HANDLER_READY = 1 << 1, + HANDLER_PREPARED = 1 << 2, +}; struct filter { char *base; @@ -71,7 +72,7 @@ struct _Handler { PyObject *setdata; struct _Handler *next; - int state; + enum state state; int prepared : 1; } typedef Handler; -- --- .../univention-directory-listener/src/handlers.c | 24 ++++++++++++++-------- .../univention-directory-listener/src/handlers.h | 1 + 2 files changed, 16 insertions(+), 9 deletions(-) --- a/branches/ucs-4.1/ucs-4.1-2/management/univention-directory-listener/src/handlers.c +++ a/branches/ucs-4.1/ucs-4.1-2/management/univention-directory-listener/src/handlers.c @@ -566,19 +566,11 @@ int handlers_load_all_paths(void) } -/* Free one handler. */ -int handler_free(Handler *handler) -{ - char **a; - struct filter **f; +void handler_write_state(Handler *handler) { char state_filename[PATH_MAX]; FILE *state_fp; int rv; - if ( handler == NULL || handler->name == NULL ) { - return 0; - } - /* write handler state */ /* XXX: can be removed, once we use a database for this */ rv = snprintf(state_filename, PATH_MAX, "%s/handlers/%s", cache_dir, handler->name); @@ -591,6 +583,20 @@ int handler_free(Handler *handler) fprintf(state_fp, "%d", handler->state); fclose(state_fp); } +} + + +/* Free one handler. */ +int handler_free(Handler *handler) +{ + char **a; + struct filter **f; + + if ( handler == NULL || handler->name == NULL ) { + return 0; + } + + handler_write_state(handler); /* free list node */ free(handler->name); --- a/branches/ucs-4.1/ucs-4.1-2/management/univention-directory-listener/src/handlers.h +++ a/branches/ucs-4.1/ucs-4.1-2/management/univention-directory-listener/src/handlers.h @@ -78,6 +78,7 @@ struct _Handler { int handlers_init (void); int handlers_free_all (void); +void handler_write_state(Handler *handler); int handlers_load_path (char *filename); int handlers_reload_all_paths (void); int handlers_dump (void); -- --- .../ucs-4.1-2/management/univention-directory-listener/src/change.c | 2 ++ 1 file changed, 2 insertions(+) --- a/branches/ucs-4.1/ucs-4.1-2/management/univention-directory-listener/src/change.c +++ a/branches/ucs-4.1/ucs-4.1-2/management/univention-directory-listener/src/change.c @@ -240,6 +240,8 @@ int change_new_modules(univention_ldap_parameters_t *lp) handler->state |= HANDLER_INITIALIZED; else handler->state ^= HANDLER_READY; + + handler_write_state(handler); } } INIT_ONLY = old_init_only; --