From 1c7d6584a7811b7785ae5c1e378f14b5ba0971cf Mon Sep 17 00:00:00 2001 From: takeshi_hoshina Date: Mon, 2 Nov 2020 11:07:33 +0900 Subject: basesystem-jj recipes --- .../libnih-1.0.3/libnih_1.0.3-4ubuntu16.patch | 3593 -------------------- 1 file changed, 3593 deletions(-) delete mode 100644 external/meta-openembedded/meta-oe/recipes-support/libnih/libnih-1.0.3/libnih_1.0.3-4ubuntu16.patch (limited to 'external/meta-openembedded/meta-oe/recipes-support/libnih/libnih-1.0.3/libnih_1.0.3-4ubuntu16.patch') diff --git a/external/meta-openembedded/meta-oe/recipes-support/libnih/libnih-1.0.3/libnih_1.0.3-4ubuntu16.patch b/external/meta-openembedded/meta-oe/recipes-support/libnih/libnih-1.0.3/libnih_1.0.3-4ubuntu16.patch deleted file mode 100644 index 5d125c85..00000000 --- a/external/meta-openembedded/meta-oe/recipes-support/libnih/libnih-1.0.3/libnih_1.0.3-4ubuntu16.patch +++ /dev/null @@ -1,3593 +0,0 @@ ---- libnih-1.0.3.orig/ChangeLog -+++ libnih-1.0.3/ChangeLog -@@ -1,3 +1,84 @@ -+2013-03-13 Steve Langasek -+ -+ * nih/watch.c (nih_watch_walk_filter): New NihFileFilter function -+ passed to nih_dir_walk_scan() to ensure the nih_watch_new() filter -+ function is passed the NihWatch data rather than the data passed to -+ the nih_dir_walk() NihFileVisitor function (LP: #776532). -+ -+ * nih/tests/test_watch.c (test_new): New test "with filter and data" -+ to ensure filter is passed correct value. -+ -+2013-02-28 James Hunt -+ -+ * Removal of gcc 'malloc' function attribute resulting from -+ a clarification in its description which makes its use invalid. -+ (LP: #1123588). -+ -+2013-02-05 James Hunt -+ -+ * nih/logging.c: nih_log_abort_message(): Remove erroneous check -+ left over from use of __abort_msg weak symbol. -+ * nih/tests/test_logging.c: Remove unecessary check on whether -+ __nih_abort_msg has an address. -+ -+2012-12-13 Stéphane Graber -+ -+ * nih-dbus-tool/type.c, nih-dbus-tool/marshal.c: Update dbus code -+ generator to allow for empty lists for type 'as'. This drops the -+ != NULL check for NULL terminated arrays and moves the iteration -+ loop inside an 'if' statement. -+ -+2012-12-11 Dmitrijs Ledkovs -+ -+ * nih/file.c (nih_dir_walk_scan): Fallback to lstat, if the -+ non-portable dirent.d_type is not available (LP: #672643) (Closes: -+ #695604). -+ -+2012-12-10 Petr Lautrbach -+ -+ * nih/tests/test_file.c: don't use dirent.d_type (not portable) -+ -+2012-10-25 James Hunt -+ -+ * nih/logging.c: Use our own __nih_abort_msg rather than the -+ (e)glibc private symbol __abort_msg to avoid upgrade issues (LP: #997359). -+ * nih/tests/test_logging.c: Update tests for __nih_abort_msg. -+ -+2011-08-31 James Hunt -+ -+ * nih-dbus-tool/tests/test_com.netsplit.Nih.Test_object.c -+ (test_unix_fd_to_str): Sanity check value before invoking strchr in -+ case it returns address of null (which would give a misleading test -+ pass). -+ * nih-dbus-tool/tests/test_com.netsplit.Nih.Test_proxy.c -+ (test_unix_fd_to_str, test_unix_fd_to_str_sync): Sanity check value -+ before invoking strchr in case it returns address of null (which would -+ give a misleading test pass). -+ * nih/config.c (): nih_config_block_end: Add check to ensure strchr() -+ doesn't return address of null since this would result in a misleading -+ return value of TRUE. -+ -+ * nih/string.c (nih_str_split): Fixes to avoid over-running -+ input string and also returning an empty string array entry -+ when repeat is true (LP: #834813). -+ * nih/tests/test_string.c (test_str_split): Added a lot of new -+ tests for nih_str_split(). -+ -+2011-08-26 James Hunt -+ -+ * nih/io.c (nih_io_select_fds): Ensure number of fds being managed -+ is within limits. -+ -+ * nih/config.c, nih/error.h, nih/io.c, nih/test_files.h: Correct -+ typos in comments. -+ -+2011-06-20 James Hunt -+ -+ * nih/watch.c (nih_watch_handle): Handle non-directory watches; -+ previously a file watch resulted in an invalid file path ending in -+ a single slash (LP:#777097). -+ * nih/tests/test_watch.c: Added explicit test for watch on a file. -+ - 2010-12-23 Scott James Remnant - - * NEWS: Release 1.0.3 ---- libnih-1.0.3.orig/nih/watch.c -+++ libnih-1.0.3/nih/watch.c -@@ -2,8 +2,8 @@ - * - * watch.c - watching of files and directories with inotify - * -- * Copyright © 2009 Scott James Remnant . -- * Copyright © 2009 Canonical Ltd. -+ * Copyright © 2011 Scott James Remnant . -+ * Copyright © 2011 Canonical Ltd. - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License version 2, as -@@ -71,6 +71,9 @@ - uint32_t events, uint32_t cookie, - const char *name, - int *caught_free); -+static int nih_watch_walk_filter (void *data, const char *path, -+ int is_dir) -+ __attribute__ ((warn_unused_result)); - - - /** -@@ -91,7 +94,7 @@ - * sub-directories will be automatically watched. - * - * Additionally, the set of files and directories within @path can be -- * limited by passing a @filter function which will recieve the paths and -+ * limited by passing a @filter function which will receive the paths and - * may return TRUE to indicate that the path received should not be watched. - * - * When a file is created within @path, or moved from outside this location -@@ -104,7 +107,7 @@ - * files that exist under @path when the watch is first added. This only - * occurs if the watch can be added. - * -- * This is a very high level wrapped around the inotify API; lower levels -+ * This is a very high level wrapper around the inotify API; lower levels - * can be obtained using the inotify API itself and some of the helper - * functions used by this one. - * -@@ -185,6 +188,35 @@ - } - - -+ /** -+ * nih_watch_walk_filter: -+ * @data: NihWatch, -+ * @path: path to file, -+ * @is_dir: TRUE if @path is a directory. -+ * -+ * Callback function for nih_dir_walk(), used by nih_watch_add() to wrap -+ * the user-specified NihFileFilter (watch->filter) with a filter that can -+ * take watch itself as an argument. -+ * -+ * Returns: TRUE if the path should be ignored, FALSE otherwise. -+ **/ -+static int -+nih_watch_walk_filter (void *data, const char *path, int is_dir) -+{ -+ NihWatch *watch; -+ -+ watch = (NihWatch *)data; -+ -+ nih_assert (watch); -+ -+ /* No filter, so accept all files */ -+ if (! watch->filter) -+ return FALSE; -+ -+ return watch->filter (watch->data, path, is_dir); -+} -+ -+ - /** - * nih_watch_handle_by_wd: - * @watch: watch to search, -@@ -295,7 +327,7 @@ - * one; errors within the walk are warned automatically, so if this - * fails, it means we literally couldn't watch the top-level. - */ -- if (subdirs && (nih_dir_walk (path, watch->filter, -+ if (subdirs && (nih_dir_walk (path, nih_watch_walk_filter, - (NihFileVisitor)nih_watch_add_visitor, - NULL, watch) < 0)) { - NihError *err; -@@ -494,12 +526,21 @@ - return; - } - -+ /* Every other event must come with a name */ -+ if (name && *name) { - -- /* Every other event must come with a name. */ -- if ((! name) || strchr (name, '/')) -- return; -+ /* If name refers to a directory, there should be no associated -+ * path - just the name of the path element. -+ */ -+ if (strchr (name, '/')) -+ return; - -- path = NIH_MUST (nih_sprintf (NULL, "%s/%s", handle->path, name)); -+ /* Event occured for file within a watched directory */ -+ path = NIH_MUST (nih_sprintf (NULL, "%s/%s", handle->path, name)); -+ } else { -+ /* File event occured */ -+ path = NIH_MUST (nih_strdup (NULL, handle->path)); -+ } - - /* Check the filter */ - if (watch->filter && watch->filter (watch->data, path, ---- libnih-1.0.3.orig/nih/hash.h -+++ libnih-1.0.3/nih/hash.h -@@ -141,7 +141,7 @@ - * @hash: hash table to iterate, - * @iter: name of iterator variable. - * -- * Expans to nested for statements that iterate over each entry in each -+ * Expands to nested for statements that iterate over each entry in each - * bin of @hash, except for the bin head pointer, setting @iter to each - * entry for the block within the loop. A variable named _@iter_i is used - * to iterate the hash bins. -@@ -203,7 +203,7 @@ - NihKeyFunction key_function, - NihHashFunction hash_function, - NihCmpFunction cmp_function) -- __attribute__ ((warn_unused_result, malloc)); -+ __attribute__ ((warn_unused_result)); - - NihList * nih_hash_add (NihHash *hash, NihList *entry); - NihList * nih_hash_add_unique (NihHash *hash, NihList *entry); ---- libnih-1.0.3.orig/nih/main.h -+++ libnih-1.0.3/nih/main.h -@@ -138,7 +138,7 @@ - - NihMainLoopFunc *nih_main_loop_add_func (const void *parent, - NihMainLoopCb callback, void *data) -- __attribute__ ((warn_unused_result, malloc)); -+ __attribute__ ((warn_unused_result)); - - void nih_main_term_signal (void *data, NihSignal *signal); - ---- libnih-1.0.3.orig/nih/command.h -+++ libnih-1.0.3/nih/command.h -@@ -123,7 +123,7 @@ - - NihCommand *nih_command_join (const void *parent, - const NihCommand *a, const NihCommand *b) -- __attribute__ ((warn_unused_result, malloc)); -+ __attribute__ ((warn_unused_result)); - - NIH_END_EXTERN - ---- libnih-1.0.3.orig/nih/config.h -+++ libnih-1.0.3/nih/config.h -@@ -140,10 +140,10 @@ - char * nih_config_next_token (const void *parent, const char *file, - size_t len, size_t *pos, size_t *lineno, - const char *delim, int dequote) -- __attribute__ ((warn_unused_result, malloc)); -+ __attribute__ ((warn_unused_result)); - char * nih_config_next_arg (const void *parent, const char *file, - size_t len, size_t *pos, size_t *lineno) -- __attribute__ ((warn_unused_result, malloc)); -+ __attribute__ ((warn_unused_result)); - void nih_config_next_line (const char *file, size_t len, - size_t *pos, size_t *lineno); - -@@ -155,15 +155,15 @@ - - char ** nih_config_parse_args (const void *parent, const char *file, - size_t len, size_t *pos, size_t *lineno) -- __attribute__ ((warn_unused_result, malloc)); -+ __attribute__ ((warn_unused_result)); - char * nih_config_parse_command (const void *parent, const char *file, - size_t len, size_t *pos, size_t *lineno) -- __attribute__ ((warn_unused_result, malloc)); -+ __attribute__ ((warn_unused_result)); - - char * nih_config_parse_block (const void *parent, const char *file, - size_t len, size_t *pos, size_t *lineno, - const char *type) -- __attribute__ ((warn_unused_result, malloc)); -+ __attribute__ ((warn_unused_result)); - int nih_config_skip_block (const char *file, size_t len, - size_t *lineno, size_t *pos, - const char *type, size_t *endpos) ---- libnih-1.0.3.orig/nih/io.c -+++ libnih-1.0.3/nih/io.c -@@ -2,8 +2,8 @@ - * - * io.c - file and socket input/output handling - * -- * Copyright © 2009 Scott James Remnant . -- * Copyright © 2009 Canonical Ltd. -+ * Copyright © 2011 Scott James Remnant . -+ * Copyright © 2011 Canonical Ltd. - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License version 2, as -@@ -165,6 +165,7 @@ - nih_assert (readfds != NULL); - nih_assert (writefds != NULL); - nih_assert (exceptfds != NULL); -+ nih_assert (*nfds <= FD_SETSIZE); - - nih_io_init (); - -@@ -186,6 +187,9 @@ - *nfds = nih_max (*nfds, watch->fd + 1); - } - } -+ -+ /* Re-check in case we exceeded the limit in the loop */ -+ nih_assert (*nfds <= FD_SETSIZE); - } - - /** -@@ -901,7 +905,7 @@ - * read and placed into the receive buffer or queue, and the reader function - * is called if set. - * -- * Any data or messaages in the send buffer or queue are written out if the -+ * Any data or messages in the send buffer or queue are written out if the - * @events includes NIH_IO_WRITE. - * - * Errors are handled when data is read, and result in the error handled -@@ -1211,7 +1215,7 @@ - * This function is called when the local end of a file descriptor being - * managed by NihIo should be closed. Usually this is because the remote - * end has been closed (without error) but it can also be because no -- * error handler was given -+ * error handler was given. - * - * Normally this just calls the close handler, or if not available, it - * closes the file descriptor and frees the structure (which may be -@@ -1291,7 +1295,7 @@ - * @io: structure to be destroyed. - * - * Closes the file descriptor associated with an NihIo structure so that -- * the structure can be freed. IF an error is caught by closing the -+ * the structure can be freed. If an error is caught by closing the - * descriptor, the error handler is called instead of the error being raised; - * this allows you to group your error handling in one place rather than - * special-case close. ---- libnih-1.0.3.orig/nih/watch.h -+++ libnih-1.0.3/nih/watch.h -@@ -156,7 +156,7 @@ - NihCreateHandler create_handler, - NihModifyHandler modify_handler, - NihDeleteHandler delete_handler, void *data) -- __attribute__ ((warn_unused_result, malloc)); -+ __attribute__ ((warn_unused_result)); - - int nih_watch_add (NihWatch *watch, const char *path, int subdirs) - __attribute__ ((warn_unused_result)); ---- libnih-1.0.3.orig/nih/tree.h -+++ libnih-1.0.3/nih/tree.h -@@ -344,9 +344,9 @@ - - void nih_tree_init (NihTree *tree); - NihTree * nih_tree_new (const void *parent) -- __attribute__ ((warn_unused_result, malloc)); -+ __attribute__ ((warn_unused_result)); - NihTreeEntry *nih_tree_entry_new (const void *parent) -- __attribute__ ((warn_unused_result, malloc)); -+ __attribute__ ((warn_unused_result)); - - NihTree * nih_tree_add (NihTree *tree, NihTree *node, - NihTreeWhere where); ---- libnih-1.0.3.orig/nih/file.c -+++ libnih-1.0.3/nih/file.c -@@ -65,7 +65,7 @@ - /* Prototypes for static functions */ - static char **nih_dir_walk_scan (const char *path, NihFileFilter filter, - void *data) -- __attribute__ ((warn_unused_result, malloc)); -+ __attribute__ ((warn_unused_result)); - static int nih_dir_walk_visit (const char *dirname, NihList *dirs, - const char *path, NihFileFilter filter, - NihFileVisitor visitor, -@@ -619,6 +619,8 @@ - struct dirent *ent; - char **paths; - size_t npaths; -+ int isdir; -+ struct stat statbuf; - - nih_assert (path != NULL); - -@@ -640,7 +642,15 @@ - subpath = NIH_MUST (nih_sprintf (NULL, "%s/%s", - path, ent->d_name)); - -- if (filter && filter (data, subpath, ent->d_type == DT_DIR)) -+ if (ent->d_type == DT_UNKNOWN) { -+ if ( lstat (subpath, &statbuf)) -+ isdir = 0; -+ else -+ isdir = S_ISDIR(statbuf.st_mode); -+ } else -+ isdir = ent->d_type == DT_DIR; -+ -+ if (filter && filter (data, subpath, isdir)) - continue; - - NIH_MUST (nih_str_array_addp (&paths, NULL, &npaths, subpath)); ---- libnih-1.0.3.orig/nih/alloc.c -+++ libnih-1.0.3/nih/alloc.c -@@ -119,8 +119,7 @@ - static inline int nih_alloc_context_free (NihAllocCtx *ctx); - - static inline NihAllocRef *nih_alloc_ref_new (NihAllocCtx *parent, -- NihAllocCtx *child) -- __attribute__ ((malloc)); -+ NihAllocCtx *child); - static inline void nih_alloc_ref_free (NihAllocRef *ref); - static inline NihAllocRef *nih_alloc_ref_lookup (NihAllocCtx *parent, - NihAllocCtx *child); ---- libnih-1.0.3.orig/nih/timer.h -+++ libnih-1.0.3/nih/timer.h -@@ -59,7 +59,7 @@ - * @months: months (1-12), - * @wdays: days of week (0-7). - * -- * Indidcates when scheduled timers should be run, each member is a bit -+ * Indicates when scheduled timers should be run, each member is a bit - * field where the bit is 1 if the timer should be run for that value and - * 0 if not. - **/ -@@ -117,14 +117,14 @@ - - NihTimer *nih_timer_add_timeout (const void *parent, time_t timeout, - NihTimerCb callback, void *data) -- __attribute__ ((warn_unused_result, malloc)); -+ __attribute__ ((warn_unused_result)); - NihTimer *nih_timer_add_periodic (const void *parent, time_t period, - NihTimerCb callback, void *data) -- __attribute__ ((warn_unused_result, malloc)); -+ __attribute__ ((warn_unused_result)); - NihTimer *nih_timer_add_scheduled (const void *parent, - NihTimerSchedule *schedule, - NihTimerCb callback, void *data) -- __attribute__ ((warn_unused_result, malloc)); -+ __attribute__ ((warn_unused_result)); - - NihTimer *nih_timer_next_due (void); - void nih_timer_poll (void); ---- libnih-1.0.3.orig/nih/config.c -+++ libnih-1.0.3/nih/config.c -@@ -2,8 +2,8 @@ - * - * config.c - configuration file parsing - * -- * Copyright © 2009 Scott James Remnant . -- * Copyright © 2009 Canonical Ltd. -+ * Copyright © 2011 Scott James Remnant . -+ * Copyright © 2011 Canonical Ltd. - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License version 2, as -@@ -657,7 +657,7 @@ - * of the returned string are freed, the returned string will also be - * freed. - * -- * Returns: the command found or NULL on raised error. -+ * Returns: the newly allocated command found or NULL on raised error. - **/ - char * - nih_config_parse_command (const void *parent, -@@ -714,7 +714,7 @@ - * @lineno: line number, - * @type: block identifier. - * -- * Extracts a block of text from @line, stopping when the pharse "end @type" -+ * Extracts a block of text from @line, stopping when the phrase "end @type" - * is encountered without any quotes or blackslash escaping within it. - * - * @file may be a memory mapped file, in which case @pos should be given -@@ -950,7 +950,7 @@ - return FALSE; - - /* Must be whitespace after */ -- if (! strchr (NIH_CONFIG_WS, file[p + 3])) -+ if (file[p + 3] && ! strchr (NIH_CONFIG_WS, file[p + 3])) - return FALSE; - - /* Find the second word */ ---- libnih-1.0.3.orig/nih/option.h -+++ libnih-1.0.3/nih/option.h -@@ -124,11 +124,11 @@ - char ** nih_option_parser (const void *parent, - int argc, char *argv[], - NihOption *options, int break_nonopt) -- __attribute__ ((warn_unused_result, malloc)); -+ __attribute__ ((warn_unused_result)); - - NihOption *nih_option_join (const void *parent, - const NihOption *a, const NihOption *b) -- __attribute__ ((warn_unused_result, malloc)); -+ __attribute__ ((warn_unused_result)); - - int nih_option_count (NihOption *option, const char *arg); - int nih_option_int (NihOption *option, const char *arg); ---- libnih-1.0.3.orig/nih/signal.h -+++ libnih-1.0.3/nih/signal.h -@@ -76,7 +76,7 @@ - - NihSignal * nih_signal_add_handler (const void *parent, int signum, - NihSignalHandler handler, void *data) -- __attribute__ ((warn_unused_result, malloc)); -+ __attribute__ ((warn_unused_result)); - - void nih_signal_handler (int signum); - void nih_signal_poll (void); ---- libnih-1.0.3.orig/nih/list.h -+++ libnih-1.0.3/nih/list.h -@@ -37,7 +37,7 @@ - * after a known entry, and remove an entry from the list. - * - * List entries may be created in one of two ways. The most common is to -- * embed the NihList structure as the frist member of your own structure, -+ * embed the NihList structure as the first member of your own structure, - * and initialise it with nih_list_init() after allocating the structure. - * Alternatively you may create NihListEntry structures with - * nih_list_entry_new() and point at your own data from them. -@@ -196,10 +196,10 @@ - - void nih_list_init (NihList *entry); - NihList * nih_list_new (const void *parent) -- __attribute__ ((warn_unused_result, malloc)); -+ __attribute__ ((warn_unused_result)); - - NihListEntry *nih_list_entry_new (const void *parent) -- __attribute__ ((warn_unused_result, malloc)); -+ __attribute__ ((warn_unused_result)); - - - NihList * nih_list_add (NihList *list, NihList *entry); ---- libnih-1.0.3.orig/nih/logging.c -+++ libnih-1.0.3/nih/logging.c -@@ -39,11 +39,11 @@ - - - /** -- * __abort_msg: -+ * __nih_abort_msg: - * -- * A glibc variable that keeps the assertion message in the core dump. -+ * A variable that keeps the assertion message in the core dump. - **/ --extern char *__abort_msg __attribute__ ((weak)); -+char *__nih_abort_msg = NULL; - - /** - * logger: -@@ -114,19 +114,16 @@ - * nih_log_abort_message: - * @message: message to be logged. - * -- * Save @message in the glibc __abort_msg variable so it can be retrieved -+ * Save @message in the __nih_abort_msg variable so it can be retrieved - * by debuggers if we should crash at this point. - **/ - static void - nih_log_abort_message (const char *message) - { -- if (! &__abort_msg) -- return; -+ if (__nih_abort_msg) -+ nih_discard (__nih_abort_msg); - -- if (__abort_msg) -- nih_discard (__abort_msg); -- -- __abort_msg = NIH_MUST (nih_strdup (NULL, message)); -+ __nih_abort_msg = NIH_MUST (nih_strdup (NULL, message)); - } - - /** ---- libnih-1.0.3.orig/nih/test_files.h -+++ libnih-1.0.3/nih/test_files.h -@@ -1,7 +1,7 @@ - /* libnih - * -- * Copyright © 2009 Scott James Remnant . -- * Copyright © 2009 Canonical Ltd. -+ * Copyright © 2011 Scott James Remnant . -+ * Copyright © 2011 Canonical Ltd. - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License version 2, as -@@ -39,7 +39,7 @@ - * TEST_FILENAME: - * @_var: variable to store filename in. - * -- * Generate a filename that may be used for testing, it's unlinked it if -+ * Generate a filename that may be used for testing, it's unlinked if it - * exists and it's up to you to unlink it when done. @_var should be at - * least PATH_MAX long. - **/ ---- libnih-1.0.3.orig/nih/test_process.h -+++ libnih-1.0.3/nih/test_process.h -@@ -36,7 +36,7 @@ - * Spawn a child in which a test can be performed without affecting the - * main flow of the process. The pid of the child is stored in @_pid. - * -- * This macro ensures that the child has begun exectution before the -+ * This macro ensures that the child has begun execution before the - * parent is allowed to continue through the usual use of a pipe. - * - * A block of code should follow this macro, which is the code that will ---- libnih-1.0.3.orig/nih/child.h -+++ libnih-1.0.3/nih/child.h -@@ -98,7 +98,7 @@ - NihChildWatch *nih_child_add_watch (const void *parent, pid_t pid, - NihChildEvents events, - NihChildHandler handler, void *data) -- __attribute__ ((warn_unused_result, malloc)); -+ __attribute__ ((warn_unused_result)); - - void nih_child_poll (void); - ---- libnih-1.0.3.orig/nih/alloc.h -+++ libnih-1.0.3/nih/alloc.h -@@ -299,7 +299,7 @@ - * It is permissible to take references to foo within its scope, or by - * functions called, in which case it will not be freed. Also it is - * generally nonsensical to allocate with a parent, since this too will -- * prevent it from beign freed. -+ * prevent it from being freed. - **/ - #define nih_local __attribute__ ((cleanup(_nih_discard_local))) - -@@ -307,11 +307,11 @@ - NIH_BEGIN_EXTERN - - void * nih_alloc (const void *parent, size_t size) -- __attribute__ ((warn_unused_result, malloc)); -+ __attribute__ ((warn_unused_result)); - - void * nih_realloc (void *ptr, const void *parent, - size_t size) -- __attribute__ ((warn_unused_result, malloc)); -+ __attribute__ ((warn_unused_result)); - - int nih_free (void *ptr); - int nih_discard (void *ptr); ---- libnih-1.0.3.orig/nih/io.h -+++ libnih-1.0.3/nih/io.h -@@ -269,7 +269,7 @@ - NihIoWatch * nih_io_add_watch (const void *parent, int fd, - NihIoEvents events, - NihIoWatcher watcher, void *data) -- __attribute__ ((warn_unused_result, malloc)); -+ __attribute__ ((warn_unused_result)); - - void nih_io_select_fds (int *nfds, fd_set *readfds, - fd_set *writefds, fd_set *exceptfds); -@@ -278,12 +278,12 @@ - - - NihIoBuffer * nih_io_buffer_new (const void *parent) -- __attribute__ ((warn_unused_result, malloc)); -+ __attribute__ ((warn_unused_result)); - - int nih_io_buffer_resize (NihIoBuffer *buffer, size_t grow); - char * nih_io_buffer_pop (const void *parent, - NihIoBuffer *buffer, size_t *len) -- __attribute__ ((warn_unused_result, malloc)); -+ __attribute__ ((warn_unused_result)); - void nih_io_buffer_shrink (NihIoBuffer *buffer, size_t len); - int nih_io_buffer_push (NihIoBuffer *buffer, - const char *str, size_t len) -@@ -291,7 +291,7 @@ - - - NihIoMessage *nih_io_message_new (const void *parent) -- __attribute__ ((warn_unused_result, malloc)); -+ __attribute__ ((warn_unused_result)); - - int nih_io_message_add_control (NihIoMessage *message, int level, - int type, socklen_t len, -@@ -300,7 +300,7 @@ - - NihIoMessage *nih_io_message_recv (const void *parent, int fd, - size_t *len) -- __attribute__ ((warn_unused_result, malloc)); -+ __attribute__ ((warn_unused_result)); - ssize_t nih_io_message_send (NihIoMessage *message, int fd) - __attribute__ ((warn_unused_result)); - -@@ -310,7 +310,7 @@ - NihIoCloseHandler close_handler, - NihIoErrorHandler error_handler, - void *data) -- __attribute__ ((warn_unused_result, malloc)); -+ __attribute__ ((warn_unused_result)); - void nih_io_shutdown (NihIo *io); - int nih_io_destroy (NihIo *io); - -@@ -319,14 +319,14 @@ - - char * nih_io_read (const void *parent, NihIo *io, - size_t *len) -- __attribute__ ((warn_unused_result, malloc)); -+ __attribute__ ((warn_unused_result)); - int nih_io_write (NihIo *io, const char *str, - size_t len) - __attribute__ ((warn_unused_result)); - - char * nih_io_get (const void *parent, NihIo *io, - const char *delim) -- __attribute__ ((warn_unused_result, malloc)); -+ __attribute__ ((warn_unused_result)); - - int nih_io_printf (NihIo *io, const char *format, ...) - __attribute__ ((warn_unused_result, format (printf, 2, 3))); ---- libnih-1.0.3.orig/nih/test_output.h -+++ libnih-1.0.3/nih/test_output.h -@@ -61,10 +61,10 @@ - - /** - * TEST_FEATURE: -- * @_feat: name of function feature being tested. -+ * @_feat: name of function or group feature being tested. - * -- * Output a message indicating that a sub-test of a function is being -- * performed, specifically the feature named _feat. -+ * Output a message indicating that a sub-test of a function or -+ * group is being performed, specifically the feature named _feat. - **/ - #define TEST_FEATURE(_feat) \ - printf ("...%s\n", _feat); ---- libnih-1.0.3.orig/nih/error.h -+++ libnih-1.0.3/nih/error.h -@@ -1,7 +1,7 @@ - /* libnih - * -- * Copyright © 2009 Scott James Remnant . -- * Copyright © 2009 Canonical Ltd. -+ * Copyright © 2011 Scott James Remnant . -+ * Copyright © 2011 Canonical Ltd. - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License version 2, as -@@ -111,7 +111,7 @@ - * @message: human-readable message. - * - * Raises an error with the given details in the current error context, -- * if an unhandled error already exists then an error message is emmitted -+ * if an unhandled error already exists then an error message is emitted - * through the logging system; you should try to avoid this. - * - * @message should be a static string, as it will not be freed when the -@@ -126,7 +126,7 @@ - * @format: format string for human-readable message. - * - * Raises an error with the given details in the current error context, -- * if an unhandled error already exists then an error message is emmitted -+ * if an unhandled error already exists then an error message is emitted - * through the logging system; you should try to avoid this. - * - * The human-readable message for the error is parsed according to @format, -@@ -140,7 +140,7 @@ - * nih_error_raise_system: - * - * Raises an error with details taken from the current value of errno, -- * if an unhandled error already exists then an error message is emmitted -+ * if an unhandled error already exists then an error message is emitted - * through the logging system; you should try to avoid this. - **/ - #define nih_error_raise_system() \ -@@ -162,7 +162,7 @@ - * @error: existing object to raise. - * - * Raises the existing error object in the current error context, -- * if an unhandled error already exists then an error message is emmitted -+ * if an unhandled error already exists then an error message is emitted - * through the logging system; you should try to avoid this. - * - * This is normally used to raise a taken error that has not been handled, -@@ -182,7 +182,7 @@ - * @message: human-readable message. - * - * Raises an error with the given details in the current error context, -- * if an unhandled error already exists then an error message is emmitted -+ * if an unhandled error already exists then an error message is emitted - * through the logging system; you should try to avoid this. - * - * Will return from the current function with @retval, which may be left -@@ -199,7 +199,7 @@ - * @retval: return value for function. - * - * Raises an error with details taken from the current value of errno, -- * if an unhandled error already exists then an error message is emmitted -+ * if an unhandled error already exists then an error message is emitted - * through the logging system; you should try to avoid this. - * - * Will return from the current function with @retval, which may be left ---- libnih-1.0.3.orig/nih/string.h -+++ libnih-1.0.3/nih/string.h -@@ -35,60 +35,60 @@ - NIH_BEGIN_EXTERN - - char * nih_sprintf (const void *parent, const char *format, ...) -- __attribute__ ((format (printf, 2, 3), warn_unused_result, malloc)); -+ __attribute__ ((format (printf, 2, 3), warn_unused_result)); - - char * nih_vsprintf (const void *parent, const char *format, - va_list args) -- __attribute__ ((format (printf, 2, 0), warn_unused_result, malloc)); -+ __attribute__ ((format (printf, 2, 0), warn_unused_result)); - - char * nih_strdup (const void *parent, const char *str) -- __attribute__ ((warn_unused_result, malloc)); -+ __attribute__ ((warn_unused_result)); - - char * nih_strndup (const void *parent, const char *str, size_t len) -- __attribute__ ((warn_unused_result, malloc)); -+ __attribute__ ((warn_unused_result)); - - char * nih_strcat (char **str, const void *parent, const char *src) -- __attribute__ ((warn_unused_result, malloc)); -+ __attribute__ ((warn_unused_result)); - char * nih_strncat (char **str, const void *parent, const char *src, - size_t len) -- __attribute__ ((warn_unused_result, malloc)); -+ __attribute__ ((warn_unused_result)); - - char * nih_strcat_sprintf (char **str, const void *parent, - const char *format, ...) -- __attribute__ ((format (printf, 3, 4), warn_unused_result, malloc)); -+ __attribute__ ((format (printf, 3, 4), warn_unused_result)); - char * nih_strcat_vsprintf (char **str, const void *parent, - const char *format, va_list args) -- __attribute__ ((format (printf, 3, 0), warn_unused_result, malloc)); -+ __attribute__ ((format (printf, 3, 0), warn_unused_result)); - - char **nih_str_split (const void *parent, const char *str, - const char *delim, int repeat) -- __attribute__ ((warn_unused_result, malloc)); -+ __attribute__ ((warn_unused_result)); - - char **nih_str_array_new (const void *parent) -- __attribute__ ((warn_unused_result, malloc)); -+ __attribute__ ((warn_unused_result)); - char **nih_str_array_add (char ***array, const void *parent, size_t *len, - const char *str) -- __attribute__ ((warn_unused_result, malloc)); -+ __attribute__ ((warn_unused_result)); - char **nih_str_array_addn (char ***array, const void *parent, size_t *len, - const char *str, size_t strlen) -- __attribute__ ((warn_unused_result, malloc)); -+ __attribute__ ((warn_unused_result)); - char **nih_str_array_addp (char ***array, const void *parent, size_t *len, - void *ptr) -- __attribute__ ((warn_unused_result, malloc)); -+ __attribute__ ((warn_unused_result)); - char **nih_str_array_copy (const void *parent, size_t *len, - char * const *array) -- __attribute__ ((warn_unused_result, malloc)); -+ __attribute__ ((warn_unused_result)); - char **nih_str_array_append (char ***array, const void *parent, size_t *len, - char * const *args) -- __attribute__ ((warn_unused_result, malloc)); -+ __attribute__ ((warn_unused_result)); - - char * nih_str_wrap (const void *parent, const char *str, size_t len, - size_t first_indent, size_t indent) -- __attribute__ ((warn_unused_result, malloc)); -+ __attribute__ ((warn_unused_result)); - size_t nih_str_screen_width (void); - char * nih_str_screen_wrap (const void *parent, const char *str, - size_t first_indent, size_t indent) -- __attribute__ ((warn_unused_result, malloc)); -+ __attribute__ ((warn_unused_result)); - - NIH_END_EXTERN - ---- libnih-1.0.3.orig/nih/string.c -+++ libnih-1.0.3/nih/string.c -@@ -405,7 +405,7 @@ - const char *ptr; - - /* Skip initial delimiters */ -- while (repeat && strchr (delim, *str)) -+ while (repeat && *str && strchr (delim, *str)) - str++; - - /* Find the end of the token */ -@@ -413,6 +413,13 @@ - while (*str && (! strchr (delim, *str))) - str++; - -+ /* Don't create an empty string array element in repeat -+ * mode if there is no token (as a result of a -+ * duplicated delimiter character). -+ */ -+ if (repeat && (str == ptr)) -+ continue; -+ - if (! nih_str_array_addn (&array, parent, &len, - ptr, str - ptr)) { - nih_free (array); ---- libnih-1.0.3.orig/nih/file.h -+++ libnih-1.0.3/nih/file.h -@@ -82,7 +82,7 @@ - - char *nih_file_read (const void *parent, const char *path, - size_t *length) -- __attribute__ ((warn_unused_result, malloc)); -+ __attribute__ ((warn_unused_result)); - - void *nih_file_map (const char *path, int flags, size_t *length) - __attribute__ ((warn_unused_result)); ---- libnih-1.0.3.orig/nih/tests/test_option.c -+++ libnih-1.0.3/nih/tests/test_option.c -@@ -1574,7 +1574,7 @@ - output = tmpfile (); - TEST_CHILD (pid) { - TEST_DIVERT_STDOUT (output) { -- char **args; -+ char **args __attribute__((unused)); - - args = nih_option_parser (NULL, argc, argv, - options, FALSE); -@@ -1652,7 +1652,7 @@ - unsetenv ("COLUMNS"); - - TEST_DIVERT_STDOUT (output) { -- char **args; -+ char **args __attribute__((unused)); - - args = nih_option_parser (NULL, argc, argv, - options, FALSE); ---- libnih-1.0.3.orig/nih/tests/test_logging.c -+++ libnih-1.0.3/nih/tests/test_logging.c -@@ -31,7 +31,7 @@ - #include - - --extern char *__abort_msg __attribute__ ((weak)); -+extern char *__nih_abort_msg; - - static NihLogLevel last_priority = NIH_LOG_UNKNOWN; - static char * last_message = NULL; -@@ -156,68 +156,63 @@ - } - - -- /* Check that a fatal message is also stored in the glibc __abort_msg -+ /* Check that a fatal message is also stored in the __nih_abort_msg - * variable. - */ -- if (&__abort_msg) { -- TEST_FEATURE ("with fatal message"); -- TEST_ALLOC_FAIL { -- __abort_msg = NULL; -- last_priority = NIH_LOG_UNKNOWN; -- last_message = NULL; -- -- ret = nih_log_message (NIH_LOG_FATAL, -- "message with %s %d formatting", -- "some", 20); -- -- TEST_EQ (ret, 0); -- TEST_EQ (last_priority, NIH_LOG_FATAL); -- TEST_EQ_STR (last_message, "message with some 20 formatting"); -- -- TEST_NE_P (__abort_msg, NULL); -- TEST_ALLOC_PARENT (__abort_msg, NULL); -- TEST_EQ_STR (__abort_msg, "message with some 20 formatting"); -+ TEST_FEATURE ("with fatal message"); -+ TEST_ALLOC_FAIL { -+ __nih_abort_msg = NULL; -+ last_priority = NIH_LOG_UNKNOWN; -+ last_message = NULL; - -- free (last_message); -- } -+ ret = nih_log_message (NIH_LOG_FATAL, -+ "message with %s %d formatting", -+ "some", 20); - -+ TEST_EQ (ret, 0); -+ TEST_EQ (last_priority, NIH_LOG_FATAL); -+ TEST_EQ_STR (last_message, "message with some 20 formatting"); - -- /* Check that a fatal message can safely overwrite one already stored -- * in the glibc __abort_msg variable. -- */ -- TEST_FEATURE ("with second fatal message"); -- TEST_ALLOC_FAIL { -- TEST_ALLOC_SAFE { -- msg = nih_strdup (NULL, "test"); -- } -- -- __abort_msg = msg; -- TEST_FREE_TAG (msg); -- -- last_priority = NIH_LOG_UNKNOWN; -- last_message = NULL; -- -- ret = nih_log_message (NIH_LOG_FATAL, -- "message with %s %d formatting", -- "some", 20); -- -- TEST_EQ (ret, 0); -- TEST_EQ (last_priority, NIH_LOG_FATAL); -- TEST_EQ_STR (last_message, "message with some 20 formatting"); -- -- TEST_FREE (msg); -- -- TEST_NE_P (__abort_msg, NULL); -- TEST_ALLOC_PARENT (__abort_msg, NULL); -- TEST_EQ_STR (__abort_msg, "message with some 20 formatting"); -+ TEST_NE_P (__nih_abort_msg, NULL); -+ TEST_ALLOC_PARENT (__nih_abort_msg, NULL); -+ TEST_EQ_STR (__nih_abort_msg, "message with some 20 formatting"); - -- free (last_message); -- } -- } else { -- printf ("SKIP: __abort_msg not available\n"); -+ free (last_message); - } - - -+ /* Check that a fatal message can safely overwrite one already stored -+ * in the __nih_abort_msg variable. -+ */ -+ TEST_FEATURE ("with second fatal message"); -+ TEST_ALLOC_FAIL { -+ TEST_ALLOC_SAFE { -+ msg = nih_strdup (NULL, "test"); -+ } -+ -+ __nih_abort_msg = msg; -+ TEST_FREE_TAG (msg); -+ -+ last_priority = NIH_LOG_UNKNOWN; -+ last_message = NULL; -+ -+ ret = nih_log_message (NIH_LOG_FATAL, -+ "message with %s %d formatting", -+ "some", 20); -+ -+ TEST_EQ (ret, 0); -+ TEST_EQ (last_priority, NIH_LOG_FATAL); -+ TEST_EQ_STR (last_message, "message with some 20 formatting"); -+ -+ TEST_FREE (msg); -+ -+ TEST_NE_P (__nih_abort_msg, NULL); -+ TEST_ALLOC_PARENT (__nih_abort_msg, NULL); -+ TEST_EQ_STR (__nih_abort_msg, "message with some 20 formatting"); -+ -+ free (last_message); -+ } -+ - /* Check that the nih_debug macro wraps the call properly and - * includes the function in which the message occurred. - */ ---- libnih-1.0.3.orig/nih/tests/test_hash.c -+++ libnih-1.0.3/nih/tests/test_hash.c -@@ -470,7 +470,8 @@ - test_lookup (void) - { - NihHash *hash; -- NihList *entry1, *entry2, *entry3, *ptr; -+ NihList *entry1, *entry2, *ptr; -+ NihList *entry3 __attribute__((unused)); - - TEST_FUNCTION ("nih_hash_lookup"); - hash = nih_hash_string_new (NULL, 0); ---- libnih-1.0.3.orig/nih/tests/test_main.c -+++ libnih-1.0.3/nih/tests/test_main.c -@@ -457,7 +457,7 @@ - test_main_loop (void) - { - NihMainLoopFunc *func; -- NihTimer *timer; -+ NihTimer *timer __attribute__((unused)); - int ret; - - /* Check that we can run through the main loop, and that the ---- libnih-1.0.3.orig/nih/tests/test_watch.c -+++ libnih-1.0.3/nih/tests/test_watch.c -@@ -2,8 +2,8 @@ - * - * test_watch.c - test suite for nih/watch.c - * -- * Copyright © 2009 Scott James Remnant . -- * Copyright © 2009 Canonical Ltd. -+ * Copyright © 2011 Scott James Remnant . -+ * Copyright © 2011 Canonical Ltd. - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License version 2, as -@@ -39,6 +39,8 @@ - #include - #include - -+/* Read "The Hitchhikers Guide to the Galaxy" */ -+#define FILTER_VALUE 42 - - static int - my_filter (void *data, -@@ -54,6 +56,26 @@ - return FALSE; - } - -+/* Set by my_filter2 () so it knows if it has already been called */ -+static int my_filter2_called = 0; -+ -+static int -+my_filter2 (int *value, -+ const char *path, -+ int is_dir) -+{ -+ /* we only want to toggle the value once */ -+ if (my_filter2_called) -+ return TRUE; -+ -+ my_filter2_called = 1; -+ -+ nih_assert (value && *value == FILTER_VALUE); -+ *value = 0; -+ -+ return FALSE; -+} -+ - static int create_called = 0; - static int modify_called = 0; - static int delete_called = 0; -@@ -553,6 +575,44 @@ - nih_free (watch); - } - -+ /* Ensure the file filter gets passed the correct data pointer. -+ */ -+ TEST_FEATURE ("with filter and data"); -+ -+ /* Ensure we have a new directory */ -+ TEST_FILENAME (dirname); -+ mkdir (dirname, 0755); -+ -+ /* Create a single file */ -+ strcpy (filename, dirname); -+ strcat (filename, "/foo"); -+ -+ fd = fopen (filename, "w"); -+ fprintf (fd, "test\n"); -+ fclose (fd); -+ -+ TEST_ALLOC_FAIL { -+ int watch_data = FILTER_VALUE; -+ -+ /* Reset required to appease TEST_ALLOC_FAIL */ -+ my_filter2_called = 0; -+ -+ watch = nih_watch_new (NULL, dirname, -+ TRUE, TRUE, -+ (NihFileFilter)my_filter2, -+ NULL, NULL, NULL, -+ &watch_data); -+ -+ TEST_NE_P (watch, NULL); -+ -+ /* Ensure the filter was called and changed the value */ -+ -+ TEST_NE (my_filter2_called, 0); -+ TEST_EQ (watch_data, 0); -+ -+ nih_free (watch); -+ } -+ - strcpy (filename, dirname); - strcat (filename, "/bar"); - chmod (filename, 0755); -@@ -946,13 +1006,82 @@ - nih_error_init (); - - TEST_FILENAME (dirname); -- mkdir (dirname, 0755); -+ TEST_EQ (mkdir (dirname, 0755), 0); - -- watch = nih_watch_new (NULL, dirname, TRUE, TRUE, my_filter, -- my_create_handler, my_modify_handler, -+ TEST_FEATURE ("with watched file"); -+ strcpy (filename, dirname); -+ strcat (filename, "/foo"); -+ -+ /* Create file first since we don't set a create handler on the -+ * watch. -+ */ -+ fd = fopen (filename, "w"); -+ fprintf (fd, "bar\n"); -+ fclose (fd); -+ -+ create_called = 0; -+ modify_called = 0; -+ delete_called = 0; -+ logger_called = 0; -+ last_path = NULL; -+ last_watch = NULL; -+ last_data = NULL; -+ -+ watch = nih_watch_new (NULL, filename, FALSE, FALSE, NULL, -+ NULL, my_modify_handler, - my_delete_handler, &watch); -+ TEST_NE_P (watch, NULL); -+ -+ /* Now, modify the existing file to trigger the modify handler. */ -+ fd = fopen (filename, "a+"); -+ fprintf (fd, "baz\n"); -+ fclose (fd); -+ -+ nfds = 0; -+ FD_ZERO (&readfds); -+ FD_ZERO (&writefds); -+ FD_ZERO (&exceptfds); -+ -+ nih_io_select_fds (&nfds, &readfds, &writefds, &exceptfds); -+ select (nfds, &readfds, &writefds, &exceptfds, NULL); -+ nih_io_handle_fds (&readfds, &writefds, &exceptfds); -+ -+ TEST_EQ_STR (watch->path, filename); -+ -+ /* Ensure no regression to old behaviour (LP:#777097) */ -+ TEST_NE (last_path[ strlen(last_path) - 1 ], '/'); -+ -+ TEST_EQ_STR (last_path, filename); -+ TEST_EQ (modify_called, 1); -+ -+ unlink (filename); -+ -+ nfds = 0; -+ FD_ZERO (&readfds); -+ FD_ZERO (&writefds); -+ FD_ZERO (&exceptfds); -+ -+ nih_io_select_fds (&nfds, &readfds, &writefds, &exceptfds); -+ select (nfds, &readfds, &writefds, &exceptfds, NULL); -+ nih_io_handle_fds (&readfds, &writefds, &exceptfds); - -+ TEST_EQ (delete_called, 1); - -+ rmdir (filename); -+ nih_free (last_path); -+ -+ create_called = 0; -+ modify_called = 0; -+ delete_called = 0; -+ logger_called = 0; -+ last_path = NULL; -+ last_watch = NULL; -+ last_data = NULL; -+ -+ -+ watch = nih_watch_new (NULL, dirname, TRUE, TRUE, my_filter, -+ my_create_handler, my_modify_handler, -+ my_delete_handler, &watch); - /* Check that creating a file within the directory being watched - * results in the create handler being called, and passed the full - * path of the created file to it. ---- libnih-1.0.3.orig/nih/tests/test_string.c -+++ libnih-1.0.3/nih/tests/test_string.c -@@ -619,6 +619,215 @@ - nih_free (array); - } - -+ TEST_FEATURE ("with no repeat and multiple identical delimiter " -+ "characters at string start"); -+ TEST_ALLOC_FAIL { -+ array = nih_str_split (NULL, "\t\tthis is a test", " \t", FALSE); -+ -+ if (test_alloc_failed) { -+ TEST_EQ_P (array, NULL); -+ continue; -+ } -+ -+ TEST_ALLOC_SIZE (array, sizeof (char *) * 7); -+ for (i = 0; i < 6; i++) -+ TEST_ALLOC_PARENT (array[i], array); -+ -+ TEST_EQ_STR (array[0], ""); -+ TEST_EQ_STR (array[1], ""); -+ TEST_EQ_STR (array[2], "this"); -+ TEST_EQ_STR (array[3], "is"); -+ TEST_EQ_STR (array[4], "a"); -+ TEST_EQ_STR (array[5], "test"); -+ TEST_EQ_P (array[6], NULL); -+ -+ nih_free (array); -+ } -+ -+ TEST_FEATURE ("with no repeat and multiple different delimiter " -+ "characters at string start"); -+ TEST_ALLOC_FAIL { -+ array = nih_str_split (NULL, " \tthis is a test", " \t", FALSE); -+ -+ if (test_alloc_failed) { -+ TEST_EQ_P (array, NULL); -+ continue; -+ } -+ -+ TEST_ALLOC_SIZE (array, sizeof (char *) * 7); -+ for (i = 0; i < 6; i++) -+ TEST_ALLOC_PARENT (array[i], array); -+ -+ TEST_EQ_STR (array[0], ""); -+ TEST_EQ_STR (array[1], ""); -+ TEST_EQ_STR (array[2], "this"); -+ TEST_EQ_STR (array[3], "is"); -+ TEST_EQ_STR (array[4], "a"); -+ TEST_EQ_STR (array[5], "test"); -+ TEST_EQ_P (array[6], NULL); -+ -+ nih_free (array); -+ } -+ -+ TEST_FEATURE ("with no repeat and multiple identical delimiter " -+ "characters within string"); -+ TEST_ALLOC_FAIL { -+ array = nih_str_split (NULL, "this is a\t\ttest", " \t", FALSE); -+ -+ if (test_alloc_failed) { -+ TEST_EQ_P (array, NULL); -+ continue; -+ } -+ -+ TEST_ALLOC_SIZE (array, sizeof (char *) * 8); -+ for (i = 0; i < 7; i++) -+ TEST_ALLOC_PARENT (array[i], array); -+ -+ TEST_EQ_STR (array[0], "this"); -+ TEST_EQ_STR (array[1], "is"); -+ TEST_EQ_STR (array[2], ""); -+ TEST_EQ_STR (array[3], ""); -+ TEST_EQ_STR (array[4], "a"); -+ TEST_EQ_STR (array[5], ""); -+ TEST_EQ_STR (array[6], "test"); -+ TEST_EQ_P (array[7], NULL); -+ -+ nih_free (array); -+ } -+ -+ TEST_FEATURE ("with no repeat and multiple different delimiter " -+ "characters within string"); -+ TEST_ALLOC_FAIL { -+ array = nih_str_split (NULL, "this is \n\ta\ttest", " \t\n", FALSE); -+ -+ if (test_alloc_failed) { -+ TEST_EQ_P (array, NULL); -+ continue; -+ } -+ -+ TEST_ALLOC_SIZE (array, sizeof (char *) * 7); -+ for (i = 0; i < 6; i++) -+ TEST_ALLOC_PARENT (array[i], array); -+ -+ TEST_EQ_STR (array[0], "this"); -+ TEST_EQ_STR (array[1], "is"); -+ TEST_EQ_STR (array[2], ""); -+ TEST_EQ_STR (array[3], ""); -+ TEST_EQ_STR (array[4], "a"); -+ TEST_EQ_STR (array[5], "test"); -+ TEST_EQ_P (array[6], NULL); -+ -+ nih_free (array); -+ } -+ -+ TEST_FEATURE ("with no repeat and multiple identical delimiter " -+ "characters at string end"); -+ TEST_ALLOC_FAIL { -+ array = nih_str_split (NULL, "this is a test ", " \t", FALSE); -+ -+ if (test_alloc_failed) { -+ TEST_EQ_P (array, NULL); -+ continue; -+ } -+ -+ TEST_ALLOC_SIZE (array, sizeof (char *) * 6); -+ for (i = 0; i < 5; i++) -+ TEST_ALLOC_PARENT (array[i], array); -+ -+ TEST_EQ_STR (array[0], "this"); -+ TEST_EQ_STR (array[1], "is"); -+ TEST_EQ_STR (array[2], "a"); -+ TEST_EQ_STR (array[3], "test"); -+ TEST_EQ_STR (array[4], ""); -+ TEST_EQ_P (array[5], NULL); -+ -+ nih_free (array); -+ } -+ -+ TEST_FEATURE ("with no repeat and multiple different delimiter " -+ "characters at string end"); -+ TEST_ALLOC_FAIL { -+ array = nih_str_split (NULL, "this is a test \t", " \t", FALSE); -+ -+ if (test_alloc_failed) { -+ TEST_EQ_P (array, NULL); -+ continue; -+ } -+ -+ TEST_ALLOC_SIZE (array, sizeof (char *) * 6); -+ for (i = 0; i < 5; i++) -+ TEST_ALLOC_PARENT (array[i], array); -+ -+ TEST_EQ_STR (array[0], "this"); -+ TEST_EQ_STR (array[1], "is"); -+ TEST_EQ_STR (array[2], "a"); -+ TEST_EQ_STR (array[3], "test"); -+ TEST_EQ_STR (array[4], ""); -+ TEST_EQ_P (array[5], NULL); -+ -+ nih_free (array); -+ } -+ -+ TEST_FEATURE ("with no repeat and multiple identical delimiter " -+ "characters at beginning, middle and end of string"); -+ TEST_ALLOC_FAIL { -+ array = nih_str_split (NULL, " this is\n\n\na test\t\t\t", " \t\n", FALSE); -+ -+ if (test_alloc_failed) { -+ TEST_EQ_P (array, NULL); -+ continue; -+ } -+ -+ TEST_ALLOC_SIZE (array, sizeof (char *) * 12); -+ for (i = 0; i < 11; i++) -+ TEST_ALLOC_PARENT (array[i], array); -+ -+ TEST_EQ_STR (array[0], ""); -+ TEST_EQ_STR (array[1], ""); -+ TEST_EQ_STR (array[2], ""); -+ TEST_EQ_STR (array[3], "this"); -+ TEST_EQ_STR (array[4], "is"); -+ TEST_EQ_STR (array[5], ""); -+ TEST_EQ_STR (array[6], ""); -+ TEST_EQ_STR (array[7], "a"); -+ TEST_EQ_STR (array[8], "test"); -+ TEST_EQ_STR (array[9], ""); -+ TEST_EQ_STR (array[10], ""); -+ TEST_EQ_P (array[11], NULL); -+ -+ nih_free (array); -+ } -+ -+ TEST_FEATURE ("with no repeat and multiple different delimiter " -+ "characters at beginning, middle and end of string"); -+ TEST_ALLOC_FAIL { -+ array = nih_str_split (NULL, ": \nthis is\t \n:a test:\n ", "\n :\t", FALSE); -+ -+ if (test_alloc_failed) { -+ TEST_EQ_P (array, NULL); -+ continue; -+ } -+ -+ TEST_ALLOC_SIZE (array, sizeof (char *) * 13); -+ for (i = 0; i < 12; i++) -+ TEST_ALLOC_PARENT (array[i], array); -+ -+ TEST_EQ_STR (array[0], ""); -+ TEST_EQ_STR (array[1], ""); -+ TEST_EQ_STR (array[2], ""); -+ TEST_EQ_STR (array[3], "this"); -+ TEST_EQ_STR (array[4], "is"); -+ TEST_EQ_STR (array[5], ""); -+ TEST_EQ_STR (array[6], ""); -+ TEST_EQ_STR (array[7], ""); -+ TEST_EQ_STR (array[8], "a"); -+ TEST_EQ_STR (array[9], "test"); -+ TEST_EQ_STR (array[10], ""); -+ TEST_EQ_STR (array[11], ""); -+ TEST_EQ_P (array[12], NULL); -+ -+ nih_free (array); -+ } - - /* Check that we can split a string treating multiple consecutive - * matching characters as a single separator to be skipped. -@@ -645,6 +854,177 @@ - nih_free (array); - } - -+ /* Check that we can split a string containing multiple -+ * occurences of one of the delimiter characters at the -+ * beginning of the string. -+ */ -+ TEST_FEATURE ("with repeat and multiple identical adjacent delimiter characters at string start"); -+ TEST_ALLOC_FAIL { -+ array = nih_str_split (NULL, "\n\nhello", " \t\r\n", TRUE); -+ -+ if (test_alloc_failed) { -+ TEST_EQ_P (array, NULL); -+ continue; -+ } -+ -+ TEST_ALLOC_SIZE (array, sizeof (char *) * 2); -+ for (i = 0; i < 1; i++) -+ TEST_ALLOC_PARENT (array[i], array); -+ -+ TEST_EQ_STR (array[0], "hello"); -+ TEST_EQ_P (array[1], NULL); -+ -+ nih_free (array); -+ } -+ -+ TEST_FEATURE ("with repeat and multiple different adjacent delimiter characters at string start"); -+ TEST_ALLOC_FAIL { -+ array = nih_str_split (NULL, "\n\r hello", " \t\r\n", TRUE); -+ -+ if (test_alloc_failed) { -+ TEST_EQ_P (array, NULL); -+ continue; -+ } -+ -+ TEST_ALLOC_SIZE (array, sizeof (char *) * 2); -+ for (i = 0; i < 1; i++) -+ TEST_ALLOC_PARENT (array[i], array); -+ -+ TEST_EQ_STR (array[0], "hello"); -+ TEST_EQ_P (array[1], NULL); -+ -+ nih_free (array); -+ } -+ -+ TEST_FEATURE ("with repeat and multiple identical adjacent delimiter " -+ "characters within string"); -+ TEST_ALLOC_FAIL { -+ array = nih_str_split (NULL, "hello\n\rworld", " \t\n\r", TRUE); -+ -+ if (test_alloc_failed) { -+ TEST_EQ_P (array, NULL); -+ continue; -+ } -+ -+ TEST_ALLOC_SIZE (array, sizeof (char *) * 3); -+ for (i = 0; i < 2; i++) -+ TEST_ALLOC_PARENT (array[i], array); -+ -+ TEST_EQ_STR (array[0], "hello"); -+ TEST_EQ_STR (array[1], "world"); -+ TEST_EQ_P (array[2], NULL); -+ -+ nih_free (array); -+ } -+ -+ TEST_FEATURE ("with repeat and multiple different adjacent delimiter " -+ "characters within string"); -+ TEST_ALLOC_FAIL { -+ array = nih_str_split (NULL, "hello\n\r\tworld", " \t\n\r", TRUE); -+ -+ if (test_alloc_failed) { -+ TEST_EQ_P (array, NULL); -+ continue; -+ } -+ -+ TEST_ALLOC_SIZE (array, sizeof (char *) * 3); -+ for (i = 0; i < 2; i++) -+ TEST_ALLOC_PARENT (array[i], array); -+ -+ TEST_EQ_STR (array[0], "hello"); -+ TEST_EQ_STR (array[1], "world"); -+ TEST_EQ_P (array[2], NULL); -+ -+ nih_free (array); -+ } -+ -+ TEST_FEATURE ("with repeat and multiple identical adjacent delimiter " -+ "characters at string end"); -+ TEST_ALLOC_FAIL { -+ array = nih_str_split (NULL, "hello\n\n\n\n\n\n\n", " \t\r\n", TRUE); -+ -+ if (test_alloc_failed) { -+ TEST_EQ_P (array, NULL); -+ continue; -+ } -+ -+ TEST_ALLOC_SIZE (array, sizeof (char *) * 2); -+ for (i = 0; i < 1; i++) -+ TEST_ALLOC_PARENT (array[i], array); -+ -+ TEST_EQ_STR (array[0], "hello"); -+ TEST_EQ_P (array[1], NULL); -+ -+ nih_free (array); -+ } -+ -+ TEST_FEATURE ("with repeat and multiple different adjacent delimiter " -+ "characters at string end"); -+ TEST_ALLOC_FAIL { -+ array = nih_str_split (NULL, "hello \r\t\r\t\n ", " \t\r\n", TRUE); -+ -+ if (test_alloc_failed) { -+ TEST_EQ_P (array, NULL); -+ continue; -+ } -+ -+ TEST_ALLOC_SIZE (array, sizeof (char *) * 2); -+ for (i = 0; i < 1; i++) -+ TEST_ALLOC_PARENT (array[i], array); -+ -+ TEST_EQ_STR (array[0], "hello"); -+ TEST_EQ_P (array[1], NULL); -+ -+ nih_free (array); -+ } -+ -+ TEST_FEATURE ("with repeat and multiple identical adjacent delimiter " -+ "characters at beginning, middle and end of string"); -+ TEST_ALLOC_FAIL { -+ array = nih_str_split (NULL, -+ " hello\n\n\n, world\n\n\n", -+ "\r\t\n ", TRUE); -+ -+ if (test_alloc_failed) { -+ TEST_EQ_P (array, NULL); -+ continue; -+ } -+ -+ TEST_ALLOC_SIZE (array, sizeof (char *) * 4); -+ for (i = 0; i < 3; i++) -+ TEST_ALLOC_PARENT (array[i], array); -+ -+ TEST_EQ_STR (array[0], "hello"); -+ TEST_EQ_STR (array[1], ","); -+ TEST_EQ_STR (array[2], "world"); -+ TEST_EQ_P (array[3], NULL); -+ -+ nih_free (array); -+ } -+ -+ TEST_FEATURE ("with repeat and multiple different adjacent delimiter " -+ "characters at beginning, middle and end of string"); -+ TEST_ALLOC_FAIL { -+ array = nih_str_split (NULL, -+ "\n \r\thello\n\n\r , \n\t\rworld\t \r\n \n", -+ " \t\n\r", TRUE); -+ -+ if (test_alloc_failed) { -+ TEST_EQ_P (array, NULL); -+ continue; -+ } -+ -+ TEST_ALLOC_SIZE (array, sizeof (char *) * 4); -+ for (i = 0; i < 3; i++) -+ TEST_ALLOC_PARENT (array[i], array); -+ -+ TEST_EQ_STR (array[0], "hello"); -+ TEST_EQ_STR (array[1], ","); -+ TEST_EQ_STR (array[2], "world"); -+ TEST_EQ_P (array[3], NULL); -+ -+ nih_free (array); -+ } - - /* Check that we can give an empty string, and end up with a - * one-element array that only contains a NULL pointer. ---- libnih-1.0.3.orig/nih/tests/test_file.c -+++ libnih-1.0.3/nih/tests/test_file.c -@@ -724,6 +724,25 @@ - return FALSE; - } - -+/* find only frodo files */ -+static int -+my_filter_frodo_file (void *data, -+ const char *path, -+ int is_dir) -+{ -+ char *slash; -+ -+ if (is_dir) -+ return FALSE; -+ -+ slash = strrchr (path, '/'); -+ if (strcmp (slash, "/frodo")) -+ return TRUE; -+ -+ return FALSE; -+} -+ -+ - static int logger_called = 0; - - static int -@@ -905,6 +924,48 @@ - TEST_EQ_STR (v->path, filename); - - nih_free (visited); -+ -+ /* Try also inverse filter */ -+ TEST_ALLOC_SAFE { -+ visitor_called = 0; -+ visited = nih_list_new (NULL); -+ } -+ -+ ret = nih_dir_walk (dirname, my_filter_frodo_file, -+ my_visitor, NULL, &ret); -+ -+ TEST_EQ (ret, 0); -+ TEST_EQ (visitor_called, 4); -+ -+ v = (Visited *)visited->next; -+ TEST_EQ (v->data, &ret); -+ TEST_EQ_STR (v->dirname, dirname); -+ strcpy (filename, dirname); -+ strcat (filename, "/bar"); -+ TEST_EQ_STR (v->path, filename); -+ -+ v = (Visited *)v->entry.next; -+ TEST_EQ (v->data, &ret); -+ TEST_EQ_STR (v->dirname, dirname); -+ strcpy (filename, dirname); -+ strcat (filename, "/bar/frodo"); -+ TEST_EQ_STR (v->path, filename); -+ -+ v = (Visited *)v->entry.next; -+ TEST_EQ (v->data, &ret); -+ TEST_EQ_STR (v->dirname, dirname); -+ strcpy (filename, dirname); -+ strcat (filename, "/baz"); -+ TEST_EQ_STR (v->path, filename); -+ -+ v = (Visited *)v->entry.next; -+ TEST_EQ (v->data, &ret); -+ TEST_EQ_STR (v->dirname, dirname); -+ strcpy (filename, dirname); -+ strcat (filename, "/frodo"); -+ TEST_EQ_STR (v->path, filename); -+ -+ nih_free (visited); - } - - ---- libnih-1.0.3.orig/debian/control -+++ libnih-1.0.3/debian/control -@@ -0,0 +1,81 @@ -+Source: libnih -+Section: libs -+Priority: required -+Maintainer: Ubuntu Developers -+XSBC-Original-Maintainer: Scott James Remnant -+Standards-Version: 3.9.4 -+Build-Depends: debhelper (>= 9), pkg-config (>= 0.22), libdbus-1-dev (>= 1.4), libexpat1-dev (>= 2.0.0), dbus (>= 1.4), libc6-dev (>= 2.15~) | libc6.1-dev (>= 2.15~), -+ dh-autoreconf, autopoint, dpkg-dev (>= 1.16.1~) -+# To cross build this package also needs: libdbus-1-dev:native (>= 1.4), libexpat1-dev:native (>= 2.0.0) -+# But :native build-deps are not supported yet, so instead one can do -+# $ apt-get build-dep libnih -+# $ apt-get build-dep libnih -aarmhf -+# instead to get all required build-deps -+Vcs-Bzr: lp:ubuntu/libnih -+XSC-Debian-Vcs-Git: git://git.debian.org/git/collab-maint/libnih.git -+XSC-Debian-Vcs-Browser: http://git.debian.org/?p=collab-maint/libnih.git;a=summary -+Homepage: https://launchpad.net/libnih -+ -+Package: libnih1 -+Architecture: any -+Pre-Depends: ${misc:Pre-Depends}, ${shlibs:Depends}, ${misc:Depends} -+Multi-Arch: same -+Description: NIH Utility Library -+ libnih is a light-weight "standard library" of C functions to ease the -+ development of other libraries and applications, especially those -+ normally found in /lib. -+ . -+ This package contains the shared library. -+ -+Package: libnih-dev -+Priority: optional -+Section: libdevel -+Architecture: any -+Multi-Arch: same -+Depends: libnih1 (= ${binary:Version}), ${shlibs:Depends}, ${misc:Depends} -+Description: NIH Utility Library (development files) -+ libnih is a light-weight "standard library" of C functions to ease the -+ development of other libraries and applications, especially those -+ normally found in /lib. -+ . -+ This package contains the static library and C header files which are -+ needed for developing software using libnih. -+ -+Package: libnih-dbus1 -+Architecture: any -+Pre-Depends: ${misc:Pre-Depends} -+Depends: libnih1 (= ${binary:Version}), ${shlibs:Depends}, ${misc:Depends} -+Multi-Arch: same -+Description: NIH D-Bus Bindings Library -+ libnih-dbus is a D-Bus bindings library that integrates with the main -+ loop provided by libnih. -+ . -+ This package contains the shared library. -+ -+Package: libnih-dbus-dev -+Priority: optional -+Section: libdevel -+Architecture: any -+Multi-Arch: same -+Depends: libnih-dbus1 (= ${binary:Version}), libnih-dev (= ${binary:Version}), ${shlibs:Depends}, ${misc:Depends} -+Recommends: nih-dbus-tool (= ${binary:Version}) -+Description: NIH D-Bus Bindings Library (development files) -+ libnih-dbus is a D-Bus bindings library that integrates with the main -+ loop provided by libnih. -+ . -+ This package contains the static library and C header files which are -+ needed for developing software using libnih-dbus. -+ -+Package: nih-dbus-tool -+Section: devel -+Architecture: any -+Multi-Arch: foreign -+Depends: ${shlibs:Depends}, ${misc:Depends} -+Recommends: libnih-dbus-dev (= ${binary:Version}) -+Description: NIH D-Bus Binding Tool -+ nih-dbus-tool generates C source code from the D-Bus Introspection XML -+ data provided by most services; either to make implementing the -+ described objects in C programs or to make proxying to the described -+ remote objects easier. -+ . -+ The generated code requires libnih-dbus-dev to be compiled. ---- libnih-1.0.3.orig/debian/libnih-dev.install -+++ libnih-1.0.3/debian/libnih-dev.install -@@ -0,0 +1,6 @@ -+lib/*/libnih.a -+lib/*/libnih.so -+usr/include/libnih.h -+usr/include/nih -+usr/lib/*/pkgconfig/libnih.pc -+usr/share/aclocal/libnih.m4 ---- libnih-1.0.3.orig/debian/libnih1.docs -+++ libnih-1.0.3/debian/libnih1.docs -@@ -0,0 +1,3 @@ -+AUTHORS -+NEWS -+README ---- libnih-1.0.3.orig/debian/libnih-dbus1.install -+++ libnih-1.0.3/debian/libnih-dbus1.install -@@ -0,0 +1 @@ -+lib/*/libnih-dbus.so.* ---- libnih-1.0.3.orig/debian/libnih1.install -+++ libnih-1.0.3/debian/libnih1.install -@@ -0,0 +1 @@ -+lib/*/libnih.so.* ---- libnih-1.0.3.orig/debian/rules -+++ libnih-1.0.3/debian/rules -@@ -0,0 +1,54 @@ -+#!/usr/bin/make -f -+ -+include /usr/share/dpkg/architecture.mk -+ -+%: -+ dh $@ --with autoreconf -+ -+ -+CFLAGS := -Wall -fstack-protector -fPIE $(shell dpkg-buildflags --get CFLAGS) -+LDFLAGS := -Wl,--as-needed -Wl,-z,relro -Wl,-z,now -pie $(shell dpkg-buildflags --get LDFLAGS) -+ -+override_dh_auto_configure: -+ifeq ($(DEB_BUILD_GNU_TYPE), $(DEB_HOST_GNU_TYPE)) -+ dh_auto_configure -- CFLAGS="$(CFLAGS)" LDFLAGS="$(LDFLAGS)" \ -+ --libdir=/lib/$(DEB_HOST_MULTIARCH) -+else -+ dh_auto_configure -B build-dbus-tool/ -- CFLAGS="$(CFLAGS)" LDFLAGS="$(LDFLAGS)" \ -+ --libdir=/lib/$(DEB_BUILD_MULTIARCH) \ -+ --host=$(DEB_BUILD_GNU_TYPE) -+ dh_auto_build -B build-dbus-tool/ --parallel -+ dh_auto_configure -- CFLAGS="$(CFLAGS)" LDFLAGS="$(LDFLAGS)" \ -+ NIH_DBUS_TOOL=$(CURDIR)/build-dbus-tool/nih-dbus-tool/nih-dbus-tool \ -+ --libdir=/lib/$(DEB_HOST_MULTIARCH) -+endif -+ -+override_dh_auto_build: -+ dh_auto_build --parallel -+ -+override_dh_auto_test: -+ifeq ($(DEB_BUILD_GNU_TYPE), $(DEB_HOST_GNU_TYPE)) -+ dh_auto_test --parallel -+endif -+ -+override_dh_auto_install: -+ dh_auto_install -- pkgconfigdir=\$${prefix}/lib/$(DEB_HOST_MULTIARCH)/pkgconfig -+ -+override_dh_makeshlibs: -+ dh_makeshlibs -plibnih1 -V 'libnih1 (>= 1.0.0)' -+ dh_makeshlibs -plibnih-dbus1 -V 'libnih-dbus1 (>= 1.0.0)' -+ dh_makeshlibs -Nlibnih1 -Nlibnih-dbus1 -+ -+override_dh_shlibdeps: -+ dh_shlibdeps -+ sed -i 's/2\.14/2.15/' debian/*.substvars -+ sed -i 's/>= 2.15)/>= 2.15~)/g' debian/*.substvars -+ -+ -+# Symlink /usr/share/doc directories together -+override_dh_installdocs: -+ dh_installdocs --link-doc=libnih1 -+ -+override_dh_clean: -+ rm -rf build-dbus-tool/ -+ dh_clean ---- libnih-1.0.3.orig/debian/compat -+++ libnih-1.0.3/debian/compat -@@ -0,0 +1 @@ -+9 ---- libnih-1.0.3.orig/debian/nih-dbus-tool.install -+++ libnih-1.0.3/debian/nih-dbus-tool.install -@@ -0,0 +1,2 @@ -+usr/bin/nih-dbus-tool -+usr/share/man/man1/nih-dbus-tool.1 ---- libnih-1.0.3.orig/debian/copyright -+++ libnih-1.0.3/debian/copyright -@@ -0,0 +1,18 @@ -+This is the Ubuntu package of libnih, the NIH Utility Library. -+ -+Copyright © 2009 Canonical Ltd. -+Copyright © 2009 Scott James Remnant -+ -+Licence: -+ -+This program is free software; you can redistribute it and/or modify -+it under the terms of the GNU General Public License version 2, as -+published by the Free Software Foundation. -+ -+This program is distributed in the hope that it will be useful, but -+WITHOUT ANY WARRANTY; without even the implied warranty of -+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -+General Public License for more details. -+ -+On Ubuntu systems, the complete text of the GNU General Public License -+can be found in ‘/usr/share/common-licenses/GPL-2’. ---- libnih-1.0.3.orig/debian/libnih-dbus1.postinst -+++ libnih-1.0.3/debian/libnih-dbus1.postinst -@@ -0,0 +1,53 @@ -+#!/bin/sh -+ -+set -e -+ -+if [ "$1" = configure ]; then -+ # A dependent library of Upstart has changed, so restart Upstart -+ # such that it can safely unmount the root filesystem (LP: #740390) -+ -+ # Query running version of Upstart, but only when we know -+ # that initctl will work. -+ # -+ # The calculated version string may be the null string if -+ # Upstart is not running (where for example an alternative -+ # init is running outside a chroot environment) or if the -+ # query failed for some reason. However, the version check -+ # below handles a null version string correctly. -+ UPSTART_VERSION_RUNNING=$(initctl version 2>/dev/null |\ -+ awk '{print $3}'|tr -d ')' || :) -+ -+ if ischroot; then -+ # Do not honour re-exec when requested from within a -+ # chroot since: -+ # -+ # (a) The version of Upstart outside might not support it. -+ # (b) An isolated environment such as a chroot should -+ # not be able to modify its containing environment. -+ # -+ # A sufficiently new Upstart will actually handle a re-exec -+ # request coming from telinit within a chroot correctly (by -+ # doing nothing) but it's simple enough to perform the check -+ # here and save Upstart the effort. -+ : -+ elif dpkg --compare-versions "$UPSTART_VERSION_RUNNING" ge 1.6.1; then -+ # We are not running inside a chroot and the running version -+ # of Upstart supports stateful re-exec, so we can -+ # restart immediately. -+ # -+ # XXX: Note that the check on the running version must -+ # remain *indefinitely* since it's the only safe way to -+ # know if stateful re-exec is supported: simply checking -+ # packaged version numbers is not sufficient since -+ # the package could be upgraded multiple times without a -+ # reboot. -+ telinit u || : -+ else -+ # Before we shutdown or reboot, we need to re-exec so that we -+ # can safely remount the root filesystem; we can't just do that -+ # here because we lose state. -+ touch /var/run/init.upgraded || : -+ fi -+fi -+ -+#DEBHELPER# ---- libnih-1.0.3.orig/debian/changelog.DEBIAN -+++ libnih-1.0.3/debian/changelog.DEBIAN -@@ -0,0 +1,118 @@ -+libnih (1.0.3-4) unstable; urgency=low -+ -+ * Rebuild for new libc to update versioned dependency; this comes from -+ the __abort_msg dependency, dpkg-shlibs needs overriding since this is -+ actually a weak link, but this rebuild fixes things for now. -+ Closes: #625257. -+ -+ -- Scott James Remnant Mon, 02 May 2011 15:08:33 -0700 -+ -+libnih (1.0.3-3) unstable; urgency=low -+ -+ * New maintainer. Closes: #624442. -+ -+ -- Scott James Remnant Thu, 28 Apr 2011 14:26:05 -0700 -+ -+libnih (1.0.3-2) unstable; urgency=low -+ -+ * Bump build dependency on libdbus-1-dev and dbus to (>= 1.4) for Unix file -+ descriptor passing support. -+ -+ -- Michael Biebl Thu, 10 Feb 2011 20:25:18 +0100 -+ -+libnih (1.0.3-1ubuntu1) natty; urgency=low -+ -+ * Rebuild with libc6-dev (>= 2.13~). -+ -+ -- Matthias Klose Fri, 18 Feb 2011 12:09:29 +0100 -+ -+libnih (1.0.3-1) unstable; urgency=low -+ -+ * New upstream release. -+ * Bump debhelper compatibility level to 8 and update build dependency -+ accordingly. -+ -+ -- Michael Biebl Mon, 07 Feb 2011 22:19:13 +0100 -+ -+libnih (1.0.2-2) unstable; urgency=low -+ -+ * Install library development files to /usr/lib and not /lib. -+ * Remove libtool *.la files as there are no reverse dependencies referencing -+ them. -+ * Bump Standards-Version to 3.9.1. No further changes. -+ -+ -- Michael Biebl Sun, 02 Jan 2011 21:09:40 +0100 -+ -+libnih (1.0.2-1ubuntu3) natty; urgency=low -+ -+ * Disable some tests on ppc64 to build an initial package. -+ -+ -- Matthias Klose Thu, 18 Nov 2010 10:59:38 +0100 -+ -+libnih (1.0.2-1ubuntu2) maverick; urgency=low -+ -+ * Re-add -fPIE to the testsuite on armel, removing all armel-specific tests; -+ current gcc-4.4 don't seem affected by the ICE anymore (see LP #398403). -+ -+ -- Loïc Minier Mon, 23 Aug 2010 10:25:31 +0200 -+ -+libnih (1.0.2-1ubuntu1) maverick; urgency=low -+ -+ * Rebuild with libc6-dev (>= 2.12~), after checking that -+ __abort_msg is available with the same signature in eglibc 2.12. -+ * Don't build the testsuite with -fPIE on armel; LP: #398403. -+ -+ -- Matthias Klose Sun, 30 May 2010 02:54:56 +0200 -+ -+libnih (1.0.2-1) unstable; urgency=low -+ -+ * Initial upload to Debian. Closes: #585071 -+ * Based on the Ubuntu package for Lucid done by Scott James Remnant with the -+ following changes: -+ - Switch packages to priority optional. -+ - Use binary:Version instead of Source-Version. -+ - Bump Standards-Version to 3.8.4. -+ - Add Homepage and Vcs-* fields. -+ - Don't symlink /usr/share/doc directories. -+ - Refer to versioned /usr/share/common-licenses/GPL-2 file in -+ debian/copyright. -+ - List all symbols explicitly instead of using a wildcard and add symbols -+ introduced in 1.0.1. -+ - Use the symbols files to create the correct version info instead of -+ specifying it manually via shlibs. -+ - Switch to source format 3.0 (quilt). -+ - Add watch file to track new upstream releases. -+ -+ -- Michael Biebl Sun, 13 Jun 2010 23:36:52 +0200 -+ -+libnih (1.0.1-1) lucid; urgency=low -+ -+ * New upstream release: -+ - Add missing __nih_* symbols to linker version script so that we -+ can link Upstart's test suite. -+ - Glibc __abort_msg symbol now only linked as a weak symbol. -+ -+ -- Scott James Remnant Thu, 04 Feb 2010 14:53:26 -0800 -+ -+libnih (1.0.0-2build1) lucid; urgency=low -+ -+ * Rebuild to pick up relaxed dependency on libc6, after checking that -+ __abort_msg is available with the same signature in eglibc 2.11. -+ LP: #508702. -+ -+ -- Matthias Klose Mon, 18 Jan 2010 16:09:13 +0100 -+ -+libnih (1.0.0-2) lucid; urgency=low -+ -+ * debian/control: Add build-dependency on dbus so the test suite can -+ pass on the buildds. -+ -+ -- Scott James Remnant Sat, 28 Nov 2009 23:28:27 +0000 -+ -+libnih (1.0.0-1) lucid; urgency=low -+ -+ * First upstream release. Previously this code was included in the -+ upstart, mountall and ureadahead source packages. -+ -+ -- Scott James Remnant Sat, 28 Nov 2009 21:14:00 +0000 -+ ---- libnih-1.0.3.orig/debian/libnih1.symbols -+++ libnih-1.0.3/debian/libnih1.symbols -@@ -0,0 +1,2 @@ -+libnih.so.1 libnih1 #MINVER# -+ *@LIBNIH_1_0 1.0.0 ---- libnih-1.0.3.orig/debian/libnih-dbus-dev.install -+++ libnih-1.0.3/debian/libnih-dbus-dev.install -@@ -0,0 +1,5 @@ -+lib/*/libnih-dbus.a -+lib/*/libnih-dbus.so -+usr/include/libnih-dbus.h -+usr/include/nih-dbus -+usr/lib/*/pkgconfig/libnih-dbus.pc ---- libnih-1.0.3.orig/debian/libnih1.postinst -+++ libnih-1.0.3/debian/libnih1.postinst -@@ -0,0 +1,53 @@ -+#!/bin/sh -+ -+set -e -+ -+if [ "$1" = configure ]; then -+ # A dependent library of Upstart has changed, so restart Upstart -+ # such that it can safely unmount the root filesystem (LP: #740390) -+ -+ # Query running version of Upstart, but only when we know -+ # that initctl will work. -+ # -+ # The calculated version string may be the null string if -+ # Upstart is not running (where for example an alternative -+ # init is running outside a chroot environment) or if the -+ # query failed for some reason. However, the version check -+ # below handles a null version string correctly. -+ UPSTART_VERSION_RUNNING=$(initctl version 2>/dev/null |\ -+ awk '{print $3}'|tr -d ')' || :) -+ -+ if ischroot; then -+ # Do not honour re-exec when requested from within a -+ # chroot since: -+ # -+ # (a) The version of Upstart outside might not support it. -+ # (b) An isolated environment such as a chroot should -+ # not be able to modify its containing environment. -+ # -+ # A sufficiently new Upstart will actually handle a re-exec -+ # request coming from telinit within a chroot correctly (by -+ # doing nothing) but it's simple enough to perform the check -+ # here and save Upstart the effort. -+ : -+ elif dpkg --compare-versions "$UPSTART_VERSION_RUNNING" ge 1.6.1; then -+ # We are not running inside a chroot and the running version -+ # of Upstart supports stateful re-exec, so we can -+ # restart immediately. -+ # -+ # XXX: Note that the check on the running version must -+ # remain *indefinitely* since it's the only safe way to -+ # know if stateful re-exec is supported: simply checking -+ # packaged version numbers is not sufficient since -+ # the package could be upgraded multiple times without a -+ # reboot. -+ telinit u || : -+ else -+ # Before we shutdown or reboot, we need to re-exec so that we -+ # can safely remount the root filesystem; we can't just do that -+ # here because we lose state. -+ touch /var/run/init.upgraded || : -+ fi -+fi -+ -+#DEBHELPER# ---- libnih-1.0.3.orig/debian/libnih-dbus1.symbols -+++ libnih-1.0.3/debian/libnih-dbus1.symbols -@@ -0,0 +1,2 @@ -+libnih-dbus.so.1 libnih-dbus1 #MINVER# -+ *@LIBNIH_DBUS_1_0 1.0.0 ---- libnih-1.0.3.orig/debian/changelog -+++ libnih-1.0.3/debian/changelog -@@ -0,0 +1,213 @@ -+libnih (1.0.3-4ubuntu16) raring; urgency=low -+ -+ * debian/{libnih1.postinst,libnih-dbus1.postinst}: Force an upgrade to -+ restart Upstart (to pick up new package version) if the running -+ instance supports it. -+ * Merge of important fixes from lp:~upstart-devel/libnih/nih -+ (LP: #776532, LP: #777097, LP: #834813, LP: #1123588). -+ -+ -- James Hunt Thu, 14 Mar 2013 09:14:22 +0000 -+ -+libnih (1.0.3-4ubuntu15) raring; urgency=low -+ -+ * Enable cross-building, sans adding :native build-dependencies. -+ See comments in debian/control. -+ * Lintian fixes. -+ -+ -- Dmitrijs Ledkovs Tue, 08 Jan 2013 15:38:58 +0000 -+ -+libnih (1.0.3-4ubuntu14) raring; urgency=low -+ -+ * Update dbus code generator to allow for empty lists for type 'as'. -+ This drops the != NULL check for NULL terminated arrays and moves the -+ iteration loop inside an 'if' statement. -+ -+ -- Stéphane Graber Thu, 13 Dec 2012 10:00:27 -0500 -+ -+libnih (1.0.3-4ubuntu13) raring; urgency=low -+ -+ [ Petr Lautrbach , Dmitrijs Ledkovs ] -+ * Fallback to lstat, if dirent.d_type is not available (not portable) -+ (LP: #672643) (Closes: #695604) -+ -+ -- Dmitrijs Ledkovs Tue, 11 Dec 2012 17:26:52 +0000 -+ -+libnih (1.0.3-4ubuntu12) raring; urgency=low -+ -+ * nih/logging.c: Use our own __nih_abort_msg rather than the (e)glibc -+ private symbol __abort_msg to avoid upgrade issues (LP: #997359). -+ * nih/tests/test_logging.c: Update tests for __nih_abort_msg. -+ -+ -- James Hunt Thu, 25 Oct 2012 10:57:30 +0100 -+ -+libnih (1.0.3-4ubuntu11) quantal; urgency=low -+ -+ * Addition of debian/libnih-dbus1.postinst and -+ debian/libnih1.postinst to force Upstart re-exec on shutdown -+ to avoid unmounting disks uncleanly (LP: #740390). -+ -+ -- James Hunt Wed, 03 Oct 2012 16:49:40 +0100 -+ -+libnih (1.0.3-4ubuntu10) quantal; urgency=low -+ -+ * Update config.guess,sub for aarch64 -+ -+ -- Wookey Mon, 01 Oct 2012 12:57:05 +0100 -+ -+libnih (1.0.3-4ubuntu9) precise; urgency=low -+ -+ * Mark the nih-dbus-tool package Multi-Arch: foreign so it can be used as -+ a build-dependency of upstart when cross-building. -+ -+ -- Steve Langasek Wed, 15 Feb 2012 22:57:50 -0800 -+ -+libnih (1.0.3-4ubuntu8) precise; urgency=low -+ -+ * libnih1 needs a versioned Pre-Depend on libc6 instead of just a Depend, -+ because libc6 itself uses runlevel from the upstart package in its -+ preinst, which in turn uses libnih1, which needs to be loadable (i.e., -+ its symbol references resolve). We therefore need to ensure that -+ libnih1's dependencies are always unpacked before libnih1 itself is -+ unpacked. While having something further up the stack (such as upstart, -+ or something on top of upstart) being marked Essential: yes and with the -+ necessary pre-depends would let apt handle this for us with its -+ "immediate configuration" support, but for various reasons we don't want -+ to make upstart essential. LP: #508083. -+ -+ -- Steve Langasek Fri, 10 Feb 2012 12:13:25 -0800 -+ -+libnih (1.0.3-4ubuntu7) precise; urgency=low -+ -+ * Relax dependency on libc6. -+ -+ -- Matthias Klose Wed, 08 Feb 2012 23:43:21 +0100 -+ -+libnih (1.0.3-4ubuntu6) precise; urgency=low -+ -+ * Rebuild with libc6-dev (>= 2.15~). -+ -+ -- Matthias Klose Wed, 08 Feb 2012 21:48:57 +0100 -+ -+libnih (1.0.3-4ubuntu5) precise; urgency=low -+ -+ * Mark libnih-dev and libnih-dbus-dev Multi-Arch: same as well. -+ -+ -- Steve Langasek Sun, 06 Nov 2011 14:45:07 -0800 -+ -+libnih (1.0.3-4ubuntu4) precise; urgency=low -+ -+ * Make libnih1 and libnih-dbus1 installable using multi-arch. -+ -+ -- James Hunt Tue, 01 Nov 2011 14:25:09 -0400 -+ -+libnih (1.0.3-4ubuntu3) precise; urgency=low -+ -+ * Build to install with eglibc-2.15. -+ -+ -- Matthias Klose Fri, 14 Oct 2011 14:05:03 +0200 -+ -+libnih (1.0.3-4ubuntu2) oneiric; urgency=low -+ -+ * Use dpkg-buildflags to get the build flags. -+ * Build with the default build flags, don't hard-code -Os. LP: #791315. -+ -+ -- Matthias Klose Wed, 15 Jun 2011 16:45:42 +0200 -+ -+libnih (1.0.3-4ubuntu1) oneiric; urgency=low -+ -+ * Merge from debian unstable. Retained Ubuntu Build-Depends and Priority. -+ -+ -- James Hunt Mon, 23 May 2011 19:28:19 +0100 -+ -+libnih (1.0.3-1ubuntu1) natty; urgency=low -+ -+ * Rebuild with libc6-dev (>= 2.13~). -+ -+ -- Matthias Klose Fri, 18 Feb 2011 12:09:29 +0100 -+ -+libnih (1.0.3-1) natty; urgency=low -+ -+ * New upstream release: -+ - Added support for passing file descriptors over D-Bus to nih-dbus-tool -+ -+ -- Scott James Remnant Thu, 23 Dec 2010 22:28:24 +0000 -+ -+libnih (1.0.2-2) natty; urgency=low -+ -+ * Revert the previous upload. It is never acceptable to simply disable -+ tests, especially when it turns out that the test that was disabled -+ was failing because there was a serious bug that could cause kernel -+ panics for people on boot. -+ -+ Test suites are here for a reason. -+ -+ * Bumped libdbus Build-Dependency to the version with the bug fix that -+ caused the test suite to fail. -+ -+ -- Scott James Remnant Wed, 08 Dec 2010 19:40:15 +0000 -+ -+libnih (1.0.2-1ubuntu3) natty; urgency=low -+ -+ * Disable some tests on ppc64 to build an initial package. -+ -+ -- Matthias Klose Thu, 18 Nov 2010 10:59:38 +0100 -+ -+libnih (1.0.2-1ubuntu2) maverick; urgency=low -+ -+ * Re-add -fPIE to the testsuite on armel, removing all armel-specific tests; -+ current gcc-4.4 don't seem affected by the ICE anymore (see LP #398403). -+ -+ -- Loïc Minier Mon, 23 Aug 2010 10:25:31 +0200 -+ -+libnih (1.0.2-1ubuntu1) maverick; urgency=low -+ -+ * Rebuild with libc6-dev (>= 2.12~), after checking that -+ __abort_msg is available with the same signature in eglibc 2.12. -+ * Don't build the testsuite with -fPIE on armel; LP: #398403. -+ -+ -- Matthias Klose Sun, 30 May 2010 02:54:56 +0200 -+ -+libnih (1.0.2-1) maverick; urgency=low -+ -+ * New upstream release: -+ - Rename AC_COPYRIGHT to NIH_COPYRIGHT to avoid conflict with other -+ packages. -+ - Add serial to libnih.m4 -+ - Add NIH_WITH_LOCAL_LIBNIH macro. -+ -+ * Fix use of ${Source-Version} to be ${binary:Version} -+ * Add debian/source/format with "1.0" to be future compatible. -+ * Bump standards version. -+ -+ -- Scott James Remnant Tue, 27 Apr 2010 10:49:55 -0700 -+ -+libnih (1.0.1-1) lucid; urgency=low -+ -+ * New upstream release: -+ - Add missing __nih_* symbols to linker version script so that we -+ can link Upstart's test suite. -+ - Glibc __abort_msg symbol now only linked as a weak symbol. -+ -+ -- Scott James Remnant Thu, 04 Feb 2010 14:53:26 -0800 -+ -+libnih (1.0.0-2build1) lucid; urgency=low -+ -+ * Rebuild to pick up relaxed dependency on libc6, after checking that -+ __abort_msg is available with the same signature in eglibc 2.11. -+ LP: #508702. -+ -+ -- Matthias Klose Mon, 18 Jan 2010 16:09:13 +0100 -+ -+libnih (1.0.0-2) lucid; urgency=low -+ -+ * debian/control: Add build-dependency on dbus so the test suite can -+ pass on the buildds. -+ -+ -- Scott James Remnant Sat, 28 Nov 2009 23:28:27 +0000 -+ -+libnih (1.0.0-1) lucid; urgency=low -+ -+ * First upstream release. Previously this code was included in the -+ upstart, mountall and ureadahead source packages. -+ -+ -- Scott James Remnant Sat, 28 Nov 2009 21:14:00 +0000 ---- libnih-1.0.3.orig/debian/source/format -+++ libnih-1.0.3/debian/source/format -@@ -0,0 +1 @@ -+1.0 ---- libnih-1.0.3.orig/nih-dbus/dbus_proxy.h -+++ libnih-1.0.3/nih-dbus/dbus_proxy.h -@@ -146,14 +146,14 @@ - const char *name, const char *path, - NihDBusLostHandler lost_handler, - void *data) -- __attribute__ ((warn_unused_result, malloc)); -+ __attribute__ ((warn_unused_result)); - - NihDBusProxySignal *nih_dbus_proxy_connect (NihDBusProxy *proxy, - const NihDBusInterface *interface, - const char *name, - NihDBusSignalHandler handler, - void *data) -- __attribute__ ((warn_unused_result, malloc)); -+ __attribute__ ((warn_unused_result)); - - NIH_END_EXTERN - ---- libnih-1.0.3.orig/nih-dbus/dbus_object.h -+++ libnih-1.0.3/nih-dbus/dbus_object.h -@@ -61,8 +61,7 @@ - DBusConnection *connection, - const char *path, - const NihDBusInterface **interfaces, -- void *data) -- __attribute__ ((malloc)); -+ void *data); - - NIH_END_EXTERN - ---- libnih-1.0.3.orig/nih-dbus/dbus_util.h -+++ libnih-1.0.3/nih-dbus/dbus_util.h -@@ -26,7 +26,7 @@ - NIH_BEGIN_EXTERN - - char *nih_dbus_path (const void *parent, const char *root, ...) -- __attribute__ ((sentinel, warn_unused_result, malloc)); -+ __attribute__ ((sentinel, warn_unused_result)); - - NIH_END_EXTERN - ---- libnih-1.0.3.orig/nih-dbus/dbus_pending_data.h -+++ libnih-1.0.3/nih-dbus/dbus_pending_data.h -@@ -104,7 +104,7 @@ - NihDBusReplyHandler handler, - NihDBusErrorHandler error_handler, - void *data) -- __attribute__ ((warn_unused_result, malloc)); -+ __attribute__ ((warn_unused_result)); - - NIH_END_EXTERN - ---- libnih-1.0.3.orig/nih-dbus/dbus_proxy.c -+++ libnih-1.0.3/nih-dbus/dbus_proxy.c -@@ -46,11 +46,11 @@ - __attribute__ ((warn_unused_result)); - static char *nih_dbus_proxy_name_rule (const void *parent, - NihDBusProxy *proxy) -- __attribute__ ((warn_unused_result, malloc)); -+ __attribute__ ((warn_unused_result)); - static int nih_dbus_proxy_signal_destroy (NihDBusProxySignal *proxied); - static char *nih_dbus_proxy_signal_rule (const void *parent, - NihDBusProxySignal *proxied) -- __attribute__ ((warn_unused_result, malloc)); -+ __attribute__ ((warn_unused_result)); - - /* Prototypes for handler functions */ - static DBusHandlerResult nih_dbus_proxy_name_owner_changed (DBusConnection *connection, ---- libnih-1.0.3.orig/nih-dbus-tool/symbol.c -+++ libnih-1.0.3/nih-dbus-tool/symbol.c -@@ -40,10 +40,10 @@ - /* Prototypes for static functions */ - static char *symbol_strcat_interface (char **str, const void *parent, - const char *format, ...) -- __attribute__ ((format (printf, 3, 4), warn_unused_result, malloc)); -+ __attribute__ ((format (printf, 3, 4), warn_unused_result)); - static char *symbol_strcat_title (char **str, const void *parent, - const char *format, ...) -- __attribute__ ((format (printf, 3, 4), warn_unused_result, malloc)); -+ __attribute__ ((format (printf, 3, 4), warn_unused_result)); - - - /** ---- libnih-1.0.3.orig/nih-dbus-tool/demarshal.h -+++ libnih-1.0.3/nih-dbus-tool/demarshal.h -@@ -37,7 +37,7 @@ - const char *prefix, const char *interface_symbol, - const char *member_symbol, const char *symbol, - NihList *structs) -- __attribute__ ((warn_unused_result, malloc)); -+ __attribute__ ((warn_unused_result)); - - NIH_END_EXTERN - ---- libnih-1.0.3.orig/nih-dbus-tool/symbol.h -+++ libnih-1.0.3/nih-dbus-tool/symbol.h -@@ -28,22 +28,22 @@ - int symbol_valid (const char *symbol); - - char *symbol_from_name (const void *parent, const char *name) -- __attribute__ ((warn_unused_result, malloc)); -+ __attribute__ ((warn_unused_result)); - - char *symbol_impl (const void *parent, const char *prefix, - const char *interface_name, const char *name, - const char *postfix) -- __attribute__ ((warn_unused_result, malloc)); -+ __attribute__ ((warn_unused_result)); - - char *symbol_extern (const void *parent, const char *prefix, - const char *interface_symbol, const char *midfix, - const char *symbol, const char *postfix) -- __attribute__ ((warn_unused_result, malloc)); -+ __attribute__ ((warn_unused_result)); - - char *symbol_typedef (const void *parent, const char *prefix, - const char *interface_symbol, const char *midfix, - const char *symbol, const char *postfix) -- __attribute__ ((warn_unused_result, malloc)); -+ __attribute__ ((warn_unused_result)); - - NIH_END_EXTERN - ---- libnih-1.0.3.orig/nih-dbus-tool/output.h -+++ libnih-1.0.3/nih-dbus-tool/output.h -@@ -35,9 +35,9 @@ - __attribute__ ((warn_unused_result)); - - char *output_preamble (const void *parent, const char *path) -- __attribute__ ((warn_unused_result, malloc)); -+ __attribute__ ((warn_unused_result)); - char *output_sentinel (const void *parent, const char *path) -- __attribute__ ((warn_unused_result, malloc)); -+ __attribute__ ((warn_unused_result)); - - NIH_END_EXTERN - ---- libnih-1.0.3.orig/nih-dbus-tool/parse.h -+++ libnih-1.0.3/nih-dbus-tool/parse.h -@@ -95,7 +95,7 @@ - - ParseStack *parse_stack_push (const void *parent, NihList *stack, - ParseStackType type, void *data) -- __attribute__ ((warn_unused_result, malloc)); -+ __attribute__ ((warn_unused_result)); - ParseStack *parse_stack_top (NihList *stack); - - void parse_start_tag (XML_Parser xmlp, const char *tag, -@@ -103,7 +103,7 @@ - void parse_end_tag (XML_Parser xmlp, const char *tag); - - Node * parse_xml (const void *parent, int fd, const char *filename) -- __attribute__ ((warn_unused_result, malloc)); -+ __attribute__ ((warn_unused_result)); - - NIH_END_EXTERN - ---- libnih-1.0.3.orig/nih-dbus-tool/type.h -+++ libnih-1.0.3/nih-dbus-tool/type.h -@@ -94,43 +94,43 @@ - - char * type_of (const void * parent, - DBusSignatureIter *iter) -- __attribute__ ((warn_unused_result, malloc)); -+ __attribute__ ((warn_unused_result)); - - TypeVar * type_var_new (const void *parent, const char *type, - const char *name) -- __attribute__ ((warn_unused_result, malloc)); -+ __attribute__ ((warn_unused_result)); - char * type_var_to_string (const void *parent, TypeVar *var) -- __attribute__ ((warn_unused_result, malloc)); -+ __attribute__ ((warn_unused_result)); - char * type_var_layout (const void *parent, NihList *vars) -- __attribute__ ((warn_unused_result, malloc)); -+ __attribute__ ((warn_unused_result)); - - TypeFunc * type_func_new (const void *parent, const char *type, - const char *name) -- __attribute__ ((warn_unused_result, malloc)); -+ __attribute__ ((warn_unused_result)); - char * type_func_to_string (const void *parent, TypeFunc *func) -- __attribute__ ((warn_unused_result, malloc)); -+ __attribute__ ((warn_unused_result)); - char * type_func_to_typedef (const void *parent, TypeFunc *func) -- __attribute__ ((warn_unused_result, malloc)); -+ __attribute__ ((warn_unused_result)); - char * type_func_layout (const void *parent, NihList *funcs) -- __attribute__ ((warn_unused_result, malloc)); -+ __attribute__ ((warn_unused_result)); - - TypeStruct *type_struct_new (const void *parent, const char *name) -- __attribute__ ((warn_unused_result, malloc)); -+ __attribute__ ((warn_unused_result)); - char * type_struct_to_string (const void *parent, TypeStruct *structure) -- __attribute__ ((warn_unused_result, malloc)); -+ __attribute__ ((warn_unused_result)); - - char * type_to_const (char **type, const void *parent) -- __attribute__ ((warn_unused_result, malloc)); -+ __attribute__ ((warn_unused_result)); - char * type_to_pointer (char **type, const void *parent) -- __attribute__ ((warn_unused_result, malloc)); -+ __attribute__ ((warn_unused_result)); - char * type_to_static (char **type, const void *parent) -- __attribute__ ((warn_unused_result, malloc)); -+ __attribute__ ((warn_unused_result)); - char * type_to_extern (char **type, const void *parent) -- __attribute__ ((warn_unused_result, malloc)); -+ __attribute__ ((warn_unused_result)); - - char * type_strcat_assert (char **block, const void *parent, - TypeVar *var, TypeVar *prev, TypeVar *next) -- __attribute__ ((warn_unused_result, malloc)); -+ __attribute__ ((warn_unused_result)); - - NIH_END_EXTERN - ---- libnih-1.0.3.orig/nih-dbus-tool/argument.h -+++ libnih-1.0.3/nih-dbus-tool/argument.h -@@ -61,7 +61,7 @@ - - Argument *argument_new (const void *parent, const char *name, - const char *type, NihDBusArgDir direction) -- __attribute__ ((warn_unused_result, malloc)); -+ __attribute__ ((warn_unused_result)); - - int argument_start_tag (XML_Parser xmlp, const char *tag, - char * const *attr) ---- libnih-1.0.3.orig/nih-dbus-tool/indent.h -+++ libnih-1.0.3/nih-dbus-tool/indent.h -@@ -26,9 +26,9 @@ - NIH_BEGIN_EXTERN - - char *indent (char **str, const void *parent, int level) -- __attribute__ ((warn_unused_result, malloc)); -+ __attribute__ ((warn_unused_result)); - char *comment (char **str, const void *parent) -- __attribute__ ((warn_unused_result, malloc)); -+ __attribute__ ((warn_unused_result)); - - NIH_END_EXTERN - ---- libnih-1.0.3.orig/nih-dbus-tool/main.c -+++ libnih-1.0.3/nih-dbus-tool/main.c -@@ -52,10 +52,10 @@ - /* Prototypes for local functions */ - char *source_file_path (const void *parent, const char *output_path, - const char *filename) -- __attribute__ ((warn_unused_result, malloc)); -+ __attribute__ ((warn_unused_result)); - char *header_file_path (const void *parent, const char *output_path, - const char *filename) -- __attribute__ ((warn_unused_result, malloc)); -+ __attribute__ ((warn_unused_result)); - - - /** ---- libnih-1.0.3.orig/nih-dbus-tool/signal.h -+++ libnih-1.0.3/nih-dbus-tool/signal.h -@@ -58,7 +58,7 @@ - int signal_name_valid (const char *name); - - Signal * signal_new (const void *parent, const char *name) -- __attribute__ ((warn_unused_result, malloc)); -+ __attribute__ ((warn_unused_result)); - - int signal_start_tag (XML_Parser xmlp, const char *tag, - char * const *attr) -@@ -76,18 +76,18 @@ - char * signal_object_function (const void *parent, const char *prefix, - Interface *interface, Signal *signal, - NihList *prototypes, NihList *structs) -- __attribute__ ((warn_unused_result, malloc)); -+ __attribute__ ((warn_unused_result)); - - char * signal_proxy_function (const void *parent, const char *prefix, - Interface *interface, Signal *signal, - NihList *prototypes, NihList *typedefs, - NihList *structs) -- __attribute__ ((warn_unused_result, malloc)); -+ __attribute__ ((warn_unused_result)); - - char * signal_args_array (const void *parent, const char *prefix, - Interface *interface, Signal *signal, - NihList *prototypes) -- __attribute__ ((warn_unused_result, malloc)); -+ __attribute__ ((warn_unused_result)); - - NIH_END_EXTERN - ---- libnih-1.0.3.orig/nih-dbus-tool/marshal.c -+++ libnih-1.0.3/nih-dbus-tool/marshal.c -@@ -49,7 +49,7 @@ - const char *prefix, const char *interface_symbol, - const char *member_symbol, const char *symbol, - NihList *structs) -- __attribute__ ((warn_unused_result, malloc)); -+ __attribute__ ((warn_unused_result)); - static char *marshal_array (const void *parent, - DBusSignatureIter *iter, - const char *iter_name, const char *name, -@@ -58,7 +58,7 @@ - const char *prefix, const char *interface_symbol, - const char *member_symbol, const char *symbol, - NihList *structs) -- __attribute__ ((warn_unused_result, malloc)); -+ __attribute__ ((warn_unused_result)); - static char *marshal_struct (const void *parent, - DBusSignatureIter *iter, - const char *iter_name, const char *name, -@@ -67,7 +67,7 @@ - const char *prefix, const char *interface_symbol, - const char *member_symbol, const char *symbol, - NihList *structs) -- __attribute__ ((warn_unused_result, malloc)); -+ __attribute__ ((warn_unused_result)); - - - /** -@@ -364,6 +364,7 @@ - nih_local TypeVar *element_len_var = NULL; - nih_local char * block = NULL; - nih_local char * vars_block = NULL; -+ nih_local char * loop_block = NULL; - - nih_assert (iter != NULL); - nih_assert (iter_name != NULL); -@@ -448,7 +449,7 @@ - nih_list_add (locals, &array_iter_var->entry); - - if (dbus_type_is_fixed (element_type)) { -- if (! nih_strcat_sprintf (&code, parent, -+ if (! nih_strcat_sprintf (&loop_block, parent, - "for (size_t %s = 0; %s < %s; %s++) {\n", - loop_name, loop_name, len_name, loop_name)) { - nih_free (code); -@@ -456,6 +457,12 @@ - } - } else { - if (! nih_strcat_sprintf (&code, parent, -+ "if (%s) {\n", -+ name)) { -+ nih_free (code); -+ return NULL; -+ } -+ if (! nih_strcat_sprintf (&loop_block, parent, - "for (size_t %s = 0; %s[%s]; %s++) {\n", - loop_name, name, loop_name, loop_name)) { - nih_free (code); -@@ -576,7 +583,7 @@ - } - - -- if (! nih_strcat_sprintf (&code, parent, -+ if (! nih_strcat_sprintf (&loop_block, parent, - "%s" - "\n" - "%s" -@@ -590,9 +597,34 @@ - } - - /* Close the container again */ -+ if (! nih_strcat_sprintf (&loop_block, parent, -+ "}\n")) { -+ nih_free (code); -+ return NULL; -+ } -+ -+ if (dbus_type_is_fixed (element_type)) { -+ if (! nih_strcat_sprintf (&code, parent, -+ "%s\n", loop_block)) { -+ nih_free (code); -+ return NULL; -+ } -+ } -+ else { -+ if (! indent (&loop_block, NULL, 1)) { -+ nih_free (code); -+ return NULL; -+ } -+ -+ if (! nih_strcat_sprintf (&code, parent, -+ "%s" -+ "}\n\n", loop_block)) { -+ nih_free (code); -+ return NULL; -+ } -+ } -+ - if (! nih_strcat_sprintf (&code, parent, -- "}\n" -- "\n" - "if (! dbus_message_iter_close_container (&%s, &%s)) {\n" - "%s" - "}\n", ---- libnih-1.0.3.orig/nih-dbus-tool/demarshal.c -+++ libnih-1.0.3/nih-dbus-tool/demarshal.c -@@ -51,7 +51,7 @@ - const char *prefix, const char *interface_symbol, - const char *member_symbol, const char *symbol, - NihList *structs) -- __attribute__ ((warn_unused_result, malloc)); -+ __attribute__ ((warn_unused_result)); - static char *demarshal_array (const void *parent, - DBusSignatureIter *iter, - const char *parent_name, -@@ -62,7 +62,7 @@ - const char *prefix, const char *interface_symbol, - const char *member_symbol, const char *symbol, - NihList *structs) -- __attribute__ ((warn_unused_result, malloc)); -+ __attribute__ ((warn_unused_result)); - static char *demarshal_struct (const void *parent, - DBusSignatureIter *iter, - const char *parent_name, -@@ -73,7 +73,7 @@ - const char *prefix, const char *interface_symbol, - const char *member_symbol, const char *symbol, - NihList *structs) -- __attribute__ ((warn_unused_result, malloc)); -+ __attribute__ ((warn_unused_result)); - - - /** ---- libnih-1.0.3.orig/nih-dbus-tool/interface.h -+++ libnih-1.0.3/nih-dbus-tool/interface.h -@@ -61,7 +61,7 @@ - - Interface *interface_new (const void *parent, - const char *name) -- __attribute__ ((warn_unused_result, malloc)); -+ __attribute__ ((warn_unused_result)); - - int interface_start_tag (XML_Parser xmlp, - const char *tag, -@@ -81,26 +81,26 @@ - Interface *interface, - int with_handlers, - NihList *prototypes) -- __attribute__ ((warn_unused_result, malloc)); -+ __attribute__ ((warn_unused_result)); - char * interface_signals_array (const void *parent, - const char *prefix, - Interface *interface, - int with_filters, - NihList *prototypes) -- __attribute__ ((warn_unused_result, malloc)); -+ __attribute__ ((warn_unused_result)); - char * interface_properties_array (const void *parent, - const char *prefix, - Interface *interface, - int with_handlers, - NihList *prototypes) -- __attribute__ ((warn_unused_result, malloc)); -+ __attribute__ ((warn_unused_result)); - - char * interface_struct (const void *parent, - const char *prefix, - Interface *interface, - int object, - NihList *prototypes) -- __attribute__ ((warn_unused_result, malloc)); -+ __attribute__ ((warn_unused_result)); - - - char * interface_proxy_get_all_function (const void *parent, -@@ -108,7 +108,7 @@ - Interface *interface, - NihList *prototypes, - NihList *structs) -- __attribute__ ((warn_unused_result, malloc)); -+ __attribute__ ((warn_unused_result)); - - char * interface_proxy_get_all_notify_function (const void *parent, - const char *prefix, -@@ -116,14 +116,14 @@ - NihList *prototypes, - NihList *typedefs, - NihList *structs) -- __attribute__ ((warn_unused_result, malloc)); -+ __attribute__ ((warn_unused_result)); - - char * interface_proxy_get_all_sync_function (const void *parent, - const char *prefix, - Interface *interface, - NihList *prototypes, - NihList *structs) -- __attribute__ ((warn_unused_result, malloc)); -+ __attribute__ ((warn_unused_result)); - - NIH_END_EXTERN - ---- libnih-1.0.3.orig/nih-dbus-tool/method.h -+++ libnih-1.0.3/nih-dbus-tool/method.h -@@ -62,7 +62,7 @@ - int method_name_valid (const char *name); - - Method * method_new (const void *parent, const char *name) -- __attribute__ ((warn_unused_result, malloc)); -+ __attribute__ ((warn_unused_result)); - - int method_start_tag (XML_Parser xmlp, const char *tag, - char * const *attr) -@@ -82,33 +82,33 @@ - Interface *interface, Method *method, - NihList *prototypes, NihList *handlers, - NihList *structs) -- __attribute__ ((warn_unused_result, malloc)); -+ __attribute__ ((warn_unused_result)); - - char * method_reply_function (const void *parent, const char *prefix, - Interface *interface, Method *method, - NihList *prototypes, NihList *structs) -- __attribute__ ((warn_unused_result, malloc)); -+ __attribute__ ((warn_unused_result)); - - char * method_proxy_function (const void *parent, const char *prefix, - Interface *interface, Method *method, - NihList *prototypes, NihList *structs) -- __attribute__ ((warn_unused_result, malloc)); -+ __attribute__ ((warn_unused_result)); - - char * method_proxy_notify_function (const void *parent, const char *prefix, - Interface *interface, Method *method, - NihList *prototypes, NihList *typedefs, - NihList *structs) -- __attribute__ ((warn_unused_result, malloc)); -+ __attribute__ ((warn_unused_result)); - - char * method_proxy_sync_function (const void *parent, const char *prefix, - Interface *interface, Method *method, - NihList *prototypes, NihList *structs) -- __attribute__ ((warn_unused_result, malloc)); -+ __attribute__ ((warn_unused_result)); - - char * method_args_array (const void *parent, const char *prefix, - Interface *interface, Method *method, - NihList *prototypes) -- __attribute__ ((warn_unused_result, malloc)); -+ __attribute__ ((warn_unused_result)); - - NIH_END_EXTERN - ---- libnih-1.0.3.orig/nih-dbus-tool/node.h -+++ libnih-1.0.3/nih-dbus-tool/node.h -@@ -47,7 +47,7 @@ - int node_path_valid (const char *name); - - Node * node_new (const void *parent, const char *path) -- __attribute__ ((warn_unused_result, malloc)); -+ __attribute__ ((warn_unused_result)); - - int node_start_tag (XML_Parser xmlp, const char *tag, - char * const *attr) -@@ -59,18 +59,18 @@ - - char * node_interfaces_array (const void *parent, const char *prefix, - Node *node, int object, NihList *prototypes) -- __attribute__ ((warn_unused_result, malloc)); -+ __attribute__ ((warn_unused_result)); - - char * node_object_functions (const void *parent, const char *prefix, - Node *node, - NihList *prototypes, NihList *handlers, - NihList *structs, NihList *externs) -- __attribute__ ((warn_unused_result, malloc)); -+ __attribute__ ((warn_unused_result)); - char * node_proxy_functions (const void *parent, const char *prefix, - Node *node, - NihList *prototypes, NihList *structs, - NihList *typedefs, NihList *externs) -- __attribute__ ((warn_unused_result, malloc)); -+ __attribute__ ((warn_unused_result)); - - NIH_END_EXTERN - ---- libnih-1.0.3.orig/nih-dbus-tool/marshal.h -+++ libnih-1.0.3/nih-dbus-tool/marshal.h -@@ -35,7 +35,7 @@ - const char *prefix, const char *interface_symbol, - const char *member_symbol, const char *symbol, - NihList *structs) -- __attribute__ ((warn_unused_result, malloc)); -+ __attribute__ ((warn_unused_result)); - - NIH_END_EXTERN - ---- libnih-1.0.3.orig/nih-dbus-tool/type.c -+++ libnih-1.0.3/nih-dbus-tool/type.c -@@ -1101,7 +1101,7 @@ - nih_assert (block != NULL); - nih_assert (var != NULL); - -- if (! strchr (var->type, '*')) -+ if (! strchr (var->type, '*') || ! strcmp (var->type, "char * const *")) - return *block; - - if (next && (! strcmp (next->type, "size_t"))) { ---- libnih-1.0.3.orig/nih-dbus-tool/property.h -+++ libnih-1.0.3/nih-dbus-tool/property.h -@@ -65,7 +65,7 @@ - const char *name, - const char *type, - NihDBusAccess access) -- __attribute__ ((warn_unused_result, malloc)); -+ __attribute__ ((warn_unused_result)); - - int property_start_tag (XML_Parser xmlp, const char *tag, - char * const *attr) -@@ -88,7 +88,7 @@ - NihList *prototypes, - NihList *handlers, - NihList *structs) -- __attribute__ ((warn_unused_result, malloc)); -+ __attribute__ ((warn_unused_result)); - char * property_object_set_function (const void *parent, - const char *prefix, - Interface *interface, -@@ -96,7 +96,7 @@ - NihList *prototypes, - NihList *handlers, - NihList *structs) -- __attribute__ ((warn_unused_result, malloc)); -+ __attribute__ ((warn_unused_result)); - - char * property_proxy_get_function (const void *parent, - const char *prefix, -@@ -104,7 +104,7 @@ - Property *property, - NihList *prototypes, - NihList *structs) -- __attribute__ ((warn_unused_result, malloc)); -+ __attribute__ ((warn_unused_result)); - char * property_proxy_get_notify_function (const void *parent, - const char *prefix, - Interface *interface, -@@ -112,7 +112,7 @@ - NihList *prototypes, - NihList *typedefs, - NihList *structs) -- __attribute__ ((warn_unused_result, malloc)); -+ __attribute__ ((warn_unused_result)); - - char * property_proxy_set_function (const void *parent, - const char *prefix, -@@ -120,7 +120,7 @@ - Property *property, - NihList *prototypes, - NihList *structs) -- __attribute__ ((warn_unused_result, malloc)); -+ __attribute__ ((warn_unused_result)); - char * property_proxy_set_notify_function (const void *parent, - const char *prefix, - Interface *interface, -@@ -128,7 +128,7 @@ - NihList *prototypes, - NihList *typedefs, - NihList *structs) -- __attribute__ ((warn_unused_result, malloc)); -+ __attribute__ ((warn_unused_result)); - - char * property_proxy_get_sync_function (const void *parent, - const char *prefix, -@@ -136,14 +136,14 @@ - Property *property, - NihList *prototypes, - NihList *structs) -- __attribute__ ((warn_unused_result, malloc)); -+ __attribute__ ((warn_unused_result)); - char * property_proxy_set_sync_function (const void *parent, - const char *prefix, - Interface *interface, - Property *property, - NihList *prototypes, - NihList *structs) -- __attribute__ ((warn_unused_result, malloc)); -+ __attribute__ ((warn_unused_result)); - - NIH_END_EXTERN - ---- libnih-1.0.3.orig/nih-dbus-tool/tests/test_main.c -+++ libnih-1.0.3/nih-dbus-tool/tests/test_main.c -@@ -100,10 +100,10 @@ - - extern char *source_file_path (const void *parent, const char *output_path, - const char *filename) -- __attribute__ ((warn_unused_result, malloc)); -+ __attribute__ ((warn_unused_result)); - extern char *header_file_path (const void *parent, const char *output_path, - const char *filename) -- __attribute__ ((warn_unused_result, malloc)); -+ __attribute__ ((warn_unused_result)); - - void - test_source_file_path (void) ---- libnih-1.0.3.orig/nih-dbus-tool/tests/test_com.netsplit.Nih.Test_object.c -+++ libnih-1.0.3/nih-dbus-tool/tests/test_com.netsplit.Nih.Test_object.c -@@ -12524,6 +12524,7 @@ - dbus_message_iter_init (reply, &iter); - - dbus_message_iter_get_basic (&iter, &str_value); -+ TEST_NE (str_value[0], '\0'); - TEST_TRUE (strchr ("0123456789", str_value[0])); - - dbus_message_unref (reply); ---- libnih-1.0.3.orig/nih-dbus-tool/tests/test_marshal.c -+++ libnih-1.0.3/nih-dbus-tool/tests/test_marshal.c -@@ -1479,39 +1479,41 @@ - "\treturn -1;\n" - "}\n" - "\n" -- "for (size_t value_i = 0; value[value_i]; value_i++) {\n" -- "\tDBusMessageIter value_element_iter;\n" -- "\tconst int16_t * value_element;\n" -- "\tsize_t value_element_len;\n" -+ "if (value) {\n" -+ "\tfor (size_t value_i = 0; value[value_i]; value_i++) {\n" -+ "\t\tDBusMessageIter value_element_iter;\n" -+ "\t\tconst int16_t * value_element;\n" -+ "\t\tsize_t value_element_len;\n" - "\n" -- "\tvalue_element = value[value_i];\n" -- "\tvalue_element_len = value_len[value_i];\n" -+ "\t\tvalue_element = value[value_i];\n" -+ "\t\tvalue_element_len = value_len[value_i];\n" - "\n" - -- "\t/* Marshal an array onto the message */\n" -- "\tif (! dbus_message_iter_open_container (&value_iter, DBUS_TYPE_ARRAY, \"n\", &value_element_iter)) {\n" -- "\t\tdbus_message_iter_abandon_container (&iter, &value_iter);\n" -- "\t\treturn -1;\n" -- "\t}\n" -+ "\t\t/* Marshal an array onto the message */\n" -+ "\t\tif (! dbus_message_iter_open_container (&value_iter, DBUS_TYPE_ARRAY, \"n\", &value_element_iter)) {\n" -+ "\t\t\tdbus_message_iter_abandon_container (&iter, &value_iter);\n" -+ "\t\t\treturn -1;\n" -+ "\t\t}\n" - "\n" -- "\tfor (size_t value_element_i = 0; value_element_i < value_element_len; value_element_i++) {\n" -- "\t\tint16_t value_element_element;\n" -+ "\t\tfor (size_t value_element_i = 0; value_element_i < value_element_len; value_element_i++) {\n" -+ "\t\t\tint16_t value_element_element;\n" - "\n" -- "\t\tvalue_element_element = value_element[value_element_i];\n" -+ "\t\t\tvalue_element_element = value_element[value_element_i];\n" - "\n" -- "\t\t/* Marshal a int16_t onto the message */\n" -- "\t\tif (! dbus_message_iter_append_basic (&value_element_iter, DBUS_TYPE_INT16, &value_element_element)) {\n" -- "\t\t\tdbus_message_iter_abandon_container (&value_iter, &value_element_iter);\n" -+ "\t\t\t/* Marshal a int16_t onto the message */\n" -+ "\t\t\tif (! dbus_message_iter_append_basic (&value_element_iter, DBUS_TYPE_INT16, &value_element_element)) {\n" -+ "\t\t\t\tdbus_message_iter_abandon_container (&value_iter, &value_element_iter);\n" -+ "\t\t\t\tdbus_message_iter_abandon_container (&iter, &value_iter);\n" -+ "\t\t\t\treturn -1;\n" -+ "\t\t\t}\n" -+ "\t\t}\n" -+ "\n" -+ "\t\tif (! dbus_message_iter_close_container (&value_iter, &value_element_iter)) {\n" - "\t\t\tdbus_message_iter_abandon_container (&iter, &value_iter);\n" - "\t\t\treturn -1;\n" - "\t\t}\n" -- "\t}\n" -- "\n" -- "\tif (! dbus_message_iter_close_container (&value_iter, &value_element_iter)) {\n" -- "\t\tdbus_message_iter_abandon_container (&iter, &value_iter);\n" -- "\t\treturn -1;\n" -- "\t}\n" - -+ "\t}\n" - "}\n" - "\n" - "if (! dbus_message_iter_close_container (&iter, &value_iter)) {\n" -@@ -1766,15 +1768,17 @@ - "\treturn -1;\n" - "}\n" - "\n" -- "for (size_t value_i = 0; value[value_i]; value_i++) {\n" -- "\tconst char *value_element;\n" -+ "if (value) {\n" -+ "\tfor (size_t value_i = 0; value[value_i]; value_i++) {\n" -+ "\t\tconst char *value_element;\n" - "\n" -- "\tvalue_element = value[value_i];\n" -+ "\t\tvalue_element = value[value_i];\n" - "\n" -- "\t/* Marshal a char * onto the message */\n" -- "\tif (! dbus_message_iter_append_basic (&value_iter, DBUS_TYPE_STRING, &value_element)) {\n" -- "\t\tdbus_message_iter_abandon_container (&iter, &value_iter);\n" -- "\t\treturn -1;\n" -+ "\t\t/* Marshal a char * onto the message */\n" -+ "\t\tif (! dbus_message_iter_append_basic (&value_iter, DBUS_TYPE_STRING, &value_element)) {\n" -+ "\t\t\tdbus_message_iter_abandon_container (&iter, &value_iter);\n" -+ "\t\t\treturn -1;\n" -+ "\t\t}\n" - "\t}\n" - "}\n" - "\n" -@@ -1933,35 +1937,39 @@ - "\treturn -1;\n" - "}\n" - "\n" -- "for (size_t value_i = 0; value[value_i]; value_i++) {\n" -- "\tDBusMessageIter value_element_iter;\n" -- "\tchar * const * value_element;\n" -+ "if (value) {\n" -+ "\tfor (size_t value_i = 0; value[value_i]; value_i++) {\n" -+ "\t\tDBusMessageIter value_element_iter;\n" -+ "\t\tchar * const * value_element;\n" - "\n" -- "\tvalue_element = value[value_i];\n" -+ "\t\tvalue_element = value[value_i];\n" - "\n" -- "\t/* Marshal an array onto the message */\n" -- "\tif (! dbus_message_iter_open_container (&value_iter, DBUS_TYPE_ARRAY, \"s\", &value_element_iter)) {\n" -- "\t\tdbus_message_iter_abandon_container (&iter, &value_iter);\n" -- "\t\treturn -1;\n" -- "\t}\n" -- "\n" -- "\tfor (size_t value_element_i = 0; value_element[value_element_i]; value_element_i++) {\n" -- "\t\tconst char *value_element_element;\n" -+ "\t\t/* Marshal an array onto the message */\n" -+ "\t\tif (! dbus_message_iter_open_container (&value_iter, DBUS_TYPE_ARRAY, \"s\", &value_element_iter)) {\n" -+ "\t\t\tdbus_message_iter_abandon_container (&iter, &value_iter);\n" -+ "\t\t\treturn -1;\n" -+ "\t\t}\n" - "\n" -- "\t\tvalue_element_element = value_element[value_element_i];\n" -+ "\t\tif (value_element) {\n" -+ "\t\t\tfor (size_t value_element_i = 0; value_element[value_element_i]; value_element_i++) {\n" -+ "\t\t\t\tconst char *value_element_element;\n" -+ "\n" -+ "\t\t\t\tvalue_element_element = value_element[value_element_i];\n" -+ "\n" -+ "\t\t\t\t/* Marshal a char * onto the message */\n" -+ "\t\t\t\tif (! dbus_message_iter_append_basic (&value_element_iter, DBUS_TYPE_STRING, &value_element_element)) {\n" -+ "\t\t\t\t\tdbus_message_iter_abandon_container (&value_iter, &value_element_iter);\n" -+ "\t\t\t\t\tdbus_message_iter_abandon_container (&iter, &value_iter);\n" -+ "\t\t\t\t\treturn -1;\n" -+ "\t\t\t\t}\n" -+ "\t\t\t}\n" -+ "\t\t}\n" - "\n" -- "\t\t/* Marshal a char * onto the message */\n" -- "\t\tif (! dbus_message_iter_append_basic (&value_element_iter, DBUS_TYPE_STRING, &value_element_element)) {\n" -- "\t\t\tdbus_message_iter_abandon_container (&value_iter, &value_element_iter);\n" -+ "\t\tif (! dbus_message_iter_close_container (&value_iter, &value_element_iter)) {\n" - "\t\t\tdbus_message_iter_abandon_container (&iter, &value_iter);\n" - "\t\t\treturn -1;\n" - "\t\t}\n" - "\t}\n" -- "\n" -- "\tif (! dbus_message_iter_close_container (&value_iter, &value_element_iter)) {\n" -- "\t\tdbus_message_iter_abandon_container (&iter, &value_iter);\n" -- "\t\treturn -1;\n" -- "\t}\n" - "}\n" - "\n" - "if (! dbus_message_iter_close_container (&iter, &value_iter)) {\n" -@@ -2194,16 +2202,18 @@ - "\treturn -1;\n" - "}\n" - "\n" -- "for (size_t value_item2_i = 0; value_item2[value_item2_i]; value_item2_i++) {\n" -- "\tconst char *value_item2_element;\n" -+ "if (value_item2) {\n" -+ "\tfor (size_t value_item2_i = 0; value_item2[value_item2_i]; value_item2_i++) {\n" -+ "\t\tconst char *value_item2_element;\n" - "\n" -- "\tvalue_item2_element = value_item2[value_item2_i];\n" -+ "\t\tvalue_item2_element = value_item2[value_item2_i];\n" - "\n" -- "\t/* Marshal a char * onto the message */\n" -- "\tif (! dbus_message_iter_append_basic (&value_item2_iter, DBUS_TYPE_STRING, &value_item2_element)) {\n" -- "\t\tdbus_message_iter_abandon_container (&value_iter, &value_item2_iter);\n" -- "\t\tdbus_message_iter_abandon_container (&iter, &value_iter);\n" -- "\t\treturn -1;\n" -+ "\t\t/* Marshal a char * onto the message */\n" -+ "\t\tif (! dbus_message_iter_append_basic (&value_item2_iter, DBUS_TYPE_STRING, &value_item2_element)) {\n" -+ "\t\t\tdbus_message_iter_abandon_container (&value_iter, &value_item2_iter);\n" -+ "\t\t\tdbus_message_iter_abandon_container (&iter, &value_iter);\n" -+ "\t\t\treturn -1;\n" -+ "\t\t}\n" - "\t}\n" - "}\n" - "\n" -@@ -2642,41 +2652,43 @@ - "\treturn -1;\n" - "}\n" - "\n" -- "for (size_t value_i = 0; value[value_i]; value_i++) {\n" -- "\tDBusMessageIter value_element_iter;\n" -- "\tconst char * value_element_item0;\n" -- "\tuint32_t value_element_item1;\n" -- "\tconst MyStructArrayValueElement *value_element;\n" -+ "if (value) {\n" -+ "\tfor (size_t value_i = 0; value[value_i]; value_i++) {\n" -+ "\t\tDBusMessageIter value_element_iter;\n" -+ "\t\tconst char * value_element_item0;\n" -+ "\t\tuint32_t value_element_item1;\n" -+ "\t\tconst MyStructArrayValueElement *value_element;\n" - "\n" -- "\tvalue_element = value[value_i];\n" -+ "\t\tvalue_element = value[value_i];\n" - "\n" -- "\t/* Marshal a structure onto the message */\n" -- "\tif (! dbus_message_iter_open_container (&value_iter, DBUS_TYPE_STRUCT, NULL, &value_element_iter)) {\n" -- "\t\tdbus_message_iter_abandon_container (&iter, &value_iter);\n" -- "\t\treturn -1;\n" -- "\t}\n" -+ "\t\t/* Marshal a structure onto the message */\n" -+ "\t\tif (! dbus_message_iter_open_container (&value_iter, DBUS_TYPE_STRUCT, NULL, &value_element_iter)) {\n" -+ "\t\t\tdbus_message_iter_abandon_container (&iter, &value_iter);\n" -+ "\t\t\treturn -1;\n" -+ "\t\t}\n" - "\n" -- "\tvalue_element_item0 = value_element->item0;\n" -+ "\t\tvalue_element_item0 = value_element->item0;\n" - "\n" -- "\t/* Marshal a char * onto the message */\n" -- "\tif (! dbus_message_iter_append_basic (&value_element_iter, DBUS_TYPE_STRING, &value_element_item0)) {\n" -- "\t\tdbus_message_iter_abandon_container (&value_iter, &value_element_iter);\n" -- "\t\tdbus_message_iter_abandon_container (&iter, &value_iter);\n" -- "\t\treturn -1;\n" -- "\t}\n" -+ "\t\t/* Marshal a char * onto the message */\n" -+ "\t\tif (! dbus_message_iter_append_basic (&value_element_iter, DBUS_TYPE_STRING, &value_element_item0)) {\n" -+ "\t\t\tdbus_message_iter_abandon_container (&value_iter, &value_element_iter);\n" -+ "\t\t\tdbus_message_iter_abandon_container (&iter, &value_iter);\n" -+ "\t\t\treturn -1;\n" -+ "\t\t}\n" - "\n" -- "\tvalue_element_item1 = value_element->item1;\n" -+ "\t\tvalue_element_item1 = value_element->item1;\n" - "\n" -- "\t/* Marshal a uint32_t onto the message */\n" -- "\tif (! dbus_message_iter_append_basic (&value_element_iter, DBUS_TYPE_UINT32, &value_element_item1)) {\n" -- "\t\tdbus_message_iter_abandon_container (&value_iter, &value_element_iter);\n" -- "\t\tdbus_message_iter_abandon_container (&iter, &value_iter);\n" -- "\t\treturn -1;\n" -- "\t}\n" -+ "\t\t/* Marshal a uint32_t onto the message */\n" -+ "\t\tif (! dbus_message_iter_append_basic (&value_element_iter, DBUS_TYPE_UINT32, &value_element_item1)) {\n" -+ "\t\t\tdbus_message_iter_abandon_container (&value_iter, &value_element_iter);\n" -+ "\t\t\tdbus_message_iter_abandon_container (&iter, &value_iter);\n" -+ "\t\t\treturn -1;\n" -+ "\t\t}\n" - "\n" -- "\tif (! dbus_message_iter_close_container (&value_iter, &value_element_iter)) {\n" -- "\t\tdbus_message_iter_abandon_container (&iter, &value_iter);\n" -- "\t\treturn -1;\n" -+ "\t\tif (! dbus_message_iter_close_container (&value_iter, &value_element_iter)) {\n" -+ "\t\t\tdbus_message_iter_abandon_container (&iter, &value_iter);\n" -+ "\t\t\treturn -1;\n" -+ "\t\t}\n" - "\t}\n" - "}\n" - "\n" -@@ -2912,41 +2924,43 @@ - "\treturn -1;\n" - "}\n" - "\n" -- "for (size_t value_i = 0; value[value_i]; value_i++) {\n" -- "\tDBusMessageIter value_element_iter;\n" -- "\tconst char * value_element_item0;\n" -- "\tuint32_t value_element_item1;\n" -- "\tconst MyDictEntryArrayValueElement *value_element;\n" -+ "if (value) {\n" -+ "\tfor (size_t value_i = 0; value[value_i]; value_i++) {\n" -+ "\t\tDBusMessageIter value_element_iter;\n" -+ "\t\tconst char * value_element_item0;\n" -+ "\t\tuint32_t value_element_item1;\n" -+ "\t\tconst MyDictEntryArrayValueElement *value_element;\n" - "\n" -- "\tvalue_element = value[value_i];\n" -+ "\t\tvalue_element = value[value_i];\n" - "\n" -- "\t/* Marshal a structure onto the message */\n" -- "\tif (! dbus_message_iter_open_container (&value_iter, DBUS_TYPE_DICT_ENTRY, NULL, &value_element_iter)) {\n" -- "\t\tdbus_message_iter_abandon_container (&iter, &value_iter);\n" -- "\t\treturn -1;\n" -- "\t}\n" -+ "\t\t/* Marshal a structure onto the message */\n" -+ "\t\tif (! dbus_message_iter_open_container (&value_iter, DBUS_TYPE_DICT_ENTRY, NULL, &value_element_iter)) {\n" -+ "\t\t\tdbus_message_iter_abandon_container (&iter, &value_iter);\n" -+ "\t\t\treturn -1;\n" -+ "\t\t}\n" - "\n" -- "\tvalue_element_item0 = value_element->item0;\n" -+ "\t\tvalue_element_item0 = value_element->item0;\n" - "\n" -- "\t/* Marshal a char * onto the message */\n" -- "\tif (! dbus_message_iter_append_basic (&value_element_iter, DBUS_TYPE_STRING, &value_element_item0)) {\n" -- "\t\tdbus_message_iter_abandon_container (&value_iter, &value_element_iter);\n" -- "\t\tdbus_message_iter_abandon_container (&iter, &value_iter);\n" -- "\t\treturn -1;\n" -- "\t}\n" -+ "\t\t/* Marshal a char * onto the message */\n" -+ "\t\tif (! dbus_message_iter_append_basic (&value_element_iter, DBUS_TYPE_STRING, &value_element_item0)) {\n" -+ "\t\t\tdbus_message_iter_abandon_container (&value_iter, &value_element_iter);\n" -+ "\t\t\tdbus_message_iter_abandon_container (&iter, &value_iter);\n" -+ "\t\t\treturn -1;\n" -+ "\t\t}\n" - "\n" -- "\tvalue_element_item1 = value_element->item1;\n" -+ "\t\tvalue_element_item1 = value_element->item1;\n" - "\n" -- "\t/* Marshal a uint32_t onto the message */\n" -- "\tif (! dbus_message_iter_append_basic (&value_element_iter, DBUS_TYPE_UINT32, &value_element_item1)) {\n" -- "\t\tdbus_message_iter_abandon_container (&value_iter, &value_element_iter);\n" -- "\t\tdbus_message_iter_abandon_container (&iter, &value_iter);\n" -- "\t\treturn -1;\n" -- "\t}\n" -+ "\t\t/* Marshal a uint32_t onto the message */\n" -+ "\t\tif (! dbus_message_iter_append_basic (&value_element_iter, DBUS_TYPE_UINT32, &value_element_item1)) {\n" -+ "\t\t\tdbus_message_iter_abandon_container (&value_iter, &value_element_iter);\n" -+ "\t\t\tdbus_message_iter_abandon_container (&iter, &value_iter);\n" -+ "\t\t\treturn -1;\n" -+ "\t\t}\n" - "\n" -- "\tif (! dbus_message_iter_close_container (&value_iter, &value_element_iter)) {\n" -- "\t\tdbus_message_iter_abandon_container (&iter, &value_iter);\n" -- "\t\treturn -1;\n" -+ "\t\tif (! dbus_message_iter_close_container (&value_iter, &value_element_iter)) {\n" -+ "\t\t\tdbus_message_iter_abandon_container (&iter, &value_iter);\n" -+ "\t\t\treturn -1;\n" -+ "\t\t}\n" - "\t}\n" - "}\n" - "\n" ---- libnih-1.0.3.orig/nih-dbus-tool/tests/test_com.netsplit.Nih.Test_proxy.c -+++ libnih-1.0.3/nih-dbus-tool/tests/test_com.netsplit.Nih.Test_proxy.c -@@ -27359,6 +27359,7 @@ - TEST_TRUE (unix_fd_to_str_replied); - - TEST_EQ_P (last_data, parent); -+ TEST_NE (last_str_value[0], '\0'); - TEST_TRUE (strchr ("0123456789", last_str_value[0])); - TEST_ALLOC_PARENT (last_str_value, parent); - -@@ -27673,6 +27674,7 @@ - - TEST_EQ (ret, 0); - -+ TEST_NE (str_value[0], '\0'); - TEST_TRUE (strchr ("0123456789", str_value[0])); - TEST_ALLOC_PARENT (str_value, parent); - ---- libnih-1.0.3.orig/nih-dbus-tool/tests/test_property.c -+++ libnih-1.0.3/nih-dbus-tool/tests/test_property.c -@@ -8733,7 +8733,7 @@ - TypeVar * var; - NihListEntry * attrib; - NihDBusProxy * proxy = NULL; -- void * parent = NULL; -+ void * parent __attribute__((unused)) = NULL; - pid_t pid = -1; - int status; - DBusMessage * method_call; ---- libnih-1.0.3.orig/nih-dbus-tool/tests/expected/test_method_object_function_standard.c -+++ libnih-1.0.3/nih-dbus-tool/tests/expected/test_method_object_function_standard.c -@@ -136,17 +136,19 @@ - goto enomem; - } - -- for (size_t output_i = 0; output[output_i]; output_i++) { -- const char *output_element; -+ if (output) { -+ for (size_t output_i = 0; output[output_i]; output_i++) { -+ const char *output_element; - -- output_element = output[output_i]; -+ output_element = output[output_i]; - -- /* Marshal a char * onto the message */ -- if (! dbus_message_iter_append_basic (&output_iter, DBUS_TYPE_STRING, &output_element)) { -- dbus_message_iter_abandon_container (&iter, &output_iter); -- dbus_message_unref (reply); -- reply = NULL; -- goto enomem; -+ /* Marshal a char * onto the message */ -+ if (! dbus_message_iter_append_basic (&output_iter, DBUS_TYPE_STRING, &output_element)) { -+ dbus_message_iter_abandon_container (&iter, &output_iter); -+ dbus_message_unref (reply); -+ reply = NULL; -+ goto enomem; -+ } - } - } - ---- libnih-1.0.3.orig/nih-dbus-tool/tests/expected/test_method_reply_function_standard.c -+++ libnih-1.0.3/nih-dbus-tool/tests/expected/test_method_reply_function_standard.c -@@ -7,7 +7,6 @@ - DBusMessageIter output_iter; - - nih_assert (message != NULL); -- nih_assert (output != NULL); - - /* If the sender doesn't care about a reply, don't bother wasting - * effort constructing and sending one. -@@ -28,16 +27,18 @@ - return -1; - } - -- for (size_t output_i = 0; output[output_i]; output_i++) { -- const char *output_element; -- -- output_element = output[output_i]; -- -- /* Marshal a char * onto the message */ -- if (! dbus_message_iter_append_basic (&output_iter, DBUS_TYPE_STRING, &output_element)) { -- dbus_message_iter_abandon_container (&iter, &output_iter); -- dbus_message_unref (reply); -- return -1; -+ if (output) { -+ for (size_t output_i = 0; output[output_i]; output_i++) { -+ const char *output_element; -+ -+ output_element = output[output_i]; -+ -+ /* Marshal a char * onto the message */ -+ if (! dbus_message_iter_append_basic (&output_iter, DBUS_TYPE_STRING, &output_element)) { -+ dbus_message_iter_abandon_container (&iter, &output_iter); -+ dbus_message_unref (reply); -+ return -1; -+ } - } - } - ---- libnih-1.0.3.orig/nih-dbus-tool/tests/expected/test_method_reply_function_deprecated.c -+++ libnih-1.0.3/nih-dbus-tool/tests/expected/test_method_reply_function_deprecated.c -@@ -7,7 +7,6 @@ - DBusMessageIter output_iter; - - nih_assert (message != NULL); -- nih_assert (output != NULL); - - /* If the sender doesn't care about a reply, don't bother wasting - * effort constructing and sending one. -@@ -28,16 +27,18 @@ - return -1; - } - -- for (size_t output_i = 0; output[output_i]; output_i++) { -- const char *output_element; -- -- output_element = output[output_i]; -- -- /* Marshal a char * onto the message */ -- if (! dbus_message_iter_append_basic (&output_iter, DBUS_TYPE_STRING, &output_element)) { -- dbus_message_iter_abandon_container (&iter, &output_iter); -- dbus_message_unref (reply); -- return -1; -+ if (output) { -+ for (size_t output_i = 0; output[output_i]; output_i++) { -+ const char *output_element; -+ -+ output_element = output[output_i]; -+ -+ /* Marshal a char * onto the message */ -+ if (! dbus_message_iter_append_basic (&output_iter, DBUS_TYPE_STRING, &output_element)) { -+ dbus_message_iter_abandon_container (&iter, &output_iter); -+ dbus_message_unref (reply); -+ return -1; -+ } - } - } - ---- libnih-1.0.3.orig/nih-dbus-tool/tests/expected/test_method_object_function_no_input.c -+++ libnih-1.0.3/nih-dbus-tool/tests/expected/test_method_object_function_no_input.c -@@ -88,17 +88,19 @@ - goto enomem; - } - -- for (size_t output_i = 0; output[output_i]; output_i++) { -- const char *output_element; -+ if (output) { -+ for (size_t output_i = 0; output[output_i]; output_i++) { -+ const char *output_element; - -- output_element = output[output_i]; -+ output_element = output[output_i]; - -- /* Marshal a char * onto the message */ -- if (! dbus_message_iter_append_basic (&output_iter, DBUS_TYPE_STRING, &output_element)) { -- dbus_message_iter_abandon_container (&iter, &output_iter); -- dbus_message_unref (reply); -- reply = NULL; -- goto enomem; -+ /* Marshal a char * onto the message */ -+ if (! dbus_message_iter_append_basic (&output_iter, DBUS_TYPE_STRING, &output_element)) { -+ dbus_message_iter_abandon_container (&iter, &output_iter); -+ dbus_message_unref (reply); -+ reply = NULL; -+ goto enomem; -+ } - } - } - -- cgit 1.2.3-korg