Merge lp:~jamesodhunt/ubuntu/oneiric/upstart/1.3 into lp:ubuntu/oneiric/upstart

Proposed by James Hunt
Status: Merged
Merged at revision: 1317
Proposed branch: lp:~jamesodhunt/ubuntu/oneiric/upstart/1.3
Merge into: lp:ubuntu/oneiric/upstart
Diff against target: 11841 lines (+2785/-3932)
64 files modified
ChangeLog (+410/-435)
NEWS (+67/-98)
TESTING.sessions (+263/-0)
TODO (+1/-7)
configure (+16/-16)
configure.ac (+4/-4)
contrib/bash_completion/upstart (+65/-29)
contrib/vim/syntax/upstart.vim (+61/-22)
debian/changelog (+21/-0)
extra/Makefile.am (+0/-1)
extra/conf/upstart-socket-bridge.conf (+0/-16)
extra/man/socket-event.7 (+0/-92)
extra/man/upstart-socket-bridge.8 (+0/-47)
extra/upstart-socket-bridge.c (+1/-1)
init/Makefile.am (+0/-13)
init/Makefile.in (+246/-306)
init/conf.c (+10/-8)
init/conf.h (+1/-1)
init/control.c (+2/-2)
init/control.h (+1/-1)
init/environ.c (+1/-57)
init/environ.h (+0/-1)
init/errors.h (+4/-1)
init/event.c (+2/-1)
init/job.c (+1/-1)
init/job_class.c (+6/-4)
init/job_class.h (+4/-2)
init/job_process.c (+86/-31)
init/job_process.h (+13/-2)
init/main.c (+95/-20)
init/man/init.5 (+58/-10)
init/man/init.8 (+3/-4)
init/parse_job.c (+69/-17)
init/parse_job.h (+1/-1)
init/paths.h (+9/-20)
init/session.c (+1/-1)
init/session.h (+1/-1)
init/system.c (+5/-11)
init/system.h (+1/-1)
init/tests/test_conf.c (+146/-0)
init/tests/test_control.c (+0/-38)
init/tests/test_environ.c (+0/-107)
init/tests/test_job_class.c (+5/-4)
init/tests/test_job_process.c (+10/-26)
init/tests/test_parse_job.c (+409/-8)
init/tests/test_system.c (+3/-3)
po/ChangeLog (+8/-0)
po/POTFILES.in (+1/-0)
po/en@boldquot.po (+211/-142)
po/en@quot.po (+211/-142)
po/upstart.pot (+209/-140)
scripts/Makefile.am (+0/-25)
scripts/Makefile.in (+0/-543)
scripts/init-checkconf.sh (+0/-248)
scripts/initctl2dot.py (+0/-571)
scripts/man/init-checkconf.8 (+0/-73)
scripts/man/initctl2dot.8 (+0/-87)
util/Makefile.am (+10/-0)
util/Makefile.in (+15/-4)
util/initctl.c (+6/-20)
util/initctl.h (+0/-458)
util/man/initctl.8 (+7/-4)
util/reboot.c (+1/-0)
util/tests/test_initctl.c (+4/-4)
To merge this branch: bzr merge lp:~jamesodhunt/ubuntu/oneiric/upstart/1.3
Reviewer Review Type Date Requested Status
Colin Watson Pending
Review via email: mp+64969@code.launchpad.net

Description of the change

Upstream Upstart 1.3 release.

Original source tarball for Upstart 1.3 is here:

http://launchpad.net/upstart/1.x/1.3/+download/upstart-1.3.tar.gz

Also:

http://launchpad.net/upstart/1.x/1.3/+download/upstart-1.3.tar.gz.asc
http://launchpad.net/upstart/1.x/1.3/+download/upstart-1.3.tar.gz/+md5

Note that we still have user sessions disabled (via D-Bus policy).

To post a comment you must log in.

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1=== modified file 'ChangeLog'
2--- ChangeLog 2011-05-25 19:38:25 +0000
3+++ ChangeLog 2011-06-17 11:15:58 +0000
4@@ -1,444 +1,427 @@
5-2011-04-27 James Hunt <james.hunt@ubuntu.com>
6-
7- * scripts/init-checkconf.sh:
8- - New function upstart_running.
9- - We now check to ensure no other instance running.
10- - Use list command rather than status since the latter requires an
11- instance variable to be specified (LP: #770532).
12- - Improve cleanup safety.
13- * scripts/man/init-checkconf.8: Added limitations section.
14-
15-2011-04-20 James Hunt <james.hunt@ubuntu.com>
16-
17- * control_get_job_by_name: Fix to relax session rigidity for user
18- sessions (allow user sessions to see into the global
19- namespace for backwards compatability) (LP: #767053).
20-
21-2011-04-15 James Hunt <james.hunt@ubuntu.com>
22-
23- * init/conf.c:
24- - conf_source_reload_file(): Added missing error return if override
25- doesn't parse (code path currently unused).
26- - Documentation updates.
27- * init/job.c: job_new(): Fix for nasty OOM scenario when an attempt is made
28- to start a chroot job with same name as running single-instance non-chroot
29- job. Previously, the path for a chrooted Job was set from the (nul) instance
30- name of its parent JobClass. However, since that job instance name already
31- existed outside the chroot and was already D-Bus registered,
32- nih_dbus_object_new() (which allocates storage and is called by
33- job_register()) returned NULL and kept doing so due to being called
34- within NIH_MUST(). This resulted in OOM due to an as-yet unidentified
35- D-Bus bug (possibly a leak in find_subtree_recurse()).
36- * init/session.h: Documentation updates.
37- * util/test_initctl.c: Cleaned up variable names
38- in RUN_COMMAND macro.
39- * init/parse_job.c: Documentation updates.
40-
41-2011-04-06 James Hunt <james.hunt@ubuntu.com>
42-
43- * init/conf.c: conf_select_job(): Added Session parameter.
44- * init/control.c: control_get_job_by_name(): Handle multiple jobs with same
45- name (but different session) in job_classes hash.
46- * init/job_class.c:
47- - job_class_remove(): Added Session parameter.
48- - job_class_consider(): Handle multiple jobs with same name
49- (but different session) in job_classes hash.
50- - job_class_reconsider(): Handle multiple jobs with same name
51- (but different session) in job_classes hash.
52- - job_class_remove(): Handle incorrect session.
53- * init/job_process.c: job_process_spawn(): Updated for sessions and
54- chroots.
55- * init/job_process.h: New enums for:
56- - JOB_PROCESS_ERROR_SETUID
57- - JOB_PROCESS_ERROR_SETGID
58- * init/session.c:
59- - session_from_dbus(): Added ability to disable sessions.
60- - Added disable_sessions variable, set via main().
61- * init/session.h: Added tabular comment summarising Session object
62- contents for different environments.
63- * init/Makefile.am: Reverted special-casing for session.c.
64- * init/main.c: Addition of new command-line option "--no-sessions" to
65- disable chroot+user sessions (providing a "traditional" Upstart
66- environment. The primary use for this option is the test suite.
67- * init/man/init.8: Updates for "--no-sessions".
68- * init/tests/test_*.c: Replaced explicit Sessions with NULL
69- session since tests are not yet session-aware (with the exception of
70- test_job_process.c, all main() functions now set the
71- UPSTART_NO_SESSIONS variable to disable sessions).
72+2011-06-14 James Hunt <james.hunt@ubuntu.com>
73+
74+ * NEWS: Release 1.3
75+
76+2011-06-14 James Hunt <james.hunt@ubuntu.com>
77+
78+ * contrib/vim/syntax/upstart.vim: Updates for kill, oom, expect
79+ and limit.
80+
81+2011-06-07 Scott James Remnant <scott@netsplit.com>
82+
83+ * init/job_process.c (job_process_spawn): Make sure we don't close
84+ our own file descriptor if it already has the right value.
85+
86+2011-06-06 James Hunt <james.hunt@ubuntu.com>
87+
88+ Add override file support.
89+
90+ * init/conf.c:
91+ - conf_reload_path(): Now takes an extra override_path parameter.
92+ - is_conf_file() / is_conf_file_std() / is_conf_file_override(): New
93+ functions to determine type of given file path.
94+ - toggle_conf_name(): New function which convert a conf file
95+ name to an override name and vice versa.
96+ - majority of remaining functions updated to handle override
97+ files.
98+ * init/conf.h: Prototypes.
99+ * init/job_class.c: Whitespace.
100+ * init/man/init.5: Updated to document override file support.
101+ * init/man/init.8: Added reference to control-alt-delete(7) man page.
102+ * init/paths.h: New macros CONF_EXT_OVERRIDE, CONF_EXT_STD,
103+ IS_CONF_FILE_OVERRIDE and IS_CONF_FILE_STD.
104+ * init/parse_conf.c: Added assertion to remind us forcibly to add
105+ override-handling code for directories if we ever allow content in
106+ 'init.conf'.
107+ * init/parse_job.c (parse_job): Additional parameter 'update' to
108+ allow override files to replace existing Job details.
109+ * init/parse_job.h: Updated parse_job() prototype.
110+ * init/test_conf.c
111+ - New macros TEST_ENSURE_CLEAN_ENV() and
112+ TEST_FORCE_WATCH_UPDATE().
113+ - test_override(): New function.
114+ - test_toggle_conf_name(): New function.
115+ * init/test_parse_job.c:
116+ - Updated for extra parse_job() parameter.
117+ - added a test feature to test_parse_job() to exercise new
118+ parameter to parse_job().
119+ * util/man/initctl.8: Clarified what it means to restart a job.
120+
121+ Add udev and socket bridges.
122+
123+ * Makefile.am: Added extra directory.
124+ * New files:
125+ - extra/Makefile.am
126+ - extra/conf/upstart-socket-bridge.conf
127+ - extra/conf/upstart-udev-bridge.conf
128+ - extra/man/socket-event.7
129+ - extra/man/upstart-socket-bridge.8
130+ - extra/man/upstart-udev-bridge.8
131+ - extra/upstart-socket-bridge.c
132+ - extra/upstart-udev-bridge.c
133+ * configure.ac:
134+ - Check for udev (for upstart-udev-bridge).
135+ - Add extra/Makefile to AC_CONFIG_FILES.
136+ * dbus/com.ubuntu.Upstart.xml: Add EmitEventWithFile method.
137+ * init/control.c:
138+ - control_emit_event(): Now a wrapper for control_emit_event_with_file.
139+ - control_emit_event_with_file(): New function that operates on an fd.
140+ * init/control.h: Prototype for control_emit_event_with_file().
141+ * init/event.c:
142+ - event_new(): Initialize event fd.
143+ - event_pending_handle_jobs(): Now calls event_operator_fds().
144+ * init/event.c: Add fd to Event struct.
145+ * init/event_operator.c: event_operator_fds(): New function.
146+ * init/event_operator.h: Prototype for event_operator_fds().
147+ * init/job.c: job_new(): Initialize fd members.
148+ * init/job.h: Add fds and num_fds to Job struct.
149+
150+2011-06-03 James Hunt <james.hunt@ubuntu.com>
151+
152+ Add session support. Note that there are no automatically runnable and
153+ explicit tests yet. However, see TESTING.sessions.
154+
155+ * TESTING.sessions: ASCII (reStructuredText) document explaining
156+ how to run manual tests for session support (for chroots).
157+ * dbus/Upstart.conf: Simplified to support allowing users to invoke
158+ all methods (since Upstart now isolates commands by user).
159+ * init/Makefile.am: Added session.[ch] files.
160+ * init/session.c: New file. Note that session_from_dbus() will disable sessions
161+ (by returning the NULL session) if environment variable "UPSTART_NO_SESSIONS"
162+ is set to any value (used by tests).
163+ * init/session.h: New file.
164+ * init/parse_job.h: parse_job(): Add session pointer to prototype.
165+ * init/parse_job.c:
166+ - parse_job(): Add session parameter.
167+ - Update calls to job_class_new() to pass session pointer.
168+ * init/job.c: job_new(): Crucial change to ensure chroot sessions have
169+ a unique D-Bus name (LP:#728531).
170+ * init/job_class.c:
171+ - job_class_new(): Add session parameter and session support.
172+ - job_class_remove(): Add session parameter to prototype.
173+ - job_class_consider(): Only consider jobs from the appropriate session.
174+ - job_class_reconsider(): Only consider jobs from the appropriate session.
175+ - job_class_start(): Disallow out-of-session modification.
176+ - job_class_stop(): Disallow out-of-session modification.
177+ - job_class_restart(): Disallow out-of-session modification.
178+ * init/main.c: Add "--no-sessions" command-line option to disable
179+ sessions and revert to traditional behaviour.
180+ * init/job_class.h:
181+ - job_class_new(): Add session pointer to prototype.
182+ - JobClass: Add session member.
183+ * init/job_process.c: job_process_spawn():
184+ - Call chroot(2) for chroot sessions.
185+ - Call setuid(2) for user session jobs.
186+ * init/job.c:
187+ - job_emit_event(): Set session for event.
188+ - job_start(): Disallow out-of-session modification.
189+ - job_stop(): Disallow out-of-session modification.
190+ - job_restart(): Disallow out-of-session modification.
191+ * init/event.h: Event: Add session member.
192+ * init/event.c:
193+ - event_new(): initialize session to NULL.
194+ - event_pending_handle_jobs(): Add session handling.
195+ - event_finished(): Set session for failure event.
196+ * init/control.c:
197+ - control_get_job_by_name(): Add session handling.
198+ - control_get_all_jobs(): Add session handling.
199+ - control_emit_event(): Add session handling.
200+ * init/conf.c:
201+ - conf_source_new(): Initialise session to NULL.
202+ - conf_reload_path(): Pass session to parse_job().
203+ - conf_select_job(): Add session parameter.
204+ * init/conf.h:
205+ - ConfSource: Add session member.
206+ - conf_select_job(): Add session parameter to prototype.
207+ * All tests updated to set "UPSTART_NO_SESSIONS" (to disable
208+ sessions).
209+
210+2011-06-02 James Hunt <james.hunt@ubuntu.com>
211+
212+ * contrib/bash_completion/upstart:
213+ - Made function names more meaningful:
214+ - _upstart_jobs: Now returns a unique list
215+ - _upstart_events (nee _upstart_named_events ) now considers all
216+ "emits" tokens.
217+ - Updates for "check-config" and "show-config".
218+ - Added "--session" option.
219+ - Added "--no-wait" for emit, reload and restart.
220+
221+ Man page updates.
222+
223+ * init/man/init.5:
224+ - Quoted dashes.
225+ - Explain handling of duplicated stanzas.
226+ - "respawn": Document default count and interval.
227+ - "emits": Reference "initctl check-config".
228+ - Added BUGS section.
229+ - Added copyright.
230+ * init/man/init.8:
231+ - Quoted dashes.
232+ - See Also: Added control-alt-delete(7).
233+ * util/man/initctl.8:
234+ - Quoted dashes.
235+ - "restart": Clarified meaning.
236+ - "list": Explained "stop/waiting" jobs.
237+
238+2011-06-01 James Hunt <james.hunt@ubuntu.com>
239+
240+ Add D-Bus session support to initctl.
241+
242+ * util/initctl.c:
243+ - Added "--session" command-line option.
244+ - dbus_bus_type_setter(): New function used by option parser to
245+ distinguish system/session D-Bus bus type.
246+ - system_bus variable now replaced by two others: use_dbus (boolean)
247+ and dbus_bus_type.
248+ - upstart_open(): Updated to handle multiple D-Bus bus types.
249+ * util/man/initctl.8: Update for "--session" option.
250+ * util/tests/test_initctl.c: Updated to make use of use_dbus and
251+ dbus_bus_type rather than system_bus.
252+
253+ Add "show-config" command to initctl.
254+
255+ * util/initctl.c:
256+ - New functions:
257+ - job_class_condition_handler(): Handler function to retrieve job conditions.
258+ - job_class_condition_err_handler(): Handler error function for
259+ job_class_condition_handler().
260+ - job_class_parse_events(): Convert RPN "start on" and "stop on" conditions to
261+ human-readable format.
262+ - job_class_show_emits(): Display events which job emits.
263+ - job_class_show_conditions(): Make D-Bus calls to retrieve "start on" and
264+ "stop on" conditions.
265+ - show_config_action: Handle "show-config" command..
266+ * util/initctl.h: New file providing stack-handling functionality for
267+ RPN parsing for "show-config" command.
268+ * util/Makefile.am: Added initctl.h to initctl_SOURCES.
269+ * util/man/initctl.8: Updated for "show-config" command and associated
270+ options.
271 * util/tests/test_initctl.c:
272- - START_UPSTART now specifies "--no-sessions"
273- - test_check_config(): Added test for "--warn".
274- * scripts/init-checkconf.sh: Script now also checks any script
275- sections found unless the new "--noscript" option is specified.
276- Added required "--no-sessions" option to upstart_cmd to ensure Upstart
277- treats clients requests in traditional manner.
278- * scripts/man/init-checkconf.8: Update for "--noscript".
279- * util/initctl.c: Added "--warn" option for check-config command to
280- warn if any events or jobs are not known.
281-
282-2011-03-24 James Hunt <james.hunt@ubuntu.com>
283-
284- * init/tests/test_control.c: Added comment.
285- * scripts/initctl2dot.py: Fixes to handle 'emits' glob syntax:
286- - header(): Change default node to be an event to simplify handling
287- globs in 'emits' stanzas.
288- - footer(): Updated for glob event nodes.
289- - sanitize(): Protect against glob syntax.
290- - show_event(): Update for glob event nodes.
291- - show_job(): Explicit specification of record node.
292- - show_edges(): Handle 'emits' glob syntax.
293-
294-2011-03-15 James Hunt <james.hunt@ubuntu.com>
295-
296- * configure.ac: Bump version to 0.9.3.
297- * NEWS: Entry for version 0.9.3.
298- * conf/rc-sysinit.conf: Added emits stanza for runlevel event.
299- * extra/conf/upstart-socket-bridge.conf: Added emits stanza for socket
300- event.
301- * extra/conf/upstart-udev-bridge.conf: Added emits stanza for udev class
302- of events (using globs).
303- * init/man/init.5: Updated emits stanza section to explain use of
304- wildcard characters.
305+ - New macros START_UPSTART, STOP_UPSTART, RUN_COMMAND, CREATE_FILE and DELETE_FILE.
306+ These are required since due to the introduction of the
307+ "show-config" initctl command, initctl is no longer solely a proxy
308+ to Upstart: it now has some intelligence (it parses the
309+ "emits", "start on" and "stop on" conditions) and thus must be
310+ tested directly.
311+ - test_show_config(): New function to test "initctl show-config".
312+ - in_chroot(): New function to detect if tests are being run from
313+ within a chroot environment.
314+ - dbus_configured(): New function which performs a basic check to
315+ establish if D-Bus is configured correctly.
316+ - main(): Added call to test_show_config(), conditional on
317+ a non-chroot environment and a working D-Bus system.
318+
319+ Add "check-config" command to initctl.
320+
321 * util/initctl.c:
322 - New functions:
323+ - allow_event(): Determine if specified event is erroneous or not.
324+ Handles globbing.
325 - allow_job(): Determine if specified job is erroneous or not.
326 Handles variables (such as instance variables).
327- - allow_event(): Determine if specified event is erroneous or not.
328- Handles globbing.
329- - eval_expr_tree():
330- - Added calls to allow_job() and allow_event().
331- - Slight simplification of operand-handling code.
332- * util/tests/test_initctl.c: Simplification of dbus_configured().
333-
334-2011-03-11 James Hunt <james.hunt@ubuntu.com>
335-
336- * scripts/Makefile.am: Install improvements for
337- "make distcheck". Added uninstall for scripts.
338-
339-2011-03-10 James Hunt <james.hunt@ubuntu.com>
340-
341- * extra/conf/upstart-socket-bridge.conf: Start as soon as networking is
342- available.
343- * extra/man/socket-event.7: Minor typo fixes and troff quoting for
344- dashes.
345- * extra/man/upstart-socket-bridge.8: Removed reference to socket(8) and
346- replaced with socket-event(7).
347- * extra/man/upstart-udev-bridge.8: Minor typo fixes, troff quoting for
348- dashes, and replaced literal quotes with troff quotes.
349- * init/control.c: Typo.
350- * init/main.c: Corrected indentation.
351- * init/man/init.5: Minor typo fixes, troff quoting for
352- dashes, and replaced literal quotes with troff quotes.
353- * init/man/init.8: Typo.
354- * scripts/init-checkconf.sh: Fixed to ensure safety and portability:
355- - Quoted all variables.
356- - Removed non-portable syntax.
357- - Changed to using getopt(1) rather than getopts(1), and added
358- long-options.
359- * scripts/initctl2dot.py:
360- - Changed from os.popen() to (safer)
361- subprocess.Popen()
362- - Formatting and typos.
363- * util/initctl.c: Typo.
364- * util/man/initctl.8: Minor typo fixes, troff quoting for
365- dashes, and replaced literal quotes with troff quotes.
366- * util/tests/test_initctl.c:
367- - START_UPSTART: improved comments and minor tidyup.
368- - test_show_config(): Placed tests for expected number of lines of
369- output *after* checking expected line values. This ensures that if
370- problems are encountered (for example D-Bus issues), the person
371- viewing the log has a hope of working out what went wrong :-)
372- - test_check_config(): As test_show_config().
373- - dbus_configured(): New function that performs a highly rudimentary
374- check to see if D-Bus appears to be configured for the environment
375- the tests run in.
376- - main(): Improved test for running tests within a chroot: we do now
377- run all tests assuming that D-Bus is found to be working within a
378- chroot environment.
379-
380-2011-03-07 James Hunt <james.hunt@ubuntu.com>
381-
382- * extra/man/upstart-udev-bridge.8: Added examples.
383- * extra/Makefile.am: Create links to upstart-udev-bridge
384- man page for well-known Upstart udev events.
385- * util/initctl.h: Improved comments for CheckConfigData.
386- * scripts/init-checkconf.sh:
387- - cleanup(): Make use of $upstart_pid.
388- - main(): disown $upstart_pid to stop newer bash versions
389- displaying changed child process status.
390- * scripts/init2dot.py:
391- - Removed erroneous check option.
392- - Improved exaplanation of '-r' option.
393- * scripts/Makefile.am: Added manual pages.
394- * scripts/man/init-checkconf.8: New manual page.
395- * scripts/man/initctl2dot.8: New manual page.
396-
397-2011-03-04 James Hunt <james.hunt@ubuntu.com>
398-
399- * contrib/Makefile.am: Fixed paths and names for scripts.
400- * extra/Makefile.am: Update for upstart-socket-bridge.
401- * util/tests/test_initctl.c:
402- - in_chroot(): New function to detect if in chroot environment.
403- - main(): Call in_chroot() to work around bug lp:728988.
404- - START_UPSTART(): Only try to connect 10 times. Don't use
405- upstart_open() since this uses the system bus whereas we care
406- about the session bus. Removed "--debug" as this confuses the
407- log output.
408- * Moved scripts from "contrib/utils/" to "scripts/" and ensured they
409- now install on "make install".
410- * Makefile.am: Added scripts directory.
411- * configure.ac: Added scripts/Makefile.
412- * Packaging changes for socket bridge.
413-
414-2011-03-03 James Hunt <james.hunt@ubuntu.com>
415-
416- * extra/man/socket-event.7: Man page for new socket event.
417- * extra/man/upstart-socket-bridge.8: Man page for socket bridge.
418- * upstart-socket-bridge.conf: configuration file for socket
419- bridge.
420- * contrib/bash_completion/upstart: Updated for new initctl commands
421- "show-config" and "check-config".
422- * contrib/utils/init-check.sh: Script to determine if the
423- specified job configuration file (located outside of /etc/init/)
424- is valid or not.
425- * contrib/utils/initctl2dot.py: Simply Python script to convert new initctl
426- output to GraphViz dot format. Example usage:
427- initctl2dot.py -o - | dot -Tpng -o upstart.png
428- * init/control.h: New define for USE_SESSION_BUS_ENV.
429- * init/control.c:
430- - control_handle_bus_type(): New function to allow selection of
431- session bus via env var "UPSTART_USE_SESSION_BUS" (for testing).
432- - control_bus_open(): Connect to either D-Bus system bus or session bus.
433- * init/man/init.8: Updated for --confdir, --session, --no-startup-event
434- and --startup-event.
435- * init/main.c:
436- - Added new options '--startup-event' and '--no-startup-event'.
437- - Addition of --session and --confdir command-line option (required for
438- test framework to test changes to initctl).
439- - handle_confdir(): New function to select alternate confdir using env
440- var "UPSTART_CONFDIR" (for testing).
441- * init/paths.h:
442- - Renamed CONDIR to DEFAULT_CONFDIR to make its use clearer now it can be changed.
443- - Renamed CONFILE to DEFAULT_CONFFILE for parity with DEFAULT_CONFDIR.
444- - Added define for CONFDIR_ENV.
445- * util/initctl.c:
446- - Addition of --session command-line option (required for test framework to test
447- visualisation changes to initctl).
448- - Changed 'system_bus' variable to 'use_dbus' since now we can use either D-Bus bus type.
449- - Added 'dbus_bus_type' which encodes D-Bus bus type to use.
450- - Added 'verbose_detail' and 'enumerate_events' variables to
451- - Created new functions:
452- - show_config_action(): New function to handle 'show-config' command.
453- - job_class_condition_handler(): Handler function to retrieve job conditions.
454- - job_class_condition_err_handler(): Handler error function for
455- job_class_condition_handler().
456- - job_class_parse_events(): Convert RPN "start on" and "stop on" conditions to
457- human-readable format.
458- - job_class_show_emits(): Display events which job emits.
459- - job_class_show_conditions(): Make D-Bus calls to retrieve "start on" and
460- "stop on" conditions.
461- - dbus_bus_type_setter(): Used by option parser to distinguish system/session
462- D-Bus bus type.
463- - New functions for check-config command;
464- - check_config_action: Handler for new check-config command-line
465- option.
466- - ignored_events_setter(): handler for '--ignore-events' command-line
467- option for check-config command.
468- - eval_expr_tree(): Evaluate expression tree.
469- - check_condition(): High-level function to handle checking start
470- on/stop on conditions.
471- - tree_filter(): Used for filtering expression tree nodes.
472- - display_check_errors():
473- - Updated upstart_open() to handle multiple D-Bus bus types.
474- - status_action() and list_action() modified to call:
475- - job_class_show_emits()
476- - job_class_show_conditions()
477- * util/initctl.h: New file providing:
478- - stack-handling functionality for RPN parsing
479- - New macros:
480- - GET_JOB_NAME(): Determine if specified token refers to a job and
481- return it if true.
482- - IS_INIT_EVEN(): Determine if specified event is an internally
483- generated event.
484- - MAKE_EXPR_NODE(): Create an ExprNode object.
485- - MAKE_JOB_CONDITION(): Create a JobCondition object.
486- - New types required for check-config command:
487- - CheckConfigData
488- - JobCondition
489- - ConditionHandlerData
490- - ExprNode
491- * util/man/initctl.8:
492- - Updated for show-config section showing new "--enumerate" format output.
493- - Added section for check-config command.
494- * util/tests/test_initctl.c:
495- - added test_show_config() and test_check_config().
496- - new macros START_UPSTART, STOP_UPSTART, RUN_COMMAND, CREATE_FILE
497- and DELETE_FILE. These are required since due to the changes in initctl.c, we
498- actually need to run the initctl binary directly (as that is where all
499- the emits/start on/stop on parsing occurs). The test stategy adopted is to run
500- (a second instance of! :-) Upstart as a non-privileged user
501- connected to the session bus and using an alternate config
502- directory. Then, by invoking initctl, again connecting to the session
503- bus, we test the parsing functionality directly.
504-
505-2011-02-23 James Hunt <james.hunt@ubuntu.com>
506-
507- * Fixes to allow "make check" to pass with Session support.
508-
509-2011-01-21 James Hunt <james.hunt@ubuntu.com>
510-
511- * Override file support.
512-
513-2011-03-03 James Hunt <james.hunt@ubuntu.com>
514-
515- * contrib/bash_completion/upstart: Updated for new initctl show-config
516- command.
517- * contrib/utils/init-checkconf.sh: Added '-i' option to specify path to
518- init daemon (for test builds). Ensure conf file exists.
519- * contrib/utils/initctl2dot.py: Updated for changed initctl show-config
520- output.
521- * util/Makefile.am: Added missing initctl.h to initctl_SOURCES.
522- * util/initctl.c:
523- - New functions to handle new check-config command.
524- - check_config_action: Handler for new check-config command-line
525- option.
526- - ignored_events_setter(): handler for '--ignore-events' command-line
527- option for check-config command.
528- - eval_expr_tree(): Evaluate expression tree.
529 - check_condition(): High-level function to handle checking start
530 on/stop on conditions.
531+ - check_config_action: Handler for "check-config" command.
532+ - display_check_errors(): Display errors from expression tree nodes
533+ that are in error.
534+ - eval_expr_tree(): Evaluate expression tree.
535+ - ignored_events_setter(): handler for '--ignore-events' command-line
536+ option for "check-config" command.
537 - tree_filter(): Used for filtering expression tree nodes.
538- - display_check_errors():
539- - Removed ENSURE_ROOT() macros since this would conflict with user
540- sessions.
541+ - show_config_action(): Update for check-config mode.
542+ - job_class_parse_events(): Update for check-config mode.
543+ - job_class_show_emits(): Update for check-config mode.
544 * util/initctl.h:
545- - New macros:
546- - GET_JOB_NAME(): Determine if specified token refers to a job and
547- return it if true.
548- - IS_INIT_EVEN(): Determine if specified event is an internally
549- generated event.
550- - MAKE_EXPR_NODE(): Create an ExprNode object.
551- - MAKE_JOB_CONDITION(): Create a JobCondition object.
552- - New types required for check-config command:
553- - CheckConfigData
554- - JobCondition
555- - ConditionHandlerData
556- - ExprNode
557- * util/man/initctl.8:
558- - Updated for show-config section showing new "--enumerate" format output.
559- - Added section for check-config command.
560- * util/tests/test_initctl.c:
561- - START_UPSTART(): Improved test to ensure Upstart has actually
562- started.
563- - STOP_UPSTART(): Improved test to ensure Upstart has actually
564- stopped.
565- - test_show_config(): Updated for new show-config --enumerate syntax.
566- - test_check_config(): New function to test check-config command.
567-
568-2011-02-17 James Hunt <james.hunt@ubuntu.com>
569-
570- * contrib/utils/init-check.sh renamed to init-checkconf.sh.
571- * contrib/utils/initct2dot.py:
572- - updated to call "initctl show-config"
573- - Added options to allow specification of all colo(u)rs.
574- - Added a '--restrict-to-jobs' option to allow a sub-set of all jobs
575- to be viewed (along with their associated jobs and events).
576- - Code refactored.
577- * init/main.c:
578- - Added new options '--startup-event' and '--no-startup-event'.
579- * init/man/init.8: Updated for "initctl show-status".
580- * util/initctl.c:
581- - Reworked code so that rather than utilizing existing 'list' and
582- 'status' commands, we now have a new command: 'show-status'. This is
583- more logical since it is obvious what it is doing and it also
584- doesn't pollute the dynamic data returned by 'status' and 'list' with
585- purely static info.
586- - upstart_open(): Improved dbus_bus_type usage (now only default to
587- system bus).
588- - show_config_action(): New function to handle 'show-config' command.
589- - job_class_parse_events(): Fixed uninitialized variable issue and
590- removed IS_JOB() macro in favour of the ultimately reliable
591- IS_JOB_EVENT() macro.
592- * util/initctl.h: Only enable stack debugging if DEBUG_STACK defined.
593- This ensures that "make check" doesn't fail due to stack DEBUG output.
594- * util/man/initctl.8: Updated for new 'show-config' command.
595- * util/tests/test_initctl.c:
596- - Improved START_UPSTART() and STOP_UPSTART() macros.
597- - Renamed test_status_and_list_action_detail() to
598- test_show_config_action() to reflect the new command under test.
599- - test_show_config_action(): Removed all (now-redundant) tests calling
600- "initctl status" and "initctl list" and updated for new 'show-config'
601- command.
602-
603-2011-02-15 James Hunt <james.hunt@ubuntu.com>
604-
605- * contrib/bash_completion/upstart: Update for job visualisation.
606- * contrib/utils/init-check.sh: Script to determine if the
607- specified job configuration file (located outside of /etc/init/)
608- is valid or not.
609- * contrib/utils/initctl2dot.py: Simple Python script to convert new initctl
610- output to GraphViz dot format. Example usage:
611- initctl2dot.py > upstart.dot && dot -Tpng -o upstart.png upstart.dot
612- * dbus/upstart.h: Whitespace fix.
613+ - Added structs for JobCondition, CheckConfigData and ExprNode.
614+ - New macros: MAKE_EXPR_NODE() and MAKE_JOB_CONDITION().
615+ * util/tests/test_initctl.c:
616+ - test_check_config(): New function to test "initctl check-config".
617+ - main(): Added call to test_check_config(), conditional on
618+ a non-chroot environment and a working D-Bus system.
619+ * util/man/initctl.8: Updated for "check-config" command and associated
620+ options.
621+ * conf/rc-sysinit.conf: Added "emits" stanza, required by
622+ "check-config".
623+
624+ Addition of initctl2dot script for visualisation.
625+
626+ * Makefile.am: Added scripts directory.
627+ * configure.ac: Updated AC_CONFIG_FILES for scripts/Makefile.
628+ * scripts/Makefile.am: Makefile for scripts.
629+ * scripts/initctl2dot.py: Python script to produce dot(1) graphs of
630+ "initctl show-config" output.
631+ * scripts/man/initctl2dot.8: Man page for initctl2dot.py script.
632+
633+ Addition of init-checkconf script.
634+
635+ * scripts/init-checkconf.sh: Script to determine if specified job
636+ config file is valid or not.
637+ * scripts/man/init-checkconf.8: Man page for init-checkconf.sh.
638+ * scripts/Makefile.am: Added init-checkconf script and man
639+ page.
640+
641+2011-05-31 James Hunt <james.hunt@ubuntu.com>
642+
643+ Add command-line option to use D-Bus session bus (for testing).
644+
645 * init/control.c:
646+ - Added new boolean use_session_bus.
647+ - Updated comments.
648 - control_handle_bus_type(): New function to allow selection of
649- session bus via env var "UPSTART_USE_SESSION_BUS" (for testing).
650- - control_bus_open(): Connect to either D-Bus system bus or session bus.
651+ session bus via env var "UPSTART_USE_SESSION_BUS".
652+ Also logs use of session bus if use_session_bus set.
653+ - control_bus_open(): Now connects to either D-Bus system bus or session bus.
654 * init/control.h: New define for USE_SESSION_BUS_ENV.
655- * init/man/init.8: Update for --confdir and --session.
656+ * init/main.c: Addition of "--session" command-line option.
657+ * init/man/init.8: Update for new "--session" command-line option.
658+
659+ * Corrected copyright notices.
660+
661+ Add option to allow alternate location for job config files.
662+
663 * init/main.c:
664- - Addition of --session and --confdir command-line option (required for
665- test framework to test changes to initctl).
666+ - Added "--confdir <dir>" command-line option.
667 - handle_confdir(): New function to select alternate confdir using env
668- var "UPSTART_CONFDIR" (for testing).
669- * init/paths.h:
670- - Renamed CONDIR to DEFAULT_CONFDIR to make its use clearer now it can be changed.
671- - Renamed CONFILE to DEFAULT_CONFFILE for parity with DEFAULT_CONFDIR.
672- - Added define for CONFDIR_ENV.
673- * util/initctl.c:
674- - Addition of --session command-line option (required for test framework to test
675- visualisation changes to initctl).
676- - Changed 'system_bus' variable to 'use_dbus' since now we can use either D-Bus
677- bus type.
678- - Added 'dbus_bus_type' which encodes D-Bus bus type to use.
679- - Added 'verbose_detail' and 'enumerate_events' variables to
680- - Created new functions:
681- - job_class_condition_handler(): Handler function to retrieve job conditions.
682- - job_class_condition_err_handler(): Handler error function for
683- job_class_condition_handler().
684- - job_class_parse_events(): Convert RPN "start on" and "stop on" conditions to
685- human-readable format.
686- - job_class_show_emits(): Display events which job emits.
687- - job_class_show_conditions(): Make D-Bus calls to retrieve "start on" and
688- "stop on" conditions.
689- - dbus_bus_type_setter(): Used by option parser to distinguish system/session
690- D-Bus bus type.
691- - Updated upstart_open() to handle multiple D-Bus bus types.
692- - Changed following functions to error with message if initctl run as
693- non-root user (without this, you get a very cryptic D-Bus error):
694- - start_action()
695- - stop_action()
696- - restart_action()
697- - reload_configuration_action()
698- - log_priority_action()
699- - status_action() and list_action() modified to call:
700- - job_class_show_emits()
701- - job_class_show_conditions()
702- * util/initctl.h: New file providing stack-handling functionality for RPN parsing.
703- * util/initctl.8: Updated for --session, and --detail/-d and
704- --enumerate/-e options to status and list commands.
705- * util/tests/test_initctl.c:
706- - new macros START_UPSTART, STOP_UPSTART, RUN_COMMAND, CREATE_FILE and DELETE_FILE.
707- These are required since due to the changes in initctl.c, we
708- actually need to run the initctl binary directly (as that is where all
709- the emits/start on/stop on parsing occurs). The test stategy adopted is to run
710- (a second instance of! :-) Upstart as a non-privileged user
711- connected to the session bus and using an alternate config
712- directory. Then, by invoking initctl, again connecting to the session
713- bus, we test the parsing functionality directly.
714- - test_status_and_list_action_detail(): New function to test '-d' and
715- '-e' options for status and list commands.
716- - updated all remaining functions to use 'use_dbus' rather than 'system_bus'.
717+ var "UPSTART_CONFDIR" or command-line option (for testing).
718+ * init/paths.h: Added define for CONFDIR_ENV.
719+ * init/man/init.8: Update for new "--confdir" command-line option.
720+
721+ Add ability to suppress initial event and/or change its name.
722+
723+ * init/main.c: New command-line options: "--no-startup-event" and
724+ "--startup-event". If "--no-startup-event" specified, log message as a
725+ debug aid.
726+ * init/man/init.8: Documentation for new command-line options:
727+ "--no-startup-event" and "--startup-event".
728+
729+2011-05-12 Marc - A. Dahlhaus <mad@wol.de>
730+
731+ * init/job_class.h (JobClass): Add kill signal member
732+ * init/job_class.c (job_class_new): Initialise kill signal
733+ * init/tests/test_job_class.c (test_new): Check kill signal initialised
734+ correctly.
735+ * init/system.c (system_kill): Change to accept a signal rather than
736+ a boolean.
737+ * init/system.h: Update prototype
738+ * init/tests/test_system.c (test_kill): Update tests to pass signals
739+ by value.
740+ * init/job_process.c (job_process_kill, job_process_kill_timer): Pass
741+ the configured kill signal, or SIGKILL, to the function rather than
742+ TRUE/FALSE.
743+ * init/parse_job.c (stanza_kill): Add parsing for kill signal.
744+ * init/tests/test_parse_job.c (test_stanza_kill): Check parsing works
745+ * init/errors.h: Add illegal signal error and string.
746+ * init/man/init.5: Update documentation
747+
748+ * init/job_class.h (JobClass): Replace oom_adj with oom_score_adj
749+ * init/job_class.c (job_class_new): Replace oom_adj with oom_score_adj.
750+ * init/job_process.c (job_process_spawn): Write the new score
751+ adjustment, falling back to calculating and writing the old value if
752+ necessary.
753+ * init/parse_job.c (stanza_oom): Parse both the new and old values,
754+ converting the old value to the new value if present.
755+ * init/errors.h: Add new error string.
756+ * init/man/init.5: Documentation update.
757+ * init/tests/test_job_class.c (test_new): Update check.
758+ * init/tests/test_parse_job.c (test_stanza_oom): Update tests.
759+
760+2011-05-12 Scott James Remnant <scott@netsplit.com>
761+
762+ * init/job_process.c (job_process_run): Always make the shell script
763+ fd 9, since that's the highest that shells are required by POSIX to
764+ support. Pass the file descriptor to job_process_spawn()
765+ (job_process_run): Accept the extra file descriptor, moving it to fd 9.
766+ (job_process_error_read): Add handling for error condition.
767+ * init/job_process.h: Adjust prototypes, add constant
768+ * init/tests/test_job_process.c (test_spawn): Add argument to call in
769+ tests
770+
771+2011-03-22 Scott James Remnant <scott@netsplit.com>
772+
773+ * configure.ac: Bump version to 1.3
774+ * NEWS: Begin new release
775+
776+ * NEWS: Release 1.2
777+
778+ * init/job_process.c (job_process_run): Correct shell redirection;
779+ the form we used dosen't work with at least pdksh
780+
781+2011-03-16 Scott James Remnant <scott@netsplit.com>
782+
783+ * configure.ac: Bump version to 1.2
784+ * NEWS: Begin new release
785+
786+ * NEWS: Release 1.1
787+
788+ * configure.ac (NIH_COPYRIGHT): Update
789+
790+ * init/main.c: Don't close the console until initialization is
791+ complete.
792+
793+ * util/Makefile.am (uninstall-hook): Clean up symlinks on uninstall
794+
795+ * init/environ.c (environ_all_valid): Only verify that an = is present
796+ (environ_valid): Drop this function, the part of POSIX I read about
797+ valid environment variable names only applies to other things defined
798+ by POSIX, elsewhere it explicitly says Applications may do whatever
799+ they like (and even encourages to avoid conflict)
800+ (environ_expand_until): Remove validity check for name.
801+ * init/environ.h: Update header.
802+ * init/tests/test_environ.c (test_valid): Drop tests.
803+ (test_all_valid): Drop name tests.
804+ (test_expand): Remove illegal expansion test.
805+ * init/tests/test_control.c (test_emit_event): Remove the test case for
806+ an invalid name in the environment.
807+ * init/tests/test_job_class.c (test_start, test_stop)
808+ (test_restart): Change the invalid argument tests to use an entry
809+ without an = as the invalid test.
810+
811+ * util/reboot.c: pass '-H' to shutdown when called as 'halt'
812+
813+ * init/job_process.c (job_process_handler): Check the job's normal exit
814+ list, decrease log priority of messages from warning to information if
815+ the exit status or signal is in the list.
816+ * init/tests/test_job_process.c (test_handler): Change the normal exit
817+ test cases to not expect the warning
818+
819+ * init/job_process.c (job_process_run): Prepend a shell command to the
820+ pasted script to force the shell to close the file descriptor being
821+ used to paste the script. The shell will already have a new copy when
822+ it opened the path.
823+
824+2011-03-15 James Hunt <james.hunt@ubuntu.com>
825+
826+ * init/conf.c (conf_source_reload, conf_source_reload_dir): Fix typos
827+ in doc-strings
828+ * init/job_process.c (job_process_run): Fix typo in doc-string
829+ * init/parse_job.c (stanza_env): Fix typo in doc-string
830+
831+2011-03-15 Patty Langasek <harmoney@dodds.net>
832+
833+ * init/man/init.5: Grammar fixes
834+
835+2011-03-15 Jacek Konieczny <jajcus@jajcus.net>
836+
837+ * contrib/vim/syntax/upstart.vim: Further improve syntax hilighting
838+
839+2011-03-01 Scott James Remnant <scott@netsplit.com>
840+
841+ * configure.ac: Bump version to 1.1
842+ * NEWS: Begin new release
843+
844+ * NEWS: Release 1.0
845+
846+2011-02-17 Scott James Remnant <scott@netsplit.com>
847+
848+ * configure.ac, NEWS: Bump version to 1.0
849+ * TODO: Update.
850+
851+ * init/tests/test_conf.c (test_source_reload_job_dir): Add tests for
852+ a crasher bug when a file is created called ".conf"
853+ * init/conf.c (conf_dir_filter): Apply fix for the crasher; check that
854+ the character before the ".conf" extension is not "/"
855+ * NEWS: Update.
856
857 2011-01-06 Petr Lautrbach <plautrba@redhat.com>
858
859@@ -500,14 +483,6 @@
860
861 2010-12-10 Scott James Remnant <scott@netsplit.com>
862
863- * Socket bridge and udev bridge support.
864-
865-2010-12-10 Scott James Remnant <scott@netsplit.com>
866-
867- * Session support (chroots, sessions and user-session).
868-
869-2010-12-10 Scott James Remnant <scott@netsplit.com>
870-
871 * dbus/upstart.h (DBUS_SERVICE_UPSTART, DBUS_ADDRESS_UPSTART):
872 For debugging purposes, when -DDEBUG is given, change the values of
873 these constants. You'll need to modify your own D-Bus configuration
874
875=== modified file 'NEWS'
876--- NEWS 2011-05-25 19:25:11 +0000
877+++ NEWS 2011-06-17 11:15:58 +0000
878@@ -1,78 +1,70 @@
879-0.9.7 2011-04-20
880-
881- * Fix for user sessions to retain backwards compatibility behaviour
882- where a non-privileged user can enquire on jobs owned by the
883- global namespace.
884-
885-0.9.6 2011-04-15
886-
887- * Fix for nasty OOM scenario when an attempt is made to start
888- a chroot job with same name as running single-instance
889- non-chroot job. Previously, the path for a chrooted Job
890- was set from the (nul) instance name of its parent JobClass.
891- However, since that job instance name already existed
892- outside the chroot and was already D-Bus registered,
893- nih_dbus_object_new() (which allocates storage and is
894- called by job_register()) returned NULL and kept doing so
895- due to being called within NIH_MUST(). This resulted in
896- OOM due to an as-yet unidentified D-Bus bug (possibly a
897- leak in find_subtree_recurse()).
898-
899-0.9.5 2011-04-06
900-
901- * Important fixes for user and chroot sessions.
902- * scripts/init-checkconf.sh: Now checks script sections too.
903- * util/initctl.c: Added "--warn" option for check-config command
904- to warn if any events or jobs are not known.
905-
906-0.9.4 2011-03-24
907-
908- * scripts/initctl2dot.py: Fix to handle 'emits' glob syntax
909- which was causing script to fail for upstart-udev-bridge.
910-
911-0.9.3 2011-03-15
912-
913- * Added missing emits stanzas for supplied .conf files.
914-
915- * Added wildcard/globbing facility to initctl.c (for check-config
916- command).
917-
918- * Updated man page on emits stanza syntax.
919-
920-0.9.2 2011-03-11
921-
922- * Improvements to existing documentation.
923- * scripts/man/init-checkconf.8: New manual page.
924- * scripts/man/initctl2dot.8: New manual page.
925- * packaging improvements (including "make distcheck" fix).
926- * extra/man/upstart-udev-bridge.8: Added examples.
927- * extra/Makefile.am: Create links to upstart-udev-bridge
928- man page for well-known Upstart udev events.
929-
930-0.9.1 2011-03-03
931-
932- * Added supporting documentation for upstart-socket-bridge and
933- sessions and chroot support.
934-
935- * Added job configuration file for upstart-socket-bridge.
936-
937- * Added job/event visualisation support. This comprises a new
938- initctl command, "show-config" which generates human-readable
939- (and machine parseable) output showing start on, stop on and
940- emits details for each job. See initctl.8 for further details.
941- The output from show-config is used by the new script
942- contrib/utils/initctl2dot.py which graphs the data in GraphViz
943- format.
944-
945- * Added new initctl command check-config allowing unreachable
946- job conditions to be detected. See initctl.8 for further
947- details.
948-
949- * Added script contrib/utils/init-checkconf.sh which allows
950- non-privileged users to check job configuration files for syntax
951- errors prior to installing in /etc/init/.
952-
953-0.9.0 2011-02-24
954+1.4 xxxx-xx-xx
955+
956+1.3 2011-06-14 "Concordia"
957+
958+ * New upstart-socket-bridge application which allows jobs to be
959+ started when an incoming client socket connection is initiated
960+ (requires a suitably modified server daemon since jobs only
961+ need call accept(2) before reading from the socket).
962+ * User session support allowing non-privileged users to
963+ manipulate their own jobs (not available within a chroot
964+ environment).
965+ * Chroot support allowing jobs to be controlled within chroot
966+ environments.
967+ * Updated bash completion script.
968+ * Updated vim syntax script.
969+ * init-checkconf script used to check syntax of Job
970+ Configuration Files (including script sections).
971+ * initctl2dot script to convert initctl(8) output to GraphViz
972+ dot(1) format for analysing relationships between jobs and
973+ events.
974+ * New "check-config" initctl command to check for jobs whose
975+ * "start on" and "stop on" events cannot be satisfied.
976+ * New "show-config" initctl command to display "start on", "stop
977+ on" and emits" information in parseable format.
978+ * New initctl command-line option: "--session" for D-Bus
979+ session connection.
980+ * New init command line options (mostly for testing):
981+ - "--session" for D-Bus session bus.
982+ - "--confdir <dir>".
983+ - "--startup-event <event>".
984+ - "--no-startup-event".
985+ * New "kill signal" stanza to allow override of SIGTERM when
986+ stopping jobs.
987+ * Add support for the oom_score_adj procfs API.
988+ * Improved POSIX compliance when running shell scripts.
989+
990+1.2 2011-03-22 "This sort of thing is my bag, baby"
991+
992+ * Fixed incorrect shell redirection syntax that broke at least
993+ pdksh. (Bug: #739984)
994+
995+1.1 2011-03-16 "It's probably 'cause you think you're cooler than me"
996+
997+ * When /sbin/halt is called (without -p), this now results in the
998+ system being halted and not powered down. If you meant it to be
999+ powered down, use /sbin/poweroff. (Bug: #532366)
1000+
1001+ * Fixed file descriptor leak of /proc/self/fd/NN to shell scripts
1002+ executed by Upstart. (Bug: #619269)
1003+
1004+ * Fixed bug where console was closed too early, causing loss of error
1005+ messages and non-functioning keyboard-request event,
1006+ (Bug: #707151)
1007+
1008+ * Fixed bug where environment variables containing unusual characters
1009+ were not accepted due to a mis-reading of POSIX. (Bug: #567068).
1010+
1011+ * Fixed non-removal of symlinks on "make uninstall". (Bug: #604227)
1012+
1013+ * Reduced priority of job termination messages from warn to info
1014+ if the exit status or signal is listed in "normal exit".
1015+ (Bug: #522197)
1016+
1017+1.0 2011-03-01 "This is a fertile land, and we will thrive"
1018+
1019+ * Fixed an assertion when a file named /etc/init/.conf is created.
1020+ Discovered by Коренберг Марк (Bug: #720573)
1021
1022 * utmp entries will be replaced with DEAD_PROCESS ones when a
1023 pid supervised by Upstart terminates. (Bug: #183729)
1024@@ -83,29 +75,6 @@
1025 * Included bash completion script in contrib directory.
1026 (Bug: #672067)
1027
1028- * Addition of Session support (chroots, sessions and
1029- user-session).
1030-
1031- * Socket bridge support allowing jobs to be started based on
1032- socket connections. Examples of supported syntax:
1033-
1034- start on socket PROTO=inet PORT=1234
1035- start on socket PROTO=unix PATH=/var/run/.s.pgsql.1234
1036- start on socket PROTO=unix PATH=@/at/upstart/example
1037-
1038- * udev bridge support imported from Ubuntu. See
1039- "man 8 upstart-udev-bridge" for further details.
1040-
1041- * Override file support allowing the creation of files named
1042- "<job_conf>.override" whose contents override that found in
1043- "<job_conf>.conf". Useful to modify a job without touching its
1044- .conf file. For example, a job can now be disabled simply by
1045- doing:
1046-
1047- echo "manual" >> /etc/init/jobname.override
1048-
1049- See "man 5 init" for further details.
1050-
1051 0.6.7 2010-12-14 "Return of the Mole"
1052
1053 * A new "manual" stanza has been added to the configuration, this
1054
1055=== added file 'TESTING.sessions'
1056--- TESTING.sessions 1970-01-01 00:00:00 +0000
1057+++ TESTING.sessions 2011-06-17 11:15:58 +0000
1058@@ -0,0 +1,263 @@
1059+.. contents::
1060+
1061+=============================
1062+Testing Sessions with Upstart
1063+=============================
1064+
1065+Upstart now has support for chroots which are implemented by creating a
1066+separate session for every user within each chroot. It also has partial
1067+support for user sessions, but since this is experimental (and disabled
1068+in Ubuntu), this document does not cover testing this feature.
1069+
1070+The session support does not yet provide full tests (as would be run by
1071+"``make check``"). This is partly due to the complexity of automatically
1072+testing some of the scenarios below.
1073+
1074+This document attempts to outline the minimum set of tests that should
1075+be performed to ensure that chroot support works as expected.
1076+
1077+Assumptions
1078+===========
1079+
1080+You are running an Ubuntu or Debian system.
1081+
1082+Setup
1083+=====
1084+
1085+#. Install a chroot environement (such as ``schroot(1)``) and configure it.
1086+#. run, "``debootstrap(8)``" to install the same release as you are running into your chroot.
1087+#. Create the following files *outside* your chroot.
1088+
1089+ - ``/etc/init/foo.conf``::
1090+
1091+ start on wibble
1092+
1093+ script
1094+ exec 2>>/tmp/foo.$$.log
1095+ set -x
1096+ echo "foo: stat=`stat /`"
1097+ echo "foo: env=`env`"
1098+ sleep 999
1099+ end script
1100+
1101+ - ``/etc/init/outside_chroot.conf``::
1102+
1103+ start on A
1104+
1105+ script
1106+ exec 2>>/tmp/outside_chroot.$$.log
1107+ set -x
1108+ echo "in_chroot: stat=`stat /`"
1109+ echo "in_chroot: env=`env`"
1110+ sleep 999
1111+ end script
1112+
1113+#. Create following files inside chroot environment.
1114+
1115+ - ``/path/to/chroot/etc/init/foo.conf``::
1116+
1117+ start on wibble
1118+
1119+ script
1120+ exec 2>>/tmp/foo.$$.log
1121+ set -x
1122+ echo "foo: stat=`stat /`"
1123+ echo "foo: env=`env`"
1124+ sleep 999
1125+ end script
1126+
1127+ - ``/path/to/chroot/etc/init/in_chroot.conf``::
1128+
1129+ start on A
1130+
1131+ script
1132+ exec 2>>/tmp/in_chroot.$$.log
1133+ set -x
1134+ echo "in_chroot: stat=`stat /`"
1135+ echo "in_chroot: env=`env`"
1136+ sleep 999
1137+ end script
1138+
1139+
1140+Run as non-``root`` with no chroot
1141+==================================
1142+
1143+- ``initctl list``
1144+
1145+ Ensure list is contents of ``/etc/init/``: the command below should
1146+ return no output::
1147+
1148+ cmp <(initctl list|awk '{print $1}'|sort -u) <(cd /etc/init && ls *.conf|cut -d: -f2-|sed 's/\.conf//g'|sort -u)
1149+
1150+- ``initctl status cron``
1151+
1152+ Should work.
1153+
1154+- ``initctl show-config``
1155+
1156+ Should work.
1157+
1158+- ``initctl check-config``
1159+
1160+ Should work.
1161+
1162+- ``start foo``
1163+
1164+ Should fail ("``initctl: Rejected send message``").
1165+
1166+- ``stop cron``
1167+
1168+ Should fail ("``initctl: Rejected send message``").
1169+
1170+- ``restart cron``
1171+
1172+ Should fail ("``initctl: Rejected send message``").
1173+
1174+- ``initctl emit bar``
1175+
1176+ Should fail ("``initctl: Rejected send message``").
1177+
1178+Run as ``root`` with no chroot
1179+==============================
1180+
1181+- ``initctl list``
1182+
1183+ Ensure list is contents of ``/etc/init/``: command below should return no output::
1184+
1185+ cmp <(initctl list|awk '{print $1}'|sort -u) <(cd /etc/init && ls *.conf|cut -d: -f2-|sed 's/\.conf//g'|sort -u)
1186+
1187+- ``initctl status outside_chroot``
1188+
1189+ Should work.
1190+
1191+- ``initctl status in_chroot``
1192+
1193+ Should fail with message::
1194+
1195+ initct: Unknown job: in_chroot
1196+
1197+- ``initctl show-config``
1198+
1199+ Should work.
1200+
1201+- ``initctl check-config``
1202+
1203+ Should work.
1204+
1205+- ``start in_chroot``
1206+
1207+ Should fail with message::
1208+
1209+ initct: Unknown job: in_chroot
1210+
1211+- ``start outside_chroot``
1212+
1213+ Should work.
1214+
1215+- ``stop in_chroot``
1216+
1217+ Should fail with message::
1218+
1219+ initct: Unknown job: in_chroot
1220+
1221+- ``restart outside_chroot``
1222+
1223+ Should work.
1224+
1225+- ``stop outside_chroot``
1226+
1227+ Should work.
1228+
1229+- ``initctl emit wibble``
1230+
1231+ - Ensure ``/etc/init/foo.conf`` runs by looking at the log and ensuring
1232+ the inode for the stat of '``/``' is the same as running "``stat /``" on
1233+ the command-line.
1234+
1235+ * Ensure ``/path/to/chroot/etc/init/foo.conf`` does *NOT* run.
1236+
1237+- ``initctl emit A``
1238+
1239+ - Ensure ``/etc/init/outside_chroot.conf`` runs.
1240+
1241+ - Ensure ``/path/to/chroot/etc/init/in_chroot.conf`` does *NOT* run.
1242+
1243+Run as ``root`` inside a chroot
1244+===============================
1245+
1246+- ``initctl list``
1247+
1248+ Ensure list is contents of ``/path/to/chroot/etc/init/``: command below should return no output::
1249+
1250+ cmp <(initctl list|awk '{print $1}'|sort -u) <(cd /etc/init && ls *.conf|cut -d: -f2-|sed 's/\.conf//g'|sort -u)
1251+
1252+- ``initctl status in_chroot``
1253+
1254+ Should work.
1255+
1256+- ``initctl status outside_chroot``
1257+
1258+ Should fail with message::
1259+
1260+ initct: Unknown job: outside_chroot
1261+
1262+- ``initctl show-config``
1263+
1264+ Should work.
1265+
1266+- ``initctl check-config``
1267+
1268+ Should work.
1269+
1270+- ``start outside_chroot``
1271+
1272+ Should fail with message::
1273+
1274+ initct: Unknown job: outside_chroot
1275+
1276+- ``stop outside_chroot``
1277+
1278+ Should fail with message::
1279+
1280+ initct: Unknown job: outside_chroot
1281+
1282+- ``start in_chroot``
1283+
1284+ Should work.
1285+
1286+- ``restart in_chroot``
1287+
1288+ Should work.
1289+
1290+- ``stop in_chroot``
1291+
1292+ Should work.
1293+
1294+- ``initctl emit wibble``
1295+
1296+ - Ensure ``/path/to/chroot/etc/init/foo.conf`` runs by looking at the log and ensuring
1297+ the inode for the stat of '``/``' is the same as running "``stat /``" on the command-line.
1298+
1299+ - Ensure ``/etc/init/foo.conf`` does *NOT* run.
1300+
1301+- ``initctl emit A``
1302+
1303+ - Ensure ``/path/to/chroot/etc/init/in_chroot.conf`` runs.
1304+
1305+ - Ensure ``/etc/init/outside_chroot.conf`` does *NOT* run.
1306+
1307+Run as non-root inside a chroot
1308+===============================
1309+
1310+Not supported.
1311+
1312+Run with ``--no-sessions``
1313+==========================
1314+
1315+The "``--no-sessions``" option makes Upstart behave as it used to prior to
1316+the introduction of session support.
1317+
1318+#. Reboot system and specify "``--no-sessions``" on kernel command-line.
1319+
1320+#. Ensure "``initctl list``" within a chroot displays the same list as
1321+ "``initctl list``" run outside of any chroot environment.
1322
1323=== modified file 'TODO'
1324--- TODO 2010-02-04 08:47:46 +0000
1325+++ TODO 2011-06-17 11:15:58 +0000
1326@@ -1,10 +1,4 @@
1327-Merge 1216.1.1 from Ubuntu (reload command), add test case.
1328-
1329-__abort_msg should be weak or changed
1330-
1331-
1332-
1333-0.6.x series:
1334+1.x series:
1335
1336 * going into runlevel S from !S, need to stty console
1337 * going into 6, 0 or 1, need to stty console
1338
1339=== modified file 'configure'
1340--- configure 2011-05-25 19:25:11 +0000
1341+++ configure 2011-06-17 11:15:58 +0000
1342@@ -1,6 +1,6 @@
1343 #! /bin/sh
1344 # Guess values for system-dependent variables and create Makefiles.
1345-# Generated by GNU Autoconf 2.67 for upstart 0.9.7.
1346+# Generated by GNU Autoconf 2.67 for upstart 1.3.
1347 #
1348 # Report bugs to <upstart-devel@lists.ubuntu.com>.
1349 #
1350@@ -13,7 +13,7 @@
1351 # This configure script is free software; the Free Software Foundation
1352 # gives unlimited permission to copy, distribute and modify it.
1353 #
1354-# Copyright © 2011 Canonical Ltd.
1355+# Copyright © 2011 Scott James Remnant, Canonical Ltd.
1356 ## -------------------- ##
1357 ## M4sh Initialization. ##
1358 ## -------------------- ##
1359@@ -703,8 +703,8 @@
1360 # Identity of this package.
1361 PACKAGE_NAME='upstart'
1362 PACKAGE_TARNAME='upstart'
1363-PACKAGE_VERSION='0.9.7'
1364-PACKAGE_STRING='upstart 0.9.7'
1365+PACKAGE_VERSION='1.3'
1366+PACKAGE_STRING='upstart 1.3'
1367 PACKAGE_BUGREPORT='upstart-devel@lists.ubuntu.com'
1368 PACKAGE_URL=''
1369
1370@@ -1511,7 +1511,7 @@
1371 # Omit some internal or obsolete options to make the list less imposing.
1372 # This message is too long to be a string in the A/UX 3.1 sh.
1373 cat <<_ACEOF
1374-\`configure' configures upstart 0.9.7 to adapt to many kinds of systems.
1375+\`configure' configures upstart 1.3 to adapt to many kinds of systems.
1376
1377 Usage: $0 [OPTION]... [VAR=VALUE]...
1378
1379@@ -1581,7 +1581,7 @@
1380
1381 if test -n "$ac_init_help"; then
1382 case $ac_init_help in
1383- short | recursive ) echo "Configuration of upstart 0.9.7:";;
1384+ short | recursive ) echo "Configuration of upstart 1.3:";;
1385 esac
1386 cat <<\_ACEOF
1387
1388@@ -1723,14 +1723,14 @@
1389 test -n "$ac_init_help" && exit $ac_status
1390 if $ac_init_version; then
1391 cat <<\_ACEOF
1392-upstart configure 0.9.7
1393+upstart configure 1.3
1394 generated by GNU Autoconf 2.67
1395
1396 Copyright (C) 2010 Free Software Foundation, Inc.
1397 This configure script is free software; the Free Software Foundation
1398 gives unlimited permission to copy, distribute and modify it.
1399
1400-Copyright © 2011 Canonical Ltd.
1401+Copyright © 2011 Scott James Remnant, Canonical Ltd.
1402 _ACEOF
1403 exit
1404 fi
1405@@ -2326,7 +2326,7 @@
1406 This file contains any messages produced by compilers while
1407 running configure, to aid debugging if configure makes a mistake.
1408
1409-It was created by upstart $as_me 0.9.7, which was
1410+It was created by upstart $as_me 1.3, which was
1411 generated by GNU Autoconf 2.67. Invocation command line was
1412
1413 $ $0 $@
1414@@ -2682,8 +2682,8 @@
1415
1416
1417
1418-$as_echo "#define PACKAGE_COPYRIGHT \"Copyright (C) 2011 Canonical Ltd.\"" >>confdefs.h
1419- PACKAGE_COPYRIGHT="Copyright © 2011 Canonical Ltd."
1420+$as_echo "#define PACKAGE_COPYRIGHT \"Copyright (C) 2011 Scott James Remnant, Canonical Ltd.\"" >>confdefs.h
1421+ PACKAGE_COPYRIGHT="Copyright © 2011 Scott James Remnant, Canonical Ltd."
1422
1423
1424
1425@@ -4481,7 +4481,7 @@
1426
1427 # Define the identity of the package.
1428 PACKAGE='upstart'
1429- VERSION='0.9.7'
1430+ VERSION='1.3'
1431
1432
1433 cat >>confdefs.h <<_ACEOF
1434@@ -17364,7 +17364,7 @@
1435
1436
1437
1438-ac_config_files="$ac_config_files Makefile intl/Makefile dbus/Makefile init/Makefile util/Makefile extra/Makefile conf/Makefile doc/Makefile contrib/Makefile po/Makefile.in scripts/Makefile"
1439+ac_config_files="$ac_config_files Makefile intl/Makefile dbus/Makefile init/Makefile util/Makefile conf/Makefile extra/Makefile doc/Makefile contrib/Makefile po/Makefile.in scripts/Makefile"
1440
1441 ac_config_headers="$ac_config_headers config.h"
1442
1443@@ -17898,7 +17898,7 @@
1444 # report actual input values of CONFIG_FILES etc. instead of their
1445 # values after options handling.
1446 ac_log="
1447-This file was extended by upstart $as_me 0.9.7, which was
1448+This file was extended by upstart $as_me 1.3, which was
1449 generated by GNU Autoconf 2.67. Invocation command line was
1450
1451 CONFIG_FILES = $CONFIG_FILES
1452@@ -17964,7 +17964,7 @@
1453 cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
1454 ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`"
1455 ac_cs_version="\\
1456-upstart config.status 0.9.7
1457+upstart config.status 1.3
1458 configured by $0, generated by GNU Autoconf 2.67,
1459 with options \\"\$ac_cs_config\\"
1460
1461@@ -18363,8 +18363,8 @@
1462 "dbus/Makefile") CONFIG_FILES="$CONFIG_FILES dbus/Makefile" ;;
1463 "init/Makefile") CONFIG_FILES="$CONFIG_FILES init/Makefile" ;;
1464 "util/Makefile") CONFIG_FILES="$CONFIG_FILES util/Makefile" ;;
1465+ "conf/Makefile") CONFIG_FILES="$CONFIG_FILES conf/Makefile" ;;
1466 "extra/Makefile") CONFIG_FILES="$CONFIG_FILES extra/Makefile" ;;
1467- "conf/Makefile") CONFIG_FILES="$CONFIG_FILES conf/Makefile" ;;
1468 "doc/Makefile") CONFIG_FILES="$CONFIG_FILES doc/Makefile" ;;
1469 "contrib/Makefile") CONFIG_FILES="$CONFIG_FILES contrib/Makefile" ;;
1470 "po/Makefile.in") CONFIG_FILES="$CONFIG_FILES po/Makefile.in" ;;
1471
1472=== modified file 'configure.ac'
1473--- configure.ac 2011-05-25 19:25:11 +0000
1474+++ configure.ac 2011-06-17 11:15:58 +0000
1475@@ -1,8 +1,8 @@
1476 # Process this file with autoconf to produce a configure script.
1477
1478 AC_PREREQ(2.61)
1479-AC_INIT([upstart], [0.9.7], [upstart-devel@lists.ubuntu.com])
1480-NIH_COPYRIGHT([[Copyright © 2011 Canonical Ltd.]])
1481+AC_INIT([upstart], [1.3], [upstart-devel@lists.ubuntu.com])
1482+NIH_COPYRIGHT([[Copyright © 2011 Scott James Remnant, Canonical Ltd.]])
1483 AC_CONFIG_SRCDIR([init/main.c])
1484 AC_CONFIG_MACRO_DIR([m4])
1485
1486@@ -66,8 +66,8 @@
1487
1488
1489 AC_CONFIG_FILES([ Makefile intl/Makefile
1490- dbus/Makefile init/Makefile util/Makefile extra/Makefile
1491- conf/Makefile doc/Makefile contrib/Makefile po/Makefile.in
1492+ dbus/Makefile init/Makefile util/Makefile conf/Makefile
1493+ extra/Makefile doc/Makefile contrib/Makefile po/Makefile.in
1494 scripts/Makefile ])
1495 AC_CONFIG_HEADERS([config.h])
1496 AC_OUTPUT
1497
1498=== modified file 'contrib/bash_completion/upstart'
1499--- contrib/bash_completion/upstart 2011-05-25 19:25:11 +0000
1500+++ contrib/bash_completion/upstart 2011-06-17 11:15:58 +0000
1501@@ -3,26 +3,28 @@
1502 #
1503 # We don't provide completion for 'init' itself for obvious reasons.
1504 have initctl &&
1505-_upstart_conf_jobs()
1506-{
1507- initctl list|awk '{print $1}'
1508-} &&
1509-_upstart_named_events()
1510-{
1511- (cd /etc/init && grep '^emits ' *.conf|sed 's/^emits //g')
1512-} &&
1513-_upstart_events()
1514-{
1515- (_upstart_conf_jobs;_upstart_named_events)|tr ' ' '\n'|sort -u
1516-} &&
1517-_upstart_startable_events()
1518+_upstart_jobs()
1519+{
1520+ initctl list|awk '{print $1}'|sort -u
1521+} &&
1522+_upstart_startable_jobs()
1523 {
1524 initctl list|cut -d\, -f1|awk '$2 == "stop/waiting" {print $1}'
1525 } &&
1526-_upstart_stoppable_events()
1527+_upstart_stoppable_jobs()
1528 {
1529 initctl list|cut -d\, -f1|awk '$2 == "start/running" {print $1}'
1530 } &&
1531+_upstart_events()
1532+{
1533+ # note that we don't provide the internal events such as "starting"
1534+ # (and those from mountall) since the user should be using the
1535+ # associated command to emit such events.
1536+ (cd /etc/init && \
1537+ egrep '^[[:space:]]*emits ' *.conf |\
1538+ cut -d: -f2- | sed 's/^[[:space:]]*emits //g' |\
1539+ tr ' ' '\n' | awk '{print $NF}' | grep -v ^$|sort -u)
1540+} &&
1541 _upstart_initctl()
1542 {
1543 _get_comp_words_by_ref cur prev
1544@@ -32,20 +34,34 @@
1545 case "$prev" in
1546
1547 start)
1548- COMPREPLY=( $(compgen -W "-n --no-wait $(_upstart_startable_events)" -- ${cur}) )
1549+ COMPREPLY=( $(compgen -W "-n --no-wait $(_upstart_startable_jobs)" -- ${cur}) )
1550 return 0
1551 ;;
1552
1553 stop)
1554- COMPREPLY=( $(compgen -W "-n --no-wait $(_upstart_stoppable_events)" -- ${cur}) )
1555+ COMPREPLY=( $(compgen -W "-n --no-wait $(_upstart_stoppable_jobs)" -- ${cur}) )
1556 return 0
1557 ;;
1558
1559 emit)
1560- COMPREPLY=( $(compgen -W "$(_upstart_events)" -- ${cur}) )
1561+ COMPREPLY=( $(compgen -W "-n --no-wait $(_upstart_events)" -- ${cur}) )
1562 return 0
1563 ;;
1564
1565+ -i|--ignore-events)
1566+ # handle visualisation options after check-config command
1567+ for cmd in check-config
1568+ do
1569+ cwords=${COMP_WORDS[@]##}
1570+ filtered_cwords=${COMP_WORDS[@]##${cmd}}
1571+ if [ "$filtered_cwords" != "$cwords" ]
1572+ then
1573+ COMPREPLY=( $(compgen -W "$(_upstart_jobs)" -- ${cur}) )
1574+ return 0
1575+ fi
1576+ done
1577+ ;;
1578+
1579 -e|--enumerate)
1580 # handle visualisation options after show-config command
1581 for cmd in show-config
1582@@ -54,36 +70,56 @@
1583 filtered_cwords=${COMP_WORDS[@]##${cmd}}
1584 if [ "$filtered_cwords" != "$cwords" ]
1585 then
1586- COMPREPLY=( $(compgen -W "${vis_opts} $(_upstart_conf_jobs)" -- ${cur}) )
1587+ COMPREPLY=( $(compgen -W "$(_upstart_jobs)" -- ${cur}) )
1588 return 0
1589 fi
1590 done
1591 ;;
1592
1593 reload|restart)
1594- COMPREPLY=( $(compgen -W "$(_upstart_conf_jobs)" -- ${cur}) )
1595+ COMPREPLY=( $(compgen -W "-n --no-wait $(_upstart_stoppable_jobs)" -- ${cur}) )
1596 return 0
1597 ;;
1598
1599 status)
1600- COMPREPLY=( $(compgen -W "${vis_opts} $(_upstart_conf_jobs)" -- ${cur}) )
1601+ COMPREPLY=( $(compgen -W "$(_upstart_jobs)" -- ${cur}) )
1602 return 0
1603 ;;
1604
1605+ check-config)
1606+ COMPREPLY=( $(compgen -W "-w --warn -i --ignore-events= $(_upstart_jobs)" -- ${cur}) )
1607+ return 0
1608+ ;;
1609 show-config)
1610- COMPREPLY=( $(compgen -W "-e --enumerate $(_upstart_conf_jobs)" -- ${cur}) )
1611+ COMPREPLY=( $(compgen -W "-e --enumerate $(_upstart_jobs)" -- ${cur}) )
1612 return 0
1613 ;;
1614
1615 -n|--no-wait)
1616- # allow no wait after start/stop commands
1617- for cmd in start stop
1618+ # allow 'no wait' for certain commands
1619+ for cmd in start stop restart emit
1620 do
1621 cwords=${COMP_WORDS[@]##}
1622 filtered_cwords=${COMP_WORDS[@]##${cmd}}
1623 if [ "$filtered_cwords" != "$cwords" ]
1624 then
1625- COMPREPLY=( $(compgen -W "$(_upstart_${cmd}able_events)" -- ${cur}) )
1626+ case "$cmd" in
1627+ start)
1628+ COMPREPLY=( $(compgen -W "$(_upstart_startable_jobs)" -- ${cur}) )
1629+ ;;
1630+
1631+ stop)
1632+ COMPREPLY=( $(compgen -W "$(_upstart_stoppable_jobs)" -- ${cur}) )
1633+ ;;
1634+
1635+ restart)
1636+ COMPREPLY=( $(compgen -W "$(_upstart_stoppable_jobs)" -- ${cur}) )
1637+ ;;
1638+
1639+ emit)
1640+ COMPREPLY=( $(compgen -W "$(_upstart_events)" -- ${cur}) )
1641+ ;;
1642+ esac
1643 return 0
1644 fi
1645 done
1646@@ -118,7 +154,7 @@
1647 ;;
1648 esac
1649
1650- COMPREPLY=( $(compgen -W "$opts $(_upstart_startable_events)" -- ${cur}) )
1651+ COMPREPLY=( $(compgen -W "$opts $(_upstart_startable_jobs)" -- ${cur}) )
1652 return 0
1653 } && complete -F _upstart_start start
1654
1655@@ -138,7 +174,7 @@
1656 ;;
1657 esac
1658
1659- COMPREPLY=( $(compgen -W "$opts $(_upstart_stoppable_events)" -- ${cur}) )
1660+ COMPREPLY=( $(compgen -W "$opts $(_upstart_stoppable_jobs)" -- ${cur}) )
1661 return 0
1662 } && complete -F _upstart_stop stop
1663
1664@@ -158,7 +194,7 @@
1665 ;;
1666 esac
1667
1668- COMPREPLY=( $(compgen -W "$opts $(_upstart_events)" -- ${cur}) )
1669+ COMPREPLY=( $(compgen -W "$opts $(_upstart_stoppable_jobs)" -- ${cur}) )
1670 return 0
1671
1672 } && complete -F _upstart_restart restart
1673@@ -178,7 +214,7 @@
1674 ;;
1675 esac
1676
1677- COMPREPLY=( $(compgen -W "$opts $(_upstart_events)" -- ${cur}) )
1678+ COMPREPLY=( $(compgen -W "$opts $(_upstart_jobs)" -- ${cur}) )
1679 return 0
1680
1681 } && complete -F _upstart_status status
1682@@ -198,7 +234,7 @@
1683 ;;
1684 esac
1685
1686- COMPREPLY=( $(compgen -W "$opts $(_upstart_events)" -- ${cur}) )
1687+ COMPREPLY=( $(compgen -W "$opts $(_upstart_stoppable_jobs)" -- ${cur}) )
1688 return 0
1689
1690 } && complete -F _upstart_reload reload
1691
1692=== modified file 'contrib/vim/syntax/upstart.vim'
1693--- contrib/vim/syntax/upstart.vim 2009-07-08 19:59:21 +0000
1694+++ contrib/vim/syntax/upstart.vim 2011-06-17 11:15:58 +0000
1695@@ -1,10 +1,11 @@
1696 " Vim syntax file
1697 " Language: Upstart job files
1698 " Maintainer: Michael Biebl <biebl@debian.org>
1699-" Last Change: 2007 Feb 13
1700+" James Hunt <james.hunt@ubuntu.com>
1701+" Last Change: 2011 Jun 14
1702 " License: GPL v2
1703-" Version: 0.1
1704-" Remark: Syntax highlighting for upstart job files.
1705+" Version: 0.3
1706+" Remark: Syntax highlighting for Upstart (init(8)) job files.
1707 "
1708 " It is inspired by the initng syntax file and includes sh.vim to do the
1709 " highlighting of script blocks.
1710@@ -16,7 +17,6 @@
1711 endif
1712
1713 let is_bash = 1
1714-"unlet! b:current_syntax
1715 syn include @Shell syntax/sh.vim
1716
1717 syn case match
1718@@ -31,8 +31,12 @@
1719 syn cluster upstartShellCluster contains=@Shell
1720
1721 " one argument
1722-syn keyword upstartStatement description author version
1723-syn keyword upstartStatement pid kill normal console env umask nice limit chroot chdir exec
1724+syn keyword upstartStatement description author version instance expect
1725+syn keyword upstartStatement pid kill normal console env exit export
1726+syn keyword upstartStatement umask nice oom chroot chdir exec
1727+
1728+" two arguments
1729+syn keyword upstartStatement limit
1730
1731 " one or more arguments (events)
1732 syn keyword upstartStatement emits
1733@@ -40,27 +44,62 @@
1734 syn keyword upstartStatement on start stop
1735
1736 " flag, no parameter
1737-syn keyword upstartStatement daemon respawn service instance
1738+syn keyword upstartStatement respawn service instance manual debug task
1739
1740 " prefix for exec or script
1741 syn keyword upstartOption pre-start post-start pre-stop post-stop
1742
1743-" options for pid
1744-syn keyword upstartOption file binary timeout
1745-" option for
1746-syn keyword upstartOption timeout
1747-" option for respawn
1748-syn keyword upstartOption limit
1749+" option for kill
1750+syn keyword upstartOption timeout signal
1751+" option for oom
1752+syn keyword upstartOption score never
1753 " options for console
1754-syn keyword upstartOption logged output owner none
1755-
1756-syn keyword upstartEvent startup stalled control-alt-delete kbdrequest starting started stopping stopped runlevel
1757-
1758-hi def link upstartComment Comment
1759-hi def link upstartTodo Todo
1760-hi def link upstartString String
1761+syn keyword upstartOption output owner
1762+" options for expect
1763+syn keyword upstartOption stop fork daemon none
1764+" options for limit
1765+syn keyword upstartOption unlimited core cpu data fsize memlock msgqueue nice
1766+syn keyword upstartOption nofile nproc rss rtprio sigpending stack
1767+
1768+" 'options' for start/stop on
1769+syn keyword upstartOption and or
1770+
1771+" Upstart itself and associated utilities
1772+syn keyword upstartEvent runlevel
1773+syn keyword upstartEvent started
1774+syn keyword upstartEvent starting
1775+syn keyword upstartEvent startup
1776+syn keyword upstartEvent stopped
1777+syn keyword upstartEvent stopping
1778+syn match upstartEvent /control-alt-delete/
1779+syn match upstartEvent /keyboard-request/
1780+syn match upstartEvent /power-status-changed/
1781+
1782+" D-Bus
1783+syn match upstartEvent /dbus-activation/
1784+
1785+" Display Manager (ie gdm)
1786+syn match upstartEvent /desktop-session-start/
1787+syn match upstartEvent /login-session-start/
1788+
1789+" mountall
1790+syn keyword upstartEvent filesystem
1791+syn keyword upstartEvent mounted
1792+syn keyword upstartEvent mounting
1793+syn match upstartEvent /\(\<local\>\|\<virtual\>\|\<remote\>\)-filesystems/
1794+syn match upstartEvent /all-swaps/
1795+
1796+" upstart-udev-bridge and ifup/down
1797+syn match upstartEvent /\<\i\{-1,}-device-\(\<added\>\|\<removed\>\|\<up\>\|\<down\>\)/
1798+
1799+" upstart-socket-bridge
1800+syn keyword upstartEvent socket
1801+
1802+hi def link upstartComment Comment
1803+hi def link upstartTodo Todo
1804+hi def link upstartString String
1805 hi def link upstartStatement Statement
1806-hi def link upstartOption Type
1807-hi def link upstartEvent Define
1808+hi def link upstartOption Type
1809+hi def link upstartEvent Define
1810
1811 let b:current_syntax = "upstart"
1812
1813=== modified file 'debian/changelog'
1814--- debian/changelog 2011-05-25 19:38:25 +0000
1815+++ debian/changelog 2011-06-17 11:15:58 +0000
1816@@ -1,3 +1,24 @@
1817+upstart (1.3-0ubuntu3) oneiric; urgency=low
1818+
1819+ * init/paths.h: Syned with upstream since Ubuntu file appears to have
1820+ diff applied twice, causing redefines.
1821+
1822+ -- James Hunt <james.hunt@ubuntu.com> Fri, 17 Jun 2011 09:59:49 +0100
1823+
1824+upstart (1.3-0ubuntu2) oneiric; urgency=low
1825+
1826+ * init/Makefile.am: Sync up from upstream, dropping TEST define which is
1827+ no longer required now we set UPSTART_NO_SESSIONS for init/tests/*.c
1828+ and specify "--no-sessions" for util/tests/*.c.
1829+
1830+ -- James Hunt <james.hunt@ubuntu.com> Fri, 17 Jun 2011 09:47:36 +0100
1831+
1832+upstart (1.3-0ubuntu1) oneiric; urgency=low
1833+
1834+ * Merge of Upstart 1.3 (lp:upstart @ 1.3 release tag).
1835+
1836+ -- James Hunt <james.hunt@ubuntu.com> Thu, 16 Jun 2011 15:09:41 +0100
1837+
1838 upstart (0.9.7-3) oneiric; urgency=low
1839
1840 * Merge of upstream lp:~upstart-devel/upstart/0.9: Updates for
1841
1842=== modified file 'extra/Makefile.am'
1843--- extra/Makefile.am 2011-05-25 19:25:11 +0000
1844+++ extra/Makefile.am 2011-06-17 11:15:58 +0000
1845@@ -74,7 +74,6 @@
1846 else
1847 EXTRA_DIST = \
1848 man/upstart-udev-bridge.8
1849-
1850 endif
1851
1852
1853
1854=== added file 'extra/conf/upstart-socket-bridge.conf'
1855--- extra/conf/upstart-socket-bridge.conf 1970-01-01 00:00:00 +0000
1856+++ extra/conf/upstart-socket-bridge.conf 2011-06-17 11:15:58 +0000
1857@@ -0,0 +1,16 @@
1858+# upstart-socket-bridge - Bridge socket events into upstart
1859+#
1860+# This helper daemon receives socket(7) events and
1861+# emits equivalent Upstart events.
1862+
1863+description "Bridge socket events into upstart"
1864+
1865+emits socket
1866+
1867+start on net-device-up IFACE=lo
1868+stop on runlevel [!2345]
1869+
1870+expect daemon
1871+respawn
1872+
1873+exec upstart-socket-bridge --daemon
1874
1875=== removed file 'extra/conf/upstart-socket-bridge.conf'
1876--- extra/conf/upstart-socket-bridge.conf 2011-05-25 19:25:11 +0000
1877+++ extra/conf/upstart-socket-bridge.conf 1970-01-01 00:00:00 +0000
1878@@ -1,16 +0,0 @@
1879-# upstart-socket-bridge - Bridge socket events into upstart
1880-#
1881-# This helper daemon receives socket(7) events and
1882-# emits equivalent Upstart events.
1883-
1884-description "Bridge socket events into upstart"
1885-
1886-emits socket
1887-
1888-start on net-device-up IFACE=lo
1889-stop on runlevel [!2345]
1890-
1891-expect daemon
1892-respawn
1893-
1894-exec upstart-socket-bridge --daemon
1895
1896=== added file 'extra/man/socket-event.7'
1897--- extra/man/socket-event.7 1970-01-01 00:00:00 +0000
1898+++ extra/man/socket-event.7 2011-06-17 11:15:58 +0000
1899@@ -0,0 +1,92 @@
1900+.TH socket\-event 8 2011-03-08 upstart
1901+.\"
1902+.SH NAME
1903+socket \- event signalling that a socket connection has been made
1904+.\"
1905+.SH SYNOPSIS
1906+.B socket
1907+.BI PROTO\fR= PROTO
1908+.BI PORT\fR= PORT
1909+.BI ADDR\fR= ADDR
1910+
1911+.B socket
1912+.BI PROTO\fR= PROTO
1913+.BI PATH\fR= PATH
1914+.\"
1915+.SH DESCRIPTION
1916+
1917+The
1918+.B socket
1919+event is generated by the
1920+.BR upstart\-socket\-bridge (8)
1921+daemon when a socket connection is made whose details match the
1922+socket event condition and environment specified in a jobs
1923+.B start on
1924+or
1925+.B stop on
1926+stanza.
1927+
1928+When an incoming connection is detected, the file descriptor
1929+representing the socket is passed to the job in question to allow it to
1930+.BR accept (2)
1931+the connection. Additionally, the environment variable
1932+.B UPSTART_JOB
1933+will contain the name of the event ("socket") and the environment
1934+variable
1935+.B UPSTART_FDS
1936+will contain the number of the file descriptor corresponding to the
1937+listening socket.
1938+.\"
1939+.SH EXAMPLES
1940+.\"
1941+.SS Internet socket
1942+Start web server when first client connects from localhost:
1943+.RS
1944+.nf
1945+
1946+start on socket PROTO=inet PORT=80 ADDR=127.0.0.1
1947+.fi
1948+.RE
1949+.\"
1950+.SS Local socket
1951+.P
1952+.RS
1953+.nf
1954+
1955+start on socket PROTO=unix PATH=/var/run/.s.pgsql.1234
1956+.fi
1957+.FE
1958+.\"
1959+.SS Abstract socket
1960+.P
1961+
1962+.RS
1963+.nf
1964+
1965+start on socket PROTO=unix PATH=@/at/upstart/example
1966+.fi
1967+.FE
1968+.\"
1969+.SH AUTHOR
1970+Written by Scott James Remnant
1971+.RB < scott@netsplit.com >
1972+
1973+Manual page written by James Hunt
1974+.RB < james.hunt@ubuntu.com >
1975+.\"
1976+.SH BUGS
1977+Report bugs at
1978+.RB < https://launchpad.net/upstart/+bugs >
1979+.\"
1980+.SH COPYRIGHT
1981+Copyright \(co 2011 Canonical Ltd.
1982+.PP
1983+This is free software; see the source for copying conditions. There is NO
1984+warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
1985+.\"
1986+.SH SEE ALSO
1987+.BR init (5)
1988+.BR init (8)
1989+.BR socket (2)
1990+.BR socket (7)
1991+.BR upstart\-socket\-bridge (8)
1992
1993=== removed file 'extra/man/socket-event.7'
1994--- extra/man/socket-event.7 2011-05-25 19:25:11 +0000
1995+++ extra/man/socket-event.7 1970-01-01 00:00:00 +0000
1996@@ -1,92 +0,0 @@
1997-.TH socket\-event 8 2011-03-08 upstart
1998-.\"
1999-.SH NAME
2000-socket \- event signalling that a socket connection has been made
2001-.\"
2002-.SH SYNOPSIS
2003-.B socket
2004-.BI PROTO\fR= PROTO
2005-.BI PORT\fR= PORT
2006-.BI ADDR\fR= ADDR
2007-
2008-.B socket
2009-.BI PROTO\fR= PROTO
2010-.BI PATH\fR= PATH
2011-.\"
2012-.SH DESCRIPTION
2013-
2014-The
2015-.B socket
2016-event is generated by the
2017-.BR upstart\-socket\-bridge (8)
2018-daemon when a socket connection is made whose details match the
2019-socket event condition and environment specified in a jobs
2020-.B start on
2021-or
2022-.B stop on
2023-stanza.
2024-
2025-When an incoming connection is detected, the file descriptor
2026-representing the socket is passed to the job in question to allow it to
2027-.BR accept (2)
2028-the connection. Additionally, the environment variable
2029-.B UPSTART_JOB
2030-will contain the name of the event ("socket") and the environment
2031-variable
2032-.B UPSTART_FDS
2033-will contain the number of the file descriptor corresponding to the
2034-listening socket.
2035-.\"
2036-.SH EXAMPLES
2037-.\"
2038-.SS Internet socket
2039-Start web server when first client connects from localhost:
2040-.RS
2041-.nf
2042-
2043-start on socket PROTO=inet PORT=80 ADDR=127.0.0.1
2044-.fi
2045-.RE
2046-.\"
2047-.SS Local socket
2048-.P
2049-.RS
2050-.nf
2051-
2052-start on socket PROTO=unix PATH=/var/run/.s.pgsql.1234
2053-.fi
2054-.FE
2055-.\"
2056-.SS Abstract socket
2057-.P
2058-
2059-.RS
2060-.nf
2061-
2062-start on socket PROTO=unix PATH=@/at/upstart/example
2063-.fi
2064-.FE
2065-.\"
2066-.SH AUTHOR
2067-Written by Scott James Remnant
2068-.RB < scott@netsplit.com >
2069-
2070-Manual page written by James Hunt
2071-.RB < james.hunt@ubuntu.com >
2072-.\"
2073-.SH BUGS
2074-Report bugs at
2075-.RB < https://launchpad.net/upstart/+bugs >
2076-.\"
2077-.SH COPYRIGHT
2078-Copyright \(co 2011 Canonical Ltd.
2079-.PP
2080-This is free software; see the source for copying conditions. There is NO
2081-warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
2082-.\"
2083-.SH SEE ALSO
2084-.BR init (5)
2085-.BR init (8)
2086-.BR socket (2)
2087-.BR socket (7)
2088-.BR upstart\-socket\-bridge (8)
2089
2090=== added file 'extra/man/upstart-socket-bridge.8'
2091--- extra/man/upstart-socket-bridge.8 1970-01-01 00:00:00 +0000
2092+++ extra/man/upstart-socket-bridge.8 2011-06-17 11:15:58 +0000
2093@@ -0,0 +1,47 @@
2094+.TH upstart-socket-bridge 8 2011-03-08 upstart
2095+.\"
2096+.SH NAME
2097+upstart-socket-bridge \- Bridge between Upstart and sockets
2098+.\"
2099+.SH SYNOPSIS
2100+.B upstart-socket-bridge
2101+.RI [ OPTIONS ]...
2102+.\"
2103+.SH DESCRIPTION
2104+The
2105+.B upstart-socket-bridge
2106+queries the Upstart
2107+.BR init (8)
2108+daemon for all job configurations which
2109+.B start on
2110+or
2111+.B stop on
2112+the socket event. It then waits for an incoming connection on each
2113+specified
2114+.BR socket (7)
2115+and when detected emits the socket event (\fBsocket\-event\fP (7)),
2116+setting a number of environment variables for the job to query.
2117+.\"
2118+.SH AUTHOR
2119+Written by Scott James Remnant
2120+.RB < scott@netsplit.com >
2121+
2122+Manual page written by James Hunt
2123+.RB < james.hunt@ubuntu.com >
2124+.\"
2125+.SH BUGS
2126+Report bugs at
2127+.RB < https://launchpad.net/upstart/+bugs >
2128+.\"
2129+.SH COPYRIGHT
2130+Copyright \(co 2011 Canonical Ltd.
2131+.PP
2132+This is free software; see the source for copying conditions. There is NO
2133+warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
2134+.\"
2135+.SH SEE ALSO
2136+.BR init (5)
2137+.BR init (8)
2138+.BR socket (2)
2139+.BR socket (7)
2140+.BR socket\-event (7)
2141
2142=== removed file 'extra/man/upstart-socket-bridge.8'
2143--- extra/man/upstart-socket-bridge.8 2011-05-25 19:25:11 +0000
2144+++ extra/man/upstart-socket-bridge.8 1970-01-01 00:00:00 +0000
2145@@ -1,47 +0,0 @@
2146-.TH upstart-socket-bridge 8 2011-03-08 upstart
2147-.\"
2148-.SH NAME
2149-upstart-socket-bridge \- Bridge between Upstart and sockets
2150-.\"
2151-.SH SYNOPSIS
2152-.B upstart-socket-bridge
2153-.RI [ OPTIONS ]...
2154-.\"
2155-.SH DESCRIPTION
2156-The
2157-.B upstart-socket-bridge
2158-queries the Upstart
2159-.BR init (8)
2160-daemon for all job configurations which
2161-.B start on
2162-or
2163-.B stop on
2164-the socket event. It then waits for an incoming connection on each
2165-specified
2166-.BR socket (7)
2167-and when detected emits the socket event (\fBsocket\-event\fP (7)),
2168-setting a number of environment variables for the job to query.
2169-.\"
2170-.SH AUTHOR
2171-Written by Scott James Remnant
2172-.RB < scott@netsplit.com >
2173-
2174-Manual page written by James Hunt
2175-.RB < james.hunt@ubuntu.com >
2176-.\"
2177-.SH BUGS
2178-Report bugs at
2179-.RB < https://launchpad.net/upstart/+bugs >
2180-.\"
2181-.SH COPYRIGHT
2182-Copyright \(co 2011 Canonical Ltd.
2183-.PP
2184-This is free software; see the source for copying conditions. There is NO
2185-warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
2186-.\"
2187-.SH SEE ALSO
2188-.BR init (5)
2189-.BR init (8)
2190-.BR socket (2)
2191-.BR socket (7)
2192-.BR socket\-event (7)
2193
2194=== modified file 'extra/upstart-socket-bridge.c'
2195--- extra/upstart-socket-bridge.c 2011-05-25 19:25:11 +0000
2196+++ extra/upstart-socket-bridge.c 2011-06-17 11:15:58 +0000
2197@@ -478,7 +478,7 @@
2198 nih_assert (! strcmp(socket_info[0], "socket"));
2199
2200 sock = NIH_MUST (nih_new (job, Socket));
2201- memset (sock, 0, sizeof sock);
2202+ memset (sock, 0, sizeof (Socket));
2203 sock->sock = -1;
2204
2205 nih_list_init (&sock->entry);
2206
2207=== modified file 'init/Makefile.am'
2208--- init/Makefile.am 2011-05-25 19:25:11 +0000
2209+++ init/Makefile.am 2011-06-17 11:15:58 +0000
2210@@ -145,19 +145,16 @@
2211 tests: $(BUILT_SOURCES) $(check_PROGRAMS)
2212
2213 test_system_SOURCES = tests/test_system.c
2214-test_system_CFLAGS = $(AM_CFLAGS) -DTEST
2215 test_system_LDADD = \
2216 system.o \
2217 $(NIH_LIBS)
2218
2219 test_environ_SOURCES = tests/test_environ.c
2220-test_environ_CFLAGS = $(AM_CFLAGS) -DTEST
2221 test_environ_LDADD = \
2222 environ.o \
2223 $(NIH_LIBS)
2224
2225 test_process_SOURCES = tests/test_process.c
2226-test_process_CFLAGS = $(AM_CFLAGS) -DTEST
2227 test_process_LDADD = \
2228 system.o environ.o process.o \
2229 job_class.o job_process.o job.o event.o event_operator.o blocked.o \
2230@@ -170,7 +167,6 @@
2231 $(DBUS_LIBS)
2232
2233 test_job_class_SOURCES = tests/test_job_class.c
2234-test_job_class_CFLAGS = $(AM_CFLAGS) -DTEST
2235 test_job_class_LDADD = \
2236 system.o environ.o process.o \
2237 job_class.o job_process.o job.o event.o event_operator.o blocked.o \
2238@@ -183,7 +179,6 @@
2239 $(DBUS_LIBS)
2240
2241 test_job_process_SOURCES = tests/test_job_process.c
2242-test_job_process_CFLAGS = $(AM_CFLAGS) -DTEST
2243 test_job_process_LDADD = \
2244 system.o environ.o process.o \
2245 job_class.o job_process.o job.o event.o event_operator.o blocked.o \
2246@@ -196,7 +191,6 @@
2247 $(DBUS_LIBS)
2248
2249 test_job_SOURCES = tests/test_job.c
2250-test_job_CFLAGS = $(AM_CFLAGS) -DTEST
2251 test_job_LDADD = \
2252 system.o environ.o process.o \
2253 job_class.o job_process.o job.o event.o event_operator.o blocked.o \
2254@@ -209,7 +203,6 @@
2255 $(DBUS_LIBS)
2256
2257 test_event_SOURCES = tests/test_event.c
2258-test_event_CFLAGS = $(AM_CFLAGS) -DTEST
2259 test_event_LDADD = \
2260 system.o environ.o process.o \
2261 job_class.o job_process.o job.o event.o event_operator.o blocked.o \
2262@@ -222,7 +215,6 @@
2263 $(DBUS_LIBS)
2264
2265 test_event_operator_SOURCES = tests/test_event_operator.c
2266-test_event_operator_CFLAGS = $(AM_CFLAGS) -DTEST
2267 test_event_operator_LDADD = \
2268 system.o environ.o process.o \
2269 job_class.o job_process.o job.o event.o event_operator.o blocked.o \
2270@@ -235,7 +227,6 @@
2271 $(DBUS_LIBS)
2272
2273 test_blocked_SOURCES = tests/test_blocked.c
2274-test_blocked_CFLAGS = $(AM_CFLAGS) -DTEST
2275 test_blocked_LDADD = \
2276 system.o environ.o process.o \
2277 job_class.o job_process.o job.o event.o event_operator.o blocked.o \
2278@@ -248,7 +239,6 @@
2279 $(DBUS_LIBS)
2280
2281 test_parse_job_SOURCES = tests/test_parse_job.c
2282-test_parse_job_CFLAGS = $(AM_CFLAGS) -DTEST
2283 test_parse_job_LDADD = \
2284 system.o environ.o process.o \
2285 job_class.o job_process.o job.o event.o event_operator.o blocked.o \
2286@@ -261,7 +251,6 @@
2287 $(DBUS_LIBS)
2288
2289 test_parse_conf_SOURCES = tests/test_parse_conf.c
2290-test_parse_conf_CFLAGS = $(AM_CFLAGS) -DTEST
2291 test_parse_conf_LDADD = \
2292 system.o environ.o process.o \
2293 job_class.o job_process.o job.o event.o event_operator.o blocked.o \
2294@@ -274,7 +263,6 @@
2295 $(DBUS_LIBS)
2296
2297 test_conf_SOURCES = tests/test_conf.c
2298-test_conf_CFLAGS = $(AM_CFLAGS) -DTEST
2299 test_conf_LDADD = \
2300 system.o environ.o process.o \
2301 job_class.o job_process.o job.o event.o event_operator.o blocked.o \
2302@@ -287,7 +275,6 @@
2303 $(DBUS_LIBS)
2304
2305 test_control_SOURCES = tests/test_control.c
2306-test_control_CFLAGS = $(AM_CFLAGS) -DTEST
2307 test_control_LDADD = \
2308 system.o environ.o process.o \
2309 job_class.o job_process.o job.o event.o event_operator.o blocked.o \
2310
2311=== modified file 'init/Makefile.in'
2312--- init/Makefile.in 2011-05-25 19:25:11 +0000
2313+++ init/Makefile.in 2011-06-17 11:15:58 +0000
2314@@ -99,7 +99,7 @@
2315 AM_V_lt = $(am__v_lt_$(V))
2316 am__v_lt_ = $(am__v_lt_$(AM_DEFAULT_VERBOSITY))
2317 am__v_lt_0 = --silent
2318-am_test_blocked_OBJECTS = test_blocked-test_blocked.$(OBJEXT)
2319+am_test_blocked_OBJECTS = test_blocked.$(OBJEXT)
2320 test_blocked_OBJECTS = $(am_test_blocked_OBJECTS)
2321 test_blocked_DEPENDENCIES = system.o environ.o process.o job_class.o \
2322 job_process.o job.o event.o event_operator.o blocked.o \
2323@@ -107,10 +107,7 @@
2324 com.ubuntu.Upstart.o com.ubuntu.Upstart.Job.o \
2325 com.ubuntu.Upstart.Instance.o $(am__DEPENDENCIES_1) \
2326 $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1)
2327-test_blocked_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
2328- $(LIBTOOLFLAGS) --mode=link $(CCLD) $(test_blocked_CFLAGS) \
2329- $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
2330-am_test_conf_OBJECTS = test_conf-test_conf.$(OBJEXT)
2331+am_test_conf_OBJECTS = test_conf.$(OBJEXT)
2332 test_conf_OBJECTS = $(am_test_conf_OBJECTS)
2333 test_conf_DEPENDENCIES = system.o environ.o process.o job_class.o \
2334 job_process.o job.o event.o event_operator.o blocked.o \
2335@@ -118,10 +115,7 @@
2336 com.ubuntu.Upstart.o com.ubuntu.Upstart.Job.o \
2337 com.ubuntu.Upstart.Instance.o $(am__DEPENDENCIES_1) \
2338 $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1)
2339-test_conf_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
2340- $(LIBTOOLFLAGS) --mode=link $(CCLD) $(test_conf_CFLAGS) \
2341- $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
2342-am_test_control_OBJECTS = test_control-test_control.$(OBJEXT)
2343+am_test_control_OBJECTS = test_control.$(OBJEXT)
2344 test_control_OBJECTS = $(am_test_control_OBJECTS)
2345 test_control_DEPENDENCIES = system.o environ.o process.o job_class.o \
2346 job_process.o job.o event.o event_operator.o blocked.o \
2347@@ -129,16 +123,10 @@
2348 com.ubuntu.Upstart.o com.ubuntu.Upstart.Job.o \
2349 com.ubuntu.Upstart.Instance.o $(am__DEPENDENCIES_1) \
2350 $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1)
2351-test_control_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
2352- $(LIBTOOLFLAGS) --mode=link $(CCLD) $(test_control_CFLAGS) \
2353- $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
2354-am_test_environ_OBJECTS = test_environ-test_environ.$(OBJEXT)
2355+am_test_environ_OBJECTS = test_environ.$(OBJEXT)
2356 test_environ_OBJECTS = $(am_test_environ_OBJECTS)
2357 test_environ_DEPENDENCIES = environ.o $(am__DEPENDENCIES_1)
2358-test_environ_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
2359- $(LIBTOOLFLAGS) --mode=link $(CCLD) $(test_environ_CFLAGS) \
2360- $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
2361-am_test_event_OBJECTS = test_event-test_event.$(OBJEXT)
2362+am_test_event_OBJECTS = test_event.$(OBJEXT)
2363 test_event_OBJECTS = $(am_test_event_OBJECTS)
2364 test_event_DEPENDENCIES = system.o environ.o process.o job_class.o \
2365 job_process.o job.o event.o event_operator.o blocked.o \
2366@@ -146,11 +134,7 @@
2367 com.ubuntu.Upstart.o com.ubuntu.Upstart.Job.o \
2368 com.ubuntu.Upstart.Instance.o $(am__DEPENDENCIES_1) \
2369 $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1)
2370-test_event_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
2371- $(LIBTOOLFLAGS) --mode=link $(CCLD) $(test_event_CFLAGS) \
2372- $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
2373-am_test_event_operator_OBJECTS = \
2374- test_event_operator-test_event_operator.$(OBJEXT)
2375+am_test_event_operator_OBJECTS = test_event_operator.$(OBJEXT)
2376 test_event_operator_OBJECTS = $(am_test_event_operator_OBJECTS)
2377 test_event_operator_DEPENDENCIES = system.o environ.o process.o \
2378 job_class.o job_process.o job.o event.o event_operator.o \
2379@@ -158,11 +142,7 @@
2380 com.ubuntu.Upstart.o com.ubuntu.Upstart.Job.o \
2381 com.ubuntu.Upstart.Instance.o $(am__DEPENDENCIES_1) \
2382 $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1)
2383-test_event_operator_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \
2384- $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CCLD) \
2385- $(test_event_operator_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \
2386- $(LDFLAGS) -o $@
2387-am_test_job_OBJECTS = test_job-test_job.$(OBJEXT)
2388+am_test_job_OBJECTS = test_job.$(OBJEXT)
2389 test_job_OBJECTS = $(am_test_job_OBJECTS)
2390 test_job_DEPENDENCIES = system.o environ.o process.o job_class.o \
2391 job_process.o job.o event.o event_operator.o blocked.o \
2392@@ -170,10 +150,7 @@
2393 com.ubuntu.Upstart.o com.ubuntu.Upstart.Job.o \
2394 com.ubuntu.Upstart.Instance.o $(am__DEPENDENCIES_1) \
2395 $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1)
2396-test_job_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
2397- $(LIBTOOLFLAGS) --mode=link $(CCLD) $(test_job_CFLAGS) \
2398- $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
2399-am_test_job_class_OBJECTS = test_job_class-test_job_class.$(OBJEXT)
2400+am_test_job_class_OBJECTS = test_job_class.$(OBJEXT)
2401 test_job_class_OBJECTS = $(am_test_job_class_OBJECTS)
2402 test_job_class_DEPENDENCIES = system.o environ.o process.o job_class.o \
2403 job_process.o job.o event.o event_operator.o blocked.o \
2404@@ -181,12 +158,7 @@
2405 com.ubuntu.Upstart.o com.ubuntu.Upstart.Job.o \
2406 com.ubuntu.Upstart.Instance.o $(am__DEPENDENCIES_1) \
2407 $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1)
2408-test_job_class_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \
2409- $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CCLD) \
2410- $(test_job_class_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o \
2411- $@
2412-am_test_job_process_OBJECTS = \
2413- test_job_process-test_job_process.$(OBJEXT)
2414+am_test_job_process_OBJECTS = test_job_process.$(OBJEXT)
2415 test_job_process_OBJECTS = $(am_test_job_process_OBJECTS)
2416 test_job_process_DEPENDENCIES = system.o environ.o process.o \
2417 job_class.o job_process.o job.o event.o event_operator.o \
2418@@ -194,12 +166,7 @@
2419 com.ubuntu.Upstart.o com.ubuntu.Upstart.Job.o \
2420 com.ubuntu.Upstart.Instance.o $(am__DEPENDENCIES_1) \
2421 $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1)
2422-test_job_process_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \
2423- $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CCLD) \
2424- $(test_job_process_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) \
2425- -o $@
2426-am_test_parse_conf_OBJECTS = \
2427- test_parse_conf-test_parse_conf.$(OBJEXT)
2428+am_test_parse_conf_OBJECTS = test_parse_conf.$(OBJEXT)
2429 test_parse_conf_OBJECTS = $(am_test_parse_conf_OBJECTS)
2430 test_parse_conf_DEPENDENCIES = system.o environ.o process.o \
2431 job_class.o job_process.o job.o event.o event_operator.o \
2432@@ -207,11 +174,7 @@
2433 com.ubuntu.Upstart.o com.ubuntu.Upstart.Job.o \
2434 com.ubuntu.Upstart.Instance.o $(am__DEPENDENCIES_1) \
2435 $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1)
2436-test_parse_conf_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \
2437- $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CCLD) \
2438- $(test_parse_conf_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) \
2439- -o $@
2440-am_test_parse_job_OBJECTS = test_parse_job-test_parse_job.$(OBJEXT)
2441+am_test_parse_job_OBJECTS = test_parse_job.$(OBJEXT)
2442 test_parse_job_OBJECTS = $(am_test_parse_job_OBJECTS)
2443 test_parse_job_DEPENDENCIES = system.o environ.o process.o job_class.o \
2444 job_process.o job.o event.o event_operator.o blocked.o \
2445@@ -219,11 +182,7 @@
2446 com.ubuntu.Upstart.o com.ubuntu.Upstart.Job.o \
2447 com.ubuntu.Upstart.Instance.o $(am__DEPENDENCIES_1) \
2448 $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1)
2449-test_parse_job_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \
2450- $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CCLD) \
2451- $(test_parse_job_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o \
2452- $@
2453-am_test_process_OBJECTS = test_process-test_process.$(OBJEXT)
2454+am_test_process_OBJECTS = test_process.$(OBJEXT)
2455 test_process_OBJECTS = $(am_test_process_OBJECTS)
2456 test_process_DEPENDENCIES = system.o environ.o process.o job_class.o \
2457 job_process.o job.o event.o event_operator.o blocked.o \
2458@@ -231,15 +190,9 @@
2459 com.ubuntu.Upstart.o com.ubuntu.Upstart.Job.o \
2460 com.ubuntu.Upstart.Instance.o $(am__DEPENDENCIES_1) \
2461 $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1)
2462-test_process_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
2463- $(LIBTOOLFLAGS) --mode=link $(CCLD) $(test_process_CFLAGS) \
2464- $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
2465-am_test_system_OBJECTS = test_system-test_system.$(OBJEXT)
2466+am_test_system_OBJECTS = test_system.$(OBJEXT)
2467 test_system_OBJECTS = $(am_test_system_OBJECTS)
2468 test_system_DEPENDENCIES = system.o $(am__DEPENDENCIES_1)
2469-test_system_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
2470- $(LIBTOOLFLAGS) --mode=link $(CCLD) $(test_system_CFLAGS) \
2471- $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
2472 DEFAULT_INCLUDES =
2473 depcomp = $(SHELL) $(top_srcdir)/depcomp
2474 am__depfiles_maybe = depfiles
2475@@ -594,19 +547,16 @@
2476
2477 EXTRA_DIST = init.supp
2478 test_system_SOURCES = tests/test_system.c
2479-test_system_CFLAGS = $(AM_CFLAGS) -DTEST
2480 test_system_LDADD = \
2481 system.o \
2482 $(NIH_LIBS)
2483
2484 test_environ_SOURCES = tests/test_environ.c
2485-test_environ_CFLAGS = $(AM_CFLAGS) -DTEST
2486 test_environ_LDADD = \
2487 environ.o \
2488 $(NIH_LIBS)
2489
2490 test_process_SOURCES = tests/test_process.c
2491-test_process_CFLAGS = $(AM_CFLAGS) -DTEST
2492 test_process_LDADD = \
2493 system.o environ.o process.o \
2494 job_class.o job_process.o job.o event.o event_operator.o blocked.o \
2495@@ -619,7 +569,6 @@
2496 $(DBUS_LIBS)
2497
2498 test_job_class_SOURCES = tests/test_job_class.c
2499-test_job_class_CFLAGS = $(AM_CFLAGS) -DTEST
2500 test_job_class_LDADD = \
2501 system.o environ.o process.o \
2502 job_class.o job_process.o job.o event.o event_operator.o blocked.o \
2503@@ -632,7 +581,6 @@
2504 $(DBUS_LIBS)
2505
2506 test_job_process_SOURCES = tests/test_job_process.c
2507-test_job_process_CFLAGS = $(AM_CFLAGS) -DTEST
2508 test_job_process_LDADD = \
2509 system.o environ.o process.o \
2510 job_class.o job_process.o job.o event.o event_operator.o blocked.o \
2511@@ -645,7 +593,6 @@
2512 $(DBUS_LIBS)
2513
2514 test_job_SOURCES = tests/test_job.c
2515-test_job_CFLAGS = $(AM_CFLAGS) -DTEST
2516 test_job_LDADD = \
2517 system.o environ.o process.o \
2518 job_class.o job_process.o job.o event.o event_operator.o blocked.o \
2519@@ -658,7 +605,6 @@
2520 $(DBUS_LIBS)
2521
2522 test_event_SOURCES = tests/test_event.c
2523-test_event_CFLAGS = $(AM_CFLAGS) -DTEST
2524 test_event_LDADD = \
2525 system.o environ.o process.o \
2526 job_class.o job_process.o job.o event.o event_operator.o blocked.o \
2527@@ -671,7 +617,6 @@
2528 $(DBUS_LIBS)
2529
2530 test_event_operator_SOURCES = tests/test_event_operator.c
2531-test_event_operator_CFLAGS = $(AM_CFLAGS) -DTEST
2532 test_event_operator_LDADD = \
2533 system.o environ.o process.o \
2534 job_class.o job_process.o job.o event.o event_operator.o blocked.o \
2535@@ -684,7 +629,6 @@
2536 $(DBUS_LIBS)
2537
2538 test_blocked_SOURCES = tests/test_blocked.c
2539-test_blocked_CFLAGS = $(AM_CFLAGS) -DTEST
2540 test_blocked_LDADD = \
2541 system.o environ.o process.o \
2542 job_class.o job_process.o job.o event.o event_operator.o blocked.o \
2543@@ -697,7 +641,6 @@
2544 $(DBUS_LIBS)
2545
2546 test_parse_job_SOURCES = tests/test_parse_job.c
2547-test_parse_job_CFLAGS = $(AM_CFLAGS) -DTEST
2548 test_parse_job_LDADD = \
2549 system.o environ.o process.o \
2550 job_class.o job_process.o job.o event.o event_operator.o blocked.o \
2551@@ -710,7 +653,6 @@
2552 $(DBUS_LIBS)
2553
2554 test_parse_conf_SOURCES = tests/test_parse_conf.c
2555-test_parse_conf_CFLAGS = $(AM_CFLAGS) -DTEST
2556 test_parse_conf_LDADD = \
2557 system.o environ.o process.o \
2558 job_class.o job_process.o job.o event.o event_operator.o blocked.o \
2559@@ -723,7 +665,6 @@
2560 $(DBUS_LIBS)
2561
2562 test_conf_SOURCES = tests/test_conf.c
2563-test_conf_CFLAGS = $(AM_CFLAGS) -DTEST
2564 test_conf_LDADD = \
2565 system.o environ.o process.o \
2566 job_class.o job_process.o job.o event.o event_operator.o blocked.o \
2567@@ -736,7 +677,6 @@
2568 $(DBUS_LIBS)
2569
2570 test_control_SOURCES = tests/test_control.c
2571-test_control_CFLAGS = $(AM_CFLAGS) -DTEST
2572 test_control_LDADD = \
2573 system.o environ.o process.o \
2574 job_class.o job_process.o job.o event.o event_operator.o blocked.o \
2575@@ -840,43 +780,43 @@
2576 $(AM_V_CCLD)$(LINK) $(init_OBJECTS) $(init_LDADD) $(LIBS)
2577 test_blocked$(EXEEXT): $(test_blocked_OBJECTS) $(test_blocked_DEPENDENCIES)
2578 @rm -f test_blocked$(EXEEXT)
2579- $(AM_V_CCLD)$(test_blocked_LINK) $(test_blocked_OBJECTS) $(test_blocked_LDADD) $(LIBS)
2580+ $(AM_V_CCLD)$(LINK) $(test_blocked_OBJECTS) $(test_blocked_LDADD) $(LIBS)
2581 test_conf$(EXEEXT): $(test_conf_OBJECTS) $(test_conf_DEPENDENCIES)
2582 @rm -f test_conf$(EXEEXT)
2583- $(AM_V_CCLD)$(test_conf_LINK) $(test_conf_OBJECTS) $(test_conf_LDADD) $(LIBS)
2584+ $(AM_V_CCLD)$(LINK) $(test_conf_OBJECTS) $(test_conf_LDADD) $(LIBS)
2585 test_control$(EXEEXT): $(test_control_OBJECTS) $(test_control_DEPENDENCIES)
2586 @rm -f test_control$(EXEEXT)
2587- $(AM_V_CCLD)$(test_control_LINK) $(test_control_OBJECTS) $(test_control_LDADD) $(LIBS)
2588+ $(AM_V_CCLD)$(LINK) $(test_control_OBJECTS) $(test_control_LDADD) $(LIBS)
2589 test_environ$(EXEEXT): $(test_environ_OBJECTS) $(test_environ_DEPENDENCIES)
2590 @rm -f test_environ$(EXEEXT)
2591- $(AM_V_CCLD)$(test_environ_LINK) $(test_environ_OBJECTS) $(test_environ_LDADD) $(LIBS)
2592+ $(AM_V_CCLD)$(LINK) $(test_environ_OBJECTS) $(test_environ_LDADD) $(LIBS)
2593 test_event$(EXEEXT): $(test_event_OBJECTS) $(test_event_DEPENDENCIES)
2594 @rm -f test_event$(EXEEXT)
2595- $(AM_V_CCLD)$(test_event_LINK) $(test_event_OBJECTS) $(test_event_LDADD) $(LIBS)
2596+ $(AM_V_CCLD)$(LINK) $(test_event_OBJECTS) $(test_event_LDADD) $(LIBS)
2597 test_event_operator$(EXEEXT): $(test_event_operator_OBJECTS) $(test_event_operator_DEPENDENCIES)
2598 @rm -f test_event_operator$(EXEEXT)
2599- $(AM_V_CCLD)$(test_event_operator_LINK) $(test_event_operator_OBJECTS) $(test_event_operator_LDADD) $(LIBS)
2600+ $(AM_V_CCLD)$(LINK) $(test_event_operator_OBJECTS) $(test_event_operator_LDADD) $(LIBS)
2601 test_job$(EXEEXT): $(test_job_OBJECTS) $(test_job_DEPENDENCIES)
2602 @rm -f test_job$(EXEEXT)
2603- $(AM_V_CCLD)$(test_job_LINK) $(test_job_OBJECTS) $(test_job_LDADD) $(LIBS)
2604+ $(AM_V_CCLD)$(LINK) $(test_job_OBJECTS) $(test_job_LDADD) $(LIBS)
2605 test_job_class$(EXEEXT): $(test_job_class_OBJECTS) $(test_job_class_DEPENDENCIES)
2606 @rm -f test_job_class$(EXEEXT)
2607- $(AM_V_CCLD)$(test_job_class_LINK) $(test_job_class_OBJECTS) $(test_job_class_LDADD) $(LIBS)
2608+ $(AM_V_CCLD)$(LINK) $(test_job_class_OBJECTS) $(test_job_class_LDADD) $(LIBS)
2609 test_job_process$(EXEEXT): $(test_job_process_OBJECTS) $(test_job_process_DEPENDENCIES)
2610 @rm -f test_job_process$(EXEEXT)
2611- $(AM_V_CCLD)$(test_job_process_LINK) $(test_job_process_OBJECTS) $(test_job_process_LDADD) $(LIBS)
2612+ $(AM_V_CCLD)$(LINK) $(test_job_process_OBJECTS) $(test_job_process_LDADD) $(LIBS)
2613 test_parse_conf$(EXEEXT): $(test_parse_conf_OBJECTS) $(test_parse_conf_DEPENDENCIES)
2614 @rm -f test_parse_conf$(EXEEXT)
2615- $(AM_V_CCLD)$(test_parse_conf_LINK) $(test_parse_conf_OBJECTS) $(test_parse_conf_LDADD) $(LIBS)
2616+ $(AM_V_CCLD)$(LINK) $(test_parse_conf_OBJECTS) $(test_parse_conf_LDADD) $(LIBS)
2617 test_parse_job$(EXEEXT): $(test_parse_job_OBJECTS) $(test_parse_job_DEPENDENCIES)
2618 @rm -f test_parse_job$(EXEEXT)
2619- $(AM_V_CCLD)$(test_parse_job_LINK) $(test_parse_job_OBJECTS) $(test_parse_job_LDADD) $(LIBS)
2620+ $(AM_V_CCLD)$(LINK) $(test_parse_job_OBJECTS) $(test_parse_job_LDADD) $(LIBS)
2621 test_process$(EXEEXT): $(test_process_OBJECTS) $(test_process_DEPENDENCIES)
2622 @rm -f test_process$(EXEEXT)
2623- $(AM_V_CCLD)$(test_process_LINK) $(test_process_OBJECTS) $(test_process_LDADD) $(LIBS)
2624+ $(AM_V_CCLD)$(LINK) $(test_process_OBJECTS) $(test_process_LDADD) $(LIBS)
2625 test_system$(EXEEXT): $(test_system_OBJECTS) $(test_system_DEPENDENCIES)
2626 @rm -f test_system$(EXEEXT)
2627- $(AM_V_CCLD)$(test_system_LINK) $(test_system_OBJECTS) $(test_system_LDADD) $(LIBS)
2628+ $(AM_V_CCLD)$(LINK) $(test_system_OBJECTS) $(test_system_LDADD) $(LIBS)
2629
2630 mostlyclean-compile:
2631 -rm -f *.$(OBJEXT)
2632@@ -902,19 +842,19 @@
2633 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/process.Po@am__quote@
2634 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/session.Po@am__quote@
2635 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/system.Po@am__quote@
2636-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test_blocked-test_blocked.Po@am__quote@
2637-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test_conf-test_conf.Po@am__quote@
2638-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test_control-test_control.Po@am__quote@
2639-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test_environ-test_environ.Po@am__quote@
2640-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test_event-test_event.Po@am__quote@
2641-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test_event_operator-test_event_operator.Po@am__quote@
2642-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test_job-test_job.Po@am__quote@
2643-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test_job_class-test_job_class.Po@am__quote@
2644-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test_job_process-test_job_process.Po@am__quote@
2645-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test_parse_conf-test_parse_conf.Po@am__quote@
2646-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test_parse_job-test_parse_job.Po@am__quote@
2647-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test_process-test_process.Po@am__quote@
2648-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test_system-test_system.Po@am__quote@
2649+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test_blocked.Po@am__quote@
2650+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test_conf.Po@am__quote@
2651+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test_control.Po@am__quote@
2652+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test_environ.Po@am__quote@
2653+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test_event.Po@am__quote@
2654+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test_event_operator.Po@am__quote@
2655+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test_job.Po@am__quote@
2656+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test_job_class.Po@am__quote@
2657+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test_job_process.Po@am__quote@
2658+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test_parse_conf.Po@am__quote@
2659+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test_parse_job.Po@am__quote@
2660+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test_process.Po@am__quote@
2661+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test_system.Po@am__quote@
2662
2663 .c.o:
2664 @am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
2665@@ -940,213 +880,213 @@
2666 @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
2667 @am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ $<
2668
2669-test_blocked-test_blocked.o: tests/test_blocked.c
2670-@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(test_blocked_CFLAGS) $(CFLAGS) -MT test_blocked-test_blocked.o -MD -MP -MF $(DEPDIR)/test_blocked-test_blocked.Tpo -c -o test_blocked-test_blocked.o `test -f 'tests/test_blocked.c' || echo '$(srcdir)/'`tests/test_blocked.c
2671-@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/test_blocked-test_blocked.Tpo $(DEPDIR)/test_blocked-test_blocked.Po
2672-@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@
2673-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='tests/test_blocked.c' object='test_blocked-test_blocked.o' libtool=no @AMDEPBACKSLASH@
2674-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
2675-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(test_blocked_CFLAGS) $(CFLAGS) -c -o test_blocked-test_blocked.o `test -f 'tests/test_blocked.c' || echo '$(srcdir)/'`tests/test_blocked.c
2676-
2677-test_blocked-test_blocked.obj: tests/test_blocked.c
2678-@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(test_blocked_CFLAGS) $(CFLAGS) -MT test_blocked-test_blocked.obj -MD -MP -MF $(DEPDIR)/test_blocked-test_blocked.Tpo -c -o test_blocked-test_blocked.obj `if test -f 'tests/test_blocked.c'; then $(CYGPATH_W) 'tests/test_blocked.c'; else $(CYGPATH_W) '$(srcdir)/tests/test_blocked.c'; fi`
2679-@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/test_blocked-test_blocked.Tpo $(DEPDIR)/test_blocked-test_blocked.Po
2680-@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@
2681-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='tests/test_blocked.c' object='test_blocked-test_blocked.obj' libtool=no @AMDEPBACKSLASH@
2682-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
2683-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(test_blocked_CFLAGS) $(CFLAGS) -c -o test_blocked-test_blocked.obj `if test -f 'tests/test_blocked.c'; then $(CYGPATH_W) 'tests/test_blocked.c'; else $(CYGPATH_W) '$(srcdir)/tests/test_blocked.c'; fi`
2684-
2685-test_conf-test_conf.o: tests/test_conf.c
2686-@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(test_conf_CFLAGS) $(CFLAGS) -MT test_conf-test_conf.o -MD -MP -MF $(DEPDIR)/test_conf-test_conf.Tpo -c -o test_conf-test_conf.o `test -f 'tests/test_conf.c' || echo '$(srcdir)/'`tests/test_conf.c
2687-@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/test_conf-test_conf.Tpo $(DEPDIR)/test_conf-test_conf.Po
2688-@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@
2689-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='tests/test_conf.c' object='test_conf-test_conf.o' libtool=no @AMDEPBACKSLASH@
2690-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
2691-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(test_conf_CFLAGS) $(CFLAGS) -c -o test_conf-test_conf.o `test -f 'tests/test_conf.c' || echo '$(srcdir)/'`tests/test_conf.c
2692-
2693-test_conf-test_conf.obj: tests/test_conf.c
2694-@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(test_conf_CFLAGS) $(CFLAGS) -MT test_conf-test_conf.obj -MD -MP -MF $(DEPDIR)/test_conf-test_conf.Tpo -c -o test_conf-test_conf.obj `if test -f 'tests/test_conf.c'; then $(CYGPATH_W) 'tests/test_conf.c'; else $(CYGPATH_W) '$(srcdir)/tests/test_conf.c'; fi`
2695-@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/test_conf-test_conf.Tpo $(DEPDIR)/test_conf-test_conf.Po
2696-@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@
2697-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='tests/test_conf.c' object='test_conf-test_conf.obj' libtool=no @AMDEPBACKSLASH@
2698-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
2699-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(test_conf_CFLAGS) $(CFLAGS) -c -o test_conf-test_conf.obj `if test -f 'tests/test_conf.c'; then $(CYGPATH_W) 'tests/test_conf.c'; else $(CYGPATH_W) '$(srcdir)/tests/test_conf.c'; fi`
2700-
2701-test_control-test_control.o: tests/test_control.c
2702-@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(test_control_CFLAGS) $(CFLAGS) -MT test_control-test_control.o -MD -MP -MF $(DEPDIR)/test_control-test_control.Tpo -c -o test_control-test_control.o `test -f 'tests/test_control.c' || echo '$(srcdir)/'`tests/test_control.c
2703-@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/test_control-test_control.Tpo $(DEPDIR)/test_control-test_control.Po
2704-@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@
2705-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='tests/test_control.c' object='test_control-test_control.o' libtool=no @AMDEPBACKSLASH@
2706-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
2707-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(test_control_CFLAGS) $(CFLAGS) -c -o test_control-test_control.o `test -f 'tests/test_control.c' || echo '$(srcdir)/'`tests/test_control.c
2708-
2709-test_control-test_control.obj: tests/test_control.c
2710-@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(test_control_CFLAGS) $(CFLAGS) -MT test_control-test_control.obj -MD -MP -MF $(DEPDIR)/test_control-test_control.Tpo -c -o test_control-test_control.obj `if test -f 'tests/test_control.c'; then $(CYGPATH_W) 'tests/test_control.c'; else $(CYGPATH_W) '$(srcdir)/tests/test_control.c'; fi`
2711-@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/test_control-test_control.Tpo $(DEPDIR)/test_control-test_control.Po
2712-@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@
2713-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='tests/test_control.c' object='test_control-test_control.obj' libtool=no @AMDEPBACKSLASH@
2714-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
2715-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(test_control_CFLAGS) $(CFLAGS) -c -o test_control-test_control.obj `if test -f 'tests/test_control.c'; then $(CYGPATH_W) 'tests/test_control.c'; else $(CYGPATH_W) '$(srcdir)/tests/test_control.c'; fi`
2716-
2717-test_environ-test_environ.o: tests/test_environ.c
2718-@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(test_environ_CFLAGS) $(CFLAGS) -MT test_environ-test_environ.o -MD -MP -MF $(DEPDIR)/test_environ-test_environ.Tpo -c -o test_environ-test_environ.o `test -f 'tests/test_environ.c' || echo '$(srcdir)/'`tests/test_environ.c
2719-@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/test_environ-test_environ.Tpo $(DEPDIR)/test_environ-test_environ.Po
2720-@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@
2721-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='tests/test_environ.c' object='test_environ-test_environ.o' libtool=no @AMDEPBACKSLASH@
2722-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
2723-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(test_environ_CFLAGS) $(CFLAGS) -c -o test_environ-test_environ.o `test -f 'tests/test_environ.c' || echo '$(srcdir)/'`tests/test_environ.c
2724-
2725-test_environ-test_environ.obj: tests/test_environ.c
2726-@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(test_environ_CFLAGS) $(CFLAGS) -MT test_environ-test_environ.obj -MD -MP -MF $(DEPDIR)/test_environ-test_environ.Tpo -c -o test_environ-test_environ.obj `if test -f 'tests/test_environ.c'; then $(CYGPATH_W) 'tests/test_environ.c'; else $(CYGPATH_W) '$(srcdir)/tests/test_environ.c'; fi`
2727-@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/test_environ-test_environ.Tpo $(DEPDIR)/test_environ-test_environ.Po
2728-@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@
2729-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='tests/test_environ.c' object='test_environ-test_environ.obj' libtool=no @AMDEPBACKSLASH@
2730-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
2731-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(test_environ_CFLAGS) $(CFLAGS) -c -o test_environ-test_environ.obj `if test -f 'tests/test_environ.c'; then $(CYGPATH_W) 'tests/test_environ.c'; else $(CYGPATH_W) '$(srcdir)/tests/test_environ.c'; fi`
2732-
2733-test_event-test_event.o: tests/test_event.c
2734-@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(test_event_CFLAGS) $(CFLAGS) -MT test_event-test_event.o -MD -MP -MF $(DEPDIR)/test_event-test_event.Tpo -c -o test_event-test_event.o `test -f 'tests/test_event.c' || echo '$(srcdir)/'`tests/test_event.c
2735-@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/test_event-test_event.Tpo $(DEPDIR)/test_event-test_event.Po
2736-@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@
2737-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='tests/test_event.c' object='test_event-test_event.o' libtool=no @AMDEPBACKSLASH@
2738-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
2739-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(test_event_CFLAGS) $(CFLAGS) -c -o test_event-test_event.o `test -f 'tests/test_event.c' || echo '$(srcdir)/'`tests/test_event.c
2740-
2741-test_event-test_event.obj: tests/test_event.c
2742-@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(test_event_CFLAGS) $(CFLAGS) -MT test_event-test_event.obj -MD -MP -MF $(DEPDIR)/test_event-test_event.Tpo -c -o test_event-test_event.obj `if test -f 'tests/test_event.c'; then $(CYGPATH_W) 'tests/test_event.c'; else $(CYGPATH_W) '$(srcdir)/tests/test_event.c'; fi`
2743-@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/test_event-test_event.Tpo $(DEPDIR)/test_event-test_event.Po
2744-@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@
2745-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='tests/test_event.c' object='test_event-test_event.obj' libtool=no @AMDEPBACKSLASH@
2746-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
2747-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(test_event_CFLAGS) $(CFLAGS) -c -o test_event-test_event.obj `if test -f 'tests/test_event.c'; then $(CYGPATH_W) 'tests/test_event.c'; else $(CYGPATH_W) '$(srcdir)/tests/test_event.c'; fi`
2748-
2749-test_event_operator-test_event_operator.o: tests/test_event_operator.c
2750-@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(test_event_operator_CFLAGS) $(CFLAGS) -MT test_event_operator-test_event_operator.o -MD -MP -MF $(DEPDIR)/test_event_operator-test_event_operator.Tpo -c -o test_event_operator-test_event_operator.o `test -f 'tests/test_event_operator.c' || echo '$(srcdir)/'`tests/test_event_operator.c
2751-@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/test_event_operator-test_event_operator.Tpo $(DEPDIR)/test_event_operator-test_event_operator.Po
2752-@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@
2753-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='tests/test_event_operator.c' object='test_event_operator-test_event_operator.o' libtool=no @AMDEPBACKSLASH@
2754-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
2755-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(test_event_operator_CFLAGS) $(CFLAGS) -c -o test_event_operator-test_event_operator.o `test -f 'tests/test_event_operator.c' || echo '$(srcdir)/'`tests/test_event_operator.c
2756-
2757-test_event_operator-test_event_operator.obj: tests/test_event_operator.c
2758-@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(test_event_operator_CFLAGS) $(CFLAGS) -MT test_event_operator-test_event_operator.obj -MD -MP -MF $(DEPDIR)/test_event_operator-test_event_operator.Tpo -c -o test_event_operator-test_event_operator.obj `if test -f 'tests/test_event_operator.c'; then $(CYGPATH_W) 'tests/test_event_operator.c'; else $(CYGPATH_W) '$(srcdir)/tests/test_event_operator.c'; fi`
2759-@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/test_event_operator-test_event_operator.Tpo $(DEPDIR)/test_event_operator-test_event_operator.Po
2760-@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@
2761-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='tests/test_event_operator.c' object='test_event_operator-test_event_operator.obj' libtool=no @AMDEPBACKSLASH@
2762-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
2763-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(test_event_operator_CFLAGS) $(CFLAGS) -c -o test_event_operator-test_event_operator.obj `if test -f 'tests/test_event_operator.c'; then $(CYGPATH_W) 'tests/test_event_operator.c'; else $(CYGPATH_W) '$(srcdir)/tests/test_event_operator.c'; fi`
2764-
2765-test_job-test_job.o: tests/test_job.c
2766-@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(test_job_CFLAGS) $(CFLAGS) -MT test_job-test_job.o -MD -MP -MF $(DEPDIR)/test_job-test_job.Tpo -c -o test_job-test_job.o `test -f 'tests/test_job.c' || echo '$(srcdir)/'`tests/test_job.c
2767-@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/test_job-test_job.Tpo $(DEPDIR)/test_job-test_job.Po
2768-@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@
2769-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='tests/test_job.c' object='test_job-test_job.o' libtool=no @AMDEPBACKSLASH@
2770-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
2771-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(test_job_CFLAGS) $(CFLAGS) -c -o test_job-test_job.o `test -f 'tests/test_job.c' || echo '$(srcdir)/'`tests/test_job.c
2772-
2773-test_job-test_job.obj: tests/test_job.c
2774-@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(test_job_CFLAGS) $(CFLAGS) -MT test_job-test_job.obj -MD -MP -MF $(DEPDIR)/test_job-test_job.Tpo -c -o test_job-test_job.obj `if test -f 'tests/test_job.c'; then $(CYGPATH_W) 'tests/test_job.c'; else $(CYGPATH_W) '$(srcdir)/tests/test_job.c'; fi`
2775-@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/test_job-test_job.Tpo $(DEPDIR)/test_job-test_job.Po
2776-@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@
2777-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='tests/test_job.c' object='test_job-test_job.obj' libtool=no @AMDEPBACKSLASH@
2778-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
2779-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(test_job_CFLAGS) $(CFLAGS) -c -o test_job-test_job.obj `if test -f 'tests/test_job.c'; then $(CYGPATH_W) 'tests/test_job.c'; else $(CYGPATH_W) '$(srcdir)/tests/test_job.c'; fi`
2780-
2781-test_job_class-test_job_class.o: tests/test_job_class.c
2782-@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(test_job_class_CFLAGS) $(CFLAGS) -MT test_job_class-test_job_class.o -MD -MP -MF $(DEPDIR)/test_job_class-test_job_class.Tpo -c -o test_job_class-test_job_class.o `test -f 'tests/test_job_class.c' || echo '$(srcdir)/'`tests/test_job_class.c
2783-@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/test_job_class-test_job_class.Tpo $(DEPDIR)/test_job_class-test_job_class.Po
2784-@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@
2785-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='tests/test_job_class.c' object='test_job_class-test_job_class.o' libtool=no @AMDEPBACKSLASH@
2786-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
2787-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(test_job_class_CFLAGS) $(CFLAGS) -c -o test_job_class-test_job_class.o `test -f 'tests/test_job_class.c' || echo '$(srcdir)/'`tests/test_job_class.c
2788-
2789-test_job_class-test_job_class.obj: tests/test_job_class.c
2790-@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(test_job_class_CFLAGS) $(CFLAGS) -MT test_job_class-test_job_class.obj -MD -MP -MF $(DEPDIR)/test_job_class-test_job_class.Tpo -c -o test_job_class-test_job_class.obj `if test -f 'tests/test_job_class.c'; then $(CYGPATH_W) 'tests/test_job_class.c'; else $(CYGPATH_W) '$(srcdir)/tests/test_job_class.c'; fi`
2791-@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/test_job_class-test_job_class.Tpo $(DEPDIR)/test_job_class-test_job_class.Po
2792-@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@
2793-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='tests/test_job_class.c' object='test_job_class-test_job_class.obj' libtool=no @AMDEPBACKSLASH@
2794-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
2795-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(test_job_class_CFLAGS) $(CFLAGS) -c -o test_job_class-test_job_class.obj `if test -f 'tests/test_job_class.c'; then $(CYGPATH_W) 'tests/test_job_class.c'; else $(CYGPATH_W) '$(srcdir)/tests/test_job_class.c'; fi`
2796-
2797-test_job_process-test_job_process.o: tests/test_job_process.c
2798-@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(test_job_process_CFLAGS) $(CFLAGS) -MT test_job_process-test_job_process.o -MD -MP -MF $(DEPDIR)/test_job_process-test_job_process.Tpo -c -o test_job_process-test_job_process.o `test -f 'tests/test_job_process.c' || echo '$(srcdir)/'`tests/test_job_process.c
2799-@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/test_job_process-test_job_process.Tpo $(DEPDIR)/test_job_process-test_job_process.Po
2800-@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@
2801-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='tests/test_job_process.c' object='test_job_process-test_job_process.o' libtool=no @AMDEPBACKSLASH@
2802-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
2803-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(test_job_process_CFLAGS) $(CFLAGS) -c -o test_job_process-test_job_process.o `test -f 'tests/test_job_process.c' || echo '$(srcdir)/'`tests/test_job_process.c
2804-
2805-test_job_process-test_job_process.obj: tests/test_job_process.c
2806-@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(test_job_process_CFLAGS) $(CFLAGS) -MT test_job_process-test_job_process.obj -MD -MP -MF $(DEPDIR)/test_job_process-test_job_process.Tpo -c -o test_job_process-test_job_process.obj `if test -f 'tests/test_job_process.c'; then $(CYGPATH_W) 'tests/test_job_process.c'; else $(CYGPATH_W) '$(srcdir)/tests/test_job_process.c'; fi`
2807-@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/test_job_process-test_job_process.Tpo $(DEPDIR)/test_job_process-test_job_process.Po
2808-@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@
2809-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='tests/test_job_process.c' object='test_job_process-test_job_process.obj' libtool=no @AMDEPBACKSLASH@
2810-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
2811-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(test_job_process_CFLAGS) $(CFLAGS) -c -o test_job_process-test_job_process.obj `if test -f 'tests/test_job_process.c'; then $(CYGPATH_W) 'tests/test_job_process.c'; else $(CYGPATH_W) '$(srcdir)/tests/test_job_process.c'; fi`
2812-
2813-test_parse_conf-test_parse_conf.o: tests/test_parse_conf.c
2814-@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(test_parse_conf_CFLAGS) $(CFLAGS) -MT test_parse_conf-test_parse_conf.o -MD -MP -MF $(DEPDIR)/test_parse_conf-test_parse_conf.Tpo -c -o test_parse_conf-test_parse_conf.o `test -f 'tests/test_parse_conf.c' || echo '$(srcdir)/'`tests/test_parse_conf.c
2815-@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/test_parse_conf-test_parse_conf.Tpo $(DEPDIR)/test_parse_conf-test_parse_conf.Po
2816-@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@
2817-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='tests/test_parse_conf.c' object='test_parse_conf-test_parse_conf.o' libtool=no @AMDEPBACKSLASH@
2818-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
2819-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(test_parse_conf_CFLAGS) $(CFLAGS) -c -o test_parse_conf-test_parse_conf.o `test -f 'tests/test_parse_conf.c' || echo '$(srcdir)/'`tests/test_parse_conf.c
2820-
2821-test_parse_conf-test_parse_conf.obj: tests/test_parse_conf.c
2822-@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(test_parse_conf_CFLAGS) $(CFLAGS) -MT test_parse_conf-test_parse_conf.obj -MD -MP -MF $(DEPDIR)/test_parse_conf-test_parse_conf.Tpo -c -o test_parse_conf-test_parse_conf.obj `if test -f 'tests/test_parse_conf.c'; then $(CYGPATH_W) 'tests/test_parse_conf.c'; else $(CYGPATH_W) '$(srcdir)/tests/test_parse_conf.c'; fi`
2823-@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/test_parse_conf-test_parse_conf.Tpo $(DEPDIR)/test_parse_conf-test_parse_conf.Po
2824-@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@
2825-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='tests/test_parse_conf.c' object='test_parse_conf-test_parse_conf.obj' libtool=no @AMDEPBACKSLASH@
2826-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
2827-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(test_parse_conf_CFLAGS) $(CFLAGS) -c -o test_parse_conf-test_parse_conf.obj `if test -f 'tests/test_parse_conf.c'; then $(CYGPATH_W) 'tests/test_parse_conf.c'; else $(CYGPATH_W) '$(srcdir)/tests/test_parse_conf.c'; fi`
2828-
2829-test_parse_job-test_parse_job.o: tests/test_parse_job.c
2830-@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(test_parse_job_CFLAGS) $(CFLAGS) -MT test_parse_job-test_parse_job.o -MD -MP -MF $(DEPDIR)/test_parse_job-test_parse_job.Tpo -c -o test_parse_job-test_parse_job.o `test -f 'tests/test_parse_job.c' || echo '$(srcdir)/'`tests/test_parse_job.c
2831-@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/test_parse_job-test_parse_job.Tpo $(DEPDIR)/test_parse_job-test_parse_job.Po
2832-@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@
2833-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='tests/test_parse_job.c' object='test_parse_job-test_parse_job.o' libtool=no @AMDEPBACKSLASH@
2834-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
2835-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(test_parse_job_CFLAGS) $(CFLAGS) -c -o test_parse_job-test_parse_job.o `test -f 'tests/test_parse_job.c' || echo '$(srcdir)/'`tests/test_parse_job.c
2836-
2837-test_parse_job-test_parse_job.obj: tests/test_parse_job.c
2838-@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(test_parse_job_CFLAGS) $(CFLAGS) -MT test_parse_job-test_parse_job.obj -MD -MP -MF $(DEPDIR)/test_parse_job-test_parse_job.Tpo -c -o test_parse_job-test_parse_job.obj `if test -f 'tests/test_parse_job.c'; then $(CYGPATH_W) 'tests/test_parse_job.c'; else $(CYGPATH_W) '$(srcdir)/tests/test_parse_job.c'; fi`
2839-@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/test_parse_job-test_parse_job.Tpo $(DEPDIR)/test_parse_job-test_parse_job.Po
2840-@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@
2841-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='tests/test_parse_job.c' object='test_parse_job-test_parse_job.obj' libtool=no @AMDEPBACKSLASH@
2842-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
2843-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(test_parse_job_CFLAGS) $(CFLAGS) -c -o test_parse_job-test_parse_job.obj `if test -f 'tests/test_parse_job.c'; then $(CYGPATH_W) 'tests/test_parse_job.c'; else $(CYGPATH_W) '$(srcdir)/tests/test_parse_job.c'; fi`
2844-
2845-test_process-test_process.o: tests/test_process.c
2846-@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(test_process_CFLAGS) $(CFLAGS) -MT test_process-test_process.o -MD -MP -MF $(DEPDIR)/test_process-test_process.Tpo -c -o test_process-test_process.o `test -f 'tests/test_process.c' || echo '$(srcdir)/'`tests/test_process.c
2847-@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/test_process-test_process.Tpo $(DEPDIR)/test_process-test_process.Po
2848-@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@
2849-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='tests/test_process.c' object='test_process-test_process.o' libtool=no @AMDEPBACKSLASH@
2850-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
2851-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(test_process_CFLAGS) $(CFLAGS) -c -o test_process-test_process.o `test -f 'tests/test_process.c' || echo '$(srcdir)/'`tests/test_process.c
2852-
2853-test_process-test_process.obj: tests/test_process.c
2854-@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(test_process_CFLAGS) $(CFLAGS) -MT test_process-test_process.obj -MD -MP -MF $(DEPDIR)/test_process-test_process.Tpo -c -o test_process-test_process.obj `if test -f 'tests/test_process.c'; then $(CYGPATH_W) 'tests/test_process.c'; else $(CYGPATH_W) '$(srcdir)/tests/test_process.c'; fi`
2855-@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/test_process-test_process.Tpo $(DEPDIR)/test_process-test_process.Po
2856-@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@
2857-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='tests/test_process.c' object='test_process-test_process.obj' libtool=no @AMDEPBACKSLASH@
2858-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
2859-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(test_process_CFLAGS) $(CFLAGS) -c -o test_process-test_process.obj `if test -f 'tests/test_process.c'; then $(CYGPATH_W) 'tests/test_process.c'; else $(CYGPATH_W) '$(srcdir)/tests/test_process.c'; fi`
2860-
2861-test_system-test_system.o: tests/test_system.c
2862-@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(test_system_CFLAGS) $(CFLAGS) -MT test_system-test_system.o -MD -MP -MF $(DEPDIR)/test_system-test_system.Tpo -c -o test_system-test_system.o `test -f 'tests/test_system.c' || echo '$(srcdir)/'`tests/test_system.c
2863-@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/test_system-test_system.Tpo $(DEPDIR)/test_system-test_system.Po
2864-@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@
2865-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='tests/test_system.c' object='test_system-test_system.o' libtool=no @AMDEPBACKSLASH@
2866-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
2867-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(test_system_CFLAGS) $(CFLAGS) -c -o test_system-test_system.o `test -f 'tests/test_system.c' || echo '$(srcdir)/'`tests/test_system.c
2868-
2869-test_system-test_system.obj: tests/test_system.c
2870-@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(test_system_CFLAGS) $(CFLAGS) -MT test_system-test_system.obj -MD -MP -MF $(DEPDIR)/test_system-test_system.Tpo -c -o test_system-test_system.obj `if test -f 'tests/test_system.c'; then $(CYGPATH_W) 'tests/test_system.c'; else $(CYGPATH_W) '$(srcdir)/tests/test_system.c'; fi`
2871-@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/test_system-test_system.Tpo $(DEPDIR)/test_system-test_system.Po
2872-@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@
2873-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='tests/test_system.c' object='test_system-test_system.obj' libtool=no @AMDEPBACKSLASH@
2874-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
2875-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(test_system_CFLAGS) $(CFLAGS) -c -o test_system-test_system.obj `if test -f 'tests/test_system.c'; then $(CYGPATH_W) 'tests/test_system.c'; else $(CYGPATH_W) '$(srcdir)/tests/test_system.c'; fi`
2876+test_blocked.o: tests/test_blocked.c
2877+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT test_blocked.o -MD -MP -MF $(DEPDIR)/test_blocked.Tpo -c -o test_blocked.o `test -f 'tests/test_blocked.c' || echo '$(srcdir)/'`tests/test_blocked.c
2878+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/test_blocked.Tpo $(DEPDIR)/test_blocked.Po
2879+@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@
2880+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='tests/test_blocked.c' object='test_blocked.o' libtool=no @AMDEPBACKSLASH@
2881+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
2882+@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o test_blocked.o `test -f 'tests/test_blocked.c' || echo '$(srcdir)/'`tests/test_blocked.c
2883+
2884+test_blocked.obj: tests/test_blocked.c
2885+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT test_blocked.obj -MD -MP -MF $(DEPDIR)/test_blocked.Tpo -c -o test_blocked.obj `if test -f 'tests/test_blocked.c'; then $(CYGPATH_W) 'tests/test_blocked.c'; else $(CYGPATH_W) '$(srcdir)/tests/test_blocked.c'; fi`
2886+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/test_blocked.Tpo $(DEPDIR)/test_blocked.Po
2887+@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@
2888+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='tests/test_blocked.c' object='test_blocked.obj' libtool=no @AMDEPBACKSLASH@
2889+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
2890+@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o test_blocked.obj `if test -f 'tests/test_blocked.c'; then $(CYGPATH_W) 'tests/test_blocked.c'; else $(CYGPATH_W) '$(srcdir)/tests/test_blocked.c'; fi`
2891+
2892+test_conf.o: tests/test_conf.c
2893+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT test_conf.o -MD -MP -MF $(DEPDIR)/test_conf.Tpo -c -o test_conf.o `test -f 'tests/test_conf.c' || echo '$(srcdir)/'`tests/test_conf.c
2894+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/test_conf.Tpo $(DEPDIR)/test_conf.Po
2895+@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@
2896+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='tests/test_conf.c' object='test_conf.o' libtool=no @AMDEPBACKSLASH@
2897+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
2898+@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o test_conf.o `test -f 'tests/test_conf.c' || echo '$(srcdir)/'`tests/test_conf.c
2899+
2900+test_conf.obj: tests/test_conf.c
2901+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT test_conf.obj -MD -MP -MF $(DEPDIR)/test_conf.Tpo -c -o test_conf.obj `if test -f 'tests/test_conf.c'; then $(CYGPATH_W) 'tests/test_conf.c'; else $(CYGPATH_W) '$(srcdir)/tests/test_conf.c'; fi`
2902+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/test_conf.Tpo $(DEPDIR)/test_conf.Po
2903+@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@
2904+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='tests/test_conf.c' object='test_conf.obj' libtool=no @AMDEPBACKSLASH@
2905+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
2906+@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o test_conf.obj `if test -f 'tests/test_conf.c'; then $(CYGPATH_W) 'tests/test_conf.c'; else $(CYGPATH_W) '$(srcdir)/tests/test_conf.c'; fi`
2907+
2908+test_control.o: tests/test_control.c
2909+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT test_control.o -MD -MP -MF $(DEPDIR)/test_control.Tpo -c -o test_control.o `test -f 'tests/test_control.c' || echo '$(srcdir)/'`tests/test_control.c
2910+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/test_control.Tpo $(DEPDIR)/test_control.Po
2911+@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@
2912+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='tests/test_control.c' object='test_control.o' libtool=no @AMDEPBACKSLASH@
2913+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
2914+@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o test_control.o `test -f 'tests/test_control.c' || echo '$(srcdir)/'`tests/test_control.c
2915+
2916+test_control.obj: tests/test_control.c
2917+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT test_control.obj -MD -MP -MF $(DEPDIR)/test_control.Tpo -c -o test_control.obj `if test -f 'tests/test_control.c'; then $(CYGPATH_W) 'tests/test_control.c'; else $(CYGPATH_W) '$(srcdir)/tests/test_control.c'; fi`
2918+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/test_control.Tpo $(DEPDIR)/test_control.Po
2919+@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@
2920+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='tests/test_control.c' object='test_control.obj' libtool=no @AMDEPBACKSLASH@
2921+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
2922+@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o test_control.obj `if test -f 'tests/test_control.c'; then $(CYGPATH_W) 'tests/test_control.c'; else $(CYGPATH_W) '$(srcdir)/tests/test_control.c'; fi`
2923+
2924+test_environ.o: tests/test_environ.c
2925+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT test_environ.o -MD -MP -MF $(DEPDIR)/test_environ.Tpo -c -o test_environ.o `test -f 'tests/test_environ.c' || echo '$(srcdir)/'`tests/test_environ.c
2926+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/test_environ.Tpo $(DEPDIR)/test_environ.Po
2927+@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@
2928+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='tests/test_environ.c' object='test_environ.o' libtool=no @AMDEPBACKSLASH@
2929+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
2930+@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o test_environ.o `test -f 'tests/test_environ.c' || echo '$(srcdir)/'`tests/test_environ.c
2931+
2932+test_environ.obj: tests/test_environ.c
2933+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT test_environ.obj -MD -MP -MF $(DEPDIR)/test_environ.Tpo -c -o test_environ.obj `if test -f 'tests/test_environ.c'; then $(CYGPATH_W) 'tests/test_environ.c'; else $(CYGPATH_W) '$(srcdir)/tests/test_environ.c'; fi`
2934+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/test_environ.Tpo $(DEPDIR)/test_environ.Po
2935+@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@
2936+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='tests/test_environ.c' object='test_environ.obj' libtool=no @AMDEPBACKSLASH@
2937+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
2938+@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o test_environ.obj `if test -f 'tests/test_environ.c'; then $(CYGPATH_W) 'tests/test_environ.c'; else $(CYGPATH_W) '$(srcdir)/tests/test_environ.c'; fi`
2939+
2940+test_event.o: tests/test_event.c
2941+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT test_event.o -MD -MP -MF $(DEPDIR)/test_event.Tpo -c -o test_event.o `test -f 'tests/test_event.c' || echo '$(srcdir)/'`tests/test_event.c
2942+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/test_event.Tpo $(DEPDIR)/test_event.Po
2943+@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@
2944+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='tests/test_event.c' object='test_event.o' libtool=no @AMDEPBACKSLASH@
2945+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
2946+@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o test_event.o `test -f 'tests/test_event.c' || echo '$(srcdir)/'`tests/test_event.c
2947+
2948+test_event.obj: tests/test_event.c
2949+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT test_event.obj -MD -MP -MF $(DEPDIR)/test_event.Tpo -c -o test_event.obj `if test -f 'tests/test_event.c'; then $(CYGPATH_W) 'tests/test_event.c'; else $(CYGPATH_W) '$(srcdir)/tests/test_event.c'; fi`
2950+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/test_event.Tpo $(DEPDIR)/test_event.Po
2951+@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@
2952+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='tests/test_event.c' object='test_event.obj' libtool=no @AMDEPBACKSLASH@
2953+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
2954+@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o test_event.obj `if test -f 'tests/test_event.c'; then $(CYGPATH_W) 'tests/test_event.c'; else $(CYGPATH_W) '$(srcdir)/tests/test_event.c'; fi`
2955+
2956+test_event_operator.o: tests/test_event_operator.c
2957+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT test_event_operator.o -MD -MP -MF $(DEPDIR)/test_event_operator.Tpo -c -o test_event_operator.o `test -f 'tests/test_event_operator.c' || echo '$(srcdir)/'`tests/test_event_operator.c
2958+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/test_event_operator.Tpo $(DEPDIR)/test_event_operator.Po
2959+@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@
2960+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='tests/test_event_operator.c' object='test_event_operator.o' libtool=no @AMDEPBACKSLASH@
2961+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
2962+@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o test_event_operator.o `test -f 'tests/test_event_operator.c' || echo '$(srcdir)/'`tests/test_event_operator.c
2963+
2964+test_event_operator.obj: tests/test_event_operator.c
2965+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT test_event_operator.obj -MD -MP -MF $(DEPDIR)/test_event_operator.Tpo -c -o test_event_operator.obj `if test -f 'tests/test_event_operator.c'; then $(CYGPATH_W) 'tests/test_event_operator.c'; else $(CYGPATH_W) '$(srcdir)/tests/test_event_operator.c'; fi`
2966+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/test_event_operator.Tpo $(DEPDIR)/test_event_operator.Po
2967+@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@
2968+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='tests/test_event_operator.c' object='test_event_operator.obj' libtool=no @AMDEPBACKSLASH@
2969+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
2970+@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o test_event_operator.obj `if test -f 'tests/test_event_operator.c'; then $(CYGPATH_W) 'tests/test_event_operator.c'; else $(CYGPATH_W) '$(srcdir)/tests/test_event_operator.c'; fi`
2971+
2972+test_job.o: tests/test_job.c
2973+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT test_job.o -MD -MP -MF $(DEPDIR)/test_job.Tpo -c -o test_job.o `test -f 'tests/test_job.c' || echo '$(srcdir)/'`tests/test_job.c
2974+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/test_job.Tpo $(DEPDIR)/test_job.Po
2975+@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@
2976+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='tests/test_job.c' object='test_job.o' libtool=no @AMDEPBACKSLASH@
2977+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
2978+@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o test_job.o `test -f 'tests/test_job.c' || echo '$(srcdir)/'`tests/test_job.c
2979+
2980+test_job.obj: tests/test_job.c
2981+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT test_job.obj -MD -MP -MF $(DEPDIR)/test_job.Tpo -c -o test_job.obj `if test -f 'tests/test_job.c'; then $(CYGPATH_W) 'tests/test_job.c'; else $(CYGPATH_W) '$(srcdir)/tests/test_job.c'; fi`
2982+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/test_job.Tpo $(DEPDIR)/test_job.Po
2983+@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@
2984+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='tests/test_job.c' object='test_job.obj' libtool=no @AMDEPBACKSLASH@
2985+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
2986+@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o test_job.obj `if test -f 'tests/test_job.c'; then $(CYGPATH_W) 'tests/test_job.c'; else $(CYGPATH_W) '$(srcdir)/tests/test_job.c'; fi`
2987+
2988+test_job_class.o: tests/test_job_class.c
2989+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT test_job_class.o -MD -MP -MF $(DEPDIR)/test_job_class.Tpo -c -o test_job_class.o `test -f 'tests/test_job_class.c' || echo '$(srcdir)/'`tests/test_job_class.c
2990+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/test_job_class.Tpo $(DEPDIR)/test_job_class.Po
2991+@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@
2992+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='tests/test_job_class.c' object='test_job_class.o' libtool=no @AMDEPBACKSLASH@
2993+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
2994+@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o test_job_class.o `test -f 'tests/test_job_class.c' || echo '$(srcdir)/'`tests/test_job_class.c
2995+
2996+test_job_class.obj: tests/test_job_class.c
2997+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT test_job_class.obj -MD -MP -MF $(DEPDIR)/test_job_class.Tpo -c -o test_job_class.obj `if test -f 'tests/test_job_class.c'; then $(CYGPATH_W) 'tests/test_job_class.c'; else $(CYGPATH_W) '$(srcdir)/tests/test_job_class.c'; fi`
2998+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/test_job_class.Tpo $(DEPDIR)/test_job_class.Po
2999+@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@
3000+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='tests/test_job_class.c' object='test_job_class.obj' libtool=no @AMDEPBACKSLASH@
3001+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
3002+@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o test_job_class.obj `if test -f 'tests/test_job_class.c'; then $(CYGPATH_W) 'tests/test_job_class.c'; else $(CYGPATH_W) '$(srcdir)/tests/test_job_class.c'; fi`
3003+
3004+test_job_process.o: tests/test_job_process.c
3005+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT test_job_process.o -MD -MP -MF $(DEPDIR)/test_job_process.Tpo -c -o test_job_process.o `test -f 'tests/test_job_process.c' || echo '$(srcdir)/'`tests/test_job_process.c
3006+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/test_job_process.Tpo $(DEPDIR)/test_job_process.Po
3007+@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@
3008+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='tests/test_job_process.c' object='test_job_process.o' libtool=no @AMDEPBACKSLASH@
3009+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
3010+@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o test_job_process.o `test -f 'tests/test_job_process.c' || echo '$(srcdir)/'`tests/test_job_process.c
3011+
3012+test_job_process.obj: tests/test_job_process.c
3013+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT test_job_process.obj -MD -MP -MF $(DEPDIR)/test_job_process.Tpo -c -o test_job_process.obj `if test -f 'tests/test_job_process.c'; then $(CYGPATH_W) 'tests/test_job_process.c'; else $(CYGPATH_W) '$(srcdir)/tests/test_job_process.c'; fi`
3014+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/test_job_process.Tpo $(DEPDIR)/test_job_process.Po
3015+@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@
3016+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='tests/test_job_process.c' object='test_job_process.obj' libtool=no @AMDEPBACKSLASH@
3017+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
3018+@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o test_job_process.obj `if test -f 'tests/test_job_process.c'; then $(CYGPATH_W) 'tests/test_job_process.c'; else $(CYGPATH_W) '$(srcdir)/tests/test_job_process.c'; fi`
3019+
3020+test_parse_conf.o: tests/test_parse_conf.c
3021+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT test_parse_conf.o -MD -MP -MF $(DEPDIR)/test_parse_conf.Tpo -c -o test_parse_conf.o `test -f 'tests/test_parse_conf.c' || echo '$(srcdir)/'`tests/test_parse_conf.c
3022+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/test_parse_conf.Tpo $(DEPDIR)/test_parse_conf.Po
3023+@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@
3024+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='tests/test_parse_conf.c' object='test_parse_conf.o' libtool=no @AMDEPBACKSLASH@
3025+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
3026+@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o test_parse_conf.o `test -f 'tests/test_parse_conf.c' || echo '$(srcdir)/'`tests/test_parse_conf.c
3027+
3028+test_parse_conf.obj: tests/test_parse_conf.c
3029+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT test_parse_conf.obj -MD -MP -MF $(DEPDIR)/test_parse_conf.Tpo -c -o test_parse_conf.obj `if test -f 'tests/test_parse_conf.c'; then $(CYGPATH_W) 'tests/test_parse_conf.c'; else $(CYGPATH_W) '$(srcdir)/tests/test_parse_conf.c'; fi`
3030+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/test_parse_conf.Tpo $(DEPDIR)/test_parse_conf.Po
3031+@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@
3032+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='tests/test_parse_conf.c' object='test_parse_conf.obj' libtool=no @AMDEPBACKSLASH@
3033+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
3034+@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o test_parse_conf.obj `if test -f 'tests/test_parse_conf.c'; then $(CYGPATH_W) 'tests/test_parse_conf.c'; else $(CYGPATH_W) '$(srcdir)/tests/test_parse_conf.c'; fi`
3035+
3036+test_parse_job.o: tests/test_parse_job.c
3037+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT test_parse_job.o -MD -MP -MF $(DEPDIR)/test_parse_job.Tpo -c -o test_parse_job.o `test -f 'tests/test_parse_job.c' || echo '$(srcdir)/'`tests/test_parse_job.c
3038+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/test_parse_job.Tpo $(DEPDIR)/test_parse_job.Po
3039+@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@
3040+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='tests/test_parse_job.c' object='test_parse_job.o' libtool=no @AMDEPBACKSLASH@
3041+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
3042+@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o test_parse_job.o `test -f 'tests/test_parse_job.c' || echo '$(srcdir)/'`tests/test_parse_job.c
3043+
3044+test_parse_job.obj: tests/test_parse_job.c
3045+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT test_parse_job.obj -MD -MP -MF $(DEPDIR)/test_parse_job.Tpo -c -o test_parse_job.obj `if test -f 'tests/test_parse_job.c'; then $(CYGPATH_W) 'tests/test_parse_job.c'; else $(CYGPATH_W) '$(srcdir)/tests/test_parse_job.c'; fi`
3046+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/test_parse_job.Tpo $(DEPDIR)/test_parse_job.Po
3047+@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@
3048+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='tests/test_parse_job.c' object='test_parse_job.obj' libtool=no @AMDEPBACKSLASH@
3049+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
3050+@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o test_parse_job.obj `if test -f 'tests/test_parse_job.c'; then $(CYGPATH_W) 'tests/test_parse_job.c'; else $(CYGPATH_W) '$(srcdir)/tests/test_parse_job.c'; fi`
3051+
3052+test_process.o: tests/test_process.c
3053+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT test_process.o -MD -MP -MF $(DEPDIR)/test_process.Tpo -c -o test_process.o `test -f 'tests/test_process.c' || echo '$(srcdir)/'`tests/test_process.c
3054+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/test_process.Tpo $(DEPDIR)/test_process.Po
3055+@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@
3056+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='tests/test_process.c' object='test_process.o' libtool=no @AMDEPBACKSLASH@
3057+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
3058+@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o test_process.o `test -f 'tests/test_process.c' || echo '$(srcdir)/'`tests/test_process.c
3059+
3060+test_process.obj: tests/test_process.c
3061+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT test_process.obj -MD -MP -MF $(DEPDIR)/test_process.Tpo -c -o test_process.obj `if test -f 'tests/test_process.c'; then $(CYGPATH_W) 'tests/test_process.c'; else $(CYGPATH_W) '$(srcdir)/tests/test_process.c'; fi`
3062+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/test_process.Tpo $(DEPDIR)/test_process.Po
3063+@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@
3064+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='tests/test_process.c' object='test_process.obj' libtool=no @AMDEPBACKSLASH@
3065+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
3066+@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o test_process.obj `if test -f 'tests/test_process.c'; then $(CYGPATH_W) 'tests/test_process.c'; else $(CYGPATH_W) '$(srcdir)/tests/test_process.c'; fi`
3067+
3068+test_system.o: tests/test_system.c
3069+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT test_system.o -MD -MP -MF $(DEPDIR)/test_system.Tpo -c -o test_system.o `test -f 'tests/test_system.c' || echo '$(srcdir)/'`tests/test_system.c
3070+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/test_system.Tpo $(DEPDIR)/test_system.Po
3071+@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@
3072+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='tests/test_system.c' object='test_system.o' libtool=no @AMDEPBACKSLASH@
3073+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
3074+@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o test_system.o `test -f 'tests/test_system.c' || echo '$(srcdir)/'`tests/test_system.c
3075+
3076+test_system.obj: tests/test_system.c
3077+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT test_system.obj -MD -MP -MF $(DEPDIR)/test_system.Tpo -c -o test_system.obj `if test -f 'tests/test_system.c'; then $(CYGPATH_W) 'tests/test_system.c'; else $(CYGPATH_W) '$(srcdir)/tests/test_system.c'; fi`
3078+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/test_system.Tpo $(DEPDIR)/test_system.Po
3079+@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@
3080+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='tests/test_system.c' object='test_system.obj' libtool=no @AMDEPBACKSLASH@
3081+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
3082+@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o test_system.obj `if test -f 'tests/test_system.c'; then $(CYGPATH_W) 'tests/test_system.c'; else $(CYGPATH_W) '$(srcdir)/tests/test_system.c'; fi`
3083
3084 mostlyclean-libtool:
3085 -rm -f *.lo
3086
3087=== modified file 'init/conf.c'
3088--- init/conf.c 2011-05-25 19:25:11 +0000
3089+++ init/conf.c 2011-06-17 11:15:58 +0000
3090@@ -2,7 +2,7 @@
3091 *
3092 * conf.c - configuration management
3093 *
3094- * Copyright © 2009, 2010 Canonical Ltd.
3095+ * Copyright © 2009,2010,2011 Canonical Ltd.
3096 * Author: Scott James Remnant <scott@netsplit.com>.
3097 *
3098 * This program is free software; you can redistribute it and/or modify
3099@@ -80,8 +80,7 @@
3100 static inline int is_conf_file_std (const char *path)
3101 __attribute__ ((warn_unused_result));
3102
3103-static inline int
3104-is_conf_file_override (const char *path)
3105+static inline int is_conf_file_override(const char *path)
3106 __attribute__ ((warn_unused_result));
3107
3108 /**
3109@@ -154,7 +153,7 @@
3110 {
3111 char *ptr = strrchr (path, '.');
3112
3113- if (ptr && IS_CONF_EXT (ptr))
3114+ if (ptr && (ptr > path) && (ptr[-1] != '/') && IS_CONF_EXT (ptr))
3115 return TRUE;
3116
3117 return FALSE;
3118@@ -352,7 +351,8 @@
3119 NihError *err;
3120
3121 err = nih_error_get ();
3122- nih_error ("%s: %s: %s", source->path,
3123+ if (err->number != ENOENT)
3124+ nih_error ("%s: %s: %s", source->path,
3125 _("Unable to load configuration"),
3126 err->message);
3127 nih_free (err);
3128@@ -372,7 +372,7 @@
3129 * out for editors that rename over the top, etc.
3130 *
3131 * We then parse the current state of the source. The flag member is
3132- * toggled first, and this is propogated to all new and modified files and
3133+ * toggled first, and this is propagated to all new and modified files and
3134 * items that we find as a result of parsing. Once done, we scan for
3135 * anything with the wrong flag, and delete them.
3136 *
3137@@ -538,7 +538,7 @@
3138 * tree.
3139 *
3140 * Otherwise we walk the tree ourselves and parse all files that we find,
3141- * propogating the value of the flag member to all files so that deletion
3142+ * propagating the value of the flag member to all files so that deletion
3143 * can be detected by the calling function.
3144 *
3145 * Returns: zero on success, negative value on raised error.
3146@@ -1041,8 +1041,10 @@
3147 } else {
3148 nih_debug ("Loading %s from %s", name, path);
3149 }
3150+
3151 file->job = parse_job (NULL, source->session, file->job,
3152- name, buf, len, &pos, &lineno);
3153+ name, buf, len, &pos, &lineno);
3154+
3155 if (file->job) {
3156 job_class_consider (file->job);
3157 } else {
3158
3159=== modified file 'init/conf.h'
3160--- init/conf.h 2011-05-25 19:25:11 +0000
3161+++ init/conf.h 2011-06-17 11:15:58 +0000
3162@@ -1,6 +1,6 @@
3163 /* upstart
3164 *
3165- * Copyright © 2010 Canonical Ltd.
3166+ * Copyright © 2010,2011 Canonical Ltd.
3167 * Author: Scott James Remnant <scott@netsplit.com>.
3168 *
3169 * This program is free software; you can redistribute it and/or modify
3170
3171=== modified file 'init/control.c'
3172--- init/control.c 2011-05-25 19:25:11 +0000
3173+++ init/control.c 2011-06-17 11:15:58 +0000
3174@@ -2,7 +2,7 @@
3175 *
3176 * control.c - D-Bus connections, objects and methods
3177 *
3178- * Copyright © 2010 Canonical Ltd.
3179+ * Copyright © 2009-2011 Canonical Ltd.
3180 * Author: Scott James Remnant <scott@netsplit.com>.
3181 *
3182 * This program is free software; you can redistribute it and/or modify
3183@@ -65,7 +65,7 @@
3184 /**
3185 * use_session_bus:
3186 *
3187- * If TRUE, connect to the D-Bus session bus rather than the system bus.
3188+ * If TRUE, connect to the D-Bus sessio bus rather than the system bus.
3189 *
3190 * Used for testing.
3191 **/
3192
3193=== modified file 'init/control.h'
3194--- init/control.h 2011-05-25 19:25:11 +0000
3195+++ init/control.h 2011-06-17 11:15:58 +0000
3196@@ -1,6 +1,6 @@
3197 /* upstart
3198 *
3199- * Copyright © 2009 Canonical Ltd.
3200+ * Copyright © 2009-2011 Canonical Ltd.
3201 * Author: Scott James Remnant <scott@netsplit.com>.
3202 *
3203 * This program is free software; you can redistribute it and/or modify
3204
3205=== modified file 'init/environ.c'
3206--- init/environ.c 2009-06-23 09:29:35 +0000
3207+++ init/environ.c 2011-06-17 11:15:58 +0000
3208@@ -354,50 +354,11 @@
3209
3210
3211 /**
3212- * environ_valid:
3213- * @key: string to check,
3214- * @len: length of @key.
3215- *
3216- * Check whether the environment key @key, that is @len characters long,
3217- * is valid according to the usual rules. Names may begin with an alpha or
3218- * an underscore, and then consist of any number of alphanumerics and
3219- * underscores.
3220- *
3221- * Returns: TRUE if @key is a valid variable name, FALSE otherwise.
3222- **/
3223-int
3224-environ_valid (const char *key,
3225- size_t len)
3226-{
3227- nih_assert (key != NULL);
3228-
3229- if (! len)
3230- return FALSE;
3231-
3232- if ((*key != '_')
3233- && ((*key < 'A') || (*key > 'Z'))
3234- && ((*key < 'a') || (*key > 'z')))
3235- return FALSE;
3236-
3237- while (--len) {
3238- ++key;
3239- if ((*key != '_')
3240- && ((*key < 'A') || (*key > 'Z'))
3241- && ((*key < 'a') || (*key > 'z'))
3242- && ((*key < '0') || (*key > '9')))
3243- return FALSE;
3244- }
3245-
3246- return TRUE;
3247-}
3248-
3249-/**
3250 * environ_all_valid:
3251 * @env: NULL-terminated array of variables to check.
3252 *
3253 * Checks each of the environment variables in @env for validity; that is
3254- * each must be of KEY=VALUE form, and KEY must be a valid name for a
3255- * variable.
3256+ * each must be of KEY=VALUE form.
3257 *
3258 * This is intended for checking external data such as that in control
3259 * messages; environment lists defined in job definitions are actually
3260@@ -418,9 +379,6 @@
3261 value = strchr (*e, '=');
3262 if (! value)
3263 return FALSE;
3264-
3265- if (! environ_valid (*e, value - *e))
3266- return FALSE;
3267 }
3268
3269 return TRUE;
3270@@ -590,20 +548,6 @@
3271
3272 name_end = (*pos);
3273
3274- /* Check the environment variable name is
3275- * actually valid
3276- */
3277- if (! environ_valid (*str + name_start,
3278- name_end - name_start)) {
3279- nih_error_raise_printf (
3280- ENVIRON_ILLEGAL_PARAM,
3281- "%s: %.*s", _(ENVIRON_ILLEGAL_PARAM_STR),
3282- (int)(name_end - name_start),
3283- *str + name_start);
3284-
3285- goto error;
3286- }
3287-
3288 /* Check for an expression operator; if we find one,
3289 * step over it and evalulate the rest of the bracketed
3290 * expression to find the substitute value.
3291
3292=== modified file 'init/environ.h'
3293--- init/environ.h 2009-06-23 09:29:35 +0000
3294+++ init/environ.h 2011-06-17 11:15:58 +0000
3295@@ -43,7 +43,6 @@
3296 const char * environ_getn (char * const *env, const char *key,
3297 size_t len);
3298
3299-int environ_valid (const char *key, size_t len);
3300 int environ_all_valid (char * const *env);
3301
3302 char * environ_expand (const void *parent, const char *string,
3303
3304=== modified file 'init/errors.h'
3305--- init/errors.h 2009-06-23 09:29:35 +0000
3306+++ init/errors.h 2011-06-17 11:15:58 +0000
3307@@ -40,6 +40,7 @@
3308 /* Errors while parsing configuration files */
3309 PARSE_ILLEGAL_INTERVAL,
3310 PARSE_ILLEGAL_EXIT,
3311+ PARSE_ILLEGAL_SIGNAL,
3312 PARSE_ILLEGAL_UMASK,
3313 PARSE_ILLEGAL_NICE,
3314 PARSE_ILLEGAL_OOM,
3315@@ -60,9 +61,11 @@
3316 #define ENVIRON_MISMATCHED_BRACES_STR N_("Mismatched braces")
3317 #define PARSE_ILLEGAL_INTERVAL_STR N_("Illegal interval, expected number of seconds")
3318 #define PARSE_ILLEGAL_EXIT_STR N_("Illegal exit status, expected integer")
3319+#define PARSE_ILLEGAL_SIGNAL_STR N_("Illegal signal status, expected integer")
3320 #define PARSE_ILLEGAL_UMASK_STR N_("Illegal file creation mask, expected octal integer")
3321 #define PARSE_ILLEGAL_NICE_STR N_("Illegal nice value, expected -20 to 19")
3322-#define PARSE_ILLEGAL_OOM_STR N_("Illegal oom adjustment, expected -16 to 15 or never")
3323+#define PARSE_ILLEGAL_OOM_STR N_("Illegal oom adjustment, expected -16 to 15 or 'never'")
3324+#define PARSE_ILLEGAL_OOM_SCORE_STR N_("Illegal oom score adjustment, expected -999 to 1000 or 'never'")
3325 #define PARSE_ILLEGAL_LIMIT_STR N_("Illegal limit, expected 'unlimited' or integer")
3326 #define PARSE_EXPECTED_EVENT_STR N_("Expected event")
3327 #define PARSE_EXPECTED_OPERATOR_STR N_("Expected operator")
3328
3329=== modified file 'init/event.c'
3330--- init/event.c 2011-05-25 19:25:11 +0000
3331+++ init/event.c 2011-06-17 11:15:58 +0000
3332@@ -2,7 +2,7 @@
3333 *
3334 * event.c - event queue and handling
3335 *
3336- * Copyright © 2009, 2010 Canonical Ltd.
3337+ * Copyright © 2010 Canonical Ltd.
3338 * Author: Scott James Remnant <scott@netsplit.com>.
3339 *
3340 * This program is free software; you can redistribute it and/or modify
3341@@ -126,6 +126,7 @@
3342
3343 event->session = NULL;
3344 event->fd = -1;
3345+
3346 event->progress = EVENT_PENDING;
3347 event->failed = FALSE;
3348
3349
3350=== modified file 'init/job.c'
3351--- init/job.c 2011-05-25 19:25:11 +0000
3352+++ init/job.c 2011-06-17 11:15:58 +0000
3353@@ -2,7 +2,7 @@
3354 *
3355 * job.c - core state machine of tasks and services
3356 *
3357- * Copyright © 2010 Canonical Ltd.
3358+ * Copyright © 2010,2011 Canonical Ltd.
3359 * Author: Scott James Remnant <scott@netsplit.com>.
3360 *
3361 * This program is free software; you can redistribute it and/or modify
3362
3363=== modified file 'init/job_class.c'
3364--- init/job_class.c 2011-05-25 19:25:11 +0000
3365+++ init/job_class.c 2011-06-17 11:15:58 +0000
3366@@ -2,7 +2,7 @@
3367 *
3368 * job_class.c - job class definition handling
3369 *
3370- * Copyright © 2010 Canonical Ltd.
3371+ * Copyright © 2010,2011 Canonical Ltd.
3372 * Author: Scott James Remnant <scott@netsplit.com>.
3373 *
3374 * This program is free software; you can redistribute it and/or modify
3375@@ -26,6 +26,7 @@
3376
3377 #include <errno.h>
3378 #include <string.h>
3379+#include <signal.h>
3380
3381 #include <nih/macros.h>
3382 #include <nih/alloc.h>
3383@@ -148,7 +149,7 @@
3384 JobClass *
3385 job_class_new (const void *parent,
3386 const char *name,
3387- Session * session)
3388+ Session *session)
3389 {
3390 JobClass *class;
3391 int i;
3392@@ -236,6 +237,7 @@
3393 class->task = FALSE;
3394
3395 class->kill_timeout = JOB_DEFAULT_KILL_TIMEOUT;
3396+ class->kill_signal = SIGTERM;
3397
3398 class->respawn = FALSE;
3399 class->respawn_limit = JOB_DEFAULT_RESPAWN_LIMIT;
3400@@ -248,7 +250,7 @@
3401
3402 class->umask = JOB_DEFAULT_UMASK;
3403 class->nice = 0;
3404- class->oom_adj = 0;
3405+ class->oom_score_adj = 0;
3406
3407 for (i = 0; i < RLIMIT_NLIMITS; i++)
3408 class->limits[i] = NULL;
3409@@ -257,7 +259,7 @@
3410 class->chdir = NULL;
3411
3412 class->deleted = FALSE;
3413- class->debug = FALSE;
3414+ class->debug = FALSE;
3415
3416 return class;
3417
3418
3419=== modified file 'init/job_class.h'
3420--- init/job_class.h 2011-05-25 19:25:11 +0000
3421+++ init/job_class.h 2011-06-17 11:15:58 +0000
3422@@ -87,6 +87,7 @@
3423 * @expect: what to expect before entering the next state after spawned,
3424 * @task: start requests are not unblocked until instances have finished,
3425 * @kill_timeout: time to wait between sending TERM and KILL signals,
3426+ * @kill_signal: first signal to send (usually SIGTERM),
3427 * @respawn: instances should be restarted if main process fails,
3428 * @respawn_limit: number of respawns in @respawn_interval that we permit,
3429 * @respawn_interval: barrier for @respawn_limit,
3430@@ -95,7 +96,7 @@
3431 * @console: how to arrange processes' stdin/out/err file descriptors,
3432 * @umask: file mode creation mask,
3433 * @nice: process priority,
3434- * @oom_adj: OOM killer adjustment,
3435+ * @oom_score_adj: OOM killer score adjustment,
3436 * @limits: resource limits indexed by resource,
3437 * @chroot: root directory of process (implies @chdir if not set),
3438 * @chdir: working directory of process,
3439@@ -132,6 +133,7 @@
3440 int task;
3441
3442 time_t kill_timeout;
3443+ int kill_signal;
3444
3445 int respawn;
3446 int respawn_limit;
3447@@ -144,7 +146,7 @@
3448
3449 mode_t umask;
3450 int nice;
3451- int oom_adj;
3452+ int oom_score_adj;
3453 struct rlimit *limits[RLIMIT_NLIMITS];
3454 char *chroot;
3455 char *chdir;
3456
3457=== modified file 'init/job_process.c'
3458--- init/job_process.c 2011-05-25 19:25:11 +0000
3459+++ init/job_process.c 2011-06-17 11:15:58 +0000
3460@@ -117,7 +117,7 @@
3461 * characters within the command member, in which case it is executed
3462 * directly using exec after splitting on whitespace.
3463 *
3464- * When exectued with the shell, if the command (which may be an entire
3465+ * When executed with the shell, if the command (which may be an entire
3466 * script) is reasonably small (less than 1KB) it is passed to the
3467 * shell using the POSIX-specified -c option. Otherwise the shell is told
3468 * to read commands from one of the special /proc/self/fd/NN devices and NihIo
3469@@ -145,7 +145,8 @@
3470 nih_local char *script = NULL;
3471 char **e;
3472 size_t argc, envc;
3473- int error = FALSE, fds[2], trace = FALSE, shell = FALSE;
3474+ int fds[2] = { -1, -1 };
3475+ int error = FALSE, trace = FALSE, shell = FALSE;
3476
3477 nih_assert (job != NULL);
3478
3479@@ -208,12 +209,9 @@
3480
3481 shell = TRUE;
3482
3483- /* FIXME actually always want it to be /proc/self/fd/3 and
3484- * dup2() in the child to make it that way ... no way
3485- * of passing that yet
3486- */
3487 cmd = NIH_MUST (nih_sprintf (argv, "%s/%d",
3488- "/proc/self/fd", fds[0]));
3489+ "/proc/self/fd",
3490+ JOB_PROCESS_SCRIPT_FD));
3491 NIH_MUST (nih_str_array_addp (&argv, NULL,
3492 &argc, cmd));
3493 }
3494@@ -259,7 +257,7 @@
3495
3496 /* Spawn the process, repeat until fork() works */
3497 while ((job->pid[process] = job_process_spawn (job->class, argv,
3498- env, trace)) < 0) {
3499+ env, trace, fds[0])) < 0) {
3500 NihError *err;
3501
3502 err = nih_error_get ();
3503@@ -316,6 +314,14 @@
3504 nih_free (err);
3505 }
3506
3507+ /* We're feeding using a pipe, which has a file descriptor
3508+ * on the child end even though it open()s it again using
3509+ * a path. Instruct the shell to close this extra fd and
3510+ * not to leak it.
3511+ */
3512+ NIH_ZERO (nih_io_printf (io, "exec %d<&-\n",
3513+ JOB_PROCESS_SCRIPT_FD));
3514+
3515 NIH_ZERO (nih_io_write (io, script, strlen (script)));
3516 nih_io_shutdown (io);
3517 }
3518@@ -329,7 +335,8 @@
3519 * @class: job class of process to be spawned,
3520 * @argv: NULL-terminated list of arguments for the process,
3521 * @env: NULL-terminated list of environment variables for the process,
3522- * @trace: whether to trace this process.
3523+ * @trace: whether to trace this process,
3524+ * @script_fd: script file descriptor.
3525 *
3526 * This function spawns a new process using the @class details to set up the
3527 * environment for it; the process is always a session and process group
3528@@ -345,6 +352,9 @@
3529 * wait for this and then may use it to set options before continuing the
3530 * process.
3531 *
3532+ * If @script_fd is not -1, this file descriptor is dup()d to the special fd 9
3533+ * (moving any other out of the way if necessary).
3534+ *
3535 * This function only spawns the process, it is up to the caller to ensure
3536 * that the information is saved into the job and that the process is watched,
3537 * etc.
3538@@ -360,7 +370,8 @@
3539 job_process_spawn (JobClass *class,
3540 char * const argv[],
3541 char * const *env,
3542- int trace)
3543+ int trace,
3544+ int script_fd)
3545 {
3546 sigset_t child_set, orig_set;
3547 pid_t pid;
3548@@ -426,8 +437,24 @@
3549 * far because read() returned zero.
3550 */
3551 close (fds[0]);
3552+ if (fds[1] == JOB_PROCESS_SCRIPT_FD) {
3553+ int tmp = dup2 (fds[1], fds[0]);
3554+ close (fds[1]);
3555+ fds[1] = tmp;
3556+ }
3557 nih_io_set_cloexec (fds[1]);
3558
3559+ /* Move the script fd to special fd 9; the only gotcha is if that
3560+ * would be our error descriptor, but that's handled above.
3561+ */
3562+ if ((script_fd != -1) && (script_fd != JOB_PROCESS_SCRIPT_FD)) {
3563+ int tmp = dup2 (script_fd, JOB_PROCESS_SCRIPT_FD);
3564+ if (tmp < 0)
3565+ job_process_error_abort (fds[1], JOB_PROCESS_ERROR_DUP, 0);
3566+ close (script_fd);
3567+ script_fd = tmp;
3568+ }
3569+
3570 /* Become the leader of a new session and process group, shedding
3571 * any controlling tty (which we shouldn't have had anyway).
3572 */
3573@@ -486,16 +513,24 @@
3574
3575 /* Adjust the process OOM killer priority.
3576 */
3577- if (class->oom_adj) {
3578+ if (class->oom_score_adj) {
3579+ int oom_value;
3580 snprintf (filename, sizeof (filename),
3581- "/proc/%d/oom_adj", getpid ());
3582-
3583+ "/proc/%d/oom_score_adj", getpid ());
3584+ oom_value = class->oom_score_adj;
3585 fd = fopen (filename, "w");
3586+ if ((! fd) && (errno == EACCES)) {
3587+ snprintf (filename, sizeof (filename),
3588+ "/proc/%d/oom_adj", getpid ());
3589+ oom_value = (class->oom_score_adj
3590+ * ((class->oom_score_adj < 0) ? 17 : 15)) / 1000;
3591+ fd = fopen (filename, "w");
3592+ }
3593 if (! fd) {
3594 nih_error_raise_system ();
3595 job_process_error_abort (fds[1], JOB_PROCESS_ERROR_OOM_ADJ, 0);
3596 } else {
3597- fprintf (fd, "%d\n", class->oom_adj);
3598+ fprintf (fd, "%d\n", oom_value);
3599
3600 if (fclose (fd)) {
3601 nih_error_raise_system ();
3602@@ -715,6 +750,11 @@
3603 err->error.number = JOB_PROCESS_ERROR;
3604
3605 switch (err->type) {
3606+ case JOB_PROCESS_ERROR_DUP:
3607+ err->error.message = NIH_MUST (nih_sprintf (
3608+ err, _("unable to move script fd: %s"),
3609+ strerror (err->errnum)));
3610+ break;
3611 case JOB_PROCESS_ERROR_CONSOLE:
3612 err->error.message = NIH_MUST (nih_sprintf (
3613 err, _("unable to open console: %s"),
3614@@ -820,9 +860,9 @@
3615 * @process: process to be killed.
3616 *
3617 * This function forces a @job to leave its current state by sending
3618- * @process the TERM signal, and maybe later the KILL signal. The actual
3619- * state changes are performed by job_child_reaper when the process
3620- * has actually terminated.
3621+ * @process the "kill signal" defined signal (TERM by default), and maybe
3622+ * later the KILL signal. The actual state changes are performed by
3623+ * job_child_reaper when the process has actually terminated.
3624 **/
3625 void
3626 job_process_kill (Job *job,
3627@@ -833,15 +873,17 @@
3628 nih_assert (job->kill_timer == NULL);
3629 nih_assert (job->kill_process = -1);
3630
3631- nih_info (_("Sending TERM signal to %s %s process (%d)"),
3632+ nih_info (_("Sending %s signal to %s %s process (%d)"),
3633+ nih_signal_to_name (job->class->kill_signal),
3634 job_name (job), process_name (process), job->pid[process]);
3635
3636- if (system_kill (job->pid[process], FALSE) < 0) {
3637+ if (system_kill (job->pid[process], job->class->kill_signal) < 0) {
3638 NihError *err;
3639
3640 err = nih_error_get ();
3641 if (err->number != ESRCH)
3642- nih_warn (_("Failed to send TERM signal to %s %s process (%d): %s"),
3643+ nih_warn (_("Failed to send %s signal to %s %s process (%d): %s"),
3644+ nih_signal_to_name (job->class->kill_signal),
3645 job_name (job), process_name (process),
3646 job->pid[process], err->message);
3647 nih_free (err);
3648@@ -881,15 +923,17 @@
3649 job->kill_timer = NULL;
3650 job->kill_process = -1;
3651
3652- nih_info (_("Sending KILL signal to %s %s process (%d)"),
3653+ nih_info (_("Sending %s signal to %s %s process (%d)"),
3654+ "KILL",
3655 job_name (job), process_name (process), job->pid[process]);
3656
3657- if (system_kill (job->pid[process], TRUE) < 0) {
3658+ if (system_kill (job->pid[process], SIGKILL) < 0) {
3659 NihError *err;
3660
3661 err = nih_error_get ();
3662 if (err->number != ESRCH)
3663- nih_warn (_("Failed to send KILL signal to %s %s process (%d): %s"),
3664+ nih_warn (_("Failed to send %s signal to %s %s process (%d): %s"),
3665+ "KILL",
3666 job_name (job), process_name (process),
3667 job->pid[process], err->message);
3668 nih_free (err);
3669@@ -919,6 +963,7 @@
3670 {
3671 Job *job;
3672 ProcessType process;
3673+ NihLogLevel priority;
3674 const char *sig;
3675
3676 nih_assert (pid > 0);
3677@@ -927,21 +972,31 @@
3678 * job's process it was. If we don't know about it, then we simply
3679 * ignore the event.
3680 */
3681- nih_debug ("Ignored event %x (%d) for process %d", event, status, pid);
3682 job = job_process_find (pid, &process);
3683 if (! job)
3684 return;
3685
3686+ /* Check the job's normal exit clauses to see whether this is a failure
3687+ * worth warning about.
3688+ */
3689+ priority = NIH_LOG_WARN;
3690+ for (size_t i = 0; i < job->class->normalexit_len; i++) {
3691+ if (job->class->normalexit[i] == status) {
3692+ priority = NIH_LOG_INFO;
3693+ break;
3694+ }
3695+ }
3696+
3697 switch (event) {
3698 case NIH_CHILD_EXITED:
3699 /* Child exited; check status to see whether it exited
3700 * normally (zero) or with a non-zero status.
3701 */
3702 if (status) {
3703- nih_warn (_("%s %s process (%d) "
3704- "terminated with status %d"),
3705- job_name (job), process_name (process),
3706- pid, status);
3707+ nih_log_message (priority, _("%s %s process (%d) "
3708+ "terminated with status %d"),
3709+ job_name (job), process_name (process),
3710+ pid, status);
3711 } else {
3712 nih_info (_("%s %s process (%d) exited normally"),
3713 job_name (job), process_name (process), pid);
3714@@ -958,9 +1013,9 @@
3715 */
3716 sig = nih_signal_to_name (status);
3717 if (sig) {
3718- nih_warn (_("%s %s process (%d) killed by %s signal"),
3719- job_name (job), process_name (process),
3720- pid, sig);
3721+ nih_log_message (priority, _("%s %s process (%d) killed by %s signal"),
3722+ job_name (job), process_name (process),
3723+ pid, sig);
3724 } else {
3725 nih_warn (_("%s %s process (%d) killed by signal %d"),
3726 job_name (job), process_name (process),
3727
3728=== modified file 'init/job_process.h'
3729--- init/job_process.h 2011-05-25 19:25:11 +0000
3730+++ init/job_process.h 2011-06-17 11:15:58 +0000
3731@@ -1,6 +1,6 @@
3732 /* upstart
3733 *
3734- * Copyright © 2009 Canonical Ltd.
3735+ * Copyright © 2009,2010,2011 Canonical Ltd.
3736 * Author: Scott James Remnant <scott@netsplit.com>.
3737 *
3738 * This program is free software; you can redistribute it and/or modify
3739@@ -32,12 +32,23 @@
3740
3741
3742 /**
3743+ * JOB_PROCESS_SCRIPT_FD:
3744+ *
3745+ * The special fd used to pass the script to the shell process, this can be
3746+ * anything from 3-9 (0-2 are stdin/out/err, 10 and above aren't guaranteed
3747+ * by POSIX).
3748+ **/
3749+#define JOB_PROCESS_SCRIPT_FD 9
3750+
3751+
3752+/**
3753 * JobProcessErrorType:
3754 *
3755 * These constants represent the different steps of process spawning that
3756 * can produce an error.
3757 **/
3758 typedef enum job_process_error_type {
3759+ JOB_PROCESS_ERROR_DUP,
3760 JOB_PROCESS_ERROR_CONSOLE,
3761 JOB_PROCESS_ERROR_RLIMIT,
3762 JOB_PROCESS_ERROR_PRIORITY,
3763@@ -82,7 +93,7 @@
3764 int job_process_run (Job *job, ProcessType process);
3765
3766 pid_t job_process_spawn (JobClass *class, char * const argv[],
3767- char * const *env, int trace)
3768+ char * const *env, int trace, int script_fd)
3769 __attribute__ ((warn_unused_result));
3770
3771 void job_process_kill (Job *job, ProcessType process);
3772
3773=== modified file 'init/main.c'
3774--- init/main.c 2011-05-25 19:25:11 +0000
3775+++ init/main.c 2011-06-17 11:15:58 +0000
3776@@ -1,6 +1,6 @@
3777 /* upstart
3778 *
3779- * Copyright © 2010,2011 Canonical Ltd.
3780+ * Copyright © 2009-2011 Canonical Ltd.
3781 * Author: Scott James Remnant <scott@netsplit.com>.
3782 *
3783 * This program is free software; you can redistribute it and/or modify
3784@@ -62,6 +62,7 @@
3785
3786 /* Prototypes for static functions */
3787 #ifndef DEBUG
3788+static int logger_kmsg (NihLogLevel priority, const char *message);
3789 static void crash_handler (int signum);
3790 #endif /* DEBUG */
3791 static void term_handler (void *data, NihSignal *signal);
3792@@ -93,6 +94,8 @@
3793 static int restart = FALSE;
3794
3795
3796+extern int disable_sessions;
3797+
3798 /**
3799 * conf_dir:
3800 *
3801@@ -117,8 +120,6 @@
3802
3803 extern int use_session_bus;
3804
3805-extern int disable_sessions;
3806-
3807 /**
3808 * options:
3809 *
3810@@ -128,20 +129,20 @@
3811 { 0, "confdir", N_("specify alternative directory to load configuration files from"),
3812 NULL, "DIR", &conf_dir, NULL },
3813
3814- { 0, "startup-event", N_("specify an alternative initial event (for testing)"),
3815- NULL, "NAME", &initial_event, NULL },
3816+ { 0, "no-sessions", N_("Disable user and chroot sessions"),
3817+ NULL, NULL, &disable_sessions, NULL },
3818
3819 { 0, "no-startup-event", N_("do not emit any startup event (for testing)"),
3820 NULL, NULL, &disable_startup_event, NULL },
3821
3822- { 0, "no-sessions", N_("Disable user and chroot sessions"),
3823- NULL, NULL, &disable_sessions, NULL },
3824-
3825 { 0, "restart", NULL, NULL, NULL, &restart, NULL },
3826-
3827+
3828 { 0, "session", N_("use D-Bus session bus rather than system bus (for testing)"),
3829 NULL, NULL, &use_session_bus, NULL },
3830
3831+ { 0, "startup-event", N_("specify an alternative initial event (for testing)"),
3832+ NULL, "NAME", &initial_event, NULL },
3833+
3834 /* Ignore invalid options */
3835 { '-', "--", NULL, NULL, NULL, NULL, NULL },
3836
3837@@ -212,14 +213,18 @@
3838 *arg_end = ' ';
3839 }
3840
3841+
3842 /* Become the leader of a new session and process group, shedding
3843 * any controlling tty (which we shouldn't have had anyway - but
3844 * you never know what initramfs did).
3845 */
3846 setsid ();
3847
3848- /* Set the standard file descriptors. */
3849- if (system_setup_console (CONSOLE_NONE, FALSE) < 0)
3850+ /* Set the standard file descriptors to the ordinary console device,
3851+ * resetting it to sane defaults unless we're inheriting from another
3852+ * init process which we know left it in a sane state.
3853+ */
3854+ if (system_setup_console (CONSOLE_OUTPUT, (! restart)) < 0)
3855 nih_free (nih_error_get ());
3856
3857 /* Set the PATH environment variable */
3858@@ -231,7 +236,7 @@
3859 */
3860 if (chdir ("/"))
3861 nih_warn ("%s: %s", _("Unable to set root directory"),
3862- strerror (errno));
3863+ strerror (errno));
3864
3865 /* Mount the /proc and /sys filesystems, which are pretty much
3866 * essential for any Linux system; not to mention used by
3867@@ -242,7 +247,7 @@
3868
3869 err = nih_error_get ();
3870 nih_warn ("%s: %s", _("Unable to mount /proc filesystem"),
3871- err->message);
3872+ err->message);
3873 nih_free (err);
3874 }
3875
3876@@ -251,10 +256,15 @@
3877
3878 err = nih_error_get ();
3879 nih_warn ("%s: %s", _("Unable to mount /sys filesystem"),
3880- err->message);
3881+ err->message);
3882 nih_free (err);
3883 }
3884+ } else {
3885+ nih_log_set_priority (NIH_LOG_DEBUG);
3886+ nih_debug ("Running with UID %d as PID %d (PPID %d)",
3887+ (int)getuid (), (int)getpid (), (int)getppid ());
3888 }
3889+
3890 #else /* DEBUG */
3891 nih_log_set_priority (NIH_LOG_DEBUG);
3892 nih_debug ("Running with UID %d as PID %d (PPID %d)",
3893@@ -325,6 +335,7 @@
3894 }
3895 #endif /* DEBUG */
3896
3897+
3898 /* Watch children for events */
3899 NIH_MUST (nih_child_add_watch (NULL, -1, NIH_CHILD_ALL,
3900 job_process_handler, NULL));
3901@@ -335,7 +346,7 @@
3902
3903
3904 /* Read configuration */
3905- NIH_MUST (conf_source_new (NULL, DEFAULT_CONFFILE, CONF_FILE));
3906+ NIH_MUST (conf_source_new (NULL, CONFFILE, CONF_FILE));
3907 NIH_MUST (conf_source_new (NULL, conf_dir, CONF_JOB_DIR));
3908
3909 conf_reload ();
3910@@ -348,7 +359,7 @@
3911 err = nih_error_get ();
3912 if (err->number != ENOMEM) {
3913 nih_warn ("%s: %s", _("Unable to listen for private connections"),
3914- err->message);
3915+ err->message);
3916 nih_free (err);
3917 break;
3918 }
3919@@ -374,10 +385,12 @@
3920 #ifndef DEBUG
3921 if (use_session_bus == FALSE) {
3922 /* Now that the startup is complete, send all further logging output
3923- * to syslog instead of to the console.
3924+ * to kmsg instead of to the console.
3925 */
3926- openlog (program_name, LOG_CONS, LOG_DAEMON);
3927- nih_log_set_logger (nih_logger_syslog);
3928+ if (system_setup_console (CONSOLE_NONE, FALSE) < 0)
3929+ nih_free (nih_error_get ());
3930+
3931+ nih_log_set_logger (logger_kmsg);
3932 }
3933 #endif /* DEBUG */
3934
3935@@ -456,6 +469,7 @@
3936
3937 closedir (piddir);
3938 }
3939+
3940 } else {
3941 sigset_t mask;
3942
3943@@ -480,6 +494,67 @@
3944
3945 #ifndef DEBUG
3946 /**
3947+ * logger_kmsg:
3948+ * @priority: priority of message being logged,
3949+ * @message: message to log.
3950+ *
3951+ * Outputs the @message to the kernel log message socket prefixed with an
3952+ * appropriate tag based on @priority, the program name and terminated with
3953+ * a new line.
3954+ *
3955+ * Returns: zero on success, negative value on error.
3956+ **/
3957+static int
3958+logger_kmsg (NihLogLevel priority,
3959+ const char *message)
3960+{
3961+ int tag;
3962+ FILE *kmsg;
3963+
3964+ nih_assert (message != NULL);
3965+
3966+ switch (priority) {
3967+ case NIH_LOG_DEBUG:
3968+ tag = '7';
3969+ break;
3970+ case NIH_LOG_INFO:
3971+ tag = '6';
3972+ break;
3973+ case NIH_LOG_MESSAGE:
3974+ tag = '5';
3975+ break;
3976+ case NIH_LOG_WARN:
3977+ tag = '4';
3978+ break;
3979+ case NIH_LOG_ERROR:
3980+ tag = '3';
3981+ break;
3982+ case NIH_LOG_FATAL:
3983+ tag = '2';
3984+ break;
3985+ default:
3986+ tag = 'd';
3987+ }
3988+
3989+ kmsg = fopen ("/dev/kmsg", "w");
3990+ if (! kmsg)
3991+ return -1;
3992+
3993+ if (fprintf (kmsg, "<%c>%s: %s\n", tag, program_name, message) < 0) {
3994+ int saved_errno = errno;
3995+ fclose (kmsg);
3996+ errno = saved_errno;
3997+ return -1;
3998+ }
3999+
4000+ if (fclose (kmsg) < 0)
4001+ return -1;
4002+
4003+ return 0;
4004+}
4005+
4006+
4007+/**
4008 * crash_handler:
4009 * @signum: signal number received.
4010 *
4011@@ -711,7 +786,7 @@
4012 if (conf_dir)
4013 goto out;
4014
4015- conf_dir = DEFAULT_CONFDIR;
4016+ conf_dir = CONFDIR;
4017
4018 dir = getenv (CONFDIR_ENV);
4019 if (! dir)
4020
4021=== modified file 'init/man/init.5'
4022--- init/man/init.5 2011-05-25 19:25:11 +0000
4023+++ init/man/init.5 2011-06-17 11:15:58 +0000
4024@@ -1,10 +1,12 @@
4025-.TH init 5 2011-03-03 "Upstart"
4026+.TH init 5 2011-05-12 "Upstart"
4027 .\"
4028 .SH NAME
4029 init \- Upstart init daemon job configuration
4030 .\"
4031 .SH SYNOPSIS
4032 .B /etc/init/
4033+
4034+.B $HOME/.init/
4035 .\"
4036 .SH DESCRIPTION
4037 On startup, the Upstart
4038@@ -14,6 +16,11 @@
4039 directory, and watches for future changes to these files using
4040 .BR inotify (7).
4041
4042+If D\-Bus has been configured to allow non\-privileged users to invoke all
4043+Upstart D\-Bus methods, Upstart is also able to manage User Jobs. See
4044+.B User Jobs
4045+for further details.
4046+
4047 To be considered by Upstart, files in this directory must have a
4048 recognized suffix and may also be present in sub\-directories. There are
4049 two recognized suffixes:
4050@@ -44,7 +51,7 @@
4051 file.
4052
4053 Each configuration file defines the template for a single \fIservice\fP
4054-(long\-running process or daemon) or \fItask\fP (short\-lived process).
4055+(long-running process or daemon) or \fItask\fP (short-lived process).
4056
4057 Note that a configuration file is not itself a job: it is a description
4058 of an environmenta job could be run in. A job is the runtime embodiment
4059@@ -53,7 +60,7 @@
4060 The configuration file name as displayed by Upstart and associated
4061 tooling is taken from its relative path within the directory without the
4062 extension. For example a configuration file
4063-.I /etc/init/rc\-sysinit.conf
4064+.I /etc/init/rc-sysinit.conf
4065 is named
4066 .IR rc\-sysinit ,
4067 while a configuration file
4068@@ -65,6 +72,36 @@
4069
4070 Configuration files are plain text and should not be executable.
4071 .\"
4072+.SS User Jobs
4073+
4074+A User Job is a job configuration file created by a non\-privileged user
4075+in their
4076+.B $HOME/.init/
4077+directory. Job configuration files in this directory have
4078+the same syntax as system job configuration files.
4079+
4080+Any user can create user jobs, but that user can control
4081+.I only
4082+jobs they create.
4083+
4084+Users are able to manage their jobs using the standard
4085+.BR initctl (8)
4086+facility.
4087+
4088+Note that a user job configuration file cannot have the same name as a
4089+system job configuration file.
4090+.\"
4091+.SS Chroot Support
4092+
4093+Upstart is able to manage jobs within a \fBchroot\fP(2). To control jobs
4094+within the chroot environment, use the standard
4095+.BR initctl (8)
4096+facility. Note that it is not necessary to install D\-Bus within the
4097+chroot (in fact it is not recommended).
4098+
4099+Note that User Jobs can be created within a chroot environment.
4100+
4101+.\"
4102 .SS Configuration File Format
4103 Each line begins with a configuration stanza and continues until either
4104 the end of the line or a line containing a closing stanza. Line breaks
4105@@ -93,7 +130,7 @@
4106 .B script
4107 stanzas, only one of which is permitted. These specify the executable
4108 or shell script that will be run when the job is considered to be running.
4109-Once this process terminates, the job stop.
4110+Once this process terminates, the job stops.
4111
4112 All processes are run with the full job environment available as
4113 environment variables in their process.
4114@@ -553,15 +590,15 @@
4115 for more details.
4116 .\"
4117 .TP
4118-.B oom \fIADJUSTMENT\fR|\fBnever
4119+.B oom score \fIADJUSTMENT\fR|\fBnever
4120 Normally the OOM killer regards all processes equally, this stanza
4121 advises the kernel to treat this job differently.
4122
4123 .I ADJUSTMENT
4124 may be an integer value from
4125-.I \-16
4126+.I -999
4127 (very unlikely to be killed by the OOM killer) up to
4128-.I 14
4129+.I 1000
4130 (very likely to be killed by the OOM killer). It may also be the special
4131 value
4132 .B never
4133@@ -656,10 +693,20 @@
4134 .\"
4135 .SS Miscellaneous
4136 .TP
4137+.B kill signal \fISIGNAL
4138+Specifies the stopping signal,
4139+.I SIGTERM
4140+by default, a job's main process will receive when stopping the
4141+running job.
4142+
4143+.nf
4144+kill signal INT
4145+.fi
4146+.\"
4147+.TP
4148 .B kill timeout \fIINTERVAL
4149 Specifies the interval between sending the job's main process the
4150-.I SIGTERM
4151-and
4152+"stopping" (see above) and
4153 .I SIGKILL
4154 signals when stopping the running job. Default is 5 seconds.
4155 .\"
4156@@ -739,7 +786,7 @@
4157 .RB < https://launchpad.net/upstart/+bugs >
4158 .\"
4159 .SH COPYRIGHT
4160-Copyright \(co 2010,2011 Canonical Ltd.
4161+Copyright \(co 2009-2011 Canonical Ltd.
4162 .br
4163 This is free software; see the source for copying conditions. There is NO
4164 warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
4165@@ -747,5 +794,6 @@
4166 .\"
4167 .SH SEE ALSO
4168 .BR init (8)
4169+.BR initctl (8)
4170 .BR sh (1)
4171 .BR upstart-events (7)
4172
4173=== modified file 'init/man/init.8'
4174--- init/man/init.8 2011-05-25 19:25:11 +0000
4175+++ init/man/init.8 2011-06-17 11:15:58 +0000
4176@@ -18,7 +18,7 @@
4177 .B init
4178 are known as jobs and are defined by files in the
4179 .I /etc/init
4180-directory, unless overridden (see below). See
4181+directory. See
4182 .BR init (5)
4183 for more details on configuring Upstart.
4184 .\"
4185@@ -85,7 +85,7 @@
4186 .\"
4187 .TP
4188 .B \-\-session
4189-Connect to the D-Bus session bus. This should only be used for testing.
4190+Connect to the D\-Bus session bus. This should only be used for testing.
4191 .\"
4192 .TP
4193 .B \-\-startup-event \fIevent\fP
4194@@ -121,7 +121,7 @@
4195 .RB < https://launchpad.net/upstart/+bugs >
4196 .\"
4197 .SH COPYRIGHT
4198-Copyright \(co 2010, 2011 Canonical Ltd.
4199+Copyright \(co 2009\-2011 Canonical Ltd.
4200 .br
4201 This is free software; see the source for copying conditions. There is NO
4202 warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
4203@@ -136,6 +136,5 @@
4204 .BR started (7)
4205 .BR stopping (7)
4206 .BR stopped (7)
4207-.BR stopped (7)
4208 .BR telinit (8)
4209 .BR upstart-events (7)
4210
4211=== modified file 'init/parse_job.c'
4212--- init/parse_job.c 2011-05-25 19:25:11 +0000
4213+++ init/parse_job.c 2011-06-17 11:15:58 +0000
4214@@ -2,7 +2,7 @@
4215 *
4216 * parse_job.c - job definition parsing
4217 *
4218- * Copyright © 2010 Canonical Ltd.
4219+ * Copyright © 2010,2011 Canonical Ltd.
4220 * Author: Scott James Remnant <scott@netsplit.com>.
4221 *
4222 * This program is free software; you can redistribute it and/or modify
4223@@ -280,12 +280,12 @@
4224 * of the returned job are freed, the returned job will also be
4225 * freed.
4226 *
4227- * Returns: If @update is NULL, returns new JobClass structure on success, NULL on raised error.
4228- * If @update is not NULL, returns @update on success, or NULL on error.
4229+ * Returns: if @update is NULL, returns new JobClass structure on success, NULL on raised error.
4230+ * If @update is not NULL, returns @update or NULL on error.
4231 **/
4232 JobClass *
4233 parse_job (const void *parent,
4234- Session * session,
4235+ Session *session,
4236 JobClass *update,
4237 const char *name,
4238 const char *file,
4239@@ -304,11 +304,11 @@
4240 nih_debug ("Reusing JobClass %s (%s)",
4241 class->name, class->path);
4242 } else {
4243- nih_debug ("Creating new JobClass %s",
4244+ nih_debug ("Creating new JobClass %s",
4245 name);
4246- class = job_class_new (parent, name, session);
4247- if (! class)
4248- nih_return_system_error (NULL);
4249+ class = job_class_new (parent, name, session);
4250+ if (! class)
4251+ nih_return_system_error (NULL);
4252 }
4253
4254 if (nih_config_parse_file (file, len, pos, lineno,
4255@@ -1225,7 +1225,7 @@
4256 *
4257 * Parse an env stanza from @file, extracting a single argument of the form
4258 * VAR or VAR=VALUE. These are stored in the env array, which is increased
4259- * in size to accomodate the new value.
4260+ * in size to accommodate the new value.
4261 *
4262 * Returns: zero on success, negative value on error.
4263 **/
4264@@ -1796,6 +1796,7 @@
4265 {
4266 size_t a_pos, a_lineno;
4267 int ret = -1;
4268+ char *endptr;
4269 nih_local char *arg = NULL;
4270
4271 nih_assert (class != NULL);
4272@@ -1813,7 +1814,6 @@
4273
4274 if (! strcmp (arg, "timeout")) {
4275 nih_local char *timearg = NULL;
4276- char *endptr;
4277
4278 /* Update error position to the timeout value */
4279 *pos = a_pos;
4280@@ -1830,14 +1830,40 @@
4281 if (errno || *endptr || (class->kill_timeout < 0))
4282 nih_return_error (-1, PARSE_ILLEGAL_INTERVAL,
4283 _(PARSE_ILLEGAL_INTERVAL_STR));
4284-
4285- ret = nih_config_skip_comment (file, len, &a_pos, &a_lineno);
4286-
4287+ } else if (! strcmp (arg, "signal")) {
4288+ unsigned long status;
4289+ nih_local char *sigarg = NULL;
4290+ int signal;
4291+
4292+ /* Update error position to the exit status */
4293+ *pos = a_pos;
4294+ if (lineno)
4295+ *lineno = a_lineno;
4296+
4297+ sigarg = nih_config_next_arg (NULL, file, len, &a_pos,
4298+ &a_lineno);
4299+
4300+ if (! sigarg)
4301+ goto finish;
4302+
4303+ signal = nih_signal_from_name (sigarg);
4304+ if (signal < 0) {
4305+ errno = 0;
4306+ status = strtoul (sigarg, &endptr, 10);
4307+ if (errno || *endptr || (status > INT_MAX))
4308+ nih_return_error (-1, PARSE_ILLEGAL_SIGNAL,
4309+ _(PARSE_ILLEGAL_SIGNAL_STR));
4310+ }
4311+
4312+ /* Set the signal */
4313+ class->kill_signal = signal;
4314 } else {
4315 nih_return_error (-1, NIH_CONFIG_UNKNOWN_STANZA,
4316 _(NIH_CONFIG_UNKNOWN_STANZA_STR));
4317 }
4318
4319+ ret = nih_config_skip_comment (file, len, &a_pos, &a_lineno);
4320+
4321 finish:
4322 *pos = a_pos;
4323 if (lineno)
4324@@ -2247,6 +2273,7 @@
4325 nih_local char *arg = NULL;
4326 char *endptr;
4327 size_t a_pos, a_lineno;
4328+ int oom_adj;
4329 int ret = -1;
4330
4331 nih_assert (class != NULL);
4332@@ -2261,12 +2288,37 @@
4333 if (! arg)
4334 goto finish;
4335
4336- if (! strcmp (arg, "never")) {
4337- class->oom_adj = -17;
4338+ if (! strcmp (arg, "score")) {
4339+ nih_local char *scorearg = NULL;
4340+
4341+ /* Update error position to the score value */
4342+ *pos = a_pos;
4343+ if (lineno)
4344+ *lineno = a_lineno;
4345+
4346+ scorearg = nih_config_next_arg (NULL, file, len,
4347+ &a_pos, &a_lineno);
4348+ if (! scorearg)
4349+ goto finish;
4350+
4351+ if (! strcmp (scorearg, "never")) {
4352+ class->oom_score_adj = -1000;
4353+ } else {
4354+ errno = 0;
4355+ class->oom_score_adj = (int)strtol (scorearg, &endptr, 10);
4356+ if (errno || *endptr ||
4357+ (class->oom_score_adj < -1000) ||
4358+ (class->oom_score_adj > 1000))
4359+ nih_return_error (-1, PARSE_ILLEGAL_OOM,
4360+ _(PARSE_ILLEGAL_OOM_SCORE_STR));
4361+ }
4362+ } else if (! strcmp (arg, "never")) {
4363+ class->oom_score_adj = -1000;
4364 } else {
4365 errno = 0;
4366- class->oom_adj = (int)strtol (arg, &endptr, 10);
4367- if (errno || *endptr || (class->oom_adj < -17) || (class->oom_adj > 15))
4368+ oom_adj = (int)strtol (arg, &endptr, 10);
4369+ class->oom_score_adj = (oom_adj * 1000) / ((oom_adj < 0) ? 17 : 15);
4370+ if (errno || *endptr || (oom_adj < -17) || (oom_adj > 15))
4371 nih_return_error (-1, PARSE_ILLEGAL_OOM,
4372 _(PARSE_ILLEGAL_OOM_STR));
4373 }
4374
4375=== modified file 'init/parse_job.h'
4376--- init/parse_job.h 2011-05-25 19:25:11 +0000
4377+++ init/parse_job.h 2011-06-17 11:15:58 +0000
4378@@ -1,6 +1,6 @@
4379 /* upstart
4380 *
4381- * Copyright © 2009, 2010 Canonical Ltd.
4382+ * Copyright © 2010 Canonical Ltd.
4383 * Author: Scott James Remnant <scott@netsplit.com>.
4384 *
4385 * This program is free software; you can redistribute it and/or modify
4386
4387=== modified file 'init/paths.h'
4388--- init/paths.h 2011-05-25 19:25:11 +0000
4389+++ init/paths.h 2011-06-17 11:15:58 +0000
4390@@ -1,6 +1,6 @@
4391 /* upstart
4392 *
4393- * Copyright © 2010 Canonical Ltd.
4394+ * Copyright © 2010-2011 Canonical Ltd.
4395 * Author: Scott James Remnant <scott@netsplit.com>.
4396 *
4397 * This program is free software; you can redistribute it and/or modify
4398@@ -44,7 +44,6 @@
4399 #define CONSOLE "/dev/console"
4400 #endif
4401
4402-
4403 /**
4404 * DEV_NULL:
4405 *
4406@@ -57,25 +56,23 @@
4407
4408
4409 /**
4410- * DEFAULT_CONFFILE:
4411+ * CONFFILE:
4412 *
4413 * Init daemon configuration file.
4414 **/
4415-#ifndef DEFAULT_CONFFILE
4416-#define DEFAULT_CONFFILE "/etc/init.conf"
4417+#ifndef CONFFILE
4418+#define CONFFILE "/etc/init.conf"
4419 #endif
4420
4421-
4422 /**
4423- * DEFAULT_CONFDIR:
4424+ * CONFDIR:
4425 *
4426- * Top-level directory of the system configuration files.
4427+ * Default top-level directory of the system configuration files.
4428 **/
4429-#ifndef DEFAULT_CONFDIR
4430-#define DEFAULT_CONFDIR "/etc/init"
4431+#ifndef CONFDIR
4432+#define CONFDIR "/etc/init"
4433 #endif
4434
4435-
4436 /**
4437 * USERCONFDIR:
4438 *
4439@@ -90,7 +87,7 @@
4440 * CONFDIR_ENV:
4441 *
4442 * If this environment variable is set, read configuration files
4443- * from the location specified, rather than DEFAULT_CONFDIR.
4444+ * from the location specified, rather than CONFDIR.
4445 *
4446 * Value is expected to be the full path to an alternative job
4447 * configuration directory.
4448@@ -110,7 +107,6 @@
4449 #define SHELL "/bin/sh"
4450 #endif
4451
4452-
4453 /**
4454 * SBINDIR:
4455 *
4456@@ -120,7 +116,6 @@
4457 #define SBINDIR "/sbin"
4458 #endif
4459
4460-
4461 /**
4462 * TELINIT:
4463 *
4464@@ -131,13 +126,11 @@
4465 #define TELINIT SBINDIR "/telinit"
4466 #endif
4467
4468-
4469 /**
4470 * File extension for standard configuration files.
4471 **/
4472 #define CONF_EXT_STD ".conf"
4473
4474-
4475 /**
4476 * File extension for override files.
4477 *
4478@@ -147,7 +140,6 @@
4479 **/
4480 #define CONF_EXT_OVERRIDE ".override"
4481
4482-
4483 /**
4484 * Determine if specified path extension representes a standard
4485 * configuration file.
4486@@ -160,7 +152,6 @@
4487 #define IS_CONF_EXT_STD(period) \
4488 (!strcmp (period, CONF_EXT_STD))
4489
4490-
4491 /**
4492 * Determine if specified path extension representes an
4493 * override file.
4494@@ -173,7 +164,6 @@
4495 #define IS_CONF_EXT_OVERRIDE(period) \
4496 (!strcmp (period, CONF_EXT_OVERRIDE))
4497
4498-
4499 /**
4500 * Determine if specified filename has a valid configuration
4501 * file name extension.
4502@@ -187,5 +177,4 @@
4503 (IS_CONF_EXT_STD(period) || \
4504 IS_CONF_EXT_OVERRIDE(period))
4505
4506-
4507 #endif /* INIT_PATHS_H */
4508
4509=== modified file 'init/session.c'
4510--- init/session.c 2011-05-25 19:25:11 +0000
4511+++ init/session.c 2011-06-17 11:15:58 +0000
4512@@ -2,7 +2,7 @@
4513 *
4514 * session.c - session segregation
4515 *
4516- * Copyright © 2010 Canonical Ltd.
4517+ * Copyright © 2010,2011 Canonical Ltd.
4518 * Author: Scott James Remnant <scott@netsplit.com>.
4519 *
4520 * This program is free software; you can redistribute it and/or modify
4521
4522=== modified file 'init/session.h'
4523--- init/session.h 2011-05-25 19:25:11 +0000
4524+++ init/session.h 2011-06-17 11:15:58 +0000
4525@@ -1,6 +1,6 @@
4526 /* upstart
4527 *
4528- * Copyright © 2010 Canonical Ltd.
4529+ * Copyright © 2010,2011 Canonical Ltd.
4530 * Author: Scott James Remnant <scott@netsplit.com>.
4531 *
4532 * This program is free software; you can redistribute it and/or modify
4533
4534=== modified file 'init/system.c'
4535--- init/system.c 2010-04-27 19:52:43 +0000
4536+++ init/system.c 2011-06-17 11:15:58 +0000
4537@@ -48,27 +48,21 @@
4538 /**
4539 * system_kill:
4540 * @pid: process id of process,
4541- * @force: force the death.
4542- *
4543- * Kill all processes in the same process group as @pid, which may not
4544- * necessarily be the group leader.
4545- *
4546- * When @force is FALSE, the TERM signal is sent; when it is TRUE, KILL
4547- * is sent instead.
4548+ * @signal: signal to send.
4549+ *
4550+ * Send all processes in the same process group as @pid, which may not
4551+ * necessarily be the group leader the @signal.
4552 *
4553 * Returns: zero on success, negative value on raised error.
4554 **/
4555 int
4556 system_kill (pid_t pid,
4557- int force)
4558+ int signal)
4559 {
4560- int signal;
4561 pid_t pgid;
4562
4563 nih_assert (pid > 0);
4564
4565- signal = (force ? SIGKILL : SIGTERM);
4566-
4567 pgid = getpgid (pid);
4568
4569 if (kill (pgid > 0 ? -pgid : pid, signal) < 0)
4570
4571=== modified file 'init/system.h'
4572--- init/system.h 2010-04-27 19:52:43 +0000
4573+++ init/system.h 2011-06-17 11:15:58 +0000
4574@@ -29,7 +29,7 @@
4575
4576 NIH_BEGIN_EXTERN
4577
4578-int system_kill (pid_t pid, int force)
4579+int system_kill (pid_t pid, int signal)
4580 __attribute__ ((warn_unused_result));
4581
4582 int system_setup_console (ConsoleType type, int reset)
4583
4584=== modified file 'init/tests/test_conf.c'
4585--- init/tests/test_conf.c 2011-05-25 19:25:11 +0000
4586+++ init/tests/test_conf.c 2011-06-17 11:15:58 +0000
4587@@ -1052,6 +1052,82 @@
4588 nih_free (source);
4589
4590
4591+ /* Check that a file without the ".conf" extension is ignored.
4592+ */
4593+ TEST_FEATURE ("without .conf extension only");
4594+
4595+ TEST_FILENAME (dirname);
4596+ mkdir (dirname, 0755);
4597+
4598+ source = conf_source_new (NULL, dirname, CONF_JOB_DIR);
4599+ ret = conf_source_reload (source);
4600+
4601+ TEST_EQ (ret, 0);
4602+ TEST_HASH_EMPTY (source->files);
4603+ TEST_HASH_EMPTY (job_classes);
4604+
4605+ strcpy (filename, dirname);
4606+ strcat (filename, "/munchkin");
4607+
4608+ f = fopen (filename, "w");
4609+ fprintf (f, "exec echo\n");
4610+ fclose (f);
4611+
4612+ nfds = 0;
4613+ FD_ZERO (&readfds);
4614+ FD_ZERO (&writefds);
4615+ FD_ZERO (&exceptfds);
4616+
4617+ nih_io_select_fds (&nfds, &readfds, &writefds, &exceptfds);
4618+ nih_io_handle_fds (&readfds, &writefds, &exceptfds);
4619+
4620+ TEST_HASH_EMPTY (source->files);
4621+ TEST_HASH_EMPTY (job_classes);
4622+
4623+ nih_free (source);
4624+
4625+ unlink (filename);
4626+ rmdir (dirname);
4627+
4628+
4629+ /* Check that a file named just ".conf" is ignored.
4630+ */
4631+ TEST_FEATURE ("with literal .conf file");
4632+
4633+ TEST_FILENAME (dirname);
4634+ mkdir (dirname, 0755);
4635+
4636+ source = conf_source_new (NULL, dirname, CONF_JOB_DIR);
4637+ ret = conf_source_reload (source);
4638+
4639+ TEST_EQ (ret, 0);
4640+ TEST_HASH_EMPTY (source->files);
4641+ TEST_HASH_EMPTY (job_classes);
4642+
4643+ strcpy (filename, dirname);
4644+ strcat (filename, "/.conf");
4645+
4646+ f = fopen (filename, "w");
4647+ fprintf (f, "exec echo\n");
4648+ fclose (f);
4649+
4650+ nfds = 0;
4651+ FD_ZERO (&readfds);
4652+ FD_ZERO (&writefds);
4653+ FD_ZERO (&exceptfds);
4654+
4655+ nih_io_select_fds (&nfds, &readfds, &writefds, &exceptfds);
4656+ nih_io_handle_fds (&readfds, &writefds, &exceptfds);
4657+
4658+ TEST_HASH_EMPTY (source->files);
4659+ TEST_HASH_EMPTY (job_classes);
4660+
4661+ nih_free (source);
4662+
4663+ unlink (filename);
4664+ rmdir (dirname);
4665+
4666+
4667 /* Consume all available inotify instances so that the following
4668 * tests run without inotify.
4669 */
4670@@ -1508,6 +1584,76 @@
4671 nih_free (source);
4672
4673
4674+ /* Check that a file without the ".conf" extension is ignored
4675+ * when it exists at reload time.
4676+ */
4677+ TEST_FEATURE ("without .conf extension only");
4678+
4679+ TEST_FILENAME (dirname);
4680+ mkdir (dirname, 0755);
4681+
4682+ source = conf_source_new (NULL, dirname, CONF_JOB_DIR);
4683+ ret = conf_source_reload (source);
4684+
4685+ TEST_EQ (ret, 0);
4686+ TEST_HASH_EMPTY (source->files);
4687+ TEST_HASH_EMPTY (job_classes);
4688+
4689+ strcpy (filename, dirname);
4690+ strcat (filename, "/munchkin");
4691+
4692+ f = fopen (filename, "w");
4693+ fprintf (f, "exec echo\n");
4694+ fclose (f);
4695+
4696+ ret = conf_source_reload (source);
4697+
4698+ TEST_EQ (ret, 0);
4699+
4700+ TEST_HASH_EMPTY (source->files);
4701+ TEST_HASH_EMPTY (job_classes);
4702+
4703+ nih_free (source);
4704+
4705+ unlink (filename);
4706+ rmdir (dirname);
4707+
4708+
4709+ /* Check that a file named just ".conf" is ignored when it exists
4710+ * at reload time.
4711+ */
4712+ TEST_FEATURE ("with literal .conf file");
4713+
4714+ TEST_FILENAME (dirname);
4715+ mkdir (dirname, 0755);
4716+
4717+ source = conf_source_new (NULL, dirname, CONF_JOB_DIR);
4718+ ret = conf_source_reload (source);
4719+
4720+ TEST_EQ (ret, 0);
4721+ TEST_HASH_EMPTY (source->files);
4722+ TEST_HASH_EMPTY (job_classes);
4723+
4724+ strcpy (filename, dirname);
4725+ strcat (filename, "/.conf");
4726+
4727+ f = fopen (filename, "w");
4728+ fprintf (f, "exec echo\n");
4729+ fclose (f);
4730+
4731+ ret = conf_source_reload (source);
4732+
4733+ TEST_EQ (ret, 0);
4734+
4735+ TEST_HASH_EMPTY (source->files);
4736+ TEST_HASH_EMPTY (job_classes);
4737+
4738+ nih_free (source);
4739+
4740+ unlink (filename);
4741+ rmdir (dirname);
4742+
4743+
4744 nih_log_set_priority (NIH_LOG_MESSAGE);
4745
4746 /* Release consumed instances */
4747
4748=== modified file 'init/tests/test_control.c'
4749--- init/tests/test_control.c 2011-05-25 19:25:11 +0000
4750+++ init/tests/test_control.c 2011-06-17 11:15:58 +0000
4751@@ -1617,44 +1617,6 @@
4752 dbus_message_unref (method);
4753
4754
4755- /* Check that if an entry in the environment list has an invalid name,
4756- * an error is returned immediately.
4757- */
4758- TEST_FEATURE ("with invalid name in environment list");
4759- method = dbus_message_new_method_call (
4760- dbus_bus_get_unique_name (conn),
4761- DBUS_PATH_UPSTART,
4762- DBUS_INTERFACE_UPSTART,
4763- "EmitEvent");
4764-
4765- dbus_connection_send (client_conn, method, &serial);
4766- dbus_connection_flush (client_conn);
4767- dbus_message_unref (method);
4768-
4769- TEST_DBUS_MESSAGE (conn, method);
4770- assert (dbus_message_get_serial (method) == serial);
4771-
4772- message = nih_new (NULL, NihDBusMessage);
4773- message->connection = conn;
4774- message->message = method;
4775-
4776- env = nih_str_array_new (message);
4777- assert (nih_str_array_add (&env, message, NULL, "FOO BAR=BAZ"));
4778-
4779- ret = control_emit_event (NULL, message, "test", env, TRUE);
4780-
4781- TEST_LT (ret, 0);
4782-
4783- dbus_error = (NihDBusError *)nih_error_get ();
4784- TEST_ALLOC_SIZE (dbus_error, sizeof (NihDBusError));
4785- TEST_EQ (dbus_error->number, NIH_DBUS_ERROR);
4786- TEST_EQ_STR (dbus_error->name, DBUS_ERROR_INVALID_ARGS);
4787- nih_free (dbus_error);
4788-
4789- nih_free (message);
4790- dbus_message_unref (method);
4791-
4792-
4793 TEST_DBUS_CLOSE (conn);
4794 TEST_DBUS_CLOSE (client_conn);
4795 TEST_DBUS_END (dbus_pid);
4796
4797=== modified file 'init/tests/test_environ.c'
4798--- init/tests/test_environ.c 2011-05-25 19:25:11 +0000
4799+++ init/tests/test_environ.c 2011-06-17 11:15:58 +0000
4800@@ -904,83 +904,6 @@
4801
4802
4803 void
4804-test_valid (void)
4805-{
4806- int valid;
4807-
4808- TEST_FUNCTION ("environ_valid");
4809-
4810- /* Check that an all-uppercase key is valid. */
4811- TEST_FEATURE ("with uppercase key");
4812- valid = environ_valid ("FOO", 3);
4813-
4814- TEST_TRUE (valid);
4815-
4816-
4817- /* Check that an all-lowercase key is valid. */
4818- TEST_FEATURE ("with lowercase key");
4819- valid = environ_valid ("foo", 3);
4820-
4821- TEST_TRUE (valid);
4822-
4823-
4824- /* Check that an all-alphanumeric key is valid. */
4825- TEST_FEATURE ("with alphanumeric key");
4826- valid = environ_valid ("Foo45", 5);
4827-
4828- TEST_TRUE (valid);
4829-
4830-
4831- /* Check that an underscores in the key are valid. */
4832- TEST_FEATURE ("with underscores in key");
4833- valid = environ_valid ("FOO_45", 6);
4834-
4835- TEST_TRUE (valid);
4836-
4837-
4838- /* Check that a key may begin with an underscore. */
4839- TEST_FEATURE ("with initial underscore");
4840- valid = environ_valid ("_FOO", 4);
4841-
4842- TEST_TRUE (valid);
4843-
4844-
4845- /* Check that a key may not begin with a number. */
4846- TEST_FEATURE ("with initial number");
4847- valid = environ_valid ("9FOO", 4);
4848-
4849- TEST_FALSE (valid);
4850-
4851-
4852- /* Check that a key may not begin with any other character. */
4853- TEST_FEATURE ("with initial dash");
4854- valid = environ_valid ("-FOO", 4);
4855-
4856- TEST_FALSE (valid);
4857-
4858-
4859- /* Check that a key may not contain dashes. */
4860- TEST_FEATURE ("with dash");
4861- valid = environ_valid ("FOO-BAR", 7);
4862-
4863- TEST_FALSE (valid);
4864-
4865-
4866- /* Check that a key may not contain spaces. */
4867- TEST_FEATURE ("with space");
4868- valid = environ_valid ("FOO BAR", 7);
4869-
4870- TEST_FALSE (valid);
4871-
4872-
4873- /* Check that the length is honoured. */
4874- TEST_FEATURE ("with longer string then key");
4875- valid = environ_valid ("FOO BAR", 3);
4876-
4877- TEST_TRUE (valid);
4878-}
4879-
4880-void
4881 test_all_valid (void)
4882 {
4883 char **env;
4884@@ -1026,22 +949,6 @@
4885 TEST_FALSE (valid);
4886
4887 nih_free (env);
4888-
4889-
4890- /* Check that an entry with an invalid key name means the table
4891- * is also not valid.
4892- */
4893- TEST_FEATURE ("with invalid key");
4894- env = nih_str_array_new (NULL);
4895- assert (nih_str_array_add (&env, NULL, NULL, "FOO=BAR"));
4896- assert (nih_str_array_add (&env, NULL, NULL, "BAR BEE=FOO"));
4897- assert (nih_str_array_add (&env, NULL, NULL, "WIBBLE=woo"));
4898-
4899- valid = environ_all_valid (env);
4900-
4901- TEST_FALSE (valid);
4902-
4903- nih_free (env);
4904 }
4905
4906
4907@@ -1648,19 +1555,6 @@
4908 nih_free (error);
4909
4910
4911- /* Check that attempting to expand an illegal variable name results in
4912- * an error being raised.
4913- */
4914- TEST_FEATURE ("with expansion of illegal variable");
4915- str = environ_expand (NULL, "this is a ${WIB WOB} test", env);
4916-
4917- TEST_EQ_P (str, NULL);
4918-
4919- error = nih_error_get ();
4920- TEST_EQ (error->number, ENVIRON_ILLEGAL_PARAM);
4921- nih_free (error);
4922-
4923-
4924 /* Check that inventing a new operator results in an error
4925 * being raised.
4926 */
4927@@ -1701,7 +1595,6 @@
4928 test_lookup ();
4929 test_get ();
4930 test_getn ();
4931- test_valid ();
4932 test_all_valid ();
4933 test_expand ();
4934
4935
4936=== modified file 'init/tests/test_job_class.c'
4937--- init/tests/test_job_class.c 2011-05-25 19:25:11 +0000
4938+++ init/tests/test_job_class.c 2011-06-17 11:15:58 +0000
4939@@ -119,6 +119,7 @@
4940 TEST_EQ (class->task, FALSE);
4941
4942 TEST_EQ (class->kill_timeout, 5);
4943+ TEST_EQ (class->kill_signal, SIGTERM);
4944
4945 TEST_EQ (class->respawn, FALSE);
4946 TEST_EQ (class->respawn_limit, 10);
4947@@ -131,7 +132,7 @@
4948
4949 TEST_EQ (class->umask, 022);
4950 TEST_EQ (class->nice, 0);
4951- TEST_EQ (class->oom_adj, 0);
4952+ TEST_EQ (class->oom_score_adj, 0);
4953
4954 for (i = 0; i < RLIMIT_NLIMITS; i++)
4955 TEST_EQ_P (class->limits[i], NULL);
4956@@ -1942,7 +1943,7 @@
4957 TEST_FREE_TAG (message);
4958
4959 env = nih_str_array_new (message);
4960- assert (nih_str_array_add (&env, message, NULL, "FOO BAR=wibble"));
4961+ assert (nih_str_array_add (&env, message, NULL, "FOO"));
4962
4963 ret = job_class_start (class, message, env, TRUE);
4964
4965@@ -2378,7 +2379,7 @@
4966 TEST_FREE_TAG (message);
4967
4968 env = nih_str_array_new (message);
4969- assert (nih_str_array_add (&env, message, NULL, "FOO BAR=wibble"));
4970+ assert (nih_str_array_add (&env, message, NULL, "FOO"));
4971
4972 ret = job_class_stop (class, message, env, TRUE);
4973
4974@@ -2862,7 +2863,7 @@
4975 TEST_FREE_TAG (message);
4976
4977 env = nih_str_array_new (message);
4978- assert (nih_str_array_add (&env, message, NULL, "FOO BAR=wibble"));
4979+ assert (nih_str_array_add (&env, message, NULL, "FOO"));
4980
4981 ret = job_class_restart (class, message, env, TRUE);
4982
4983
4984=== modified file 'init/tests/test_job_process.c'
4985--- init/tests/test_job_process.c 2011-05-25 19:25:11 +0000
4986+++ init/tests/test_job_process.c 2011-06-17 11:15:58 +0000
4987@@ -821,7 +821,7 @@
4988
4989 class = job_class_new (NULL, "test", NULL);
4990
4991- pid = job_process_spawn (class, args, NULL, FALSE);
4992+ pid = job_process_spawn (class, args, NULL, FALSE, -1);
4993 TEST_GT (pid, 0);
4994
4995 waitpid (pid, NULL, 0);
4996@@ -859,7 +859,7 @@
4997 class = job_class_new (NULL, "test", NULL);
4998 class->console = CONSOLE_NONE;
4999
5000- pid = job_process_spawn (class, args, NULL, FALSE);
The diff has been truncated for viewing.

Subscribers

People subscribed via source and target branches

to all changes: