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
=== modified file 'ChangeLog'
--- ChangeLog 2011-05-25 19:38:25 +0000
+++ ChangeLog 2011-06-17 11:15:58 +0000
@@ -1,444 +1,427 @@
12011-04-27 James Hunt <james.hunt@ubuntu.com>12011-06-14 James Hunt <james.hunt@ubuntu.com>
22
3 * scripts/init-checkconf.sh:3 * NEWS: Release 1.3
4 - New function upstart_running.4
5 - We now check to ensure no other instance running.52011-06-14 James Hunt <james.hunt@ubuntu.com>
6 - Use list command rather than status since the latter requires an6
7 instance variable to be specified (LP: #770532).7 * contrib/vim/syntax/upstart.vim: Updates for kill, oom, expect
8 - Improve cleanup safety.8 and limit.
9 * scripts/man/init-checkconf.8: Added limitations section.9
10102011-06-07 Scott James Remnant <scott@netsplit.com>
112011-04-20 James Hunt <james.hunt@ubuntu.com>11
1212 * init/job_process.c (job_process_spawn): Make sure we don't close
13 * control_get_job_by_name: Fix to relax session rigidity for user13 our own file descriptor if it already has the right value.
14 sessions (allow user sessions to see into the global14
15 namespace for backwards compatability) (LP: #767053).152011-06-06 James Hunt <james.hunt@ubuntu.com>
1616
172011-04-15 James Hunt <james.hunt@ubuntu.com>17 Add override file support.
1818
19 * init/conf.c:19 * init/conf.c:
20 - conf_source_reload_file(): Added missing error return if override20 - conf_reload_path(): Now takes an extra override_path parameter.
21 doesn't parse (code path currently unused).21 - is_conf_file() / is_conf_file_std() / is_conf_file_override(): New
22 - Documentation updates.22 functions to determine type of given file path.
23 * init/job.c: job_new(): Fix for nasty OOM scenario when an attempt is made23 - toggle_conf_name(): New function which convert a conf file
24 to start a chroot job with same name as running single-instance non-chroot24 name to an override name and vice versa.
25 job. Previously, the path for a chrooted Job was set from the (nul) instance25 - majority of remaining functions updated to handle override
26 name of its parent JobClass. However, since that job instance name already26 files.
27 existed outside the chroot and was already D-Bus registered,27 * init/conf.h: Prototypes.
28 nih_dbus_object_new() (which allocates storage and is called by28 * init/job_class.c: Whitespace.
29 job_register()) returned NULL and kept doing so due to being called29 * init/man/init.5: Updated to document override file support.
30 within NIH_MUST(). This resulted in OOM due to an as-yet unidentified30 * init/man/init.8: Added reference to control-alt-delete(7) man page.
31 D-Bus bug (possibly a leak in find_subtree_recurse()).31 * init/paths.h: New macros CONF_EXT_OVERRIDE, CONF_EXT_STD,
32 * init/session.h: Documentation updates.32 IS_CONF_FILE_OVERRIDE and IS_CONF_FILE_STD.
33 * util/test_initctl.c: Cleaned up variable names33 * init/parse_conf.c: Added assertion to remind us forcibly to add
34 in RUN_COMMAND macro.34 override-handling code for directories if we ever allow content in
35 * init/parse_job.c: Documentation updates.35 'init.conf'.
3636 * init/parse_job.c (parse_job): Additional parameter 'update' to
372011-04-06 James Hunt <james.hunt@ubuntu.com>37 allow override files to replace existing Job details.
3838 * init/parse_job.h: Updated parse_job() prototype.
39 * init/conf.c: conf_select_job(): Added Session parameter.39 * init/test_conf.c
40 * init/control.c: control_get_job_by_name(): Handle multiple jobs with same40 - New macros TEST_ENSURE_CLEAN_ENV() and
41 name (but different session) in job_classes hash.41 TEST_FORCE_WATCH_UPDATE().
42 * init/job_class.c:42 - test_override(): New function.
43 - job_class_remove(): Added Session parameter.43 - test_toggle_conf_name(): New function.
44 - job_class_consider(): Handle multiple jobs with same name44 * init/test_parse_job.c:
45 (but different session) in job_classes hash.45 - Updated for extra parse_job() parameter.
46 - job_class_reconsider(): Handle multiple jobs with same name46 - added a test feature to test_parse_job() to exercise new
47 (but different session) in job_classes hash.47 parameter to parse_job().
48 - job_class_remove(): Handle incorrect session.48 * util/man/initctl.8: Clarified what it means to restart a job.
49 * init/job_process.c: job_process_spawn(): Updated for sessions and49
50 chroots.50 Add udev and socket bridges.
51 * init/job_process.h: New enums for: 51
52 - JOB_PROCESS_ERROR_SETUID52 * Makefile.am: Added extra directory.
53 - JOB_PROCESS_ERROR_SETGID53 * New files:
54 * init/session.c:54 - extra/Makefile.am
55 - session_from_dbus(): Added ability to disable sessions.55 - extra/conf/upstart-socket-bridge.conf
56 - Added disable_sessions variable, set via main().56 - extra/conf/upstart-udev-bridge.conf
57 * init/session.h: Added tabular comment summarising Session object57 - extra/man/socket-event.7
58 contents for different environments.58 - extra/man/upstart-socket-bridge.8
59 * init/Makefile.am: Reverted special-casing for session.c.59 - extra/man/upstart-udev-bridge.8
60 * init/main.c: Addition of new command-line option "--no-sessions" to60 - extra/upstart-socket-bridge.c
61 disable chroot+user sessions (providing a "traditional" Upstart61 - extra/upstart-udev-bridge.c
62 environment. The primary use for this option is the test suite.62 * configure.ac:
63 * init/man/init.8: Updates for "--no-sessions".63 - Check for udev (for upstart-udev-bridge).
64 * init/tests/test_*.c: Replaced explicit Sessions with NULL64 - Add extra/Makefile to AC_CONFIG_FILES.
65 session since tests are not yet session-aware (with the exception of65 * dbus/com.ubuntu.Upstart.xml: Add EmitEventWithFile method.
66 test_job_process.c, all main() functions now set the66 * init/control.c:
67 UPSTART_NO_SESSIONS variable to disable sessions).67 - control_emit_event(): Now a wrapper for control_emit_event_with_file.
68 - control_emit_event_with_file(): New function that operates on an fd.
69 * init/control.h: Prototype for control_emit_event_with_file().
70 * init/event.c:
71 - event_new(): Initialize event fd.
72 - event_pending_handle_jobs(): Now calls event_operator_fds().
73 * init/event.c: Add fd to Event struct.
74 * init/event_operator.c: event_operator_fds(): New function.
75 * init/event_operator.h: Prototype for event_operator_fds().
76 * init/job.c: job_new(): Initialize fd members.
77 * init/job.h: Add fds and num_fds to Job struct.
78
792011-06-03 James Hunt <james.hunt@ubuntu.com>
80
81 Add session support. Note that there are no automatically runnable and
82 explicit tests yet. However, see TESTING.sessions.
83
84 * TESTING.sessions: ASCII (reStructuredText) document explaining
85 how to run manual tests for session support (for chroots).
86 * dbus/Upstart.conf: Simplified to support allowing users to invoke
87 all methods (since Upstart now isolates commands by user).
88 * init/Makefile.am: Added session.[ch] files.
89 * init/session.c: New file. Note that session_from_dbus() will disable sessions
90 (by returning the NULL session) if environment variable "UPSTART_NO_SESSIONS"
91 is set to any value (used by tests).
92 * init/session.h: New file.
93 * init/parse_job.h: parse_job(): Add session pointer to prototype.
94 * init/parse_job.c:
95 - parse_job(): Add session parameter.
96 - Update calls to job_class_new() to pass session pointer.
97 * init/job.c: job_new(): Crucial change to ensure chroot sessions have
98 a unique D-Bus name (LP:#728531).
99 * init/job_class.c:
100 - job_class_new(): Add session parameter and session support.
101 - job_class_remove(): Add session parameter to prototype.
102 - job_class_consider(): Only consider jobs from the appropriate session.
103 - job_class_reconsider(): Only consider jobs from the appropriate session.
104 - job_class_start(): Disallow out-of-session modification.
105 - job_class_stop(): Disallow out-of-session modification.
106 - job_class_restart(): Disallow out-of-session modification.
107 * init/main.c: Add "--no-sessions" command-line option to disable
108 sessions and revert to traditional behaviour.
109 * init/job_class.h:
110 - job_class_new(): Add session pointer to prototype.
111 - JobClass: Add session member.
112 * init/job_process.c: job_process_spawn():
113 - Call chroot(2) for chroot sessions.
114 - Call setuid(2) for user session jobs.
115 * init/job.c:
116 - job_emit_event(): Set session for event.
117 - job_start(): Disallow out-of-session modification.
118 - job_stop(): Disallow out-of-session modification.
119 - job_restart(): Disallow out-of-session modification.
120 * init/event.h: Event: Add session member.
121 * init/event.c:
122 - event_new(): initialize session to NULL.
123 - event_pending_handle_jobs(): Add session handling.
124 - event_finished(): Set session for failure event.
125 * init/control.c:
126 - control_get_job_by_name(): Add session handling.
127 - control_get_all_jobs(): Add session handling.
128 - control_emit_event(): Add session handling.
129 * init/conf.c:
130 - conf_source_new(): Initialise session to NULL.
131 - conf_reload_path(): Pass session to parse_job().
132 - conf_select_job(): Add session parameter.
133 * init/conf.h:
134 - ConfSource: Add session member.
135 - conf_select_job(): Add session parameter to prototype.
136 * All tests updated to set "UPSTART_NO_SESSIONS" (to disable
137 sessions).
138
1392011-06-02 James Hunt <james.hunt@ubuntu.com>
140
141 * contrib/bash_completion/upstart:
142 - Made function names more meaningful:
143 - _upstart_jobs: Now returns a unique list
144 - _upstart_events (nee _upstart_named_events ) now considers all
145 "emits" tokens.
146 - Updates for "check-config" and "show-config".
147 - Added "--session" option.
148 - Added "--no-wait" for emit, reload and restart.
149
150 Man page updates.
151
152 * init/man/init.5:
153 - Quoted dashes.
154 - Explain handling of duplicated stanzas.
155 - "respawn": Document default count and interval.
156 - "emits": Reference "initctl check-config".
157 - Added BUGS section.
158 - Added copyright.
159 * init/man/init.8:
160 - Quoted dashes.
161 - See Also: Added control-alt-delete(7).
162 * util/man/initctl.8:
163 - Quoted dashes.
164 - "restart": Clarified meaning.
165 - "list": Explained "stop/waiting" jobs.
166
1672011-06-01 James Hunt <james.hunt@ubuntu.com>
168
169 Add D-Bus session support to initctl.
170
171 * util/initctl.c:
172 - Added "--session" command-line option.
173 - dbus_bus_type_setter(): New function used by option parser to
174 distinguish system/session D-Bus bus type.
175 - system_bus variable now replaced by two others: use_dbus (boolean)
176 and dbus_bus_type.
177 - upstart_open(): Updated to handle multiple D-Bus bus types.
178 * util/man/initctl.8: Update for "--session" option.
179 * util/tests/test_initctl.c: Updated to make use of use_dbus and
180 dbus_bus_type rather than system_bus.
181
182 Add "show-config" command to initctl.
183
184 * util/initctl.c:
185 - New functions:
186 - job_class_condition_handler(): Handler function to retrieve job conditions.
187 - job_class_condition_err_handler(): Handler error function for
188 job_class_condition_handler().
189 - job_class_parse_events(): Convert RPN "start on" and "stop on" conditions to
190 human-readable format.
191 - job_class_show_emits(): Display events which job emits.
192 - job_class_show_conditions(): Make D-Bus calls to retrieve "start on" and
193 "stop on" conditions.
194 - show_config_action: Handle "show-config" command..
195 * util/initctl.h: New file providing stack-handling functionality for
196 RPN parsing for "show-config" command.
197 * util/Makefile.am: Added initctl.h to initctl_SOURCES.
198 * util/man/initctl.8: Updated for "show-config" command and associated
199 options.
68 * util/tests/test_initctl.c:200 * util/tests/test_initctl.c:
69 - START_UPSTART now specifies "--no-sessions"201 - New macros START_UPSTART, STOP_UPSTART, RUN_COMMAND, CREATE_FILE and DELETE_FILE.
70 - test_check_config(): Added test for "--warn".202 These are required since due to the introduction of the
71 * scripts/init-checkconf.sh: Script now also checks any script203 "show-config" initctl command, initctl is no longer solely a proxy
72 sections found unless the new "--noscript" option is specified.204 to Upstart: it now has some intelligence (it parses the
73 Added required "--no-sessions" option to upstart_cmd to ensure Upstart205 "emits", "start on" and "stop on" conditions) and thus must be
74 treats clients requests in traditional manner.206 tested directly.
75 * scripts/man/init-checkconf.8: Update for "--noscript".207 - test_show_config(): New function to test "initctl show-config".
76 * util/initctl.c: Added "--warn" option for check-config command to208 - in_chroot(): New function to detect if tests are being run from
77 warn if any events or jobs are not known.209 within a chroot environment.
78210 - dbus_configured(): New function which performs a basic check to
792011-03-24 James Hunt <james.hunt@ubuntu.com>211 establish if D-Bus is configured correctly.
80212 - main(): Added call to test_show_config(), conditional on
81 * init/tests/test_control.c: Added comment.213 a non-chroot environment and a working D-Bus system.
82 * scripts/initctl2dot.py: Fixes to handle 'emits' glob syntax:214
83 - header(): Change default node to be an event to simplify handling215 Add "check-config" command to initctl.
84 globs in 'emits' stanzas.216
85 - footer(): Updated for glob event nodes.
86 - sanitize(): Protect against glob syntax.
87 - show_event(): Update for glob event nodes.
88 - show_job(): Explicit specification of record node.
89 - show_edges(): Handle 'emits' glob syntax.
90
912011-03-15 James Hunt <james.hunt@ubuntu.com>
92
93 * configure.ac: Bump version to 0.9.3.
94 * NEWS: Entry for version 0.9.3.
95 * conf/rc-sysinit.conf: Added emits stanza for runlevel event.
96 * extra/conf/upstart-socket-bridge.conf: Added emits stanza for socket
97 event.
98 * extra/conf/upstart-udev-bridge.conf: Added emits stanza for udev class
99 of events (using globs).
100 * init/man/init.5: Updated emits stanza section to explain use of
101 wildcard characters.
102 * util/initctl.c:217 * util/initctl.c:
103 - New functions:218 - New functions:
219 - allow_event(): Determine if specified event is erroneous or not.
220 Handles globbing.
104 - allow_job(): Determine if specified job is erroneous or not.221 - allow_job(): Determine if specified job is erroneous or not.
105 Handles variables (such as instance variables).222 Handles variables (such as instance variables).
106 - allow_event(): Determine if specified event is erroneous or not.
107 Handles globbing.
108 - eval_expr_tree():
109 - Added calls to allow_job() and allow_event().
110 - Slight simplification of operand-handling code.
111 * util/tests/test_initctl.c: Simplification of dbus_configured().
112
1132011-03-11 James Hunt <james.hunt@ubuntu.com>
114
115 * scripts/Makefile.am: Install improvements for
116 "make distcheck". Added uninstall for scripts.
117
1182011-03-10 James Hunt <james.hunt@ubuntu.com>
119
120 * extra/conf/upstart-socket-bridge.conf: Start as soon as networking is
121 available.
122 * extra/man/socket-event.7: Minor typo fixes and troff quoting for
123 dashes.
124 * extra/man/upstart-socket-bridge.8: Removed reference to socket(8) and
125 replaced with socket-event(7).
126 * extra/man/upstart-udev-bridge.8: Minor typo fixes, troff quoting for
127 dashes, and replaced literal quotes with troff quotes.
128 * init/control.c: Typo.
129 * init/main.c: Corrected indentation.
130 * init/man/init.5: Minor typo fixes, troff quoting for
131 dashes, and replaced literal quotes with troff quotes.
132 * init/man/init.8: Typo.
133 * scripts/init-checkconf.sh: Fixed to ensure safety and portability:
134 - Quoted all variables.
135 - Removed non-portable syntax.
136 - Changed to using getopt(1) rather than getopts(1), and added
137 long-options.
138 * scripts/initctl2dot.py:
139 - Changed from os.popen() to (safer)
140 subprocess.Popen()
141 - Formatting and typos.
142 * util/initctl.c: Typo.
143 * util/man/initctl.8: Minor typo fixes, troff quoting for
144 dashes, and replaced literal quotes with troff quotes.
145 * util/tests/test_initctl.c:
146 - START_UPSTART: improved comments and minor tidyup.
147 - test_show_config(): Placed tests for expected number of lines of
148 output *after* checking expected line values. This ensures that if
149 problems are encountered (for example D-Bus issues), the person
150 viewing the log has a hope of working out what went wrong :-)
151 - test_check_config(): As test_show_config().
152 - dbus_configured(): New function that performs a highly rudimentary
153 check to see if D-Bus appears to be configured for the environment
154 the tests run in.
155 - main(): Improved test for running tests within a chroot: we do now
156 run all tests assuming that D-Bus is found to be working within a
157 chroot environment.
158
1592011-03-07 James Hunt <james.hunt@ubuntu.com>
160
161 * extra/man/upstart-udev-bridge.8: Added examples.
162 * extra/Makefile.am: Create links to upstart-udev-bridge
163 man page for well-known Upstart udev events.
164 * util/initctl.h: Improved comments for CheckConfigData.
165 * scripts/init-checkconf.sh:
166 - cleanup(): Make use of $upstart_pid.
167 - main(): disown $upstart_pid to stop newer bash versions
168 displaying changed child process status.
169 * scripts/init2dot.py:
170 - Removed erroneous check option.
171 - Improved exaplanation of '-r' option.
172 * scripts/Makefile.am: Added manual pages.
173 * scripts/man/init-checkconf.8: New manual page.
174 * scripts/man/initctl2dot.8: New manual page.
175
1762011-03-04 James Hunt <james.hunt@ubuntu.com>
177
178 * contrib/Makefile.am: Fixed paths and names for scripts.
179 * extra/Makefile.am: Update for upstart-socket-bridge.
180 * util/tests/test_initctl.c:
181 - in_chroot(): New function to detect if in chroot environment.
182 - main(): Call in_chroot() to work around bug lp:728988.
183 - START_UPSTART(): Only try to connect 10 times. Don't use
184 upstart_open() since this uses the system bus whereas we care
185 about the session bus. Removed "--debug" as this confuses the
186 log output.
187 * Moved scripts from "contrib/utils/" to "scripts/" and ensured they
188 now install on "make install".
189 * Makefile.am: Added scripts directory.
190 * configure.ac: Added scripts/Makefile.
191 * Packaging changes for socket bridge.
192
1932011-03-03 James Hunt <james.hunt@ubuntu.com>
194
195 * extra/man/socket-event.7: Man page for new socket event.
196 * extra/man/upstart-socket-bridge.8: Man page for socket bridge.
197 * upstart-socket-bridge.conf: configuration file for socket
198 bridge.
199 * contrib/bash_completion/upstart: Updated for new initctl commands
200 "show-config" and "check-config".
201 * contrib/utils/init-check.sh: Script to determine if the
202 specified job configuration file (located outside of /etc/init/)
203 is valid or not.
204 * contrib/utils/initctl2dot.py: Simply Python script to convert new initctl
205 output to GraphViz dot format. Example usage:
206 initctl2dot.py -o - | dot -Tpng -o upstart.png
207 * init/control.h: New define for USE_SESSION_BUS_ENV.
208 * init/control.c:
209 - control_handle_bus_type(): New function to allow selection of
210 session bus via env var "UPSTART_USE_SESSION_BUS" (for testing).
211 - control_bus_open(): Connect to either D-Bus system bus or session bus.
212 * init/man/init.8: Updated for --confdir, --session, --no-startup-event
213 and --startup-event.
214 * init/main.c:
215 - Added new options '--startup-event' and '--no-startup-event'.
216 - Addition of --session and --confdir command-line option (required for
217 test framework to test changes to initctl).
218 - handle_confdir(): New function to select alternate confdir using env
219 var "UPSTART_CONFDIR" (for testing).
220 * init/paths.h:
221 - Renamed CONDIR to DEFAULT_CONFDIR to make its use clearer now it can be changed.
222 - Renamed CONFILE to DEFAULT_CONFFILE for parity with DEFAULT_CONFDIR.
223 - Added define for CONFDIR_ENV.
224 * util/initctl.c:
225 - Addition of --session command-line option (required for test framework to test
226 visualisation changes to initctl).
227 - Changed 'system_bus' variable to 'use_dbus' since now we can use either D-Bus bus type.
228 - Added 'dbus_bus_type' which encodes D-Bus bus type to use.
229 - Added 'verbose_detail' and 'enumerate_events' variables to
230 - Created new functions:
231 - show_config_action(): New function to handle 'show-config' command.
232 - job_class_condition_handler(): Handler function to retrieve job conditions.
233 - job_class_condition_err_handler(): Handler error function for
234 job_class_condition_handler().
235 - job_class_parse_events(): Convert RPN "start on" and "stop on" conditions to
236 human-readable format.
237 - job_class_show_emits(): Display events which job emits.
238 - job_class_show_conditions(): Make D-Bus calls to retrieve "start on" and
239 "stop on" conditions.
240 - dbus_bus_type_setter(): Used by option parser to distinguish system/session
241 D-Bus bus type.
242 - New functions for check-config command;
243 - check_config_action: Handler for new check-config command-line
244 option.
245 - ignored_events_setter(): handler for '--ignore-events' command-line
246 option for check-config command.
247 - eval_expr_tree(): Evaluate expression tree.
248 - check_condition(): High-level function to handle checking start
249 on/stop on conditions.
250 - tree_filter(): Used for filtering expression tree nodes.
251 - display_check_errors():
252 - Updated upstart_open() to handle multiple D-Bus bus types.
253 - status_action() and list_action() modified to call:
254 - job_class_show_emits()
255 - job_class_show_conditions()
256 * util/initctl.h: New file providing:
257 - stack-handling functionality for RPN parsing
258 - New macros:
259 - GET_JOB_NAME(): Determine if specified token refers to a job and
260 return it if true.
261 - IS_INIT_EVEN(): Determine if specified event is an internally
262 generated event.
263 - MAKE_EXPR_NODE(): Create an ExprNode object.
264 - MAKE_JOB_CONDITION(): Create a JobCondition object.
265 - New types required for check-config command:
266 - CheckConfigData
267 - JobCondition
268 - ConditionHandlerData
269 - ExprNode
270 * util/man/initctl.8:
271 - Updated for show-config section showing new "--enumerate" format output.
272 - Added section for check-config command.
273 * util/tests/test_initctl.c:
274 - added test_show_config() and test_check_config().
275 - new macros START_UPSTART, STOP_UPSTART, RUN_COMMAND, CREATE_FILE
276 and DELETE_FILE. These are required since due to the changes in initctl.c, we
277 actually need to run the initctl binary directly (as that is where all
278 the emits/start on/stop on parsing occurs). The test stategy adopted is to run
279 (a second instance of! :-) Upstart as a non-privileged user
280 connected to the session bus and using an alternate config
281 directory. Then, by invoking initctl, again connecting to the session
282 bus, we test the parsing functionality directly.
283
2842011-02-23 James Hunt <james.hunt@ubuntu.com>
285
286 * Fixes to allow "make check" to pass with Session support.
287
2882011-01-21 James Hunt <james.hunt@ubuntu.com>
289
290 * Override file support.
291
2922011-03-03 James Hunt <james.hunt@ubuntu.com>
293
294 * contrib/bash_completion/upstart: Updated for new initctl show-config
295 command.
296 * contrib/utils/init-checkconf.sh: Added '-i' option to specify path to
297 init daemon (for test builds). Ensure conf file exists.
298 * contrib/utils/initctl2dot.py: Updated for changed initctl show-config
299 output.
300 * util/Makefile.am: Added missing initctl.h to initctl_SOURCES.
301 * util/initctl.c:
302 - New functions to handle new check-config command.
303 - check_config_action: Handler for new check-config command-line
304 option.
305 - ignored_events_setter(): handler for '--ignore-events' command-line
306 option for check-config command.
307 - eval_expr_tree(): Evaluate expression tree.
308 - check_condition(): High-level function to handle checking start223 - check_condition(): High-level function to handle checking start
309 on/stop on conditions.224 on/stop on conditions.
225 - check_config_action: Handler for "check-config" command.
226 - display_check_errors(): Display errors from expression tree nodes
227 that are in error.
228 - eval_expr_tree(): Evaluate expression tree.
229 - ignored_events_setter(): handler for '--ignore-events' command-line
230 option for "check-config" command.
310 - tree_filter(): Used for filtering expression tree nodes.231 - tree_filter(): Used for filtering expression tree nodes.
311 - display_check_errors():232 - show_config_action(): Update for check-config mode.
312 - Removed ENSURE_ROOT() macros since this would conflict with user233 - job_class_parse_events(): Update for check-config mode.
313 sessions.234 - job_class_show_emits(): Update for check-config mode.
314 * util/initctl.h:235 * util/initctl.h:
315 - New macros:236 - Added structs for JobCondition, CheckConfigData and ExprNode.
316 - GET_JOB_NAME(): Determine if specified token refers to a job and237 - New macros: MAKE_EXPR_NODE() and MAKE_JOB_CONDITION().
317 return it if true.238 * util/tests/test_initctl.c:
318 - IS_INIT_EVEN(): Determine if specified event is an internally239 - test_check_config(): New function to test "initctl check-config".
319 generated event.240 - main(): Added call to test_check_config(), conditional on
320 - MAKE_EXPR_NODE(): Create an ExprNode object.241 a non-chroot environment and a working D-Bus system.
321 - MAKE_JOB_CONDITION(): Create a JobCondition object.242 * util/man/initctl.8: Updated for "check-config" command and associated
322 - New types required for check-config command:243 options.
323 - CheckConfigData244 * conf/rc-sysinit.conf: Added "emits" stanza, required by
324 - JobCondition245 "check-config".
325 - ConditionHandlerData246
326 - ExprNode247 Addition of initctl2dot script for visualisation.
327 * util/man/initctl.8:248
328 - Updated for show-config section showing new "--enumerate" format output.249 * Makefile.am: Added scripts directory.
329 - Added section for check-config command.250 * configure.ac: Updated AC_CONFIG_FILES for scripts/Makefile.
330 * util/tests/test_initctl.c:251 * scripts/Makefile.am: Makefile for scripts.
331 - START_UPSTART(): Improved test to ensure Upstart has actually252 * scripts/initctl2dot.py: Python script to produce dot(1) graphs of
332 started.253 "initctl show-config" output.
333 - STOP_UPSTART(): Improved test to ensure Upstart has actually254 * scripts/man/initctl2dot.8: Man page for initctl2dot.py script.
334 stopped.255
335 - test_show_config(): Updated for new show-config --enumerate syntax.256 Addition of init-checkconf script.
336 - test_check_config(): New function to test check-config command.257
337258 * scripts/init-checkconf.sh: Script to determine if specified job
3382011-02-17 James Hunt <james.hunt@ubuntu.com>259 config file is valid or not.
339260 * scripts/man/init-checkconf.8: Man page for init-checkconf.sh.
340 * contrib/utils/init-check.sh renamed to init-checkconf.sh.261 * scripts/Makefile.am: Added init-checkconf script and man
341 * contrib/utils/initct2dot.py:262 page.
342 - updated to call "initctl show-config" 263
343 - Added options to allow specification of all colo(u)rs.2642011-05-31 James Hunt <james.hunt@ubuntu.com>
344 - Added a '--restrict-to-jobs' option to allow a sub-set of all jobs265
345 to be viewed (along with their associated jobs and events).266 Add command-line option to use D-Bus session bus (for testing).
346 - Code refactored.267
347 * init/main.c:
348 - Added new options '--startup-event' and '--no-startup-event'.
349 * init/man/init.8: Updated for "initctl show-status".
350 * util/initctl.c:
351 - Reworked code so that rather than utilizing existing 'list' and
352 'status' commands, we now have a new command: 'show-status'. This is
353 more logical since it is obvious what it is doing and it also
354 doesn't pollute the dynamic data returned by 'status' and 'list' with
355 purely static info.
356 - upstart_open(): Improved dbus_bus_type usage (now only default to
357 system bus).
358 - show_config_action(): New function to handle 'show-config' command.
359 - job_class_parse_events(): Fixed uninitialized variable issue and
360 removed IS_JOB() macro in favour of the ultimately reliable
361 IS_JOB_EVENT() macro.
362 * util/initctl.h: Only enable stack debugging if DEBUG_STACK defined.
363 This ensures that "make check" doesn't fail due to stack DEBUG output.
364 * util/man/initctl.8: Updated for new 'show-config' command.
365 * util/tests/test_initctl.c:
366 - Improved START_UPSTART() and STOP_UPSTART() macros.
367 - Renamed test_status_and_list_action_detail() to
368 test_show_config_action() to reflect the new command under test.
369 - test_show_config_action(): Removed all (now-redundant) tests calling
370 "initctl status" and "initctl list" and updated for new 'show-config'
371 command.
372
3732011-02-15 James Hunt <james.hunt@ubuntu.com>
374
375 * contrib/bash_completion/upstart: Update for job visualisation.
376 * contrib/utils/init-check.sh: Script to determine if the
377 specified job configuration file (located outside of /etc/init/)
378 is valid or not.
379 * contrib/utils/initctl2dot.py: Simple Python script to convert new initctl
380 output to GraphViz dot format. Example usage:
381 initctl2dot.py > upstart.dot && dot -Tpng -o upstart.png upstart.dot
382 * dbus/upstart.h: Whitespace fix.
383 * init/control.c:268 * init/control.c:
269 - Added new boolean use_session_bus.
270 - Updated comments.
384 - control_handle_bus_type(): New function to allow selection of271 - control_handle_bus_type(): New function to allow selection of
385 session bus via env var "UPSTART_USE_SESSION_BUS" (for testing).272 session bus via env var "UPSTART_USE_SESSION_BUS".
386 - control_bus_open(): Connect to either D-Bus system bus or session bus.273 Also logs use of session bus if use_session_bus set.
274 - control_bus_open(): Now connects to either D-Bus system bus or session bus.
387 * init/control.h: New define for USE_SESSION_BUS_ENV.275 * init/control.h: New define for USE_SESSION_BUS_ENV.
388 * init/man/init.8: Update for --confdir and --session.276 * init/main.c: Addition of "--session" command-line option.
277 * init/man/init.8: Update for new "--session" command-line option.
278
279 * Corrected copyright notices.
280
281 Add option to allow alternate location for job config files.
282
389 * init/main.c:283 * init/main.c:
390 - Addition of --session and --confdir command-line option (required for284 - Added "--confdir <dir>" command-line option.
391 test framework to test changes to initctl).
392 - handle_confdir(): New function to select alternate confdir using env285 - handle_confdir(): New function to select alternate confdir using env
393 var "UPSTART_CONFDIR" (for testing).286 var "UPSTART_CONFDIR" or command-line option (for testing).
394 * init/paths.h:287 * init/paths.h: Added define for CONFDIR_ENV.
395 - Renamed CONDIR to DEFAULT_CONFDIR to make its use clearer now it can be changed.288 * init/man/init.8: Update for new "--confdir" command-line option.
396 - Renamed CONFILE to DEFAULT_CONFFILE for parity with DEFAULT_CONFDIR.289
397 - Added define for CONFDIR_ENV.290 Add ability to suppress initial event and/or change its name.
398 * util/initctl.c:291
399 - Addition of --session command-line option (required for test framework to test292 * init/main.c: New command-line options: "--no-startup-event" and
400 visualisation changes to initctl).293 "--startup-event". If "--no-startup-event" specified, log message as a
401 - Changed 'system_bus' variable to 'use_dbus' since now we can use either D-Bus294 debug aid.
402 bus type.295 * init/man/init.8: Documentation for new command-line options:
403 - Added 'dbus_bus_type' which encodes D-Bus bus type to use.296 "--no-startup-event" and "--startup-event".
404 - Added 'verbose_detail' and 'enumerate_events' variables to 297
405 - Created new functions:2982011-05-12 Marc - A. Dahlhaus <mad@wol.de>
406 - job_class_condition_handler(): Handler function to retrieve job conditions.299
407 - job_class_condition_err_handler(): Handler error function for300 * init/job_class.h (JobClass): Add kill signal member
408 job_class_condition_handler().301 * init/job_class.c (job_class_new): Initialise kill signal
409 - job_class_parse_events(): Convert RPN "start on" and "stop on" conditions to302 * init/tests/test_job_class.c (test_new): Check kill signal initialised
410 human-readable format.303 correctly.
411 - job_class_show_emits(): Display events which job emits.304 * init/system.c (system_kill): Change to accept a signal rather than
412 - job_class_show_conditions(): Make D-Bus calls to retrieve "start on" and305 a boolean.
413 "stop on" conditions.306 * init/system.h: Update prototype
414 - dbus_bus_type_setter(): Used by option parser to distinguish system/session307 * init/tests/test_system.c (test_kill): Update tests to pass signals
415 D-Bus bus type.308 by value.
416 - Updated upstart_open() to handle multiple D-Bus bus types.309 * init/job_process.c (job_process_kill, job_process_kill_timer): Pass
417 - Changed following functions to error with message if initctl run as310 the configured kill signal, or SIGKILL, to the function rather than
418 non-root user (without this, you get a very cryptic D-Bus error):311 TRUE/FALSE.
419 - start_action()312 * init/parse_job.c (stanza_kill): Add parsing for kill signal.
420 - stop_action()313 * init/tests/test_parse_job.c (test_stanza_kill): Check parsing works
421 - restart_action()314 * init/errors.h: Add illegal signal error and string.
422 - reload_configuration_action()315 * init/man/init.5: Update documentation
423 - log_priority_action()316
424 - status_action() and list_action() modified to call:317 * init/job_class.h (JobClass): Replace oom_adj with oom_score_adj
425 - job_class_show_emits()318 * init/job_class.c (job_class_new): Replace oom_adj with oom_score_adj.
426 - job_class_show_conditions()319 * init/job_process.c (job_process_spawn): Write the new score
427 * util/initctl.h: New file providing stack-handling functionality for RPN parsing.320 adjustment, falling back to calculating and writing the old value if
428 * util/initctl.8: Updated for --session, and --detail/-d and321 necessary.
429 --enumerate/-e options to status and list commands.322 * init/parse_job.c (stanza_oom): Parse both the new and old values,
430 * util/tests/test_initctl.c:323 converting the old value to the new value if present.
431 - new macros START_UPSTART, STOP_UPSTART, RUN_COMMAND, CREATE_FILE and DELETE_FILE.324 * init/errors.h: Add new error string.
432 These are required since due to the changes in initctl.c, we325 * init/man/init.5: Documentation update.
433 actually need to run the initctl binary directly (as that is where all326 * init/tests/test_job_class.c (test_new): Update check.
434 the emits/start on/stop on parsing occurs). The test stategy adopted is to run327 * init/tests/test_parse_job.c (test_stanza_oom): Update tests.
435 (a second instance of! :-) Upstart as a non-privileged user328
436 connected to the session bus and using an alternate config3292011-05-12 Scott James Remnant <scott@netsplit.com>
437 directory. Then, by invoking initctl, again connecting to the session330
438 bus, we test the parsing functionality directly.331 * init/job_process.c (job_process_run): Always make the shell script
439 - test_status_and_list_action_detail(): New function to test '-d' and332 fd 9, since that's the highest that shells are required by POSIX to
440 '-e' options for status and list commands.333 support. Pass the file descriptor to job_process_spawn()
441 - updated all remaining functions to use 'use_dbus' rather than 'system_bus'.334 (job_process_run): Accept the extra file descriptor, moving it to fd 9.
335 (job_process_error_read): Add handling for error condition.
336 * init/job_process.h: Adjust prototypes, add constant
337 * init/tests/test_job_process.c (test_spawn): Add argument to call in
338 tests
339
3402011-03-22 Scott James Remnant <scott@netsplit.com>
341
342 * configure.ac: Bump version to 1.3
343 * NEWS: Begin new release
344
345 * NEWS: Release 1.2
346
347 * init/job_process.c (job_process_run): Correct shell redirection;
348 the form we used dosen't work with at least pdksh
349
3502011-03-16 Scott James Remnant <scott@netsplit.com>
351
352 * configure.ac: Bump version to 1.2
353 * NEWS: Begin new release
354
355 * NEWS: Release 1.1
356
357 * configure.ac (NIH_COPYRIGHT): Update
358
359 * init/main.c: Don't close the console until initialization is
360 complete.
361
362 * util/Makefile.am (uninstall-hook): Clean up symlinks on uninstall
363
364 * init/environ.c (environ_all_valid): Only verify that an = is present
365 (environ_valid): Drop this function, the part of POSIX I read about
366 valid environment variable names only applies to other things defined
367 by POSIX, elsewhere it explicitly says Applications may do whatever
368 they like (and even encourages to avoid conflict)
369 (environ_expand_until): Remove validity check for name.
370 * init/environ.h: Update header.
371 * init/tests/test_environ.c (test_valid): Drop tests.
372 (test_all_valid): Drop name tests.
373 (test_expand): Remove illegal expansion test.
374 * init/tests/test_control.c (test_emit_event): Remove the test case for
375 an invalid name in the environment.
376 * init/tests/test_job_class.c (test_start, test_stop)
377 (test_restart): Change the invalid argument tests to use an entry
378 without an = as the invalid test.
379
380 * util/reboot.c: pass '-H' to shutdown when called as 'halt'
381
382 * init/job_process.c (job_process_handler): Check the job's normal exit
383 list, decrease log priority of messages from warning to information if
384 the exit status or signal is in the list.
385 * init/tests/test_job_process.c (test_handler): Change the normal exit
386 test cases to not expect the warning
387
388 * init/job_process.c (job_process_run): Prepend a shell command to the
389 pasted script to force the shell to close the file descriptor being
390 used to paste the script. The shell will already have a new copy when
391 it opened the path.
392
3932011-03-15 James Hunt <james.hunt@ubuntu.com>
394
395 * init/conf.c (conf_source_reload, conf_source_reload_dir): Fix typos
396 in doc-strings
397 * init/job_process.c (job_process_run): Fix typo in doc-string
398 * init/parse_job.c (stanza_env): Fix typo in doc-string
399
4002011-03-15 Patty Langasek <harmoney@dodds.net>
401
402 * init/man/init.5: Grammar fixes
403
4042011-03-15 Jacek Konieczny <jajcus@jajcus.net>
405
406 * contrib/vim/syntax/upstart.vim: Further improve syntax hilighting
407
4082011-03-01 Scott James Remnant <scott@netsplit.com>
409
410 * configure.ac: Bump version to 1.1
411 * NEWS: Begin new release
412
413 * NEWS: Release 1.0
414
4152011-02-17 Scott James Remnant <scott@netsplit.com>
416
417 * configure.ac, NEWS: Bump version to 1.0
418 * TODO: Update.
419
420 * init/tests/test_conf.c (test_source_reload_job_dir): Add tests for
421 a crasher bug when a file is created called ".conf"
422 * init/conf.c (conf_dir_filter): Apply fix for the crasher; check that
423 the character before the ".conf" extension is not "/"
424 * NEWS: Update.
442425
4432011-01-06 Petr Lautrbach <plautrba@redhat.com>4262011-01-06 Petr Lautrbach <plautrba@redhat.com>
444427
@@ -500,14 +483,6 @@
500483
5012010-12-10 Scott James Remnant <scott@netsplit.com>4842010-12-10 Scott James Remnant <scott@netsplit.com>
502485
503 * Socket bridge and udev bridge support.
504
5052010-12-10 Scott James Remnant <scott@netsplit.com>
506
507 * Session support (chroots, sessions and user-session).
508
5092010-12-10 Scott James Remnant <scott@netsplit.com>
510
511 * dbus/upstart.h (DBUS_SERVICE_UPSTART, DBUS_ADDRESS_UPSTART):486 * dbus/upstart.h (DBUS_SERVICE_UPSTART, DBUS_ADDRESS_UPSTART):
512 For debugging purposes, when -DDEBUG is given, change the values of487 For debugging purposes, when -DDEBUG is given, change the values of
513 these constants. You'll need to modify your own D-Bus configuration488 these constants. You'll need to modify your own D-Bus configuration
514489
=== modified file 'NEWS'
--- NEWS 2011-05-25 19:25:11 +0000
+++ NEWS 2011-06-17 11:15:58 +0000
@@ -1,78 +1,70 @@
10.9.7 2011-04-2011.4 xxxx-xx-xx
22
3 * Fix for user sessions to retain backwards compatibility behaviour31.3 2011-06-14 "Concordia"
4 where a non-privileged user can enquire on jobs owned by the4
5 global namespace.5 * New upstart-socket-bridge application which allows jobs to be
66 started when an incoming client socket connection is initiated
70.9.6 2011-04-157 (requires a suitably modified server daemon since jobs only
88 need call accept(2) before reading from the socket).
9 * Fix for nasty OOM scenario when an attempt is made to start9 * User session support allowing non-privileged users to
10 a chroot job with same name as running single-instance10 manipulate their own jobs (not available within a chroot
11 non-chroot job. Previously, the path for a chrooted Job11 environment).
12 was set from the (nul) instance name of its parent JobClass.12 * Chroot support allowing jobs to be controlled within chroot
13 However, since that job instance name already existed13 environments.
14 outside the chroot and was already D-Bus registered,14 * Updated bash completion script.
15 nih_dbus_object_new() (which allocates storage and is15 * Updated vim syntax script.
16 called by job_register()) returned NULL and kept doing so16 * init-checkconf script used to check syntax of Job
17 due to being called within NIH_MUST(). This resulted in17 Configuration Files (including script sections).
18 OOM due to an as-yet unidentified D-Bus bug (possibly a18 * initctl2dot script to convert initctl(8) output to GraphViz
19 leak in find_subtree_recurse()).19 dot(1) format for analysing relationships between jobs and
2020 events.
210.9.5 2011-04-0621 * New "check-config" initctl command to check for jobs whose
2222 * "start on" and "stop on" events cannot be satisfied.
23 * Important fixes for user and chroot sessions.23 * New "show-config" initctl command to display "start on", "stop
24 * scripts/init-checkconf.sh: Now checks script sections too.24 on" and emits" information in parseable format.
25 * util/initctl.c: Added "--warn" option for check-config command25 * New initctl command-line option: "--session" for D-Bus
26 to warn if any events or jobs are not known.26 session connection.
2727 * New init command line options (mostly for testing):
280.9.4 2011-03-2428 - "--session" for D-Bus session bus.
2929 - "--confdir <dir>".
30 * scripts/initctl2dot.py: Fix to handle 'emits' glob syntax30 - "--startup-event <event>".
31 which was causing script to fail for upstart-udev-bridge.31 - "--no-startup-event".
3232 * New "kill signal" stanza to allow override of SIGTERM when
330.9.3 2011-03-1533 stopping jobs.
3434 * Add support for the oom_score_adj procfs API.
35 * Added missing emits stanzas for supplied .conf files.35 * Improved POSIX compliance when running shell scripts.
3636
37 * Added wildcard/globbing facility to initctl.c (for check-config371.2 2011-03-22 "This sort of thing is my bag, baby"
38 command).38
3939 * Fixed incorrect shell redirection syntax that broke at least
40 * Updated man page on emits stanza syntax.40 pdksh. (Bug: #739984)
4141
420.9.2 2011-03-11421.1 2011-03-16 "It's probably 'cause you think you're cooler than me"
4343
44 * Improvements to existing documentation.44 * When /sbin/halt is called (without -p), this now results in the
45 * scripts/man/init-checkconf.8: New manual page.45 system being halted and not powered down. If you meant it to be
46 * scripts/man/initctl2dot.8: New manual page.46 powered down, use /sbin/poweroff. (Bug: #532366)
47 * packaging improvements (including "make distcheck" fix).47
48 * extra/man/upstart-udev-bridge.8: Added examples.48 * Fixed file descriptor leak of /proc/self/fd/NN to shell scripts
49 * extra/Makefile.am: Create links to upstart-udev-bridge49 executed by Upstart. (Bug: #619269)
50 man page for well-known Upstart udev events.50
5151 * Fixed bug where console was closed too early, causing loss of error
520.9.1 2011-03-0352 messages and non-functioning keyboard-request event,
5353 (Bug: #707151)
54 * Added supporting documentation for upstart-socket-bridge and54
55 sessions and chroot support.55 * Fixed bug where environment variables containing unusual characters
5656 were not accepted due to a mis-reading of POSIX. (Bug: #567068).
57 * Added job configuration file for upstart-socket-bridge.57
5858 * Fixed non-removal of symlinks on "make uninstall". (Bug: #604227)
59 * Added job/event visualisation support. This comprises a new59
60 initctl command, "show-config" which generates human-readable60 * Reduced priority of job termination messages from warn to info
61 (and machine parseable) output showing start on, stop on and61 if the exit status or signal is listed in "normal exit".
62 emits details for each job. See initctl.8 for further details.62 (Bug: #522197)
63 The output from show-config is used by the new script63
64 contrib/utils/initctl2dot.py which graphs the data in GraphViz641.0 2011-03-01 "This is a fertile land, and we will thrive"
65 format.65
6666 * Fixed an assertion when a file named /etc/init/.conf is created.
67 * Added new initctl command check-config allowing unreachable67 Discovered by Коренберг Марк (Bug: #720573)
68 job conditions to be detected. See initctl.8 for further
69 details.
70
71 * Added script contrib/utils/init-checkconf.sh which allows
72 non-privileged users to check job configuration files for syntax
73 errors prior to installing in /etc/init/.
74
750.9.0 2011-02-24
7668
77 * utmp entries will be replaced with DEAD_PROCESS ones when a69 * utmp entries will be replaced with DEAD_PROCESS ones when a
78 pid supervised by Upstart terminates. (Bug: #183729)70 pid supervised by Upstart terminates. (Bug: #183729)
@@ -83,29 +75,6 @@
83 * Included bash completion script in contrib directory.75 * Included bash completion script in contrib directory.
84 (Bug: #672067)76 (Bug: #672067)
8577
86 * Addition of Session support (chroots, sessions and
87 user-session).
88
89 * Socket bridge support allowing jobs to be started based on
90 socket connections. Examples of supported syntax:
91
92 start on socket PROTO=inet PORT=1234
93 start on socket PROTO=unix PATH=/var/run/.s.pgsql.1234
94 start on socket PROTO=unix PATH=@/at/upstart/example
95
96 * udev bridge support imported from Ubuntu. See
97 "man 8 upstart-udev-bridge" for further details.
98
99 * Override file support allowing the creation of files named
100 "<job_conf>.override" whose contents override that found in
101 "<job_conf>.conf". Useful to modify a job without touching its
102 .conf file. For example, a job can now be disabled simply by
103 doing:
104
105 echo "manual" >> /etc/init/jobname.override
106
107 See "man 5 init" for further details.
108
1090.6.7 2010-12-14 "Return of the Mole"780.6.7 2010-12-14 "Return of the Mole"
11079
111 * A new "manual" stanza has been added to the configuration, this80 * A new "manual" stanza has been added to the configuration, this
11281
=== added file 'TESTING.sessions'
--- TESTING.sessions 1970-01-01 00:00:00 +0000
+++ TESTING.sessions 2011-06-17 11:15:58 +0000
@@ -0,0 +1,263 @@
1.. contents::
2
3=============================
4Testing Sessions with Upstart
5=============================
6
7Upstart now has support for chroots which are implemented by creating a
8separate session for every user within each chroot. It also has partial
9support for user sessions, but since this is experimental (and disabled
10in Ubuntu), this document does not cover testing this feature.
11
12The session support does not yet provide full tests (as would be run by
13"``make check``"). This is partly due to the complexity of automatically
14testing some of the scenarios below.
15
16This document attempts to outline the minimum set of tests that should
17be performed to ensure that chroot support works as expected.
18
19Assumptions
20===========
21
22You are running an Ubuntu or Debian system.
23
24Setup
25=====
26
27#. Install a chroot environement (such as ``schroot(1)``) and configure it.
28#. run, "``debootstrap(8)``" to install the same release as you are running into your chroot.
29#. Create the following files *outside* your chroot.
30
31 - ``/etc/init/foo.conf``::
32
33 start on wibble
34
35 script
36 exec 2>>/tmp/foo.$$.log
37 set -x
38 echo "foo: stat=`stat /`"
39 echo "foo: env=`env`"
40 sleep 999
41 end script
42
43 - ``/etc/init/outside_chroot.conf``::
44
45 start on A
46
47 script
48 exec 2>>/tmp/outside_chroot.$$.log
49 set -x
50 echo "in_chroot: stat=`stat /`"
51 echo "in_chroot: env=`env`"
52 sleep 999
53 end script
54
55#. Create following files inside chroot environment.
56
57 - ``/path/to/chroot/etc/init/foo.conf``::
58
59 start on wibble
60
61 script
62 exec 2>>/tmp/foo.$$.log
63 set -x
64 echo "foo: stat=`stat /`"
65 echo "foo: env=`env`"
66 sleep 999
67 end script
68
69 - ``/path/to/chroot/etc/init/in_chroot.conf``::
70
71 start on A
72
73 script
74 exec 2>>/tmp/in_chroot.$$.log
75 set -x
76 echo "in_chroot: stat=`stat /`"
77 echo "in_chroot: env=`env`"
78 sleep 999
79 end script
80
81
82Run as non-``root`` with no chroot
83==================================
84
85- ``initctl list``
86
87 Ensure list is contents of ``/etc/init/``: the command below should
88 return no output::
89
90 cmp <(initctl list|awk '{print $1}'|sort -u) <(cd /etc/init && ls *.conf|cut -d: -f2-|sed 's/\.conf//g'|sort -u)
91
92- ``initctl status cron``
93
94 Should work.
95
96- ``initctl show-config``
97
98 Should work.
99
100- ``initctl check-config``
101
102 Should work.
103
104- ``start foo``
105
106 Should fail ("``initctl: Rejected send message``").
107
108- ``stop cron``
109
110 Should fail ("``initctl: Rejected send message``").
111
112- ``restart cron``
113
114 Should fail ("``initctl: Rejected send message``").
115
116- ``initctl emit bar``
117
118 Should fail ("``initctl: Rejected send message``").
119
120Run as ``root`` with no chroot
121==============================
122
123- ``initctl list``
124
125 Ensure list is contents of ``/etc/init/``: command below should return no output::
126
127 cmp <(initctl list|awk '{print $1}'|sort -u) <(cd /etc/init && ls *.conf|cut -d: -f2-|sed 's/\.conf//g'|sort -u)
128
129- ``initctl status outside_chroot``
130
131 Should work.
132
133- ``initctl status in_chroot``
134
135 Should fail with message::
136
137 initct: Unknown job: in_chroot
138
139- ``initctl show-config``
140
141 Should work.
142
143- ``initctl check-config``
144
145 Should work.
146
147- ``start in_chroot``
148
149 Should fail with message::
150
151 initct: Unknown job: in_chroot
152
153- ``start outside_chroot``
154
155 Should work.
156
157- ``stop in_chroot``
158
159 Should fail with message::
160
161 initct: Unknown job: in_chroot
162
163- ``restart outside_chroot``
164
165 Should work.
166
167- ``stop outside_chroot``
168
169 Should work.
170
171- ``initctl emit wibble``
172
173 - Ensure ``/etc/init/foo.conf`` runs by looking at the log and ensuring
174 the inode for the stat of '``/``' is the same as running "``stat /``" on
175 the command-line.
176
177 * Ensure ``/path/to/chroot/etc/init/foo.conf`` does *NOT* run.
178
179- ``initctl emit A``
180
181 - Ensure ``/etc/init/outside_chroot.conf`` runs.
182
183 - Ensure ``/path/to/chroot/etc/init/in_chroot.conf`` does *NOT* run.
184
185Run as ``root`` inside a chroot
186===============================
187
188- ``initctl list``
189
190 Ensure list is contents of ``/path/to/chroot/etc/init/``: command below should return no output::
191
192 cmp <(initctl list|awk '{print $1}'|sort -u) <(cd /etc/init && ls *.conf|cut -d: -f2-|sed 's/\.conf//g'|sort -u)
193
194- ``initctl status in_chroot``
195
196 Should work.
197
198- ``initctl status outside_chroot``
199
200 Should fail with message::
201
202 initct: Unknown job: outside_chroot
203
204- ``initctl show-config``
205
206 Should work.
207
208- ``initctl check-config``
209
210 Should work.
211
212- ``start outside_chroot``
213
214 Should fail with message::
215
216 initct: Unknown job: outside_chroot
217
218- ``stop outside_chroot``
219
220 Should fail with message::
221
222 initct: Unknown job: outside_chroot
223
224- ``start in_chroot``
225
226 Should work.
227
228- ``restart in_chroot``
229
230 Should work.
231
232- ``stop in_chroot``
233
234 Should work.
235
236- ``initctl emit wibble``
237
238 - Ensure ``/path/to/chroot/etc/init/foo.conf`` runs by looking at the log and ensuring
239 the inode for the stat of '``/``' is the same as running "``stat /``" on the command-line.
240
241 - Ensure ``/etc/init/foo.conf`` does *NOT* run.
242
243- ``initctl emit A``
244
245 - Ensure ``/path/to/chroot/etc/init/in_chroot.conf`` runs.
246
247 - Ensure ``/etc/init/outside_chroot.conf`` does *NOT* run.
248
249Run as non-root inside a chroot
250===============================
251
252Not supported.
253
254Run with ``--no-sessions``
255==========================
256
257The "``--no-sessions``" option makes Upstart behave as it used to prior to
258the introduction of session support.
259
260#. Reboot system and specify "``--no-sessions``" on kernel command-line.
261
262#. Ensure "``initctl list``" within a chroot displays the same list as
263 "``initctl list``" run outside of any chroot environment.
0264
=== modified file 'TODO'
--- TODO 2010-02-04 08:47:46 +0000
+++ TODO 2011-06-17 11:15:58 +0000
@@ -1,10 +1,4 @@
1Merge 1216.1.1 from Ubuntu (reload command), add test case.11.x series:
2
3__abort_msg should be weak or changed
4
5
6
70.6.x series:
82
9 * going into runlevel S from !S, need to stty console3 * going into runlevel S from !S, need to stty console
10 * going into 6, 0 or 1, need to stty console4 * going into 6, 0 or 1, need to stty console
115
=== modified file 'configure'
--- configure 2011-05-25 19:25:11 +0000
+++ configure 2011-06-17 11:15:58 +0000
@@ -1,6 +1,6 @@
1#! /bin/sh1#! /bin/sh
2# Guess values for system-dependent variables and create Makefiles.2# Guess values for system-dependent variables and create Makefiles.
3# Generated by GNU Autoconf 2.67 for upstart 0.9.7.3# Generated by GNU Autoconf 2.67 for upstart 1.3.
4#4#
5# Report bugs to <upstart-devel@lists.ubuntu.com>.5# Report bugs to <upstart-devel@lists.ubuntu.com>.
6#6#
@@ -13,7 +13,7 @@
13# This configure script is free software; the Free Software Foundation13# This configure script is free software; the Free Software Foundation
14# gives unlimited permission to copy, distribute and modify it.14# gives unlimited permission to copy, distribute and modify it.
15#15#
16# Copyright © 2011 Canonical Ltd.16# Copyright © 2011 Scott James Remnant, Canonical Ltd.
17## -------------------- ##17## -------------------- ##
18## M4sh Initialization. ##18## M4sh Initialization. ##
19## -------------------- ##19## -------------------- ##
@@ -703,8 +703,8 @@
703# Identity of this package.703# Identity of this package.
704PACKAGE_NAME='upstart'704PACKAGE_NAME='upstart'
705PACKAGE_TARNAME='upstart'705PACKAGE_TARNAME='upstart'
706PACKAGE_VERSION='0.9.7'706PACKAGE_VERSION='1.3'
707PACKAGE_STRING='upstart 0.9.7'707PACKAGE_STRING='upstart 1.3'
708PACKAGE_BUGREPORT='upstart-devel@lists.ubuntu.com'708PACKAGE_BUGREPORT='upstart-devel@lists.ubuntu.com'
709PACKAGE_URL=''709PACKAGE_URL=''
710710
@@ -1511,7 +1511,7 @@
1511 # Omit some internal or obsolete options to make the list less imposing.1511 # Omit some internal or obsolete options to make the list less imposing.
1512 # This message is too long to be a string in the A/UX 3.1 sh.1512 # This message is too long to be a string in the A/UX 3.1 sh.
1513 cat <<_ACEOF1513 cat <<_ACEOF
1514\`configure' configures upstart 0.9.7 to adapt to many kinds of systems.1514\`configure' configures upstart 1.3 to adapt to many kinds of systems.
15151515
1516Usage: $0 [OPTION]... [VAR=VALUE]...1516Usage: $0 [OPTION]... [VAR=VALUE]...
15171517
@@ -1581,7 +1581,7 @@
15811581
1582if test -n "$ac_init_help"; then1582if test -n "$ac_init_help"; then
1583 case $ac_init_help in1583 case $ac_init_help in
1584 short | recursive ) echo "Configuration of upstart 0.9.7:";;1584 short | recursive ) echo "Configuration of upstart 1.3:";;
1585 esac1585 esac
1586 cat <<\_ACEOF1586 cat <<\_ACEOF
15871587
@@ -1723,14 +1723,14 @@
1723test -n "$ac_init_help" && exit $ac_status1723test -n "$ac_init_help" && exit $ac_status
1724if $ac_init_version; then1724if $ac_init_version; then
1725 cat <<\_ACEOF1725 cat <<\_ACEOF
1726upstart configure 0.9.71726upstart configure 1.3
1727generated by GNU Autoconf 2.671727generated by GNU Autoconf 2.67
17281728
1729Copyright (C) 2010 Free Software Foundation, Inc.1729Copyright (C) 2010 Free Software Foundation, Inc.
1730This configure script is free software; the Free Software Foundation1730This configure script is free software; the Free Software Foundation
1731gives unlimited permission to copy, distribute and modify it.1731gives unlimited permission to copy, distribute and modify it.
17321732
1733Copyright © 2011 Canonical Ltd.1733Copyright © 2011 Scott James Remnant, Canonical Ltd.
1734_ACEOF1734_ACEOF
1735 exit1735 exit
1736fi1736fi
@@ -2326,7 +2326,7 @@
2326This file contains any messages produced by compilers while2326This file contains any messages produced by compilers while
2327running configure, to aid debugging if configure makes a mistake.2327running configure, to aid debugging if configure makes a mistake.
23282328
2329It was created by upstart $as_me 0.9.7, which was2329It was created by upstart $as_me 1.3, which was
2330generated by GNU Autoconf 2.67. Invocation command line was2330generated by GNU Autoconf 2.67. Invocation command line was
23312331
2332 $ $0 $@2332 $ $0 $@
@@ -2682,8 +2682,8 @@
26822682
26832683
26842684
2685$as_echo "#define PACKAGE_COPYRIGHT \"Copyright (C) 2011 Canonical Ltd.\"" >>confdefs.h2685$as_echo "#define PACKAGE_COPYRIGHT \"Copyright (C) 2011 Scott James Remnant, Canonical Ltd.\"" >>confdefs.h
2686 PACKAGE_COPYRIGHT="Copyright © 2011 Canonical Ltd."2686 PACKAGE_COPYRIGHT="Copyright © 2011 Scott James Remnant, Canonical Ltd."
26872687
26882688
26892689
@@ -4481,7 +4481,7 @@
44814481
4482# Define the identity of the package.4482# Define the identity of the package.
4483 PACKAGE='upstart'4483 PACKAGE='upstart'
4484 VERSION='0.9.7'4484 VERSION='1.3'
44854485
44864486
4487cat >>confdefs.h <<_ACEOF4487cat >>confdefs.h <<_ACEOF
@@ -17364,7 +17364,7 @@
1736417364
1736517365
1736617366
17367ac_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"17367ac_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"
1736817368
17369ac_config_headers="$ac_config_headers config.h"17369ac_config_headers="$ac_config_headers config.h"
1737017370
@@ -17898,7 +17898,7 @@
17898# report actual input values of CONFIG_FILES etc. instead of their17898# report actual input values of CONFIG_FILES etc. instead of their
17899# values after options handling.17899# values after options handling.
17900ac_log="17900ac_log="
17901This file was extended by upstart $as_me 0.9.7, which was17901This file was extended by upstart $as_me 1.3, which was
17902generated by GNU Autoconf 2.67. Invocation command line was17902generated by GNU Autoconf 2.67. Invocation command line was
1790317903
17904 CONFIG_FILES = $CONFIG_FILES17904 CONFIG_FILES = $CONFIG_FILES
@@ -17964,7 +17964,7 @@
17964cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=117964cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
17965ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`"17965ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`"
17966ac_cs_version="\\17966ac_cs_version="\\
17967upstart config.status 0.9.717967upstart config.status 1.3
17968configured by $0, generated by GNU Autoconf 2.67,17968configured by $0, generated by GNU Autoconf 2.67,
17969 with options \\"\$ac_cs_config\\"17969 with options \\"\$ac_cs_config\\"
1797017970
@@ -18363,8 +18363,8 @@
18363 "dbus/Makefile") CONFIG_FILES="$CONFIG_FILES dbus/Makefile" ;;18363 "dbus/Makefile") CONFIG_FILES="$CONFIG_FILES dbus/Makefile" ;;
18364 "init/Makefile") CONFIG_FILES="$CONFIG_FILES init/Makefile" ;;18364 "init/Makefile") CONFIG_FILES="$CONFIG_FILES init/Makefile" ;;
18365 "util/Makefile") CONFIG_FILES="$CONFIG_FILES util/Makefile" ;;18365 "util/Makefile") CONFIG_FILES="$CONFIG_FILES util/Makefile" ;;
18366 "conf/Makefile") CONFIG_FILES="$CONFIG_FILES conf/Makefile" ;;
18366 "extra/Makefile") CONFIG_FILES="$CONFIG_FILES extra/Makefile" ;;18367 "extra/Makefile") CONFIG_FILES="$CONFIG_FILES extra/Makefile" ;;
18367 "conf/Makefile") CONFIG_FILES="$CONFIG_FILES conf/Makefile" ;;
18368 "doc/Makefile") CONFIG_FILES="$CONFIG_FILES doc/Makefile" ;;18368 "doc/Makefile") CONFIG_FILES="$CONFIG_FILES doc/Makefile" ;;
18369 "contrib/Makefile") CONFIG_FILES="$CONFIG_FILES contrib/Makefile" ;;18369 "contrib/Makefile") CONFIG_FILES="$CONFIG_FILES contrib/Makefile" ;;
18370 "po/Makefile.in") CONFIG_FILES="$CONFIG_FILES po/Makefile.in" ;;18370 "po/Makefile.in") CONFIG_FILES="$CONFIG_FILES po/Makefile.in" ;;
1837118371
=== modified file 'configure.ac'
--- configure.ac 2011-05-25 19:25:11 +0000
+++ configure.ac 2011-06-17 11:15:58 +0000
@@ -1,8 +1,8 @@
1# Process this file with autoconf to produce a configure script.1# Process this file with autoconf to produce a configure script.
22
3AC_PREREQ(2.61)3AC_PREREQ(2.61)
4AC_INIT([upstart], [0.9.7], [upstart-devel@lists.ubuntu.com])4AC_INIT([upstart], [1.3], [upstart-devel@lists.ubuntu.com])
5NIH_COPYRIGHT([[Copyright © 2011 Canonical Ltd.]])5NIH_COPYRIGHT([[Copyright © 2011 Scott James Remnant, Canonical Ltd.]])
6AC_CONFIG_SRCDIR([init/main.c])6AC_CONFIG_SRCDIR([init/main.c])
7AC_CONFIG_MACRO_DIR([m4])7AC_CONFIG_MACRO_DIR([m4])
88
@@ -66,8 +66,8 @@
6666
6767
68AC_CONFIG_FILES([ Makefile intl/Makefile68AC_CONFIG_FILES([ Makefile intl/Makefile
69 dbus/Makefile init/Makefile util/Makefile extra/Makefile69 dbus/Makefile init/Makefile util/Makefile conf/Makefile
70 conf/Makefile doc/Makefile contrib/Makefile po/Makefile.in70 extra/Makefile doc/Makefile contrib/Makefile po/Makefile.in
71 scripts/Makefile ])71 scripts/Makefile ])
72AC_CONFIG_HEADERS([config.h])72AC_CONFIG_HEADERS([config.h])
73AC_OUTPUT73AC_OUTPUT
7474
=== modified file 'contrib/bash_completion/upstart'
--- contrib/bash_completion/upstart 2011-05-25 19:25:11 +0000
+++ contrib/bash_completion/upstart 2011-06-17 11:15:58 +0000
@@ -3,26 +3,28 @@
3#3#
4# We don't provide completion for 'init' itself for obvious reasons.4# We don't provide completion for 'init' itself for obvious reasons.
5have initctl &&5have initctl &&
6_upstart_conf_jobs()6_upstart_jobs()
7{7{
8 initctl list|awk '{print $1}'8 initctl list|awk '{print $1}'|sort -u
9} &&9} &&
10_upstart_named_events()10_upstart_startable_jobs()
11{
12 (cd /etc/init && grep '^emits ' *.conf|sed 's/^emits //g')
13} &&
14_upstart_events()
15{
16 (_upstart_conf_jobs;_upstart_named_events)|tr ' ' '\n'|sort -u
17} &&
18_upstart_startable_events()
19{11{
20 initctl list|cut -d\, -f1|awk '$2 == "stop/waiting" {print $1}'12 initctl list|cut -d\, -f1|awk '$2 == "stop/waiting" {print $1}'
21} &&13} &&
22_upstart_stoppable_events()14_upstart_stoppable_jobs()
23{15{
24 initctl list|cut -d\, -f1|awk '$2 == "start/running" {print $1}'16 initctl list|cut -d\, -f1|awk '$2 == "start/running" {print $1}'
25} &&17} &&
18_upstart_events()
19{
20 # note that we don't provide the internal events such as "starting"
21 # (and those from mountall) since the user should be using the
22 # associated command to emit such events.
23 (cd /etc/init && \
24 egrep '^[[:space:]]*emits ' *.conf |\
25 cut -d: -f2- | sed 's/^[[:space:]]*emits //g' |\
26 tr ' ' '\n' | awk '{print $NF}' | grep -v ^$|sort -u)
27} &&
26_upstart_initctl()28_upstart_initctl()
27{29{
28 _get_comp_words_by_ref cur prev30 _get_comp_words_by_ref cur prev
@@ -32,20 +34,34 @@
32 case "$prev" in34 case "$prev" in
3335
34 start)36 start)
35 COMPREPLY=( $(compgen -W "-n --no-wait $(_upstart_startable_events)" -- ${cur}) )37 COMPREPLY=( $(compgen -W "-n --no-wait $(_upstart_startable_jobs)" -- ${cur}) )
36 return 038 return 0
37 ;;39 ;;
3840
39 stop)41 stop)
40 COMPREPLY=( $(compgen -W "-n --no-wait $(_upstart_stoppable_events)" -- ${cur}) )42 COMPREPLY=( $(compgen -W "-n --no-wait $(_upstart_stoppable_jobs)" -- ${cur}) )
41 return 043 return 0
42 ;;44 ;;
4345
44 emit)46 emit)
45 COMPREPLY=( $(compgen -W "$(_upstart_events)" -- ${cur}) )47 COMPREPLY=( $(compgen -W "-n --no-wait $(_upstart_events)" -- ${cur}) )
46 return 048 return 0
47 ;;49 ;;
4850
51 -i|--ignore-events)
52 # handle visualisation options after check-config command
53 for cmd in check-config
54 do
55 cwords=${COMP_WORDS[@]##}
56 filtered_cwords=${COMP_WORDS[@]##${cmd}}
57 if [ "$filtered_cwords" != "$cwords" ]
58 then
59 COMPREPLY=( $(compgen -W "$(_upstart_jobs)" -- ${cur}) )
60 return 0
61 fi
62 done
63 ;;
64
49 -e|--enumerate)65 -e|--enumerate)
50 # handle visualisation options after show-config command66 # handle visualisation options after show-config command
51 for cmd in show-config67 for cmd in show-config
@@ -54,36 +70,56 @@
54 filtered_cwords=${COMP_WORDS[@]##${cmd}}70 filtered_cwords=${COMP_WORDS[@]##${cmd}}
55 if [ "$filtered_cwords" != "$cwords" ]71 if [ "$filtered_cwords" != "$cwords" ]
56 then72 then
57 COMPREPLY=( $(compgen -W "${vis_opts} $(_upstart_conf_jobs)" -- ${cur}) )73 COMPREPLY=( $(compgen -W "$(_upstart_jobs)" -- ${cur}) )
58 return 074 return 0
59 fi75 fi
60 done76 done
61 ;;77 ;;
6278
63 reload|restart)79 reload|restart)
64 COMPREPLY=( $(compgen -W "$(_upstart_conf_jobs)" -- ${cur}) )80 COMPREPLY=( $(compgen -W "-n --no-wait $(_upstart_stoppable_jobs)" -- ${cur}) )
65 return 081 return 0
66 ;;82 ;;
6783
68 status)84 status)
69 COMPREPLY=( $(compgen -W "${vis_opts} $(_upstart_conf_jobs)" -- ${cur}) )85 COMPREPLY=( $(compgen -W "$(_upstart_jobs)" -- ${cur}) )
70 return 086 return 0
71 ;;87 ;;
7288
89 check-config)
90 COMPREPLY=( $(compgen -W "-w --warn -i --ignore-events= $(_upstart_jobs)" -- ${cur}) )
91 return 0
92 ;;
73 show-config)93 show-config)
74 COMPREPLY=( $(compgen -W "-e --enumerate $(_upstart_conf_jobs)" -- ${cur}) )94 COMPREPLY=( $(compgen -W "-e --enumerate $(_upstart_jobs)" -- ${cur}) )
75 return 095 return 0
76 ;;96 ;;
7797
78 -n|--no-wait)98 -n|--no-wait)
79 # allow no wait after start/stop commands99 # allow 'no wait' for certain commands
80 for cmd in start stop100 for cmd in start stop restart emit
81 do101 do
82 cwords=${COMP_WORDS[@]##}102 cwords=${COMP_WORDS[@]##}
83 filtered_cwords=${COMP_WORDS[@]##${cmd}}103 filtered_cwords=${COMP_WORDS[@]##${cmd}}
84 if [ "$filtered_cwords" != "$cwords" ]104 if [ "$filtered_cwords" != "$cwords" ]
85 then105 then
86 COMPREPLY=( $(compgen -W "$(_upstart_${cmd}able_events)" -- ${cur}) )106 case "$cmd" in
107 start)
108 COMPREPLY=( $(compgen -W "$(_upstart_startable_jobs)" -- ${cur}) )
109 ;;
110
111 stop)
112 COMPREPLY=( $(compgen -W "$(_upstart_stoppable_jobs)" -- ${cur}) )
113 ;;
114
115 restart)
116 COMPREPLY=( $(compgen -W "$(_upstart_stoppable_jobs)" -- ${cur}) )
117 ;;
118
119 emit)
120 COMPREPLY=( $(compgen -W "$(_upstart_events)" -- ${cur}) )
121 ;;
122 esac
87 return 0123 return 0
88 fi124 fi
89 done125 done
@@ -118,7 +154,7 @@
118 ;;154 ;;
119 esac155 esac
120156
121 COMPREPLY=( $(compgen -W "$opts $(_upstart_startable_events)" -- ${cur}) )157 COMPREPLY=( $(compgen -W "$opts $(_upstart_startable_jobs)" -- ${cur}) )
122 return 0158 return 0
123} && complete -F _upstart_start start159} && complete -F _upstart_start start
124160
@@ -138,7 +174,7 @@
138 ;;174 ;;
139 esac175 esac
140176
141 COMPREPLY=( $(compgen -W "$opts $(_upstart_stoppable_events)" -- ${cur}) )177 COMPREPLY=( $(compgen -W "$opts $(_upstart_stoppable_jobs)" -- ${cur}) )
142 return 0178 return 0
143} && complete -F _upstart_stop stop179} && complete -F _upstart_stop stop
144180
@@ -158,7 +194,7 @@
158 ;;194 ;;
159 esac195 esac
160196
161 COMPREPLY=( $(compgen -W "$opts $(_upstart_events)" -- ${cur}) )197 COMPREPLY=( $(compgen -W "$opts $(_upstart_stoppable_jobs)" -- ${cur}) )
162 return 0198 return 0
163199
164} && complete -F _upstart_restart restart200} && complete -F _upstart_restart restart
@@ -178,7 +214,7 @@
178 ;;214 ;;
179 esac215 esac
180216
181 COMPREPLY=( $(compgen -W "$opts $(_upstart_events)" -- ${cur}) )217 COMPREPLY=( $(compgen -W "$opts $(_upstart_jobs)" -- ${cur}) )
182 return 0218 return 0
183219
184} && complete -F _upstart_status status220} && complete -F _upstart_status status
@@ -198,7 +234,7 @@
198 ;;234 ;;
199 esac235 esac
200236
201 COMPREPLY=( $(compgen -W "$opts $(_upstart_events)" -- ${cur}) )237 COMPREPLY=( $(compgen -W "$opts $(_upstart_stoppable_jobs)" -- ${cur}) )
202 return 0238 return 0
203239
204} && complete -F _upstart_reload reload240} && complete -F _upstart_reload reload
205241
=== modified file 'contrib/vim/syntax/upstart.vim'
--- contrib/vim/syntax/upstart.vim 2009-07-08 19:59:21 +0000
+++ contrib/vim/syntax/upstart.vim 2011-06-17 11:15:58 +0000
@@ -1,10 +1,11 @@
1" Vim syntax file1" Vim syntax file
2" Language: Upstart job files2" Language: Upstart job files
3" Maintainer: Michael Biebl <biebl@debian.org>3" Maintainer: Michael Biebl <biebl@debian.org>
4" Last Change: 2007 Feb 134" James Hunt <james.hunt@ubuntu.com>
5" Last Change: 2011 Jun 14
5" License: GPL v26" License: GPL v2
6" Version: 0.17" Version: 0.3
7" Remark: Syntax highlighting for upstart job files.8" Remark: Syntax highlighting for Upstart (init(8)) job files.
8"9"
9" It is inspired by the initng syntax file and includes sh.vim to do the10" It is inspired by the initng syntax file and includes sh.vim to do the
10" highlighting of script blocks.11" highlighting of script blocks.
@@ -16,7 +17,6 @@
16endif17endif
1718
18let is_bash = 119let is_bash = 1
19"unlet! b:current_syntax
20syn include @Shell syntax/sh.vim20syn include @Shell syntax/sh.vim
2121
22syn case match22syn case match
@@ -31,8 +31,12 @@
31syn cluster upstartShellCluster contains=@Shell31syn cluster upstartShellCluster contains=@Shell
3232
33" one argument33" one argument
34syn keyword upstartStatement description author version34syn keyword upstartStatement description author version instance expect
35syn keyword upstartStatement pid kill normal console env umask nice limit chroot chdir exec35syn keyword upstartStatement pid kill normal console env exit export
36syn keyword upstartStatement umask nice oom chroot chdir exec
37
38" two arguments
39syn keyword upstartStatement limit
3640
37" one or more arguments (events)41" one or more arguments (events)
38syn keyword upstartStatement emits42syn keyword upstartStatement emits
@@ -40,27 +44,62 @@
40syn keyword upstartStatement on start stop44syn keyword upstartStatement on start stop
4145
42" flag, no parameter46" flag, no parameter
43syn keyword upstartStatement daemon respawn service instance47syn keyword upstartStatement respawn service instance manual debug task
4448
45" prefix for exec or script 49" prefix for exec or script
46syn keyword upstartOption pre-start post-start pre-stop post-stop50syn keyword upstartOption pre-start post-start pre-stop post-stop
4751
48" options for pid52" option for kill
49syn keyword upstartOption file binary timeout53syn keyword upstartOption timeout signal
50" option for 54" option for oom
51syn keyword upstartOption timeout55syn keyword upstartOption score never
52" option for respawn
53syn keyword upstartOption limit
54" options for console56" options for console
55syn keyword upstartOption logged output owner none57syn keyword upstartOption output owner
5658" options for expect
57syn keyword upstartEvent startup stalled control-alt-delete kbdrequest starting started stopping stopped runlevel59syn keyword upstartOption stop fork daemon none
5860" options for limit
59hi def link upstartComment Comment61syn keyword upstartOption unlimited core cpu data fsize memlock msgqueue nice
60hi def link upstartTodo Todo62syn keyword upstartOption nofile nproc rss rtprio sigpending stack
61hi def link upstartString String63
64" 'options' for start/stop on
65syn keyword upstartOption and or
66
67" Upstart itself and associated utilities
68syn keyword upstartEvent runlevel
69syn keyword upstartEvent started
70syn keyword upstartEvent starting
71syn keyword upstartEvent startup
72syn keyword upstartEvent stopped
73syn keyword upstartEvent stopping
74syn match upstartEvent /control-alt-delete/
75syn match upstartEvent /keyboard-request/
76syn match upstartEvent /power-status-changed/
77
78" D-Bus
79syn match upstartEvent /dbus-activation/
80
81" Display Manager (ie gdm)
82syn match upstartEvent /desktop-session-start/
83syn match upstartEvent /login-session-start/
84
85" mountall
86syn keyword upstartEvent filesystem
87syn keyword upstartEvent mounted
88syn keyword upstartEvent mounting
89syn match upstartEvent /\(\<local\>\|\<virtual\>\|\<remote\>\)-filesystems/
90syn match upstartEvent /all-swaps/
91
92" upstart-udev-bridge and ifup/down
93syn match upstartEvent /\<\i\{-1,}-device-\(\<added\>\|\<removed\>\|\<up\>\|\<down\>\)/
94
95" upstart-socket-bridge
96syn keyword upstartEvent socket
97
98hi def link upstartComment Comment
99hi def link upstartTodo Todo
100hi def link upstartString String
62hi def link upstartStatement Statement101hi def link upstartStatement Statement
63hi def link upstartOption Type102hi def link upstartOption Type
64hi def link upstartEvent Define103hi def link upstartEvent Define
65104
66let b:current_syntax = "upstart"105let b:current_syntax = "upstart"
67106
=== modified file 'debian/changelog'
--- debian/changelog 2011-05-25 19:38:25 +0000
+++ debian/changelog 2011-06-17 11:15:58 +0000
@@ -1,3 +1,24 @@
1upstart (1.3-0ubuntu3) oneiric; urgency=low
2
3 * init/paths.h: Syned with upstream since Ubuntu file appears to have
4 diff applied twice, causing redefines.
5
6 -- James Hunt <james.hunt@ubuntu.com> Fri, 17 Jun 2011 09:59:49 +0100
7
8upstart (1.3-0ubuntu2) oneiric; urgency=low
9
10 * init/Makefile.am: Sync up from upstream, dropping TEST define which is
11 no longer required now we set UPSTART_NO_SESSIONS for init/tests/*.c
12 and specify "--no-sessions" for util/tests/*.c.
13
14 -- James Hunt <james.hunt@ubuntu.com> Fri, 17 Jun 2011 09:47:36 +0100
15
16upstart (1.3-0ubuntu1) oneiric; urgency=low
17
18 * Merge of Upstart 1.3 (lp:upstart @ 1.3 release tag).
19
20 -- James Hunt <james.hunt@ubuntu.com> Thu, 16 Jun 2011 15:09:41 +0100
21
1upstart (0.9.7-3) oneiric; urgency=low22upstart (0.9.7-3) oneiric; urgency=low
223
3 * Merge of upstream lp:~upstart-devel/upstart/0.9: Updates for24 * Merge of upstream lp:~upstart-devel/upstart/0.9: Updates for
425
=== modified file 'extra/Makefile.am'
--- extra/Makefile.am 2011-05-25 19:25:11 +0000
+++ extra/Makefile.am 2011-06-17 11:15:58 +0000
@@ -74,7 +74,6 @@
74else74else
75EXTRA_DIST = \75EXTRA_DIST = \
76 man/upstart-udev-bridge.876 man/upstart-udev-bridge.8
77
78endif77endif
7978
8079
8180
=== added file 'extra/conf/upstart-socket-bridge.conf'
--- extra/conf/upstart-socket-bridge.conf 1970-01-01 00:00:00 +0000
+++ extra/conf/upstart-socket-bridge.conf 2011-06-17 11:15:58 +0000
@@ -0,0 +1,16 @@
1# upstart-socket-bridge - Bridge socket events into upstart
2#
3# This helper daemon receives socket(7) events and
4# emits equivalent Upstart events.
5
6description "Bridge socket events into upstart"
7
8emits socket
9
10start on net-device-up IFACE=lo
11stop on runlevel [!2345]
12
13expect daemon
14respawn
15
16exec upstart-socket-bridge --daemon
017
=== removed file 'extra/conf/upstart-socket-bridge.conf'
--- extra/conf/upstart-socket-bridge.conf 2011-05-25 19:25:11 +0000
+++ extra/conf/upstart-socket-bridge.conf 1970-01-01 00:00:00 +0000
@@ -1,16 +0,0 @@
1# upstart-socket-bridge - Bridge socket events into upstart
2#
3# This helper daemon receives socket(7) events and
4# emits equivalent Upstart events.
5
6description "Bridge socket events into upstart"
7
8emits socket
9
10start on net-device-up IFACE=lo
11stop on runlevel [!2345]
12
13expect daemon
14respawn
15
16exec upstart-socket-bridge --daemon
170
=== added file 'extra/man/socket-event.7'
--- extra/man/socket-event.7 1970-01-01 00:00:00 +0000
+++ extra/man/socket-event.7 2011-06-17 11:15:58 +0000
@@ -0,0 +1,92 @@
1.TH socket\-event 8 2011-03-08 upstart
2.\"
3.SH NAME
4socket \- event signalling that a socket connection has been made
5.\"
6.SH SYNOPSIS
7.B socket
8.BI PROTO\fR= PROTO
9.BI PORT\fR= PORT
10.BI ADDR\fR= ADDR
11
12.B socket
13.BI PROTO\fR= PROTO
14.BI PATH\fR= PATH
15.\"
16.SH DESCRIPTION
17
18The
19.B socket
20event is generated by the
21.BR upstart\-socket\-bridge (8)
22daemon when a socket connection is made whose details match the
23socket event condition and environment specified in a jobs
24.B start on
25or
26.B stop on
27stanza.
28
29When an incoming connection is detected, the file descriptor
30representing the socket is passed to the job in question to allow it to
31.BR accept (2)
32the connection. Additionally, the environment variable
33.B UPSTART_JOB
34will contain the name of the event ("socket") and the environment
35variable
36.B UPSTART_FDS
37will contain the number of the file descriptor corresponding to the
38listening socket.
39.\"
40.SH EXAMPLES
41.\"
42.SS Internet socket
43Start web server when first client connects from localhost:
44.RS
45.nf
46
47start on socket PROTO=inet PORT=80 ADDR=127.0.0.1
48.fi
49.RE
50.\"
51.SS Local socket
52.P
53.RS
54.nf
55
56start on socket PROTO=unix PATH=/var/run/.s.pgsql.1234
57.fi
58.FE
59.\"
60.SS Abstract socket
61.P
62
63.RS
64.nf
65
66start on socket PROTO=unix PATH=@/at/upstart/example
67.fi
68.FE
69.\"
70.SH AUTHOR
71Written by Scott James Remnant
72.RB < scott@netsplit.com >
73
74Manual page written by James Hunt
75.RB < james.hunt@ubuntu.com >
76.\"
77.SH BUGS
78Report bugs at
79.RB < https://launchpad.net/upstart/+bugs >
80.\"
81.SH COPYRIGHT
82Copyright \(co 2011 Canonical Ltd.
83.PP
84This is free software; see the source for copying conditions. There is NO
85warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
86.\"
87.SH SEE ALSO
88.BR init (5)
89.BR init (8)
90.BR socket (2)
91.BR socket (7)
92.BR upstart\-socket\-bridge (8)
093
=== removed file 'extra/man/socket-event.7'
--- extra/man/socket-event.7 2011-05-25 19:25:11 +0000
+++ extra/man/socket-event.7 1970-01-01 00:00:00 +0000
@@ -1,92 +0,0 @@
1.TH socket\-event 8 2011-03-08 upstart
2.\"
3.SH NAME
4socket \- event signalling that a socket connection has been made
5.\"
6.SH SYNOPSIS
7.B socket
8.BI PROTO\fR= PROTO
9.BI PORT\fR= PORT
10.BI ADDR\fR= ADDR
11
12.B socket
13.BI PROTO\fR= PROTO
14.BI PATH\fR= PATH
15.\"
16.SH DESCRIPTION
17
18The
19.B socket
20event is generated by the
21.BR upstart\-socket\-bridge (8)
22daemon when a socket connection is made whose details match the
23socket event condition and environment specified in a jobs
24.B start on
25or
26.B stop on
27stanza.
28
29When an incoming connection is detected, the file descriptor
30representing the socket is passed to the job in question to allow it to
31.BR accept (2)
32the connection. Additionally, the environment variable
33.B UPSTART_JOB
34will contain the name of the event ("socket") and the environment
35variable
36.B UPSTART_FDS
37will contain the number of the file descriptor corresponding to the
38listening socket.
39.\"
40.SH EXAMPLES
41.\"
42.SS Internet socket
43Start web server when first client connects from localhost:
44.RS
45.nf
46
47start on socket PROTO=inet PORT=80 ADDR=127.0.0.1
48.fi
49.RE
50.\"
51.SS Local socket
52.P
53.RS
54.nf
55
56start on socket PROTO=unix PATH=/var/run/.s.pgsql.1234
57.fi
58.FE
59.\"
60.SS Abstract socket
61.P
62
63.RS
64.nf
65
66start on socket PROTO=unix PATH=@/at/upstart/example
67.fi
68.FE
69.\"
70.SH AUTHOR
71Written by Scott James Remnant
72.RB < scott@netsplit.com >
73
74Manual page written by James Hunt
75.RB < james.hunt@ubuntu.com >
76.\"
77.SH BUGS
78Report bugs at
79.RB < https://launchpad.net/upstart/+bugs >
80.\"
81.SH COPYRIGHT
82Copyright \(co 2011 Canonical Ltd.
83.PP
84This is free software; see the source for copying conditions. There is NO
85warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
86.\"
87.SH SEE ALSO
88.BR init (5)
89.BR init (8)
90.BR socket (2)
91.BR socket (7)
92.BR upstart\-socket\-bridge (8)
930
=== added file 'extra/man/upstart-socket-bridge.8'
--- extra/man/upstart-socket-bridge.8 1970-01-01 00:00:00 +0000
+++ extra/man/upstart-socket-bridge.8 2011-06-17 11:15:58 +0000
@@ -0,0 +1,47 @@
1.TH upstart-socket-bridge 8 2011-03-08 upstart
2.\"
3.SH NAME
4upstart-socket-bridge \- Bridge between Upstart and sockets
5.\"
6.SH SYNOPSIS
7.B upstart-socket-bridge
8.RI [ OPTIONS ]...
9.\"
10.SH DESCRIPTION
11The
12.B upstart-socket-bridge
13queries the Upstart
14.BR init (8)
15daemon for all job configurations which
16.B start on
17or
18.B stop on
19the socket event. It then waits for an incoming connection on each
20specified
21.BR socket (7)
22and when detected emits the socket event (\fBsocket\-event\fP (7)),
23setting a number of environment variables for the job to query.
24.\"
25.SH AUTHOR
26Written by Scott James Remnant
27.RB < scott@netsplit.com >
28
29Manual page written by James Hunt
30.RB < james.hunt@ubuntu.com >
31.\"
32.SH BUGS
33Report bugs at
34.RB < https://launchpad.net/upstart/+bugs >
35.\"
36.SH COPYRIGHT
37Copyright \(co 2011 Canonical Ltd.
38.PP
39This is free software; see the source for copying conditions. There is NO
40warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
41.\"
42.SH SEE ALSO
43.BR init (5)
44.BR init (8)
45.BR socket (2)
46.BR socket (7)
47.BR socket\-event (7)
048
=== removed file 'extra/man/upstart-socket-bridge.8'
--- extra/man/upstart-socket-bridge.8 2011-05-25 19:25:11 +0000
+++ extra/man/upstart-socket-bridge.8 1970-01-01 00:00:00 +0000
@@ -1,47 +0,0 @@
1.TH upstart-socket-bridge 8 2011-03-08 upstart
2.\"
3.SH NAME
4upstart-socket-bridge \- Bridge between Upstart and sockets
5.\"
6.SH SYNOPSIS
7.B upstart-socket-bridge
8.RI [ OPTIONS ]...
9.\"
10.SH DESCRIPTION
11The
12.B upstart-socket-bridge
13queries the Upstart
14.BR init (8)
15daemon for all job configurations which
16.B start on
17or
18.B stop on
19the socket event. It then waits for an incoming connection on each
20specified
21.BR socket (7)
22and when detected emits the socket event (\fBsocket\-event\fP (7)),
23setting a number of environment variables for the job to query.
24.\"
25.SH AUTHOR
26Written by Scott James Remnant
27.RB < scott@netsplit.com >
28
29Manual page written by James Hunt
30.RB < james.hunt@ubuntu.com >
31.\"
32.SH BUGS
33Report bugs at
34.RB < https://launchpad.net/upstart/+bugs >
35.\"
36.SH COPYRIGHT
37Copyright \(co 2011 Canonical Ltd.
38.PP
39This is free software; see the source for copying conditions. There is NO
40warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
41.\"
42.SH SEE ALSO
43.BR init (5)
44.BR init (8)
45.BR socket (2)
46.BR socket (7)
47.BR socket\-event (7)
480
=== modified file 'extra/upstart-socket-bridge.c'
--- extra/upstart-socket-bridge.c 2011-05-25 19:25:11 +0000
+++ extra/upstart-socket-bridge.c 2011-06-17 11:15:58 +0000
@@ -478,7 +478,7 @@
478 nih_assert (! strcmp(socket_info[0], "socket"));478 nih_assert (! strcmp(socket_info[0], "socket"));
479479
480 sock = NIH_MUST (nih_new (job, Socket));480 sock = NIH_MUST (nih_new (job, Socket));
481 memset (sock, 0, sizeof sock);481 memset (sock, 0, sizeof (Socket));
482 sock->sock = -1;482 sock->sock = -1;
483483
484 nih_list_init (&sock->entry);484 nih_list_init (&sock->entry);
485485
=== modified file 'init/Makefile.am'
--- init/Makefile.am 2011-05-25 19:25:11 +0000
+++ init/Makefile.am 2011-06-17 11:15:58 +0000
@@ -145,19 +145,16 @@
145tests: $(BUILT_SOURCES) $(check_PROGRAMS)145tests: $(BUILT_SOURCES) $(check_PROGRAMS)
146146
147test_system_SOURCES = tests/test_system.c147test_system_SOURCES = tests/test_system.c
148test_system_CFLAGS = $(AM_CFLAGS) -DTEST
149test_system_LDADD = \148test_system_LDADD = \
150 system.o \149 system.o \
151 $(NIH_LIBS)150 $(NIH_LIBS)
152151
153test_environ_SOURCES = tests/test_environ.c152test_environ_SOURCES = tests/test_environ.c
154test_environ_CFLAGS = $(AM_CFLAGS) -DTEST
155test_environ_LDADD = \153test_environ_LDADD = \
156 environ.o \154 environ.o \
157 $(NIH_LIBS)155 $(NIH_LIBS)
158156
159test_process_SOURCES = tests/test_process.c157test_process_SOURCES = tests/test_process.c
160test_process_CFLAGS = $(AM_CFLAGS) -DTEST
161test_process_LDADD = \158test_process_LDADD = \
162 system.o environ.o process.o \159 system.o environ.o process.o \
163 job_class.o job_process.o job.o event.o event_operator.o blocked.o \160 job_class.o job_process.o job.o event.o event_operator.o blocked.o \
@@ -170,7 +167,6 @@
170 $(DBUS_LIBS)167 $(DBUS_LIBS)
171168
172test_job_class_SOURCES = tests/test_job_class.c169test_job_class_SOURCES = tests/test_job_class.c
173test_job_class_CFLAGS = $(AM_CFLAGS) -DTEST
174test_job_class_LDADD = \170test_job_class_LDADD = \
175 system.o environ.o process.o \171 system.o environ.o process.o \
176 job_class.o job_process.o job.o event.o event_operator.o blocked.o \172 job_class.o job_process.o job.o event.o event_operator.o blocked.o \
@@ -183,7 +179,6 @@
183 $(DBUS_LIBS)179 $(DBUS_LIBS)
184180
185test_job_process_SOURCES = tests/test_job_process.c181test_job_process_SOURCES = tests/test_job_process.c
186test_job_process_CFLAGS = $(AM_CFLAGS) -DTEST
187test_job_process_LDADD = \182test_job_process_LDADD = \
188 system.o environ.o process.o \183 system.o environ.o process.o \
189 job_class.o job_process.o job.o event.o event_operator.o blocked.o \184 job_class.o job_process.o job.o event.o event_operator.o blocked.o \
@@ -196,7 +191,6 @@
196 $(DBUS_LIBS)191 $(DBUS_LIBS)
197192
198test_job_SOURCES = tests/test_job.c193test_job_SOURCES = tests/test_job.c
199test_job_CFLAGS = $(AM_CFLAGS) -DTEST
200test_job_LDADD = \194test_job_LDADD = \
201 system.o environ.o process.o \195 system.o environ.o process.o \
202 job_class.o job_process.o job.o event.o event_operator.o blocked.o \196 job_class.o job_process.o job.o event.o event_operator.o blocked.o \
@@ -209,7 +203,6 @@
209 $(DBUS_LIBS)203 $(DBUS_LIBS)
210204
211test_event_SOURCES = tests/test_event.c205test_event_SOURCES = tests/test_event.c
212test_event_CFLAGS = $(AM_CFLAGS) -DTEST
213test_event_LDADD = \206test_event_LDADD = \
214 system.o environ.o process.o \207 system.o environ.o process.o \
215 job_class.o job_process.o job.o event.o event_operator.o blocked.o \208 job_class.o job_process.o job.o event.o event_operator.o blocked.o \
@@ -222,7 +215,6 @@
222 $(DBUS_LIBS)215 $(DBUS_LIBS)
223216
224test_event_operator_SOURCES = tests/test_event_operator.c217test_event_operator_SOURCES = tests/test_event_operator.c
225test_event_operator_CFLAGS = $(AM_CFLAGS) -DTEST
226test_event_operator_LDADD = \218test_event_operator_LDADD = \
227 system.o environ.o process.o \219 system.o environ.o process.o \
228 job_class.o job_process.o job.o event.o event_operator.o blocked.o \220 job_class.o job_process.o job.o event.o event_operator.o blocked.o \
@@ -235,7 +227,6 @@
235 $(DBUS_LIBS)227 $(DBUS_LIBS)
236228
237test_blocked_SOURCES = tests/test_blocked.c229test_blocked_SOURCES = tests/test_blocked.c
238test_blocked_CFLAGS = $(AM_CFLAGS) -DTEST
239test_blocked_LDADD = \230test_blocked_LDADD = \
240 system.o environ.o process.o \231 system.o environ.o process.o \
241 job_class.o job_process.o job.o event.o event_operator.o blocked.o \232 job_class.o job_process.o job.o event.o event_operator.o blocked.o \
@@ -248,7 +239,6 @@
248 $(DBUS_LIBS)239 $(DBUS_LIBS)
249240
250test_parse_job_SOURCES = tests/test_parse_job.c241test_parse_job_SOURCES = tests/test_parse_job.c
251test_parse_job_CFLAGS = $(AM_CFLAGS) -DTEST
252test_parse_job_LDADD = \242test_parse_job_LDADD = \
253 system.o environ.o process.o \243 system.o environ.o process.o \
254 job_class.o job_process.o job.o event.o event_operator.o blocked.o \244 job_class.o job_process.o job.o event.o event_operator.o blocked.o \
@@ -261,7 +251,6 @@
261 $(DBUS_LIBS)251 $(DBUS_LIBS)
262252
263test_parse_conf_SOURCES = tests/test_parse_conf.c253test_parse_conf_SOURCES = tests/test_parse_conf.c
264test_parse_conf_CFLAGS = $(AM_CFLAGS) -DTEST
265test_parse_conf_LDADD = \254test_parse_conf_LDADD = \
266 system.o environ.o process.o \255 system.o environ.o process.o \
267 job_class.o job_process.o job.o event.o event_operator.o blocked.o \256 job_class.o job_process.o job.o event.o event_operator.o blocked.o \
@@ -274,7 +263,6 @@
274 $(DBUS_LIBS)263 $(DBUS_LIBS)
275264
276test_conf_SOURCES = tests/test_conf.c265test_conf_SOURCES = tests/test_conf.c
277test_conf_CFLAGS = $(AM_CFLAGS) -DTEST
278test_conf_LDADD = \266test_conf_LDADD = \
279 system.o environ.o process.o \267 system.o environ.o process.o \
280 job_class.o job_process.o job.o event.o event_operator.o blocked.o \268 job_class.o job_process.o job.o event.o event_operator.o blocked.o \
@@ -287,7 +275,6 @@
287 $(DBUS_LIBS)275 $(DBUS_LIBS)
288276
289test_control_SOURCES = tests/test_control.c277test_control_SOURCES = tests/test_control.c
290test_control_CFLAGS = $(AM_CFLAGS) -DTEST
291test_control_LDADD = \278test_control_LDADD = \
292 system.o environ.o process.o \279 system.o environ.o process.o \
293 job_class.o job_process.o job.o event.o event_operator.o blocked.o \280 job_class.o job_process.o job.o event.o event_operator.o blocked.o \
294281
=== modified file 'init/Makefile.in'
--- init/Makefile.in 2011-05-25 19:25:11 +0000
+++ init/Makefile.in 2011-06-17 11:15:58 +0000
@@ -99,7 +99,7 @@
99AM_V_lt = $(am__v_lt_$(V))99AM_V_lt = $(am__v_lt_$(V))
100am__v_lt_ = $(am__v_lt_$(AM_DEFAULT_VERBOSITY))100am__v_lt_ = $(am__v_lt_$(AM_DEFAULT_VERBOSITY))
101am__v_lt_0 = --silent101am__v_lt_0 = --silent
102am_test_blocked_OBJECTS = test_blocked-test_blocked.$(OBJEXT)102am_test_blocked_OBJECTS = test_blocked.$(OBJEXT)
103test_blocked_OBJECTS = $(am_test_blocked_OBJECTS)103test_blocked_OBJECTS = $(am_test_blocked_OBJECTS)
104test_blocked_DEPENDENCIES = system.o environ.o process.o job_class.o \104test_blocked_DEPENDENCIES = system.o environ.o process.o job_class.o \
105 job_process.o job.o event.o event_operator.o blocked.o \105 job_process.o job.o event.o event_operator.o blocked.o \
@@ -107,10 +107,7 @@
107 com.ubuntu.Upstart.o com.ubuntu.Upstart.Job.o \107 com.ubuntu.Upstart.o com.ubuntu.Upstart.Job.o \
108 com.ubuntu.Upstart.Instance.o $(am__DEPENDENCIES_1) \108 com.ubuntu.Upstart.Instance.o $(am__DEPENDENCIES_1) \
109 $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1)109 $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1)
110test_blocked_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \110am_test_conf_OBJECTS = test_conf.$(OBJEXT)
111 $(LIBTOOLFLAGS) --mode=link $(CCLD) $(test_blocked_CFLAGS) \
112 $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
113am_test_conf_OBJECTS = test_conf-test_conf.$(OBJEXT)
114test_conf_OBJECTS = $(am_test_conf_OBJECTS)111test_conf_OBJECTS = $(am_test_conf_OBJECTS)
115test_conf_DEPENDENCIES = system.o environ.o process.o job_class.o \112test_conf_DEPENDENCIES = system.o environ.o process.o job_class.o \
116 job_process.o job.o event.o event_operator.o blocked.o \113 job_process.o job.o event.o event_operator.o blocked.o \
@@ -118,10 +115,7 @@
118 com.ubuntu.Upstart.o com.ubuntu.Upstart.Job.o \115 com.ubuntu.Upstart.o com.ubuntu.Upstart.Job.o \
119 com.ubuntu.Upstart.Instance.o $(am__DEPENDENCIES_1) \116 com.ubuntu.Upstart.Instance.o $(am__DEPENDENCIES_1) \
120 $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1)117 $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1)
121test_conf_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \118am_test_control_OBJECTS = test_control.$(OBJEXT)
122 $(LIBTOOLFLAGS) --mode=link $(CCLD) $(test_conf_CFLAGS) \
123 $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
124am_test_control_OBJECTS = test_control-test_control.$(OBJEXT)
125test_control_OBJECTS = $(am_test_control_OBJECTS)119test_control_OBJECTS = $(am_test_control_OBJECTS)
126test_control_DEPENDENCIES = system.o environ.o process.o job_class.o \120test_control_DEPENDENCIES = system.o environ.o process.o job_class.o \
127 job_process.o job.o event.o event_operator.o blocked.o \121 job_process.o job.o event.o event_operator.o blocked.o \
@@ -129,16 +123,10 @@
129 com.ubuntu.Upstart.o com.ubuntu.Upstart.Job.o \123 com.ubuntu.Upstart.o com.ubuntu.Upstart.Job.o \
130 com.ubuntu.Upstart.Instance.o $(am__DEPENDENCIES_1) \124 com.ubuntu.Upstart.Instance.o $(am__DEPENDENCIES_1) \
131 $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1)125 $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1)
132test_control_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \126am_test_environ_OBJECTS = test_environ.$(OBJEXT)
133 $(LIBTOOLFLAGS) --mode=link $(CCLD) $(test_control_CFLAGS) \
134 $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
135am_test_environ_OBJECTS = test_environ-test_environ.$(OBJEXT)
136test_environ_OBJECTS = $(am_test_environ_OBJECTS)127test_environ_OBJECTS = $(am_test_environ_OBJECTS)
137test_environ_DEPENDENCIES = environ.o $(am__DEPENDENCIES_1)128test_environ_DEPENDENCIES = environ.o $(am__DEPENDENCIES_1)
138test_environ_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \129am_test_event_OBJECTS = test_event.$(OBJEXT)
139 $(LIBTOOLFLAGS) --mode=link $(CCLD) $(test_environ_CFLAGS) \
140 $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
141am_test_event_OBJECTS = test_event-test_event.$(OBJEXT)
142test_event_OBJECTS = $(am_test_event_OBJECTS)130test_event_OBJECTS = $(am_test_event_OBJECTS)
143test_event_DEPENDENCIES = system.o environ.o process.o job_class.o \131test_event_DEPENDENCIES = system.o environ.o process.o job_class.o \
144 job_process.o job.o event.o event_operator.o blocked.o \132 job_process.o job.o event.o event_operator.o blocked.o \
@@ -146,11 +134,7 @@
146 com.ubuntu.Upstart.o com.ubuntu.Upstart.Job.o \134 com.ubuntu.Upstart.o com.ubuntu.Upstart.Job.o \
147 com.ubuntu.Upstart.Instance.o $(am__DEPENDENCIES_1) \135 com.ubuntu.Upstart.Instance.o $(am__DEPENDENCIES_1) \
148 $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1)136 $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1)
149test_event_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \137am_test_event_operator_OBJECTS = test_event_operator.$(OBJEXT)
150 $(LIBTOOLFLAGS) --mode=link $(CCLD) $(test_event_CFLAGS) \
151 $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
152am_test_event_operator_OBJECTS = \
153 test_event_operator-test_event_operator.$(OBJEXT)
154test_event_operator_OBJECTS = $(am_test_event_operator_OBJECTS)138test_event_operator_OBJECTS = $(am_test_event_operator_OBJECTS)
155test_event_operator_DEPENDENCIES = system.o environ.o process.o \139test_event_operator_DEPENDENCIES = system.o environ.o process.o \
156 job_class.o job_process.o job.o event.o event_operator.o \140 job_class.o job_process.o job.o event.o event_operator.o \
@@ -158,11 +142,7 @@
158 com.ubuntu.Upstart.o com.ubuntu.Upstart.Job.o \142 com.ubuntu.Upstart.o com.ubuntu.Upstart.Job.o \
159 com.ubuntu.Upstart.Instance.o $(am__DEPENDENCIES_1) \143 com.ubuntu.Upstart.Instance.o $(am__DEPENDENCIES_1) \
160 $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1)144 $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1)
161test_event_operator_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \145am_test_job_OBJECTS = test_job.$(OBJEXT)
162 $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CCLD) \
163 $(test_event_operator_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \
164 $(LDFLAGS) -o $@
165am_test_job_OBJECTS = test_job-test_job.$(OBJEXT)
166test_job_OBJECTS = $(am_test_job_OBJECTS)146test_job_OBJECTS = $(am_test_job_OBJECTS)
167test_job_DEPENDENCIES = system.o environ.o process.o job_class.o \147test_job_DEPENDENCIES = system.o environ.o process.o job_class.o \
168 job_process.o job.o event.o event_operator.o blocked.o \148 job_process.o job.o event.o event_operator.o blocked.o \
@@ -170,10 +150,7 @@
170 com.ubuntu.Upstart.o com.ubuntu.Upstart.Job.o \150 com.ubuntu.Upstart.o com.ubuntu.Upstart.Job.o \
171 com.ubuntu.Upstart.Instance.o $(am__DEPENDENCIES_1) \151 com.ubuntu.Upstart.Instance.o $(am__DEPENDENCIES_1) \
172 $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1)152 $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1)
173test_job_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \153am_test_job_class_OBJECTS = test_job_class.$(OBJEXT)
174 $(LIBTOOLFLAGS) --mode=link $(CCLD) $(test_job_CFLAGS) \
175 $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
176am_test_job_class_OBJECTS = test_job_class-test_job_class.$(OBJEXT)
177test_job_class_OBJECTS = $(am_test_job_class_OBJECTS)154test_job_class_OBJECTS = $(am_test_job_class_OBJECTS)
178test_job_class_DEPENDENCIES = system.o environ.o process.o job_class.o \155test_job_class_DEPENDENCIES = system.o environ.o process.o job_class.o \
179 job_process.o job.o event.o event_operator.o blocked.o \156 job_process.o job.o event.o event_operator.o blocked.o \
@@ -181,12 +158,7 @@
181 com.ubuntu.Upstart.o com.ubuntu.Upstart.Job.o \158 com.ubuntu.Upstart.o com.ubuntu.Upstart.Job.o \
182 com.ubuntu.Upstart.Instance.o $(am__DEPENDENCIES_1) \159 com.ubuntu.Upstart.Instance.o $(am__DEPENDENCIES_1) \
183 $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1)160 $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1)
184test_job_class_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \161am_test_job_process_OBJECTS = test_job_process.$(OBJEXT)
185 $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CCLD) \
186 $(test_job_class_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o \
187 $@
188am_test_job_process_OBJECTS = \
189 test_job_process-test_job_process.$(OBJEXT)
190test_job_process_OBJECTS = $(am_test_job_process_OBJECTS)162test_job_process_OBJECTS = $(am_test_job_process_OBJECTS)
191test_job_process_DEPENDENCIES = system.o environ.o process.o \163test_job_process_DEPENDENCIES = system.o environ.o process.o \
192 job_class.o job_process.o job.o event.o event_operator.o \164 job_class.o job_process.o job.o event.o event_operator.o \
@@ -194,12 +166,7 @@
194 com.ubuntu.Upstart.o com.ubuntu.Upstart.Job.o \166 com.ubuntu.Upstart.o com.ubuntu.Upstart.Job.o \
195 com.ubuntu.Upstart.Instance.o $(am__DEPENDENCIES_1) \167 com.ubuntu.Upstart.Instance.o $(am__DEPENDENCIES_1) \
196 $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1)168 $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1)
197test_job_process_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \169am_test_parse_conf_OBJECTS = test_parse_conf.$(OBJEXT)
198 $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CCLD) \
199 $(test_job_process_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) \
200 -o $@
201am_test_parse_conf_OBJECTS = \
202 test_parse_conf-test_parse_conf.$(OBJEXT)
203test_parse_conf_OBJECTS = $(am_test_parse_conf_OBJECTS)170test_parse_conf_OBJECTS = $(am_test_parse_conf_OBJECTS)
204test_parse_conf_DEPENDENCIES = system.o environ.o process.o \171test_parse_conf_DEPENDENCIES = system.o environ.o process.o \
205 job_class.o job_process.o job.o event.o event_operator.o \172 job_class.o job_process.o job.o event.o event_operator.o \
@@ -207,11 +174,7 @@
207 com.ubuntu.Upstart.o com.ubuntu.Upstart.Job.o \174 com.ubuntu.Upstart.o com.ubuntu.Upstart.Job.o \
208 com.ubuntu.Upstart.Instance.o $(am__DEPENDENCIES_1) \175 com.ubuntu.Upstart.Instance.o $(am__DEPENDENCIES_1) \
209 $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1)176 $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1)
210test_parse_conf_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \177am_test_parse_job_OBJECTS = test_parse_job.$(OBJEXT)
211 $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CCLD) \
212 $(test_parse_conf_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) \
213 -o $@
214am_test_parse_job_OBJECTS = test_parse_job-test_parse_job.$(OBJEXT)
215test_parse_job_OBJECTS = $(am_test_parse_job_OBJECTS)178test_parse_job_OBJECTS = $(am_test_parse_job_OBJECTS)
216test_parse_job_DEPENDENCIES = system.o environ.o process.o job_class.o \179test_parse_job_DEPENDENCIES = system.o environ.o process.o job_class.o \
217 job_process.o job.o event.o event_operator.o blocked.o \180 job_process.o job.o event.o event_operator.o blocked.o \
@@ -219,11 +182,7 @@
219 com.ubuntu.Upstart.o com.ubuntu.Upstart.Job.o \182 com.ubuntu.Upstart.o com.ubuntu.Upstart.Job.o \
220 com.ubuntu.Upstart.Instance.o $(am__DEPENDENCIES_1) \183 com.ubuntu.Upstart.Instance.o $(am__DEPENDENCIES_1) \
221 $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1)184 $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1)
222test_parse_job_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \185am_test_process_OBJECTS = test_process.$(OBJEXT)
223 $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CCLD) \
224 $(test_parse_job_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o \
225 $@
226am_test_process_OBJECTS = test_process-test_process.$(OBJEXT)
227test_process_OBJECTS = $(am_test_process_OBJECTS)186test_process_OBJECTS = $(am_test_process_OBJECTS)
228test_process_DEPENDENCIES = system.o environ.o process.o job_class.o \187test_process_DEPENDENCIES = system.o environ.o process.o job_class.o \
229 job_process.o job.o event.o event_operator.o blocked.o \188 job_process.o job.o event.o event_operator.o blocked.o \
@@ -231,15 +190,9 @@
231 com.ubuntu.Upstart.o com.ubuntu.Upstart.Job.o \190 com.ubuntu.Upstart.o com.ubuntu.Upstart.Job.o \
232 com.ubuntu.Upstart.Instance.o $(am__DEPENDENCIES_1) \191 com.ubuntu.Upstart.Instance.o $(am__DEPENDENCIES_1) \
233 $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1)192 $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1)
234test_process_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \193am_test_system_OBJECTS = test_system.$(OBJEXT)
235 $(LIBTOOLFLAGS) --mode=link $(CCLD) $(test_process_CFLAGS) \
236 $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
237am_test_system_OBJECTS = test_system-test_system.$(OBJEXT)
238test_system_OBJECTS = $(am_test_system_OBJECTS)194test_system_OBJECTS = $(am_test_system_OBJECTS)
239test_system_DEPENDENCIES = system.o $(am__DEPENDENCIES_1)195test_system_DEPENDENCIES = system.o $(am__DEPENDENCIES_1)
240test_system_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
241 $(LIBTOOLFLAGS) --mode=link $(CCLD) $(test_system_CFLAGS) \
242 $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
243DEFAULT_INCLUDES = 196DEFAULT_INCLUDES =
244depcomp = $(SHELL) $(top_srcdir)/depcomp197depcomp = $(SHELL) $(top_srcdir)/depcomp
245am__depfiles_maybe = depfiles198am__depfiles_maybe = depfiles
@@ -594,19 +547,16 @@
594547
595EXTRA_DIST = init.supp548EXTRA_DIST = init.supp
596test_system_SOURCES = tests/test_system.c549test_system_SOURCES = tests/test_system.c
597test_system_CFLAGS = $(AM_CFLAGS) -DTEST
598test_system_LDADD = \550test_system_LDADD = \
599 system.o \551 system.o \
600 $(NIH_LIBS)552 $(NIH_LIBS)
601553
602test_environ_SOURCES = tests/test_environ.c554test_environ_SOURCES = tests/test_environ.c
603test_environ_CFLAGS = $(AM_CFLAGS) -DTEST
604test_environ_LDADD = \555test_environ_LDADD = \
605 environ.o \556 environ.o \
606 $(NIH_LIBS)557 $(NIH_LIBS)
607558
608test_process_SOURCES = tests/test_process.c559test_process_SOURCES = tests/test_process.c
609test_process_CFLAGS = $(AM_CFLAGS) -DTEST
610test_process_LDADD = \560test_process_LDADD = \
611 system.o environ.o process.o \561 system.o environ.o process.o \
612 job_class.o job_process.o job.o event.o event_operator.o blocked.o \562 job_class.o job_process.o job.o event.o event_operator.o blocked.o \
@@ -619,7 +569,6 @@
619 $(DBUS_LIBS)569 $(DBUS_LIBS)
620570
621test_job_class_SOURCES = tests/test_job_class.c571test_job_class_SOURCES = tests/test_job_class.c
622test_job_class_CFLAGS = $(AM_CFLAGS) -DTEST
623test_job_class_LDADD = \572test_job_class_LDADD = \
624 system.o environ.o process.o \573 system.o environ.o process.o \
625 job_class.o job_process.o job.o event.o event_operator.o blocked.o \574 job_class.o job_process.o job.o event.o event_operator.o blocked.o \
@@ -632,7 +581,6 @@
632 $(DBUS_LIBS)581 $(DBUS_LIBS)
633582
634test_job_process_SOURCES = tests/test_job_process.c583test_job_process_SOURCES = tests/test_job_process.c
635test_job_process_CFLAGS = $(AM_CFLAGS) -DTEST
636test_job_process_LDADD = \584test_job_process_LDADD = \
637 system.o environ.o process.o \585 system.o environ.o process.o \
638 job_class.o job_process.o job.o event.o event_operator.o blocked.o \586 job_class.o job_process.o job.o event.o event_operator.o blocked.o \
@@ -645,7 +593,6 @@
645 $(DBUS_LIBS)593 $(DBUS_LIBS)
646594
647test_job_SOURCES = tests/test_job.c595test_job_SOURCES = tests/test_job.c
648test_job_CFLAGS = $(AM_CFLAGS) -DTEST
649test_job_LDADD = \596test_job_LDADD = \
650 system.o environ.o process.o \597 system.o environ.o process.o \
651 job_class.o job_process.o job.o event.o event_operator.o blocked.o \598 job_class.o job_process.o job.o event.o event_operator.o blocked.o \
@@ -658,7 +605,6 @@
658 $(DBUS_LIBS)605 $(DBUS_LIBS)
659606
660test_event_SOURCES = tests/test_event.c607test_event_SOURCES = tests/test_event.c
661test_event_CFLAGS = $(AM_CFLAGS) -DTEST
662test_event_LDADD = \608test_event_LDADD = \
663 system.o environ.o process.o \609 system.o environ.o process.o \
664 job_class.o job_process.o job.o event.o event_operator.o blocked.o \610 job_class.o job_process.o job.o event.o event_operator.o blocked.o \
@@ -671,7 +617,6 @@
671 $(DBUS_LIBS)617 $(DBUS_LIBS)
672618
673test_event_operator_SOURCES = tests/test_event_operator.c619test_event_operator_SOURCES = tests/test_event_operator.c
674test_event_operator_CFLAGS = $(AM_CFLAGS) -DTEST
675test_event_operator_LDADD = \620test_event_operator_LDADD = \
676 system.o environ.o process.o \621 system.o environ.o process.o \
677 job_class.o job_process.o job.o event.o event_operator.o blocked.o \622 job_class.o job_process.o job.o event.o event_operator.o blocked.o \
@@ -684,7 +629,6 @@
684 $(DBUS_LIBS)629 $(DBUS_LIBS)
685630
686test_blocked_SOURCES = tests/test_blocked.c631test_blocked_SOURCES = tests/test_blocked.c
687test_blocked_CFLAGS = $(AM_CFLAGS) -DTEST
688test_blocked_LDADD = \632test_blocked_LDADD = \
689 system.o environ.o process.o \633 system.o environ.o process.o \
690 job_class.o job_process.o job.o event.o event_operator.o blocked.o \634 job_class.o job_process.o job.o event.o event_operator.o blocked.o \
@@ -697,7 +641,6 @@
697 $(DBUS_LIBS)641 $(DBUS_LIBS)
698642
699test_parse_job_SOURCES = tests/test_parse_job.c643test_parse_job_SOURCES = tests/test_parse_job.c
700test_parse_job_CFLAGS = $(AM_CFLAGS) -DTEST
701test_parse_job_LDADD = \644test_parse_job_LDADD = \
702 system.o environ.o process.o \645 system.o environ.o process.o \
703 job_class.o job_process.o job.o event.o event_operator.o blocked.o \646 job_class.o job_process.o job.o event.o event_operator.o blocked.o \
@@ -710,7 +653,6 @@
710 $(DBUS_LIBS)653 $(DBUS_LIBS)
711654
712test_parse_conf_SOURCES = tests/test_parse_conf.c655test_parse_conf_SOURCES = tests/test_parse_conf.c
713test_parse_conf_CFLAGS = $(AM_CFLAGS) -DTEST
714test_parse_conf_LDADD = \656test_parse_conf_LDADD = \
715 system.o environ.o process.o \657 system.o environ.o process.o \
716 job_class.o job_process.o job.o event.o event_operator.o blocked.o \658 job_class.o job_process.o job.o event.o event_operator.o blocked.o \
@@ -723,7 +665,6 @@
723 $(DBUS_LIBS)665 $(DBUS_LIBS)
724666
725test_conf_SOURCES = tests/test_conf.c667test_conf_SOURCES = tests/test_conf.c
726test_conf_CFLAGS = $(AM_CFLAGS) -DTEST
727test_conf_LDADD = \668test_conf_LDADD = \
728 system.o environ.o process.o \669 system.o environ.o process.o \
729 job_class.o job_process.o job.o event.o event_operator.o blocked.o \670 job_class.o job_process.o job.o event.o event_operator.o blocked.o \
@@ -736,7 +677,6 @@
736 $(DBUS_LIBS)677 $(DBUS_LIBS)
737678
738test_control_SOURCES = tests/test_control.c679test_control_SOURCES = tests/test_control.c
739test_control_CFLAGS = $(AM_CFLAGS) -DTEST
740test_control_LDADD = \680test_control_LDADD = \
741 system.o environ.o process.o \681 system.o environ.o process.o \
742 job_class.o job_process.o job.o event.o event_operator.o blocked.o \682 job_class.o job_process.o job.o event.o event_operator.o blocked.o \
@@ -840,43 +780,43 @@
840 $(AM_V_CCLD)$(LINK) $(init_OBJECTS) $(init_LDADD) $(LIBS)780 $(AM_V_CCLD)$(LINK) $(init_OBJECTS) $(init_LDADD) $(LIBS)
841test_blocked$(EXEEXT): $(test_blocked_OBJECTS) $(test_blocked_DEPENDENCIES) 781test_blocked$(EXEEXT): $(test_blocked_OBJECTS) $(test_blocked_DEPENDENCIES)
842 @rm -f test_blocked$(EXEEXT)782 @rm -f test_blocked$(EXEEXT)
843 $(AM_V_CCLD)$(test_blocked_LINK) $(test_blocked_OBJECTS) $(test_blocked_LDADD) $(LIBS)783 $(AM_V_CCLD)$(LINK) $(test_blocked_OBJECTS) $(test_blocked_LDADD) $(LIBS)
844test_conf$(EXEEXT): $(test_conf_OBJECTS) $(test_conf_DEPENDENCIES) 784test_conf$(EXEEXT): $(test_conf_OBJECTS) $(test_conf_DEPENDENCIES)
845 @rm -f test_conf$(EXEEXT)785 @rm -f test_conf$(EXEEXT)
846 $(AM_V_CCLD)$(test_conf_LINK) $(test_conf_OBJECTS) $(test_conf_LDADD) $(LIBS)786 $(AM_V_CCLD)$(LINK) $(test_conf_OBJECTS) $(test_conf_LDADD) $(LIBS)
847test_control$(EXEEXT): $(test_control_OBJECTS) $(test_control_DEPENDENCIES) 787test_control$(EXEEXT): $(test_control_OBJECTS) $(test_control_DEPENDENCIES)
848 @rm -f test_control$(EXEEXT)788 @rm -f test_control$(EXEEXT)
849 $(AM_V_CCLD)$(test_control_LINK) $(test_control_OBJECTS) $(test_control_LDADD) $(LIBS)789 $(AM_V_CCLD)$(LINK) $(test_control_OBJECTS) $(test_control_LDADD) $(LIBS)
850test_environ$(EXEEXT): $(test_environ_OBJECTS) $(test_environ_DEPENDENCIES) 790test_environ$(EXEEXT): $(test_environ_OBJECTS) $(test_environ_DEPENDENCIES)
851 @rm -f test_environ$(EXEEXT)791 @rm -f test_environ$(EXEEXT)
852 $(AM_V_CCLD)$(test_environ_LINK) $(test_environ_OBJECTS) $(test_environ_LDADD) $(LIBS)792 $(AM_V_CCLD)$(LINK) $(test_environ_OBJECTS) $(test_environ_LDADD) $(LIBS)
853test_event$(EXEEXT): $(test_event_OBJECTS) $(test_event_DEPENDENCIES) 793test_event$(EXEEXT): $(test_event_OBJECTS) $(test_event_DEPENDENCIES)
854 @rm -f test_event$(EXEEXT)794 @rm -f test_event$(EXEEXT)
855 $(AM_V_CCLD)$(test_event_LINK) $(test_event_OBJECTS) $(test_event_LDADD) $(LIBS)795 $(AM_V_CCLD)$(LINK) $(test_event_OBJECTS) $(test_event_LDADD) $(LIBS)
856test_event_operator$(EXEEXT): $(test_event_operator_OBJECTS) $(test_event_operator_DEPENDENCIES) 796test_event_operator$(EXEEXT): $(test_event_operator_OBJECTS) $(test_event_operator_DEPENDENCIES)
857 @rm -f test_event_operator$(EXEEXT)797 @rm -f test_event_operator$(EXEEXT)
858 $(AM_V_CCLD)$(test_event_operator_LINK) $(test_event_operator_OBJECTS) $(test_event_operator_LDADD) $(LIBS)798 $(AM_V_CCLD)$(LINK) $(test_event_operator_OBJECTS) $(test_event_operator_LDADD) $(LIBS)
859test_job$(EXEEXT): $(test_job_OBJECTS) $(test_job_DEPENDENCIES) 799test_job$(EXEEXT): $(test_job_OBJECTS) $(test_job_DEPENDENCIES)
860 @rm -f test_job$(EXEEXT)800 @rm -f test_job$(EXEEXT)
861 $(AM_V_CCLD)$(test_job_LINK) $(test_job_OBJECTS) $(test_job_LDADD) $(LIBS)801 $(AM_V_CCLD)$(LINK) $(test_job_OBJECTS) $(test_job_LDADD) $(LIBS)
862test_job_class$(EXEEXT): $(test_job_class_OBJECTS) $(test_job_class_DEPENDENCIES) 802test_job_class$(EXEEXT): $(test_job_class_OBJECTS) $(test_job_class_DEPENDENCIES)
863 @rm -f test_job_class$(EXEEXT)803 @rm -f test_job_class$(EXEEXT)
864 $(AM_V_CCLD)$(test_job_class_LINK) $(test_job_class_OBJECTS) $(test_job_class_LDADD) $(LIBS)804 $(AM_V_CCLD)$(LINK) $(test_job_class_OBJECTS) $(test_job_class_LDADD) $(LIBS)
865test_job_process$(EXEEXT): $(test_job_process_OBJECTS) $(test_job_process_DEPENDENCIES) 805test_job_process$(EXEEXT): $(test_job_process_OBJECTS) $(test_job_process_DEPENDENCIES)
866 @rm -f test_job_process$(EXEEXT)806 @rm -f test_job_process$(EXEEXT)
867 $(AM_V_CCLD)$(test_job_process_LINK) $(test_job_process_OBJECTS) $(test_job_process_LDADD) $(LIBS)807 $(AM_V_CCLD)$(LINK) $(test_job_process_OBJECTS) $(test_job_process_LDADD) $(LIBS)
868test_parse_conf$(EXEEXT): $(test_parse_conf_OBJECTS) $(test_parse_conf_DEPENDENCIES) 808test_parse_conf$(EXEEXT): $(test_parse_conf_OBJECTS) $(test_parse_conf_DEPENDENCIES)
869 @rm -f test_parse_conf$(EXEEXT)809 @rm -f test_parse_conf$(EXEEXT)
870 $(AM_V_CCLD)$(test_parse_conf_LINK) $(test_parse_conf_OBJECTS) $(test_parse_conf_LDADD) $(LIBS)810 $(AM_V_CCLD)$(LINK) $(test_parse_conf_OBJECTS) $(test_parse_conf_LDADD) $(LIBS)
871test_parse_job$(EXEEXT): $(test_parse_job_OBJECTS) $(test_parse_job_DEPENDENCIES) 811test_parse_job$(EXEEXT): $(test_parse_job_OBJECTS) $(test_parse_job_DEPENDENCIES)
872 @rm -f test_parse_job$(EXEEXT)812 @rm -f test_parse_job$(EXEEXT)
873 $(AM_V_CCLD)$(test_parse_job_LINK) $(test_parse_job_OBJECTS) $(test_parse_job_LDADD) $(LIBS)813 $(AM_V_CCLD)$(LINK) $(test_parse_job_OBJECTS) $(test_parse_job_LDADD) $(LIBS)
874test_process$(EXEEXT): $(test_process_OBJECTS) $(test_process_DEPENDENCIES) 814test_process$(EXEEXT): $(test_process_OBJECTS) $(test_process_DEPENDENCIES)
875 @rm -f test_process$(EXEEXT)815 @rm -f test_process$(EXEEXT)
876 $(AM_V_CCLD)$(test_process_LINK) $(test_process_OBJECTS) $(test_process_LDADD) $(LIBS)816 $(AM_V_CCLD)$(LINK) $(test_process_OBJECTS) $(test_process_LDADD) $(LIBS)
877test_system$(EXEEXT): $(test_system_OBJECTS) $(test_system_DEPENDENCIES) 817test_system$(EXEEXT): $(test_system_OBJECTS) $(test_system_DEPENDENCIES)
878 @rm -f test_system$(EXEEXT)818 @rm -f test_system$(EXEEXT)
879 $(AM_V_CCLD)$(test_system_LINK) $(test_system_OBJECTS) $(test_system_LDADD) $(LIBS)819 $(AM_V_CCLD)$(LINK) $(test_system_OBJECTS) $(test_system_LDADD) $(LIBS)
880820
881mostlyclean-compile:821mostlyclean-compile:
882 -rm -f *.$(OBJEXT)822 -rm -f *.$(OBJEXT)
@@ -902,19 +842,19 @@
902@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/process.Po@am__quote@842@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/process.Po@am__quote@
903@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/session.Po@am__quote@843@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/session.Po@am__quote@
904@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/system.Po@am__quote@844@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/system.Po@am__quote@
905@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test_blocked-test_blocked.Po@am__quote@845@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test_blocked.Po@am__quote@
906@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test_conf-test_conf.Po@am__quote@846@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test_conf.Po@am__quote@
907@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test_control-test_control.Po@am__quote@847@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test_control.Po@am__quote@
908@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test_environ-test_environ.Po@am__quote@848@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test_environ.Po@am__quote@
909@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test_event-test_event.Po@am__quote@849@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test_event.Po@am__quote@
910@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test_event_operator-test_event_operator.Po@am__quote@850@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test_event_operator.Po@am__quote@
911@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test_job-test_job.Po@am__quote@851@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test_job.Po@am__quote@
912@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test_job_class-test_job_class.Po@am__quote@852@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test_job_class.Po@am__quote@
913@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test_job_process-test_job_process.Po@am__quote@853@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test_job_process.Po@am__quote@
914@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test_parse_conf-test_parse_conf.Po@am__quote@854@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test_parse_conf.Po@am__quote@
915@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test_parse_job-test_parse_job.Po@am__quote@855@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test_parse_job.Po@am__quote@
916@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test_process-test_process.Po@am__quote@856@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test_process.Po@am__quote@
917@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test_system-test_system.Po@am__quote@857@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test_system.Po@am__quote@
918858
919.c.o:859.c.o:
920@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<860@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
@@ -940,213 +880,213 @@
940@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@880@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
941@am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ $<881@am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ $<
942882
943test_blocked-test_blocked.o: tests/test_blocked.c883test_blocked.o: tests/test_blocked.c
944@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.c884@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
945@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/test_blocked-test_blocked.Tpo $(DEPDIR)/test_blocked-test_blocked.Po885@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/test_blocked.Tpo $(DEPDIR)/test_blocked.Po
946@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@886@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@
947@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='tests/test_blocked.c' object='test_blocked-test_blocked.o' libtool=no @AMDEPBACKSLASH@887@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='tests/test_blocked.c' object='test_blocked.o' libtool=no @AMDEPBACKSLASH@
948@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@888@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
949@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.c889@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
950890
951test_blocked-test_blocked.obj: tests/test_blocked.c891test_blocked.obj: tests/test_blocked.c
952@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`892@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`
953@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/test_blocked-test_blocked.Tpo $(DEPDIR)/test_blocked-test_blocked.Po893@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/test_blocked.Tpo $(DEPDIR)/test_blocked.Po
954@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@894@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@
955@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='tests/test_blocked.c' object='test_blocked-test_blocked.obj' libtool=no @AMDEPBACKSLASH@895@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='tests/test_blocked.c' object='test_blocked.obj' libtool=no @AMDEPBACKSLASH@
956@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@896@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
957@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`897@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`
958898
959test_conf-test_conf.o: tests/test_conf.c899test_conf.o: tests/test_conf.c
960@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.c900@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
961@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/test_conf-test_conf.Tpo $(DEPDIR)/test_conf-test_conf.Po901@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/test_conf.Tpo $(DEPDIR)/test_conf.Po
962@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@902@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@
963@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='tests/test_conf.c' object='test_conf-test_conf.o' libtool=no @AMDEPBACKSLASH@903@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='tests/test_conf.c' object='test_conf.o' libtool=no @AMDEPBACKSLASH@
964@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@904@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
965@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.c905@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
966906
967test_conf-test_conf.obj: tests/test_conf.c907test_conf.obj: tests/test_conf.c
968@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`908@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`
969@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/test_conf-test_conf.Tpo $(DEPDIR)/test_conf-test_conf.Po909@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/test_conf.Tpo $(DEPDIR)/test_conf.Po
970@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@910@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@
971@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='tests/test_conf.c' object='test_conf-test_conf.obj' libtool=no @AMDEPBACKSLASH@911@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='tests/test_conf.c' object='test_conf.obj' libtool=no @AMDEPBACKSLASH@
972@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@912@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
973@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`913@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`
974914
975test_control-test_control.o: tests/test_control.c915test_control.o: tests/test_control.c
976@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.c916@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
977@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/test_control-test_control.Tpo $(DEPDIR)/test_control-test_control.Po917@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/test_control.Tpo $(DEPDIR)/test_control.Po
978@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@918@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@
979@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='tests/test_control.c' object='test_control-test_control.o' libtool=no @AMDEPBACKSLASH@919@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='tests/test_control.c' object='test_control.o' libtool=no @AMDEPBACKSLASH@
980@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@920@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
981@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.c921@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
982922
983test_control-test_control.obj: tests/test_control.c923test_control.obj: tests/test_control.c
984@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`924@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`
985@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/test_control-test_control.Tpo $(DEPDIR)/test_control-test_control.Po925@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/test_control.Tpo $(DEPDIR)/test_control.Po
986@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@926@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@
987@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='tests/test_control.c' object='test_control-test_control.obj' libtool=no @AMDEPBACKSLASH@927@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='tests/test_control.c' object='test_control.obj' libtool=no @AMDEPBACKSLASH@
988@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@928@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
989@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`929@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`
990930
991test_environ-test_environ.o: tests/test_environ.c931test_environ.o: tests/test_environ.c
992@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.c932@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
993@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/test_environ-test_environ.Tpo $(DEPDIR)/test_environ-test_environ.Po933@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/test_environ.Tpo $(DEPDIR)/test_environ.Po
994@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@934@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@
995@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='tests/test_environ.c' object='test_environ-test_environ.o' libtool=no @AMDEPBACKSLASH@935@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='tests/test_environ.c' object='test_environ.o' libtool=no @AMDEPBACKSLASH@
996@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@936@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
997@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.c937@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
998938
999test_environ-test_environ.obj: tests/test_environ.c939test_environ.obj: tests/test_environ.c
1000@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`940@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`
1001@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/test_environ-test_environ.Tpo $(DEPDIR)/test_environ-test_environ.Po941@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/test_environ.Tpo $(DEPDIR)/test_environ.Po
1002@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@942@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@
1003@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='tests/test_environ.c' object='test_environ-test_environ.obj' libtool=no @AMDEPBACKSLASH@943@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='tests/test_environ.c' object='test_environ.obj' libtool=no @AMDEPBACKSLASH@
1004@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@944@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
1005@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`945@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`
1006946
1007test_event-test_event.o: tests/test_event.c947test_event.o: tests/test_event.c
1008@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.c948@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
1009@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/test_event-test_event.Tpo $(DEPDIR)/test_event-test_event.Po949@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/test_event.Tpo $(DEPDIR)/test_event.Po
1010@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@950@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@
1011@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='tests/test_event.c' object='test_event-test_event.o' libtool=no @AMDEPBACKSLASH@951@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='tests/test_event.c' object='test_event.o' libtool=no @AMDEPBACKSLASH@
1012@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@952@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
1013@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.c953@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
1014954
1015test_event-test_event.obj: tests/test_event.c955test_event.obj: tests/test_event.c
1016@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`956@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`
1017@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/test_event-test_event.Tpo $(DEPDIR)/test_event-test_event.Po957@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/test_event.Tpo $(DEPDIR)/test_event.Po
1018@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@958@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@
1019@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='tests/test_event.c' object='test_event-test_event.obj' libtool=no @AMDEPBACKSLASH@959@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='tests/test_event.c' object='test_event.obj' libtool=no @AMDEPBACKSLASH@
1020@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@960@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
1021@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`961@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`
1022962
1023test_event_operator-test_event_operator.o: tests/test_event_operator.c963test_event_operator.o: tests/test_event_operator.c
1024@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.c964@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
1025@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/test_event_operator-test_event_operator.Tpo $(DEPDIR)/test_event_operator-test_event_operator.Po965@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/test_event_operator.Tpo $(DEPDIR)/test_event_operator.Po
1026@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@966@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@
1027@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='tests/test_event_operator.c' object='test_event_operator-test_event_operator.o' libtool=no @AMDEPBACKSLASH@967@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='tests/test_event_operator.c' object='test_event_operator.o' libtool=no @AMDEPBACKSLASH@
1028@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@968@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
1029@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.c969@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
1030970
1031test_event_operator-test_event_operator.obj: tests/test_event_operator.c971test_event_operator.obj: tests/test_event_operator.c
1032@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`972@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`
1033@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/test_event_operator-test_event_operator.Tpo $(DEPDIR)/test_event_operator-test_event_operator.Po973@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/test_event_operator.Tpo $(DEPDIR)/test_event_operator.Po
1034@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@974@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@
1035@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='tests/test_event_operator.c' object='test_event_operator-test_event_operator.obj' libtool=no @AMDEPBACKSLASH@975@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='tests/test_event_operator.c' object='test_event_operator.obj' libtool=no @AMDEPBACKSLASH@
1036@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@976@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
1037@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`977@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`
1038978
1039test_job-test_job.o: tests/test_job.c979test_job.o: tests/test_job.c
1040@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.c980@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
1041@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/test_job-test_job.Tpo $(DEPDIR)/test_job-test_job.Po981@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/test_job.Tpo $(DEPDIR)/test_job.Po
1042@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@982@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@
1043@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='tests/test_job.c' object='test_job-test_job.o' libtool=no @AMDEPBACKSLASH@983@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='tests/test_job.c' object='test_job.o' libtool=no @AMDEPBACKSLASH@
1044@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@984@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
1045@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.c985@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
1046986
1047test_job-test_job.obj: tests/test_job.c987test_job.obj: tests/test_job.c
1048@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`988@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`
1049@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/test_job-test_job.Tpo $(DEPDIR)/test_job-test_job.Po989@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/test_job.Tpo $(DEPDIR)/test_job.Po
1050@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@990@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@
1051@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='tests/test_job.c' object='test_job-test_job.obj' libtool=no @AMDEPBACKSLASH@991@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='tests/test_job.c' object='test_job.obj' libtool=no @AMDEPBACKSLASH@
1052@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@992@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
1053@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`993@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`
1054994
1055test_job_class-test_job_class.o: tests/test_job_class.c995test_job_class.o: tests/test_job_class.c
1056@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.c996@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
1057@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/test_job_class-test_job_class.Tpo $(DEPDIR)/test_job_class-test_job_class.Po997@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/test_job_class.Tpo $(DEPDIR)/test_job_class.Po
1058@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@998@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@
1059@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='tests/test_job_class.c' object='test_job_class-test_job_class.o' libtool=no @AMDEPBACKSLASH@999@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='tests/test_job_class.c' object='test_job_class.o' libtool=no @AMDEPBACKSLASH@
1060@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@1000@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
1061@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.c1001@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
10621002
1063test_job_class-test_job_class.obj: tests/test_job_class.c1003test_job_class.obj: tests/test_job_class.c
1064@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`1004@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`
1065@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/test_job_class-test_job_class.Tpo $(DEPDIR)/test_job_class-test_job_class.Po1005@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/test_job_class.Tpo $(DEPDIR)/test_job_class.Po
1066@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@1006@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@
1067@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='tests/test_job_class.c' object='test_job_class-test_job_class.obj' libtool=no @AMDEPBACKSLASH@1007@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='tests/test_job_class.c' object='test_job_class.obj' libtool=no @AMDEPBACKSLASH@
1068@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@1008@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
1069@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`1009@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`
10701010
1071test_job_process-test_job_process.o: tests/test_job_process.c1011test_job_process.o: tests/test_job_process.c
1072@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.c1012@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
1073@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/test_job_process-test_job_process.Tpo $(DEPDIR)/test_job_process-test_job_process.Po1013@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/test_job_process.Tpo $(DEPDIR)/test_job_process.Po
1074@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@1014@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@
1075@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='tests/test_job_process.c' object='test_job_process-test_job_process.o' libtool=no @AMDEPBACKSLASH@1015@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='tests/test_job_process.c' object='test_job_process.o' libtool=no @AMDEPBACKSLASH@
1076@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@1016@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
1077@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.c1017@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
10781018
1079test_job_process-test_job_process.obj: tests/test_job_process.c1019test_job_process.obj: tests/test_job_process.c
1080@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`1020@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`
1081@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/test_job_process-test_job_process.Tpo $(DEPDIR)/test_job_process-test_job_process.Po1021@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/test_job_process.Tpo $(DEPDIR)/test_job_process.Po
1082@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@1022@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@
1083@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='tests/test_job_process.c' object='test_job_process-test_job_process.obj' libtool=no @AMDEPBACKSLASH@1023@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='tests/test_job_process.c' object='test_job_process.obj' libtool=no @AMDEPBACKSLASH@
1084@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@1024@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
1085@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`1025@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`
10861026
1087test_parse_conf-test_parse_conf.o: tests/test_parse_conf.c1027test_parse_conf.o: tests/test_parse_conf.c
1088@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.c1028@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
1089@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/test_parse_conf-test_parse_conf.Tpo $(DEPDIR)/test_parse_conf-test_parse_conf.Po1029@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/test_parse_conf.Tpo $(DEPDIR)/test_parse_conf.Po
1090@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@1030@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@
1091@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='tests/test_parse_conf.c' object='test_parse_conf-test_parse_conf.o' libtool=no @AMDEPBACKSLASH@1031@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='tests/test_parse_conf.c' object='test_parse_conf.o' libtool=no @AMDEPBACKSLASH@
1092@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@1032@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
1093@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.c1033@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
10941034
1095test_parse_conf-test_parse_conf.obj: tests/test_parse_conf.c1035test_parse_conf.obj: tests/test_parse_conf.c
1096@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`1036@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`
1097@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/test_parse_conf-test_parse_conf.Tpo $(DEPDIR)/test_parse_conf-test_parse_conf.Po1037@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/test_parse_conf.Tpo $(DEPDIR)/test_parse_conf.Po
1098@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@1038@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@
1099@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='tests/test_parse_conf.c' object='test_parse_conf-test_parse_conf.obj' libtool=no @AMDEPBACKSLASH@1039@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='tests/test_parse_conf.c' object='test_parse_conf.obj' libtool=no @AMDEPBACKSLASH@
1100@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@1040@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
1101@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`1041@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`
11021042
1103test_parse_job-test_parse_job.o: tests/test_parse_job.c1043test_parse_job.o: tests/test_parse_job.c
1104@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.c1044@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
1105@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/test_parse_job-test_parse_job.Tpo $(DEPDIR)/test_parse_job-test_parse_job.Po1045@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/test_parse_job.Tpo $(DEPDIR)/test_parse_job.Po
1106@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@1046@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@
1107@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='tests/test_parse_job.c' object='test_parse_job-test_parse_job.o' libtool=no @AMDEPBACKSLASH@1047@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='tests/test_parse_job.c' object='test_parse_job.o' libtool=no @AMDEPBACKSLASH@
1108@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@1048@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
1109@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.c1049@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
11101050
1111test_parse_job-test_parse_job.obj: tests/test_parse_job.c1051test_parse_job.obj: tests/test_parse_job.c
1112@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`1052@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`
1113@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/test_parse_job-test_parse_job.Tpo $(DEPDIR)/test_parse_job-test_parse_job.Po1053@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/test_parse_job.Tpo $(DEPDIR)/test_parse_job.Po
1114@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@1054@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@
1115@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='tests/test_parse_job.c' object='test_parse_job-test_parse_job.obj' libtool=no @AMDEPBACKSLASH@1055@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='tests/test_parse_job.c' object='test_parse_job.obj' libtool=no @AMDEPBACKSLASH@
1116@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@1056@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
1117@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`1057@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`
11181058
1119test_process-test_process.o: tests/test_process.c1059test_process.o: tests/test_process.c
1120@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.c1060@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
1121@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/test_process-test_process.Tpo $(DEPDIR)/test_process-test_process.Po1061@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/test_process.Tpo $(DEPDIR)/test_process.Po
1122@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@1062@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@
1123@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='tests/test_process.c' object='test_process-test_process.o' libtool=no @AMDEPBACKSLASH@1063@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='tests/test_process.c' object='test_process.o' libtool=no @AMDEPBACKSLASH@
1124@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@1064@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
1125@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.c1065@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
11261066
1127test_process-test_process.obj: tests/test_process.c1067test_process.obj: tests/test_process.c
1128@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`1068@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`
1129@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/test_process-test_process.Tpo $(DEPDIR)/test_process-test_process.Po1069@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/test_process.Tpo $(DEPDIR)/test_process.Po
1130@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@1070@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@
1131@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='tests/test_process.c' object='test_process-test_process.obj' libtool=no @AMDEPBACKSLASH@1071@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='tests/test_process.c' object='test_process.obj' libtool=no @AMDEPBACKSLASH@
1132@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@1072@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
1133@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`1073@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`
11341074
1135test_system-test_system.o: tests/test_system.c1075test_system.o: tests/test_system.c
1136@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.c1076@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
1137@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/test_system-test_system.Tpo $(DEPDIR)/test_system-test_system.Po1077@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/test_system.Tpo $(DEPDIR)/test_system.Po
1138@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@1078@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@
1139@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='tests/test_system.c' object='test_system-test_system.o' libtool=no @AMDEPBACKSLASH@1079@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='tests/test_system.c' object='test_system.o' libtool=no @AMDEPBACKSLASH@
1140@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@1080@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
1141@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.c1081@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
11421082
1143test_system-test_system.obj: tests/test_system.c1083test_system.obj: tests/test_system.c
1144@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`1084@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`
1145@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/test_system-test_system.Tpo $(DEPDIR)/test_system-test_system.Po1085@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/test_system.Tpo $(DEPDIR)/test_system.Po
1146@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@1086@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@
1147@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='tests/test_system.c' object='test_system-test_system.obj' libtool=no @AMDEPBACKSLASH@1087@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='tests/test_system.c' object='test_system.obj' libtool=no @AMDEPBACKSLASH@
1148@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@1088@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
1149@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`1089@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`
11501090
1151mostlyclean-libtool:1091mostlyclean-libtool:
1152 -rm -f *.lo1092 -rm -f *.lo
11531093
=== modified file 'init/conf.c'
--- init/conf.c 2011-05-25 19:25:11 +0000
+++ init/conf.c 2011-06-17 11:15:58 +0000
@@ -2,7 +2,7 @@
2 *2 *
3 * conf.c - configuration management3 * conf.c - configuration management
4 *4 *
5 * Copyright © 2009, 2010 Canonical Ltd.5 * Copyright © 2009,2010,2011 Canonical Ltd.
6 * Author: Scott James Remnant <scott@netsplit.com>.6 * Author: Scott James Remnant <scott@netsplit.com>.
7 *7 *
8 * This program is free software; you can redistribute it and/or modify8 * This program is free software; you can redistribute it and/or modify
@@ -80,8 +80,7 @@
80static inline int is_conf_file_std (const char *path)80static inline int is_conf_file_std (const char *path)
81 __attribute__ ((warn_unused_result));81 __attribute__ ((warn_unused_result));
8282
83static inline int83static inline int is_conf_file_override(const char *path)
84is_conf_file_override (const char *path)
85 __attribute__ ((warn_unused_result));84 __attribute__ ((warn_unused_result));
8685
87/**86/**
@@ -154,7 +153,7 @@
154{153{
155 char *ptr = strrchr (path, '.');154 char *ptr = strrchr (path, '.');
156155
157 if (ptr && IS_CONF_EXT (ptr))156 if (ptr && (ptr > path) && (ptr[-1] != '/') && IS_CONF_EXT (ptr))
158 return TRUE;157 return TRUE;
159158
160 return FALSE;159 return FALSE;
@@ -352,7 +351,8 @@
352 NihError *err;351 NihError *err;
353352
354 err = nih_error_get ();353 err = nih_error_get ();
355 nih_error ("%s: %s: %s", source->path,354 if (err->number != ENOENT)
355 nih_error ("%s: %s: %s", source->path,
356 _("Unable to load configuration"),356 _("Unable to load configuration"),
357 err->message);357 err->message);
358 nih_free (err);358 nih_free (err);
@@ -372,7 +372,7 @@
372 * out for editors that rename over the top, etc.372 * out for editors that rename over the top, etc.
373 *373 *
374 * We then parse the current state of the source. The flag member is374 * We then parse the current state of the source. The flag member is
375 * toggled first, and this is propogated to all new and modified files and375 * toggled first, and this is propagated to all new and modified files and
376 * items that we find as a result of parsing. Once done, we scan for376 * items that we find as a result of parsing. Once done, we scan for
377 * anything with the wrong flag, and delete them.377 * anything with the wrong flag, and delete them.
378 *378 *
@@ -538,7 +538,7 @@
538 * tree.538 * tree.
539 *539 *
540 * Otherwise we walk the tree ourselves and parse all files that we find,540 * Otherwise we walk the tree ourselves and parse all files that we find,
541 * propogating the value of the flag member to all files so that deletion541 * propagating the value of the flag member to all files so that deletion
542 * can be detected by the calling function.542 * can be detected by the calling function.
543 *543 *
544 * Returns: zero on success, negative value on raised error.544 * Returns: zero on success, negative value on raised error.
@@ -1041,8 +1041,10 @@
1041 } else {1041 } else {
1042 nih_debug ("Loading %s from %s", name, path);1042 nih_debug ("Loading %s from %s", name, path);
1043 }1043 }
1044
1044 file->job = parse_job (NULL, source->session, file->job,1045 file->job = parse_job (NULL, source->session, file->job,
1045 name, buf, len, &pos, &lineno);1046 name, buf, len, &pos, &lineno);
1047
1046 if (file->job) {1048 if (file->job) {
1047 job_class_consider (file->job);1049 job_class_consider (file->job);
1048 } else {1050 } else {
10491051
=== modified file 'init/conf.h'
--- init/conf.h 2011-05-25 19:25:11 +0000
+++ init/conf.h 2011-06-17 11:15:58 +0000
@@ -1,6 +1,6 @@
1/* upstart1/* upstart
2 *2 *
3 * Copyright © 2010 Canonical Ltd.3 * Copyright © 2010,2011 Canonical Ltd.
4 * Author: Scott James Remnant <scott@netsplit.com>.4 * Author: Scott James Remnant <scott@netsplit.com>.
5 *5 *
6 * This program is free software; you can redistribute it and/or modify6 * This program is free software; you can redistribute it and/or modify
77
=== modified file 'init/control.c'
--- init/control.c 2011-05-25 19:25:11 +0000
+++ init/control.c 2011-06-17 11:15:58 +0000
@@ -2,7 +2,7 @@
2 *2 *
3 * control.c - D-Bus connections, objects and methods3 * control.c - D-Bus connections, objects and methods
4 *4 *
5 * Copyright © 2010 Canonical Ltd.5 * Copyright © 2009-2011 Canonical Ltd.
6 * Author: Scott James Remnant <scott@netsplit.com>.6 * Author: Scott James Remnant <scott@netsplit.com>.
7 *7 *
8 * This program is free software; you can redistribute it and/or modify8 * This program is free software; you can redistribute it and/or modify
@@ -65,7 +65,7 @@
65/**65/**
66 * use_session_bus:66 * use_session_bus:
67 *67 *
68 * If TRUE, connect to the D-Bus session bus rather than the system bus.68 * If TRUE, connect to the D-Bus sessio bus rather than the system bus.
69 *69 *
70 * Used for testing.70 * Used for testing.
71 **/71 **/
7272
=== modified file 'init/control.h'
--- init/control.h 2011-05-25 19:25:11 +0000
+++ init/control.h 2011-06-17 11:15:58 +0000
@@ -1,6 +1,6 @@
1/* upstart1/* upstart
2 *2 *
3 * Copyright © 2009 Canonical Ltd.3 * Copyright © 2009-2011 Canonical Ltd.
4 * Author: Scott James Remnant <scott@netsplit.com>.4 * Author: Scott James Remnant <scott@netsplit.com>.
5 *5 *
6 * This program is free software; you can redistribute it and/or modify6 * This program is free software; you can redistribute it and/or modify
77
=== modified file 'init/environ.c'
--- init/environ.c 2009-06-23 09:29:35 +0000
+++ init/environ.c 2011-06-17 11:15:58 +0000
@@ -354,50 +354,11 @@
354354
355355
356/**356/**
357 * environ_valid:
358 * @key: string to check,
359 * @len: length of @key.
360 *
361 * Check whether the environment key @key, that is @len characters long,
362 * is valid according to the usual rules. Names may begin with an alpha or
363 * an underscore, and then consist of any number of alphanumerics and
364 * underscores.
365 *
366 * Returns: TRUE if @key is a valid variable name, FALSE otherwise.
367 **/
368int
369environ_valid (const char *key,
370 size_t len)
371{
372 nih_assert (key != NULL);
373
374 if (! len)
375 return FALSE;
376
377 if ((*key != '_')
378 && ((*key < 'A') || (*key > 'Z'))
379 && ((*key < 'a') || (*key > 'z')))
380 return FALSE;
381
382 while (--len) {
383 ++key;
384 if ((*key != '_')
385 && ((*key < 'A') || (*key > 'Z'))
386 && ((*key < 'a') || (*key > 'z'))
387 && ((*key < '0') || (*key > '9')))
388 return FALSE;
389 }
390
391 return TRUE;
392}
393
394/**
395 * environ_all_valid:357 * environ_all_valid:
396 * @env: NULL-terminated array of variables to check.358 * @env: NULL-terminated array of variables to check.
397 *359 *
398 * Checks each of the environment variables in @env for validity; that is360 * Checks each of the environment variables in @env for validity; that is
399 * each must be of KEY=VALUE form, and KEY must be a valid name for a361 * each must be of KEY=VALUE form.
400 * variable.
401 *362 *
402 * This is intended for checking external data such as that in control363 * This is intended for checking external data such as that in control
403 * messages; environment lists defined in job definitions are actually364 * messages; environment lists defined in job definitions are actually
@@ -418,9 +379,6 @@
418 value = strchr (*e, '=');379 value = strchr (*e, '=');
419 if (! value)380 if (! value)
420 return FALSE;381 return FALSE;
421
422 if (! environ_valid (*e, value - *e))
423 return FALSE;
424 }382 }
425383
426 return TRUE;384 return TRUE;
@@ -590,20 +548,6 @@
590548
591 name_end = (*pos);549 name_end = (*pos);
592550
593 /* Check the environment variable name is
594 * actually valid
595 */
596 if (! environ_valid (*str + name_start,
597 name_end - name_start)) {
598 nih_error_raise_printf (
599 ENVIRON_ILLEGAL_PARAM,
600 "%s: %.*s", _(ENVIRON_ILLEGAL_PARAM_STR),
601 (int)(name_end - name_start),
602 *str + name_start);
603
604 goto error;
605 }
606
607 /* Check for an expression operator; if we find one,551 /* Check for an expression operator; if we find one,
608 * step over it and evalulate the rest of the bracketed552 * step over it and evalulate the rest of the bracketed
609 * expression to find the substitute value.553 * expression to find the substitute value.
610554
=== modified file 'init/environ.h'
--- init/environ.h 2009-06-23 09:29:35 +0000
+++ init/environ.h 2011-06-17 11:15:58 +0000
@@ -43,7 +43,6 @@
43const char * environ_getn (char * const *env, const char *key,43const char * environ_getn (char * const *env, const char *key,
44 size_t len);44 size_t len);
4545
46int environ_valid (const char *key, size_t len);
47int environ_all_valid (char * const *env);46int environ_all_valid (char * const *env);
4847
49char * environ_expand (const void *parent, const char *string,48char * environ_expand (const void *parent, const char *string,
5049
=== modified file 'init/errors.h'
--- init/errors.h 2009-06-23 09:29:35 +0000
+++ init/errors.h 2011-06-17 11:15:58 +0000
@@ -40,6 +40,7 @@
40 /* Errors while parsing configuration files */40 /* Errors while parsing configuration files */
41 PARSE_ILLEGAL_INTERVAL,41 PARSE_ILLEGAL_INTERVAL,
42 PARSE_ILLEGAL_EXIT,42 PARSE_ILLEGAL_EXIT,
43 PARSE_ILLEGAL_SIGNAL,
43 PARSE_ILLEGAL_UMASK,44 PARSE_ILLEGAL_UMASK,
44 PARSE_ILLEGAL_NICE,45 PARSE_ILLEGAL_NICE,
45 PARSE_ILLEGAL_OOM,46 PARSE_ILLEGAL_OOM,
@@ -60,9 +61,11 @@
60#define ENVIRON_MISMATCHED_BRACES_STR N_("Mismatched braces")61#define ENVIRON_MISMATCHED_BRACES_STR N_("Mismatched braces")
61#define PARSE_ILLEGAL_INTERVAL_STR N_("Illegal interval, expected number of seconds")62#define PARSE_ILLEGAL_INTERVAL_STR N_("Illegal interval, expected number of seconds")
62#define PARSE_ILLEGAL_EXIT_STR N_("Illegal exit status, expected integer")63#define PARSE_ILLEGAL_EXIT_STR N_("Illegal exit status, expected integer")
64#define PARSE_ILLEGAL_SIGNAL_STR N_("Illegal signal status, expected integer")
63#define PARSE_ILLEGAL_UMASK_STR N_("Illegal file creation mask, expected octal integer")65#define PARSE_ILLEGAL_UMASK_STR N_("Illegal file creation mask, expected octal integer")
64#define PARSE_ILLEGAL_NICE_STR N_("Illegal nice value, expected -20 to 19")66#define PARSE_ILLEGAL_NICE_STR N_("Illegal nice value, expected -20 to 19")
65#define PARSE_ILLEGAL_OOM_STR N_("Illegal oom adjustment, expected -16 to 15 or never")67#define PARSE_ILLEGAL_OOM_STR N_("Illegal oom adjustment, expected -16 to 15 or 'never'")
68#define PARSE_ILLEGAL_OOM_SCORE_STR N_("Illegal oom score adjustment, expected -999 to 1000 or 'never'")
66#define PARSE_ILLEGAL_LIMIT_STR N_("Illegal limit, expected 'unlimited' or integer")69#define PARSE_ILLEGAL_LIMIT_STR N_("Illegal limit, expected 'unlimited' or integer")
67#define PARSE_EXPECTED_EVENT_STR N_("Expected event")70#define PARSE_EXPECTED_EVENT_STR N_("Expected event")
68#define PARSE_EXPECTED_OPERATOR_STR N_("Expected operator")71#define PARSE_EXPECTED_OPERATOR_STR N_("Expected operator")
6972
=== modified file 'init/event.c'
--- init/event.c 2011-05-25 19:25:11 +0000
+++ init/event.c 2011-06-17 11:15:58 +0000
@@ -2,7 +2,7 @@
2 *2 *
3 * event.c - event queue and handling3 * event.c - event queue and handling
4 *4 *
5 * Copyright © 2009, 2010 Canonical Ltd.5 * Copyright © 2010 Canonical Ltd.
6 * Author: Scott James Remnant <scott@netsplit.com>.6 * Author: Scott James Remnant <scott@netsplit.com>.
7 *7 *
8 * This program is free software; you can redistribute it and/or modify8 * This program is free software; you can redistribute it and/or modify
@@ -126,6 +126,7 @@
126126
127 event->session = NULL;127 event->session = NULL;
128 event->fd = -1;128 event->fd = -1;
129
129 event->progress = EVENT_PENDING;130 event->progress = EVENT_PENDING;
130 event->failed = FALSE;131 event->failed = FALSE;
131132
132133
=== modified file 'init/job.c'
--- init/job.c 2011-05-25 19:25:11 +0000
+++ init/job.c 2011-06-17 11:15:58 +0000
@@ -2,7 +2,7 @@
2 *2 *
3 * job.c - core state machine of tasks and services3 * job.c - core state machine of tasks and services
4 *4 *
5 * Copyright © 2010 Canonical Ltd.5 * Copyright © 2010,2011 Canonical Ltd.
6 * Author: Scott James Remnant <scott@netsplit.com>.6 * Author: Scott James Remnant <scott@netsplit.com>.
7 *7 *
8 * This program is free software; you can redistribute it and/or modify8 * This program is free software; you can redistribute it and/or modify
99
=== modified file 'init/job_class.c'
--- init/job_class.c 2011-05-25 19:25:11 +0000
+++ init/job_class.c 2011-06-17 11:15:58 +0000
@@ -2,7 +2,7 @@
2 *2 *
3 * job_class.c - job class definition handling3 * job_class.c - job class definition handling
4 *4 *
5 * Copyright © 2010 Canonical Ltd.5 * Copyright © 2010,2011 Canonical Ltd.
6 * Author: Scott James Remnant <scott@netsplit.com>.6 * Author: Scott James Remnant <scott@netsplit.com>.
7 *7 *
8 * This program is free software; you can redistribute it and/or modify8 * This program is free software; you can redistribute it and/or modify
@@ -26,6 +26,7 @@
2626
27#include <errno.h>27#include <errno.h>
28#include <string.h>28#include <string.h>
29#include <signal.h>
2930
30#include <nih/macros.h>31#include <nih/macros.h>
31#include <nih/alloc.h>32#include <nih/alloc.h>
@@ -148,7 +149,7 @@
148JobClass *149JobClass *
149job_class_new (const void *parent,150job_class_new (const void *parent,
150 const char *name,151 const char *name,
151 Session * session)152 Session *session)
152{153{
153 JobClass *class;154 JobClass *class;
154 int i;155 int i;
@@ -236,6 +237,7 @@
236 class->task = FALSE;237 class->task = FALSE;
237238
238 class->kill_timeout = JOB_DEFAULT_KILL_TIMEOUT;239 class->kill_timeout = JOB_DEFAULT_KILL_TIMEOUT;
240 class->kill_signal = SIGTERM;
239241
240 class->respawn = FALSE;242 class->respawn = FALSE;
241 class->respawn_limit = JOB_DEFAULT_RESPAWN_LIMIT;243 class->respawn_limit = JOB_DEFAULT_RESPAWN_LIMIT;
@@ -248,7 +250,7 @@
248250
249 class->umask = JOB_DEFAULT_UMASK;251 class->umask = JOB_DEFAULT_UMASK;
250 class->nice = 0;252 class->nice = 0;
251 class->oom_adj = 0;253 class->oom_score_adj = 0;
252254
253 for (i = 0; i < RLIMIT_NLIMITS; i++)255 for (i = 0; i < RLIMIT_NLIMITS; i++)
254 class->limits[i] = NULL;256 class->limits[i] = NULL;
@@ -257,7 +259,7 @@
257 class->chdir = NULL;259 class->chdir = NULL;
258260
259 class->deleted = FALSE;261 class->deleted = FALSE;
260 class->debug = FALSE;262 class->debug = FALSE;
261263
262 return class;264 return class;
263265
264266
=== modified file 'init/job_class.h'
--- init/job_class.h 2011-05-25 19:25:11 +0000
+++ init/job_class.h 2011-06-17 11:15:58 +0000
@@ -87,6 +87,7 @@
87 * @expect: what to expect before entering the next state after spawned,87 * @expect: what to expect before entering the next state after spawned,
88 * @task: start requests are not unblocked until instances have finished,88 * @task: start requests are not unblocked until instances have finished,
89 * @kill_timeout: time to wait between sending TERM and KILL signals,89 * @kill_timeout: time to wait between sending TERM and KILL signals,
90 * @kill_signal: first signal to send (usually SIGTERM),
90 * @respawn: instances should be restarted if main process fails,91 * @respawn: instances should be restarted if main process fails,
91 * @respawn_limit: number of respawns in @respawn_interval that we permit,92 * @respawn_limit: number of respawns in @respawn_interval that we permit,
92 * @respawn_interval: barrier for @respawn_limit,93 * @respawn_interval: barrier for @respawn_limit,
@@ -95,7 +96,7 @@
95 * @console: how to arrange processes' stdin/out/err file descriptors,96 * @console: how to arrange processes' stdin/out/err file descriptors,
96 * @umask: file mode creation mask,97 * @umask: file mode creation mask,
97 * @nice: process priority,98 * @nice: process priority,
98 * @oom_adj: OOM killer adjustment,99 * @oom_score_adj: OOM killer score adjustment,
99 * @limits: resource limits indexed by resource,100 * @limits: resource limits indexed by resource,
100 * @chroot: root directory of process (implies @chdir if not set),101 * @chroot: root directory of process (implies @chdir if not set),
101 * @chdir: working directory of process,102 * @chdir: working directory of process,
@@ -132,6 +133,7 @@
132 int task;133 int task;
133134
134 time_t kill_timeout;135 time_t kill_timeout;
136 int kill_signal;
135137
136 int respawn;138 int respawn;
137 int respawn_limit;139 int respawn_limit;
@@ -144,7 +146,7 @@
144146
145 mode_t umask;147 mode_t umask;
146 int nice;148 int nice;
147 int oom_adj;149 int oom_score_adj;
148 struct rlimit *limits[RLIMIT_NLIMITS];150 struct rlimit *limits[RLIMIT_NLIMITS];
149 char *chroot;151 char *chroot;
150 char *chdir;152 char *chdir;
151153
=== modified file 'init/job_process.c'
--- init/job_process.c 2011-05-25 19:25:11 +0000
+++ init/job_process.c 2011-06-17 11:15:58 +0000
@@ -117,7 +117,7 @@
117 * characters within the command member, in which case it is executed117 * characters within the command member, in which case it is executed
118 * directly using exec after splitting on whitespace.118 * directly using exec after splitting on whitespace.
119 *119 *
120 * When exectued with the shell, if the command (which may be an entire120 * When executed with the shell, if the command (which may be an entire
121 * script) is reasonably small (less than 1KB) it is passed to the121 * script) is reasonably small (less than 1KB) it is passed to the
122 * shell using the POSIX-specified -c option. Otherwise the shell is told122 * shell using the POSIX-specified -c option. Otherwise the shell is told
123 * to read commands from one of the special /proc/self/fd/NN devices and NihIo123 * to read commands from one of the special /proc/self/fd/NN devices and NihIo
@@ -145,7 +145,8 @@
145 nih_local char *script = NULL;145 nih_local char *script = NULL;
146 char **e;146 char **e;
147 size_t argc, envc;147 size_t argc, envc;
148 int error = FALSE, fds[2], trace = FALSE, shell = FALSE;148 int fds[2] = { -1, -1 };
149 int error = FALSE, trace = FALSE, shell = FALSE;
149150
150 nih_assert (job != NULL);151 nih_assert (job != NULL);
151152
@@ -208,12 +209,9 @@
208209
209 shell = TRUE;210 shell = TRUE;
210211
211 /* FIXME actually always want it to be /proc/self/fd/3 and
212 * dup2() in the child to make it that way ... no way
213 * of passing that yet
214 */
215 cmd = NIH_MUST (nih_sprintf (argv, "%s/%d",212 cmd = NIH_MUST (nih_sprintf (argv, "%s/%d",
216 "/proc/self/fd", fds[0]));213 "/proc/self/fd",
214 JOB_PROCESS_SCRIPT_FD));
217 NIH_MUST (nih_str_array_addp (&argv, NULL,215 NIH_MUST (nih_str_array_addp (&argv, NULL,
218 &argc, cmd));216 &argc, cmd));
219 }217 }
@@ -259,7 +257,7 @@
259257
260 /* Spawn the process, repeat until fork() works */258 /* Spawn the process, repeat until fork() works */
261 while ((job->pid[process] = job_process_spawn (job->class, argv,259 while ((job->pid[process] = job_process_spawn (job->class, argv,
262 env, trace)) < 0) {260 env, trace, fds[0])) < 0) {
263 NihError *err;261 NihError *err;
264262
265 err = nih_error_get ();263 err = nih_error_get ();
@@ -316,6 +314,14 @@
316 nih_free (err);314 nih_free (err);
317 }315 }
318316
317 /* We're feeding using a pipe, which has a file descriptor
318 * on the child end even though it open()s it again using
319 * a path. Instruct the shell to close this extra fd and
320 * not to leak it.
321 */
322 NIH_ZERO (nih_io_printf (io, "exec %d<&-\n",
323 JOB_PROCESS_SCRIPT_FD));
324
319 NIH_ZERO (nih_io_write (io, script, strlen (script)));325 NIH_ZERO (nih_io_write (io, script, strlen (script)));
320 nih_io_shutdown (io);326 nih_io_shutdown (io);
321 }327 }
@@ -329,7 +335,8 @@
329 * @class: job class of process to be spawned,335 * @class: job class of process to be spawned,
330 * @argv: NULL-terminated list of arguments for the process,336 * @argv: NULL-terminated list of arguments for the process,
331 * @env: NULL-terminated list of environment variables for the process,337 * @env: NULL-terminated list of environment variables for the process,
332 * @trace: whether to trace this process.338 * @trace: whether to trace this process,
339 * @script_fd: script file descriptor.
333 *340 *
334 * This function spawns a new process using the @class details to set up the341 * This function spawns a new process using the @class details to set up the
335 * environment for it; the process is always a session and process group342 * environment for it; the process is always a session and process group
@@ -345,6 +352,9 @@
345 * wait for this and then may use it to set options before continuing the352 * wait for this and then may use it to set options before continuing the
346 * process.353 * process.
347 *354 *
355 * If @script_fd is not -1, this file descriptor is dup()d to the special fd 9
356 * (moving any other out of the way if necessary).
357 *
348 * This function only spawns the process, it is up to the caller to ensure358 * This function only spawns the process, it is up to the caller to ensure
349 * that the information is saved into the job and that the process is watched,359 * that the information is saved into the job and that the process is watched,
350 * etc.360 * etc.
@@ -360,7 +370,8 @@
360job_process_spawn (JobClass *class,370job_process_spawn (JobClass *class,
361 char * const argv[],371 char * const argv[],
362 char * const *env,372 char * const *env,
363 int trace)373 int trace,
374 int script_fd)
364{375{
365 sigset_t child_set, orig_set;376 sigset_t child_set, orig_set;
366 pid_t pid;377 pid_t pid;
@@ -426,8 +437,24 @@
426 * far because read() returned zero.437 * far because read() returned zero.
427 */438 */
428 close (fds[0]);439 close (fds[0]);
440 if (fds[1] == JOB_PROCESS_SCRIPT_FD) {
441 int tmp = dup2 (fds[1], fds[0]);
442 close (fds[1]);
443 fds[1] = tmp;
444 }
429 nih_io_set_cloexec (fds[1]);445 nih_io_set_cloexec (fds[1]);
430446
447 /* Move the script fd to special fd 9; the only gotcha is if that
448 * would be our error descriptor, but that's handled above.
449 */
450 if ((script_fd != -1) && (script_fd != JOB_PROCESS_SCRIPT_FD)) {
451 int tmp = dup2 (script_fd, JOB_PROCESS_SCRIPT_FD);
452 if (tmp < 0)
453 job_process_error_abort (fds[1], JOB_PROCESS_ERROR_DUP, 0);
454 close (script_fd);
455 script_fd = tmp;
456 }
457
431 /* Become the leader of a new session and process group, shedding458 /* Become the leader of a new session and process group, shedding
432 * any controlling tty (which we shouldn't have had anyway).459 * any controlling tty (which we shouldn't have had anyway).
433 */460 */
@@ -486,16 +513,24 @@
486513
487 /* Adjust the process OOM killer priority.514 /* Adjust the process OOM killer priority.
488 */515 */
489 if (class->oom_adj) {516 if (class->oom_score_adj) {
517 int oom_value;
490 snprintf (filename, sizeof (filename),518 snprintf (filename, sizeof (filename),
491 "/proc/%d/oom_adj", getpid ());519 "/proc/%d/oom_score_adj", getpid ());
492520 oom_value = class->oom_score_adj;
493 fd = fopen (filename, "w");521 fd = fopen (filename, "w");
522 if ((! fd) && (errno == EACCES)) {
523 snprintf (filename, sizeof (filename),
524 "/proc/%d/oom_adj", getpid ());
525 oom_value = (class->oom_score_adj
526 * ((class->oom_score_adj < 0) ? 17 : 15)) / 1000;
527 fd = fopen (filename, "w");
528 }
494 if (! fd) {529 if (! fd) {
495 nih_error_raise_system ();530 nih_error_raise_system ();
496 job_process_error_abort (fds[1], JOB_PROCESS_ERROR_OOM_ADJ, 0);531 job_process_error_abort (fds[1], JOB_PROCESS_ERROR_OOM_ADJ, 0);
497 } else {532 } else {
498 fprintf (fd, "%d\n", class->oom_adj);533 fprintf (fd, "%d\n", oom_value);
499534
500 if (fclose (fd)) {535 if (fclose (fd)) {
501 nih_error_raise_system ();536 nih_error_raise_system ();
@@ -715,6 +750,11 @@
715 err->error.number = JOB_PROCESS_ERROR;750 err->error.number = JOB_PROCESS_ERROR;
716751
717 switch (err->type) {752 switch (err->type) {
753 case JOB_PROCESS_ERROR_DUP:
754 err->error.message = NIH_MUST (nih_sprintf (
755 err, _("unable to move script fd: %s"),
756 strerror (err->errnum)));
757 break;
718 case JOB_PROCESS_ERROR_CONSOLE:758 case JOB_PROCESS_ERROR_CONSOLE:
719 err->error.message = NIH_MUST (nih_sprintf (759 err->error.message = NIH_MUST (nih_sprintf (
720 err, _("unable to open console: %s"),760 err, _("unable to open console: %s"),
@@ -820,9 +860,9 @@
820 * @process: process to be killed.860 * @process: process to be killed.
821 *861 *
822 * This function forces a @job to leave its current state by sending862 * This function forces a @job to leave its current state by sending
823 * @process the TERM signal, and maybe later the KILL signal. The actual863 * @process the "kill signal" defined signal (TERM by default), and maybe
824 * state changes are performed by job_child_reaper when the process864 * later the KILL signal. The actual state changes are performed by
825 * has actually terminated.865 * job_child_reaper when the process has actually terminated.
826 **/866 **/
827void867void
828job_process_kill (Job *job,868job_process_kill (Job *job,
@@ -833,15 +873,17 @@
833 nih_assert (job->kill_timer == NULL);873 nih_assert (job->kill_timer == NULL);
834 nih_assert (job->kill_process = -1);874 nih_assert (job->kill_process = -1);
835875
836 nih_info (_("Sending TERM signal to %s %s process (%d)"),876 nih_info (_("Sending %s signal to %s %s process (%d)"),
877 nih_signal_to_name (job->class->kill_signal),
837 job_name (job), process_name (process), job->pid[process]);878 job_name (job), process_name (process), job->pid[process]);
838879
839 if (system_kill (job->pid[process], FALSE) < 0) {880 if (system_kill (job->pid[process], job->class->kill_signal) < 0) {
840 NihError *err;881 NihError *err;
841882
842 err = nih_error_get ();883 err = nih_error_get ();
843 if (err->number != ESRCH)884 if (err->number != ESRCH)
844 nih_warn (_("Failed to send TERM signal to %s %s process (%d): %s"),885 nih_warn (_("Failed to send %s signal to %s %s process (%d): %s"),
886 nih_signal_to_name (job->class->kill_signal),
845 job_name (job), process_name (process),887 job_name (job), process_name (process),
846 job->pid[process], err->message);888 job->pid[process], err->message);
847 nih_free (err);889 nih_free (err);
@@ -881,15 +923,17 @@
881 job->kill_timer = NULL;923 job->kill_timer = NULL;
882 job->kill_process = -1;924 job->kill_process = -1;
883925
884 nih_info (_("Sending KILL signal to %s %s process (%d)"),926 nih_info (_("Sending %s signal to %s %s process (%d)"),
927 "KILL",
885 job_name (job), process_name (process), job->pid[process]);928 job_name (job), process_name (process), job->pid[process]);
886929
887 if (system_kill (job->pid[process], TRUE) < 0) {930 if (system_kill (job->pid[process], SIGKILL) < 0) {
888 NihError *err;931 NihError *err;
889932
890 err = nih_error_get ();933 err = nih_error_get ();
891 if (err->number != ESRCH)934 if (err->number != ESRCH)
892 nih_warn (_("Failed to send KILL signal to %s %s process (%d): %s"),935 nih_warn (_("Failed to send %s signal to %s %s process (%d): %s"),
936 "KILL",
893 job_name (job), process_name (process),937 job_name (job), process_name (process),
894 job->pid[process], err->message);938 job->pid[process], err->message);
895 nih_free (err);939 nih_free (err);
@@ -919,6 +963,7 @@
919{963{
920 Job *job;964 Job *job;
921 ProcessType process;965 ProcessType process;
966 NihLogLevel priority;
922 const char *sig;967 const char *sig;
923968
924 nih_assert (pid > 0);969 nih_assert (pid > 0);
@@ -927,21 +972,31 @@
927 * job's process it was. If we don't know about it, then we simply972 * job's process it was. If we don't know about it, then we simply
928 * ignore the event.973 * ignore the event.
929 */974 */
930 nih_debug ("Ignored event %x (%d) for process %d", event, status, pid);
931 job = job_process_find (pid, &process);975 job = job_process_find (pid, &process);
932 if (! job)976 if (! job)
933 return;977 return;
934978
979 /* Check the job's normal exit clauses to see whether this is a failure
980 * worth warning about.
981 */
982 priority = NIH_LOG_WARN;
983 for (size_t i = 0; i < job->class->normalexit_len; i++) {
984 if (job->class->normalexit[i] == status) {
985 priority = NIH_LOG_INFO;
986 break;
987 }
988 }
989
935 switch (event) {990 switch (event) {
936 case NIH_CHILD_EXITED:991 case NIH_CHILD_EXITED:
937 /* Child exited; check status to see whether it exited992 /* Child exited; check status to see whether it exited
938 * normally (zero) or with a non-zero status.993 * normally (zero) or with a non-zero status.
939 */994 */
940 if (status) {995 if (status) {
941 nih_warn (_("%s %s process (%d) "996 nih_log_message (priority, _("%s %s process (%d) "
942 "terminated with status %d"),997 "terminated with status %d"),
943 job_name (job), process_name (process),998 job_name (job), process_name (process),
944 pid, status);999 pid, status);
945 } else {1000 } else {
946 nih_info (_("%s %s process (%d) exited normally"),1001 nih_info (_("%s %s process (%d) exited normally"),
947 job_name (job), process_name (process), pid);1002 job_name (job), process_name (process), pid);
@@ -958,9 +1013,9 @@
958 */1013 */
959 sig = nih_signal_to_name (status);1014 sig = nih_signal_to_name (status);
960 if (sig) {1015 if (sig) {
961 nih_warn (_("%s %s process (%d) killed by %s signal"),1016 nih_log_message (priority, _("%s %s process (%d) killed by %s signal"),
962 job_name (job), process_name (process),1017 job_name (job), process_name (process),
963 pid, sig);1018 pid, sig);
964 } else {1019 } else {
965 nih_warn (_("%s %s process (%d) killed by signal %d"),1020 nih_warn (_("%s %s process (%d) killed by signal %d"),
966 job_name (job), process_name (process),1021 job_name (job), process_name (process),
9671022
=== modified file 'init/job_process.h'
--- init/job_process.h 2011-05-25 19:25:11 +0000
+++ init/job_process.h 2011-06-17 11:15:58 +0000
@@ -1,6 +1,6 @@
1/* upstart1/* upstart
2 *2 *
3 * Copyright © 2009 Canonical Ltd.3 * Copyright © 2009,2010,2011 Canonical Ltd.
4 * Author: Scott James Remnant <scott@netsplit.com>.4 * Author: Scott James Remnant <scott@netsplit.com>.
5 *5 *
6 * This program is free software; you can redistribute it and/or modify6 * This program is free software; you can redistribute it and/or modify
@@ -32,12 +32,23 @@
3232
3333
34/**34/**
35 * JOB_PROCESS_SCRIPT_FD:
36 *
37 * The special fd used to pass the script to the shell process, this can be
38 * anything from 3-9 (0-2 are stdin/out/err, 10 and above aren't guaranteed
39 * by POSIX).
40 **/
41#define JOB_PROCESS_SCRIPT_FD 9
42
43
44/**
35 * JobProcessErrorType:45 * JobProcessErrorType:
36 *46 *
37 * These constants represent the different steps of process spawning that47 * These constants represent the different steps of process spawning that
38 * can produce an error.48 * can produce an error.
39 **/49 **/
40typedef enum job_process_error_type {50typedef enum job_process_error_type {
51 JOB_PROCESS_ERROR_DUP,
41 JOB_PROCESS_ERROR_CONSOLE,52 JOB_PROCESS_ERROR_CONSOLE,
42 JOB_PROCESS_ERROR_RLIMIT,53 JOB_PROCESS_ERROR_RLIMIT,
43 JOB_PROCESS_ERROR_PRIORITY,54 JOB_PROCESS_ERROR_PRIORITY,
@@ -82,7 +93,7 @@
82int job_process_run (Job *job, ProcessType process);93int job_process_run (Job *job, ProcessType process);
8394
84pid_t job_process_spawn (JobClass *class, char * const argv[],95pid_t job_process_spawn (JobClass *class, char * const argv[],
85 char * const *env, int trace)96 char * const *env, int trace, int script_fd)
86 __attribute__ ((warn_unused_result));97 __attribute__ ((warn_unused_result));
8798
88void job_process_kill (Job *job, ProcessType process);99void job_process_kill (Job *job, ProcessType process);
89100
=== modified file 'init/main.c'
--- init/main.c 2011-05-25 19:25:11 +0000
+++ init/main.c 2011-06-17 11:15:58 +0000
@@ -1,6 +1,6 @@
1/* upstart1/* upstart
2 *2 *
3 * Copyright © 2010,2011 Canonical Ltd.3 * Copyright © 2009-2011 Canonical Ltd.
4 * Author: Scott James Remnant <scott@netsplit.com>.4 * Author: Scott James Remnant <scott@netsplit.com>.
5 *5 *
6 * This program is free software; you can redistribute it and/or modify6 * This program is free software; you can redistribute it and/or modify
@@ -62,6 +62,7 @@
6262
63/* Prototypes for static functions */63/* Prototypes for static functions */
64#ifndef DEBUG64#ifndef DEBUG
65static int logger_kmsg (NihLogLevel priority, const char *message);
65static void crash_handler (int signum);66static void crash_handler (int signum);
66#endif /* DEBUG */67#endif /* DEBUG */
67static void term_handler (void *data, NihSignal *signal);68static void term_handler (void *data, NihSignal *signal);
@@ -93,6 +94,8 @@
93static int restart = FALSE;94static int restart = FALSE;
9495
9596
97extern int disable_sessions;
98
96/**99/**
97 * conf_dir:100 * conf_dir:
98 *101 *
@@ -117,8 +120,6 @@
117120
118extern int use_session_bus;121extern int use_session_bus;
119122
120extern int disable_sessions;
121
122/**123/**
123 * options:124 * options:
124 *125 *
@@ -128,20 +129,20 @@
128 { 0, "confdir", N_("specify alternative directory to load configuration files from"),129 { 0, "confdir", N_("specify alternative directory to load configuration files from"),
129 NULL, "DIR", &conf_dir, NULL },130 NULL, "DIR", &conf_dir, NULL },
130131
131 { 0, "startup-event", N_("specify an alternative initial event (for testing)"),132 { 0, "no-sessions", N_("Disable user and chroot sessions"),
132 NULL, "NAME", &initial_event, NULL },133 NULL, NULL, &disable_sessions, NULL },
133134
134 { 0, "no-startup-event", N_("do not emit any startup event (for testing)"),135 { 0, "no-startup-event", N_("do not emit any startup event (for testing)"),
135 NULL, NULL, &disable_startup_event, NULL },136 NULL, NULL, &disable_startup_event, NULL },
136137
137 { 0, "no-sessions", N_("Disable user and chroot sessions"),
138 NULL, NULL, &disable_sessions, NULL },
139
140 { 0, "restart", NULL, NULL, NULL, &restart, NULL },138 { 0, "restart", NULL, NULL, NULL, &restart, NULL },
141 139
142 { 0, "session", N_("use D-Bus session bus rather than system bus (for testing)"),140 { 0, "session", N_("use D-Bus session bus rather than system bus (for testing)"),
143 NULL, NULL, &use_session_bus, NULL },141 NULL, NULL, &use_session_bus, NULL },
144142
143 { 0, "startup-event", N_("specify an alternative initial event (for testing)"),
144 NULL, "NAME", &initial_event, NULL },
145
145 /* Ignore invalid options */146 /* Ignore invalid options */
146 { '-', "--", NULL, NULL, NULL, NULL, NULL },147 { '-', "--", NULL, NULL, NULL, NULL, NULL },
147148
@@ -212,14 +213,18 @@
212 *arg_end = ' ';213 *arg_end = ' ';
213 }214 }
214215
216
215 /* Become the leader of a new session and process group, shedding217 /* Become the leader of a new session and process group, shedding
216 * any controlling tty (which we shouldn't have had anyway - but218 * any controlling tty (which we shouldn't have had anyway - but
217 * you never know what initramfs did).219 * you never know what initramfs did).
218 */220 */
219 setsid ();221 setsid ();
220222
221 /* Set the standard file descriptors. */223 /* Set the standard file descriptors to the ordinary console device,
222 if (system_setup_console (CONSOLE_NONE, FALSE) < 0)224 * resetting it to sane defaults unless we're inheriting from another
225 * init process which we know left it in a sane state.
226 */
227 if (system_setup_console (CONSOLE_OUTPUT, (! restart)) < 0)
223 nih_free (nih_error_get ());228 nih_free (nih_error_get ());
224229
225 /* Set the PATH environment variable */230 /* Set the PATH environment variable */
@@ -231,7 +236,7 @@
231 */236 */
232 if (chdir ("/"))237 if (chdir ("/"))
233 nih_warn ("%s: %s", _("Unable to set root directory"),238 nih_warn ("%s: %s", _("Unable to set root directory"),
234 strerror (errno));239 strerror (errno));
235240
236 /* Mount the /proc and /sys filesystems, which are pretty much241 /* Mount the /proc and /sys filesystems, which are pretty much
237 * essential for any Linux system; not to mention used by242 * essential for any Linux system; not to mention used by
@@ -242,7 +247,7 @@
242247
243 err = nih_error_get ();248 err = nih_error_get ();
244 nih_warn ("%s: %s", _("Unable to mount /proc filesystem"),249 nih_warn ("%s: %s", _("Unable to mount /proc filesystem"),
245 err->message);250 err->message);
246 nih_free (err);251 nih_free (err);
247 }252 }
248253
@@ -251,10 +256,15 @@
251256
252 err = nih_error_get ();257 err = nih_error_get ();
253 nih_warn ("%s: %s", _("Unable to mount /sys filesystem"),258 nih_warn ("%s: %s", _("Unable to mount /sys filesystem"),
254 err->message);259 err->message);
255 nih_free (err);260 nih_free (err);
256 }261 }
262 } else {
263 nih_log_set_priority (NIH_LOG_DEBUG);
264 nih_debug ("Running with UID %d as PID %d (PPID %d)",
265 (int)getuid (), (int)getpid (), (int)getppid ());
257 }266 }
267
258#else /* DEBUG */268#else /* DEBUG */
259 nih_log_set_priority (NIH_LOG_DEBUG);269 nih_log_set_priority (NIH_LOG_DEBUG);
260 nih_debug ("Running with UID %d as PID %d (PPID %d)",270 nih_debug ("Running with UID %d as PID %d (PPID %d)",
@@ -325,6 +335,7 @@
325 }335 }
326#endif /* DEBUG */336#endif /* DEBUG */
327337
338
328 /* Watch children for events */339 /* Watch children for events */
329 NIH_MUST (nih_child_add_watch (NULL, -1, NIH_CHILD_ALL,340 NIH_MUST (nih_child_add_watch (NULL, -1, NIH_CHILD_ALL,
330 job_process_handler, NULL));341 job_process_handler, NULL));
@@ -335,7 +346,7 @@
335346
336347
337 /* Read configuration */348 /* Read configuration */
338 NIH_MUST (conf_source_new (NULL, DEFAULT_CONFFILE, CONF_FILE));349 NIH_MUST (conf_source_new (NULL, CONFFILE, CONF_FILE));
339 NIH_MUST (conf_source_new (NULL, conf_dir, CONF_JOB_DIR));350 NIH_MUST (conf_source_new (NULL, conf_dir, CONF_JOB_DIR));
340351
341 conf_reload ();352 conf_reload ();
@@ -348,7 +359,7 @@
348 err = nih_error_get ();359 err = nih_error_get ();
349 if (err->number != ENOMEM) {360 if (err->number != ENOMEM) {
350 nih_warn ("%s: %s", _("Unable to listen for private connections"),361 nih_warn ("%s: %s", _("Unable to listen for private connections"),
351 err->message);362 err->message);
352 nih_free (err);363 nih_free (err);
353 break;364 break;
354 }365 }
@@ -374,10 +385,12 @@
374#ifndef DEBUG385#ifndef DEBUG
375 if (use_session_bus == FALSE) {386 if (use_session_bus == FALSE) {
376 /* Now that the startup is complete, send all further logging output387 /* Now that the startup is complete, send all further logging output
377 * to syslog instead of to the console.388 * to kmsg instead of to the console.
378 */389 */
379 openlog (program_name, LOG_CONS, LOG_DAEMON);390 if (system_setup_console (CONSOLE_NONE, FALSE) < 0)
380 nih_log_set_logger (nih_logger_syslog);391 nih_free (nih_error_get ());
392
393 nih_log_set_logger (logger_kmsg);
381 }394 }
382#endif /* DEBUG */395#endif /* DEBUG */
383396
@@ -456,6 +469,7 @@
456469
457 closedir (piddir);470 closedir (piddir);
458 }471 }
472
459 } else {473 } else {
460 sigset_t mask;474 sigset_t mask;
461475
@@ -480,6 +494,67 @@
480494
481#ifndef DEBUG495#ifndef DEBUG
482/**496/**
497 * logger_kmsg:
498 * @priority: priority of message being logged,
499 * @message: message to log.
500 *
501 * Outputs the @message to the kernel log message socket prefixed with an
502 * appropriate tag based on @priority, the program name and terminated with
503 * a new line.
504 *
505 * Returns: zero on success, negative value on error.
506 **/
507static int
508logger_kmsg (NihLogLevel priority,
509 const char *message)
510{
511 int tag;
512 FILE *kmsg;
513
514 nih_assert (message != NULL);
515
516 switch (priority) {
517 case NIH_LOG_DEBUG:
518 tag = '7';
519 break;
520 case NIH_LOG_INFO:
521 tag = '6';
522 break;
523 case NIH_LOG_MESSAGE:
524 tag = '5';
525 break;
526 case NIH_LOG_WARN:
527 tag = '4';
528 break;
529 case NIH_LOG_ERROR:
530 tag = '3';
531 break;
532 case NIH_LOG_FATAL:
533 tag = '2';
534 break;
535 default:
536 tag = 'd';
537 }
538
539 kmsg = fopen ("/dev/kmsg", "w");
540 if (! kmsg)
541 return -1;
542
543 if (fprintf (kmsg, "<%c>%s: %s\n", tag, program_name, message) < 0) {
544 int saved_errno = errno;
545 fclose (kmsg);
546 errno = saved_errno;
547 return -1;
548 }
549
550 if (fclose (kmsg) < 0)
551 return -1;
552
553 return 0;
554}
555
556
557/**
483 * crash_handler:558 * crash_handler:
484 * @signum: signal number received.559 * @signum: signal number received.
485 *560 *
@@ -711,7 +786,7 @@
711 if (conf_dir)786 if (conf_dir)
712 goto out;787 goto out;
713788
714 conf_dir = DEFAULT_CONFDIR;789 conf_dir = CONFDIR;
715790
716 dir = getenv (CONFDIR_ENV);791 dir = getenv (CONFDIR_ENV);
717 if (! dir)792 if (! dir)
718793
=== modified file 'init/man/init.5'
--- init/man/init.5 2011-05-25 19:25:11 +0000
+++ init/man/init.5 2011-06-17 11:15:58 +0000
@@ -1,10 +1,12 @@
1.TH init 5 2011-03-03 "Upstart"1.TH init 5 2011-05-12 "Upstart"
2.\"2.\"
3.SH NAME3.SH NAME
4init \- Upstart init daemon job configuration4init \- Upstart init daemon job configuration
5.\"5.\"
6.SH SYNOPSIS6.SH SYNOPSIS
7.B /etc/init/7.B /etc/init/
8
9.B $HOME/.init/
8.\"10.\"
9.SH DESCRIPTION11.SH DESCRIPTION
10On startup, the Upstart12On startup, the Upstart
@@ -14,6 +16,11 @@
14directory, and watches for future changes to these files using16directory, and watches for future changes to these files using
15.BR inotify (7).17.BR inotify (7).
1618
19If D\-Bus has been configured to allow non\-privileged users to invoke all
20Upstart D\-Bus methods, Upstart is also able to manage User Jobs. See
21.B User Jobs
22for further details.
23
17To be considered by Upstart, files in this directory must have a24To be considered by Upstart, files in this directory must have a
18recognized suffix and may also be present in sub\-directories. There are25recognized suffix and may also be present in sub\-directories. There are
19two recognized suffixes:26two recognized suffixes:
@@ -44,7 +51,7 @@
44file.51file.
4552
46Each configuration file defines the template for a single \fIservice\fP53Each configuration file defines the template for a single \fIservice\fP
47(long\-running process or daemon) or \fItask\fP (short\-lived process).54(long-running process or daemon) or \fItask\fP (short-lived process).
4855
49Note that a configuration file is not itself a job: it is a description56Note that a configuration file is not itself a job: it is a description
50of an environmenta job could be run in. A job is the runtime embodiment57of an environmenta job could be run in. A job is the runtime embodiment
@@ -53,7 +60,7 @@
53The configuration file name as displayed by Upstart and associated60The configuration file name as displayed by Upstart and associated
54tooling is taken from its relative path within the directory without the61tooling is taken from its relative path within the directory without the
55extension. For example a configuration file62extension. For example a configuration file
56.I /etc/init/rc\-sysinit.conf63.I /etc/init/rc-sysinit.conf
57is named64is named
58.IR rc\-sysinit ,65.IR rc\-sysinit ,
59while a configuration file66while a configuration file
@@ -65,6 +72,36 @@
6572
66Configuration files are plain text and should not be executable.73Configuration files are plain text and should not be executable.
67.\"74.\"
75.SS User Jobs
76
77A User Job is a job configuration file created by a non\-privileged user
78in their
79.B $HOME/.init/
80directory. Job configuration files in this directory have
81the same syntax as system job configuration files.
82
83Any user can create user jobs, but that user can control
84.I only
85jobs they create.
86
87Users are able to manage their jobs using the standard
88.BR initctl (8)
89facility.
90
91Note that a user job configuration file cannot have the same name as a
92system job configuration file.
93.\"
94.SS Chroot Support
95
96Upstart is able to manage jobs within a \fBchroot\fP(2). To control jobs
97within the chroot environment, use the standard
98.BR initctl (8)
99facility. Note that it is not necessary to install D\-Bus within the
100chroot (in fact it is not recommended).
101
102Note that User Jobs can be created within a chroot environment.
103
104.\"
68.SS Configuration File Format105.SS Configuration File Format
69Each line begins with a configuration stanza and continues until either106Each line begins with a configuration stanza and continues until either
70the end of the line or a line containing a closing stanza. Line breaks107the end of the line or a line containing a closing stanza. Line breaks
@@ -93,7 +130,7 @@
93.B script130.B script
94stanzas, only one of which is permitted. These specify the executable131stanzas, only one of which is permitted. These specify the executable
95or shell script that will be run when the job is considered to be running.132or shell script that will be run when the job is considered to be running.
96Once this process terminates, the job stop.133Once this process terminates, the job stops.
97134
98All processes are run with the full job environment available as135All processes are run with the full job environment available as
99environment variables in their process.136environment variables in their process.
@@ -553,15 +590,15 @@
553for more details.590for more details.
554.\"591.\"
555.TP592.TP
556.B oom \fIADJUSTMENT\fR|\fBnever593.B oom score \fIADJUSTMENT\fR|\fBnever
557Normally the OOM killer regards all processes equally, this stanza594Normally the OOM killer regards all processes equally, this stanza
558advises the kernel to treat this job differently.595advises the kernel to treat this job differently.
559596
560.I ADJUSTMENT597.I ADJUSTMENT
561may be an integer value from598may be an integer value from
562.I \-16599.I -999
563(very unlikely to be killed by the OOM killer) up to600(very unlikely to be killed by the OOM killer) up to
564.I 14601.I 1000
565(very likely to be killed by the OOM killer). It may also be the special602(very likely to be killed by the OOM killer). It may also be the special
566value603value
567.B never604.B never
@@ -656,10 +693,20 @@
656.\"693.\"
657.SS Miscellaneous694.SS Miscellaneous
658.TP695.TP
696.B kill signal \fISIGNAL
697Specifies the stopping signal,
698.I SIGTERM
699by default, a job's main process will receive when stopping the
700running job.
701
702.nf
703kill signal INT
704.fi
705.\"
706.TP
659.B kill timeout \fIINTERVAL707.B kill timeout \fIINTERVAL
660Specifies the interval between sending the job's main process the708Specifies the interval between sending the job's main process the
661.I SIGTERM709"stopping" (see above) and
662and
663.I SIGKILL710.I SIGKILL
664signals when stopping the running job. Default is 5 seconds.711signals when stopping the running job. Default is 5 seconds.
665.\"712.\"
@@ -739,7 +786,7 @@
739.RB < https://launchpad.net/upstart/+bugs >786.RB < https://launchpad.net/upstart/+bugs >
740.\"787.\"
741.SH COPYRIGHT788.SH COPYRIGHT
742Copyright \(co 2010,2011 Canonical Ltd.789Copyright \(co 2009-2011 Canonical Ltd.
743.br790.br
744This is free software; see the source for copying conditions. There is NO791This is free software; see the source for copying conditions. There is NO
745warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.792warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
@@ -747,5 +794,6 @@
747.\"794.\"
748.SH SEE ALSO795.SH SEE ALSO
749.BR init (8)796.BR init (8)
797.BR initctl (8)
750.BR sh (1)798.BR sh (1)
751.BR upstart-events (7)799.BR upstart-events (7)
752800
=== modified file 'init/man/init.8'
--- init/man/init.8 2011-05-25 19:25:11 +0000
+++ init/man/init.8 2011-06-17 11:15:58 +0000
@@ -18,7 +18,7 @@
18.B init18.B init
19are known as jobs and are defined by files in the19are known as jobs and are defined by files in the
20.I /etc/init20.I /etc/init
21directory, unless overridden (see below). See21directory. See
22.BR init (5)22.BR init (5)
23for more details on configuring Upstart.23for more details on configuring Upstart.
24.\"24.\"
@@ -85,7 +85,7 @@
85.\"85.\"
86.TP86.TP
87.B \-\-session87.B \-\-session
88Connect to the D-Bus session bus. This should only be used for testing.88Connect to the D\-Bus session bus. This should only be used for testing.
89.\"89.\"
90.TP90.TP
91.B \-\-startup-event \fIevent\fP91.B \-\-startup-event \fIevent\fP
@@ -121,7 +121,7 @@
121.RB < https://launchpad.net/upstart/+bugs >121.RB < https://launchpad.net/upstart/+bugs >
122.\"122.\"
123.SH COPYRIGHT123.SH COPYRIGHT
124Copyright \(co 2010, 2011 Canonical Ltd.124Copyright \(co 2009\-2011 Canonical Ltd.
125.br125.br
126This is free software; see the source for copying conditions. There is NO126This is free software; see the source for copying conditions. There is NO
127warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.127warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
@@ -136,6 +136,5 @@
136.BR started (7)136.BR started (7)
137.BR stopping (7)137.BR stopping (7)
138.BR stopped (7)138.BR stopped (7)
139.BR stopped (7)
140.BR telinit (8)139.BR telinit (8)
141.BR upstart-events (7)140.BR upstart-events (7)
142141
=== modified file 'init/parse_job.c'
--- init/parse_job.c 2011-05-25 19:25:11 +0000
+++ init/parse_job.c 2011-06-17 11:15:58 +0000
@@ -2,7 +2,7 @@
2 *2 *
3 * parse_job.c - job definition parsing3 * parse_job.c - job definition parsing
4 *4 *
5 * Copyright © 2010 Canonical Ltd.5 * Copyright © 2010,2011 Canonical Ltd.
6 * Author: Scott James Remnant <scott@netsplit.com>.6 * Author: Scott James Remnant <scott@netsplit.com>.
7 *7 *
8 * This program is free software; you can redistribute it and/or modify8 * This program is free software; you can redistribute it and/or modify
@@ -280,12 +280,12 @@
280 * of the returned job are freed, the returned job will also be280 * of the returned job are freed, the returned job will also be
281 * freed.281 * freed.
282 *282 *
283 * Returns: If @update is NULL, returns new JobClass structure on success, NULL on raised error.283 * Returns: if @update is NULL, returns new JobClass structure on success, NULL on raised error.
284 * If @update is not NULL, returns @update on success, or NULL on error.284 * If @update is not NULL, returns @update or NULL on error.
285 **/285 **/
286JobClass *286JobClass *
287parse_job (const void *parent,287parse_job (const void *parent,
288 Session * session,288 Session *session,
289 JobClass *update,289 JobClass *update,
290 const char *name,290 const char *name,
291 const char *file,291 const char *file,
@@ -304,11 +304,11 @@
304 nih_debug ("Reusing JobClass %s (%s)",304 nih_debug ("Reusing JobClass %s (%s)",
305 class->name, class->path);305 class->name, class->path);
306 } else {306 } else {
307 nih_debug ("Creating new JobClass %s",307 nih_debug ("Creating new JobClass %s",
308 name);308 name);
309 class = job_class_new (parent, name, session);309 class = job_class_new (parent, name, session);
310 if (! class)310 if (! class)
311 nih_return_system_error (NULL);311 nih_return_system_error (NULL);
312 }312 }
313313
314 if (nih_config_parse_file (file, len, pos, lineno,314 if (nih_config_parse_file (file, len, pos, lineno,
@@ -1225,7 +1225,7 @@
1225 *1225 *
1226 * Parse an env stanza from @file, extracting a single argument of the form1226 * Parse an env stanza from @file, extracting a single argument of the form
1227 * VAR or VAR=VALUE. These are stored in the env array, which is increased1227 * VAR or VAR=VALUE. These are stored in the env array, which is increased
1228 * in size to accomodate the new value.1228 * in size to accommodate the new value.
1229 *1229 *
1230 * Returns: zero on success, negative value on error.1230 * Returns: zero on success, negative value on error.
1231 **/1231 **/
@@ -1796,6 +1796,7 @@
1796{1796{
1797 size_t a_pos, a_lineno;1797 size_t a_pos, a_lineno;
1798 int ret = -1;1798 int ret = -1;
1799 char *endptr;
1799 nih_local char *arg = NULL;1800 nih_local char *arg = NULL;
18001801
1801 nih_assert (class != NULL);1802 nih_assert (class != NULL);
@@ -1813,7 +1814,6 @@
18131814
1814 if (! strcmp (arg, "timeout")) {1815 if (! strcmp (arg, "timeout")) {
1815 nih_local char *timearg = NULL;1816 nih_local char *timearg = NULL;
1816 char *endptr;
18171817
1818 /* Update error position to the timeout value */1818 /* Update error position to the timeout value */
1819 *pos = a_pos;1819 *pos = a_pos;
@@ -1830,14 +1830,40 @@
1830 if (errno || *endptr || (class->kill_timeout < 0))1830 if (errno || *endptr || (class->kill_timeout < 0))
1831 nih_return_error (-1, PARSE_ILLEGAL_INTERVAL,1831 nih_return_error (-1, PARSE_ILLEGAL_INTERVAL,
1832 _(PARSE_ILLEGAL_INTERVAL_STR));1832 _(PARSE_ILLEGAL_INTERVAL_STR));
18331833 } else if (! strcmp (arg, "signal")) {
1834 ret = nih_config_skip_comment (file, len, &a_pos, &a_lineno);1834 unsigned long status;
18351835 nih_local char *sigarg = NULL;
1836 int signal;
1837
1838 /* Update error position to the exit status */
1839 *pos = a_pos;
1840 if (lineno)
1841 *lineno = a_lineno;
1842
1843 sigarg = nih_config_next_arg (NULL, file, len, &a_pos,
1844 &a_lineno);
1845
1846 if (! sigarg)
1847 goto finish;
1848
1849 signal = nih_signal_from_name (sigarg);
1850 if (signal < 0) {
1851 errno = 0;
1852 status = strtoul (sigarg, &endptr, 10);
1853 if (errno || *endptr || (status > INT_MAX))
1854 nih_return_error (-1, PARSE_ILLEGAL_SIGNAL,
1855 _(PARSE_ILLEGAL_SIGNAL_STR));
1856 }
1857
1858 /* Set the signal */
1859 class->kill_signal = signal;
1836 } else {1860 } else {
1837 nih_return_error (-1, NIH_CONFIG_UNKNOWN_STANZA,1861 nih_return_error (-1, NIH_CONFIG_UNKNOWN_STANZA,
1838 _(NIH_CONFIG_UNKNOWN_STANZA_STR));1862 _(NIH_CONFIG_UNKNOWN_STANZA_STR));
1839 }1863 }
18401864
1865 ret = nih_config_skip_comment (file, len, &a_pos, &a_lineno);
1866
1841finish:1867finish:
1842 *pos = a_pos;1868 *pos = a_pos;
1843 if (lineno)1869 if (lineno)
@@ -2247,6 +2273,7 @@
2247 nih_local char *arg = NULL;2273 nih_local char *arg = NULL;
2248 char *endptr;2274 char *endptr;
2249 size_t a_pos, a_lineno;2275 size_t a_pos, a_lineno;
2276 int oom_adj;
2250 int ret = -1;2277 int ret = -1;
22512278
2252 nih_assert (class != NULL);2279 nih_assert (class != NULL);
@@ -2261,12 +2288,37 @@
2261 if (! arg)2288 if (! arg)
2262 goto finish;2289 goto finish;
22632290
2264 if (! strcmp (arg, "never")) {2291 if (! strcmp (arg, "score")) {
2265 class->oom_adj = -17;2292 nih_local char *scorearg = NULL;
2293
2294 /* Update error position to the score value */
2295 *pos = a_pos;
2296 if (lineno)
2297 *lineno = a_lineno;
2298
2299 scorearg = nih_config_next_arg (NULL, file, len,
2300 &a_pos, &a_lineno);
2301 if (! scorearg)
2302 goto finish;
2303
2304 if (! strcmp (scorearg, "never")) {
2305 class->oom_score_adj = -1000;
2306 } else {
2307 errno = 0;
2308 class->oom_score_adj = (int)strtol (scorearg, &endptr, 10);
2309 if (errno || *endptr ||
2310 (class->oom_score_adj < -1000) ||
2311 (class->oom_score_adj > 1000))
2312 nih_return_error (-1, PARSE_ILLEGAL_OOM,
2313 _(PARSE_ILLEGAL_OOM_SCORE_STR));
2314 }
2315 } else if (! strcmp (arg, "never")) {
2316 class->oom_score_adj = -1000;
2266 } else {2317 } else {
2267 errno = 0;2318 errno = 0;
2268 class->oom_adj = (int)strtol (arg, &endptr, 10);2319 oom_adj = (int)strtol (arg, &endptr, 10);
2269 if (errno || *endptr || (class->oom_adj < -17) || (class->oom_adj > 15))2320 class->oom_score_adj = (oom_adj * 1000) / ((oom_adj < 0) ? 17 : 15);
2321 if (errno || *endptr || (oom_adj < -17) || (oom_adj > 15))
2270 nih_return_error (-1, PARSE_ILLEGAL_OOM,2322 nih_return_error (-1, PARSE_ILLEGAL_OOM,
2271 _(PARSE_ILLEGAL_OOM_STR));2323 _(PARSE_ILLEGAL_OOM_STR));
2272 }2324 }
22732325
=== modified file 'init/parse_job.h'
--- init/parse_job.h 2011-05-25 19:25:11 +0000
+++ init/parse_job.h 2011-06-17 11:15:58 +0000
@@ -1,6 +1,6 @@
1/* upstart1/* upstart
2 *2 *
3 * Copyright © 2009, 2010 Canonical Ltd.3 * Copyright © 2010 Canonical Ltd.
4 * Author: Scott James Remnant <scott@netsplit.com>.4 * Author: Scott James Remnant <scott@netsplit.com>.
5 *5 *
6 * This program is free software; you can redistribute it and/or modify6 * This program is free software; you can redistribute it and/or modify
77
=== modified file 'init/paths.h'
--- init/paths.h 2011-05-25 19:25:11 +0000
+++ init/paths.h 2011-06-17 11:15:58 +0000
@@ -1,6 +1,6 @@
1/* upstart1/* upstart
2 *2 *
3 * Copyright © 2010 Canonical Ltd.3 * Copyright © 2010-2011 Canonical Ltd.
4 * Author: Scott James Remnant <scott@netsplit.com>.4 * Author: Scott James Remnant <scott@netsplit.com>.
5 *5 *
6 * This program is free software; you can redistribute it and/or modify6 * This program is free software; you can redistribute it and/or modify
@@ -44,7 +44,6 @@
44#define CONSOLE "/dev/console"44#define CONSOLE "/dev/console"
45#endif45#endif
4646
47
48/**47/**
49 * DEV_NULL:48 * DEV_NULL:
50 *49 *
@@ -57,25 +56,23 @@
5756
5857
59/**58/**
60 * DEFAULT_CONFFILE:59 * CONFFILE:
61 *60 *
62 * Init daemon configuration file.61 * Init daemon configuration file.
63 **/62 **/
64#ifndef DEFAULT_CONFFILE63#ifndef CONFFILE
65#define DEFAULT_CONFFILE "/etc/init.conf"64#define CONFFILE "/etc/init.conf"
66#endif65#endif
6766
68
69/**67/**
70 * DEFAULT_CONFDIR:68 * CONFDIR:
71 *69 *
72 * Top-level directory of the system configuration files.70 * Default top-level directory of the system configuration files.
73 **/71 **/
74#ifndef DEFAULT_CONFDIR72#ifndef CONFDIR
75#define DEFAULT_CONFDIR "/etc/init"73#define CONFDIR "/etc/init"
76#endif74#endif
7775
78
79/**76/**
80 * USERCONFDIR:77 * USERCONFDIR:
81 *78 *
@@ -90,7 +87,7 @@
90 * CONFDIR_ENV:87 * CONFDIR_ENV:
91 *88 *
92 * If this environment variable is set, read configuration files89 * If this environment variable is set, read configuration files
93 * from the location specified, rather than DEFAULT_CONFDIR.90 * from the location specified, rather than CONFDIR.
94 *91 *
95 * Value is expected to be the full path to an alternative job92 * Value is expected to be the full path to an alternative job
96 * configuration directory.93 * configuration directory.
@@ -110,7 +107,6 @@
110#define SHELL "/bin/sh"107#define SHELL "/bin/sh"
111#endif108#endif
112109
113
114/**110/**
115 * SBINDIR:111 * SBINDIR:
116 *112 *
@@ -120,7 +116,6 @@
120#define SBINDIR "/sbin"116#define SBINDIR "/sbin"
121#endif117#endif
122118
123
124/**119/**
125 * TELINIT:120 * TELINIT:
126 *121 *
@@ -131,13 +126,11 @@
131#define TELINIT SBINDIR "/telinit"126#define TELINIT SBINDIR "/telinit"
132#endif127#endif
133128
134
135/**129/**
136 * File extension for standard configuration files.130 * File extension for standard configuration files.
137 **/131 **/
138#define CONF_EXT_STD ".conf"132#define CONF_EXT_STD ".conf"
139133
140
141/**134/**
142 * File extension for override files.135 * File extension for override files.
143 *136 *
@@ -147,7 +140,6 @@
147 **/140 **/
148#define CONF_EXT_OVERRIDE ".override"141#define CONF_EXT_OVERRIDE ".override"
149142
150
151/**143/**
152 * Determine if specified path extension representes a standard144 * Determine if specified path extension representes a standard
153 * configuration file.145 * configuration file.
@@ -160,7 +152,6 @@
160#define IS_CONF_EXT_STD(period) \152#define IS_CONF_EXT_STD(period) \
161 (!strcmp (period, CONF_EXT_STD))153 (!strcmp (period, CONF_EXT_STD))
162154
163
164/**155/**
165 * Determine if specified path extension representes an156 * Determine if specified path extension representes an
166 * override file.157 * override file.
@@ -173,7 +164,6 @@
173#define IS_CONF_EXT_OVERRIDE(period) \164#define IS_CONF_EXT_OVERRIDE(period) \
174 (!strcmp (period, CONF_EXT_OVERRIDE))165 (!strcmp (period, CONF_EXT_OVERRIDE))
175166
176
177/**167/**
178 * Determine if specified filename has a valid configuration168 * Determine if specified filename has a valid configuration
179 * file name extension.169 * file name extension.
@@ -187,5 +177,4 @@
187 (IS_CONF_EXT_STD(period) || \177 (IS_CONF_EXT_STD(period) || \
188 IS_CONF_EXT_OVERRIDE(period))178 IS_CONF_EXT_OVERRIDE(period))
189179
190
191#endif /* INIT_PATHS_H */180#endif /* INIT_PATHS_H */
192181
=== modified file 'init/session.c'
--- init/session.c 2011-05-25 19:25:11 +0000
+++ init/session.c 2011-06-17 11:15:58 +0000
@@ -2,7 +2,7 @@
2 *2 *
3 * session.c - session segregation3 * session.c - session segregation
4 *4 *
5 * Copyright © 2010 Canonical Ltd.5 * Copyright © 2010,2011 Canonical Ltd.
6 * Author: Scott James Remnant <scott@netsplit.com>.6 * Author: Scott James Remnant <scott@netsplit.com>.
7 *7 *
8 * This program is free software; you can redistribute it and/or modify8 * This program is free software; you can redistribute it and/or modify
99
=== modified file 'init/session.h'
--- init/session.h 2011-05-25 19:25:11 +0000
+++ init/session.h 2011-06-17 11:15:58 +0000
@@ -1,6 +1,6 @@
1/* upstart1/* upstart
2 *2 *
3 * Copyright © 2010 Canonical Ltd.3 * Copyright © 2010,2011 Canonical Ltd.
4 * Author: Scott James Remnant <scott@netsplit.com>.4 * Author: Scott James Remnant <scott@netsplit.com>.
5 *5 *
6 * This program is free software; you can redistribute it and/or modify6 * This program is free software; you can redistribute it and/or modify
77
=== modified file 'init/system.c'
--- init/system.c 2010-04-27 19:52:43 +0000
+++ init/system.c 2011-06-17 11:15:58 +0000
@@ -48,27 +48,21 @@
48/**48/**
49 * system_kill:49 * system_kill:
50 * @pid: process id of process,50 * @pid: process id of process,
51 * @force: force the death.51 * @signal: signal to send.
52 *52 *
53 * Kill all processes in the same process group as @pid, which may not53 * Send all processes in the same process group as @pid, which may not
54 * necessarily be the group leader.54 * necessarily be the group leader the @signal.
55 *
56 * When @force is FALSE, the TERM signal is sent; when it is TRUE, KILL
57 * is sent instead.
58 *55 *
59 * Returns: zero on success, negative value on raised error.56 * Returns: zero on success, negative value on raised error.
60 **/57 **/
61int58int
62system_kill (pid_t pid,59system_kill (pid_t pid,
63 int force)60 int signal)
64{61{
65 int signal;
66 pid_t pgid;62 pid_t pgid;
6763
68 nih_assert (pid > 0);64 nih_assert (pid > 0);
6965
70 signal = (force ? SIGKILL : SIGTERM);
71
72 pgid = getpgid (pid);66 pgid = getpgid (pid);
7367
74 if (kill (pgid > 0 ? -pgid : pid, signal) < 0)68 if (kill (pgid > 0 ? -pgid : pid, signal) < 0)
7569
=== modified file 'init/system.h'
--- init/system.h 2010-04-27 19:52:43 +0000
+++ init/system.h 2011-06-17 11:15:58 +0000
@@ -29,7 +29,7 @@
2929
30NIH_BEGIN_EXTERN30NIH_BEGIN_EXTERN
3131
32int system_kill (pid_t pid, int force)32int system_kill (pid_t pid, int signal)
33 __attribute__ ((warn_unused_result));33 __attribute__ ((warn_unused_result));
3434
35int system_setup_console (ConsoleType type, int reset)35int system_setup_console (ConsoleType type, int reset)
3636
=== modified file 'init/tests/test_conf.c'
--- init/tests/test_conf.c 2011-05-25 19:25:11 +0000
+++ init/tests/test_conf.c 2011-06-17 11:15:58 +0000
@@ -1052,6 +1052,82 @@
1052 nih_free (source);1052 nih_free (source);
10531053
10541054
1055 /* Check that a file without the ".conf" extension is ignored.
1056 */
1057 TEST_FEATURE ("without .conf extension only");
1058
1059 TEST_FILENAME (dirname);
1060 mkdir (dirname, 0755);
1061
1062 source = conf_source_new (NULL, dirname, CONF_JOB_DIR);
1063 ret = conf_source_reload (source);
1064
1065 TEST_EQ (ret, 0);
1066 TEST_HASH_EMPTY (source->files);
1067 TEST_HASH_EMPTY (job_classes);
1068
1069 strcpy (filename, dirname);
1070 strcat (filename, "/munchkin");
1071
1072 f = fopen (filename, "w");
1073 fprintf (f, "exec echo\n");
1074 fclose (f);
1075
1076 nfds = 0;
1077 FD_ZERO (&readfds);
1078 FD_ZERO (&writefds);
1079 FD_ZERO (&exceptfds);
1080
1081 nih_io_select_fds (&nfds, &readfds, &writefds, &exceptfds);
1082 nih_io_handle_fds (&readfds, &writefds, &exceptfds);
1083
1084 TEST_HASH_EMPTY (source->files);
1085 TEST_HASH_EMPTY (job_classes);
1086
1087 nih_free (source);
1088
1089 unlink (filename);
1090 rmdir (dirname);
1091
1092
1093 /* Check that a file named just ".conf" is ignored.
1094 */
1095 TEST_FEATURE ("with literal .conf file");
1096
1097 TEST_FILENAME (dirname);
1098 mkdir (dirname, 0755);
1099
1100 source = conf_source_new (NULL, dirname, CONF_JOB_DIR);
1101 ret = conf_source_reload (source);
1102
1103 TEST_EQ (ret, 0);
1104 TEST_HASH_EMPTY (source->files);
1105 TEST_HASH_EMPTY (job_classes);
1106
1107 strcpy (filename, dirname);
1108 strcat (filename, "/.conf");
1109
1110 f = fopen (filename, "w");
1111 fprintf (f, "exec echo\n");
1112 fclose (f);
1113
1114 nfds = 0;
1115 FD_ZERO (&readfds);
1116 FD_ZERO (&writefds);
1117 FD_ZERO (&exceptfds);
1118
1119 nih_io_select_fds (&nfds, &readfds, &writefds, &exceptfds);
1120 nih_io_handle_fds (&readfds, &writefds, &exceptfds);
1121
1122 TEST_HASH_EMPTY (source->files);
1123 TEST_HASH_EMPTY (job_classes);
1124
1125 nih_free (source);
1126
1127 unlink (filename);
1128 rmdir (dirname);
1129
1130
1055 /* Consume all available inotify instances so that the following1131 /* Consume all available inotify instances so that the following
1056 * tests run without inotify.1132 * tests run without inotify.
1057 */1133 */
@@ -1508,6 +1584,76 @@
1508 nih_free (source);1584 nih_free (source);
15091585
15101586
1587 /* Check that a file without the ".conf" extension is ignored
1588 * when it exists at reload time.
1589 */
1590 TEST_FEATURE ("without .conf extension only");
1591
1592 TEST_FILENAME (dirname);
1593 mkdir (dirname, 0755);
1594
1595 source = conf_source_new (NULL, dirname, CONF_JOB_DIR);
1596 ret = conf_source_reload (source);
1597
1598 TEST_EQ (ret, 0);
1599 TEST_HASH_EMPTY (source->files);
1600 TEST_HASH_EMPTY (job_classes);
1601
1602 strcpy (filename, dirname);
1603 strcat (filename, "/munchkin");
1604
1605 f = fopen (filename, "w");
1606 fprintf (f, "exec echo\n");
1607 fclose (f);
1608
1609 ret = conf_source_reload (source);
1610
1611 TEST_EQ (ret, 0);
1612
1613 TEST_HASH_EMPTY (source->files);
1614 TEST_HASH_EMPTY (job_classes);
1615
1616 nih_free (source);
1617
1618 unlink (filename);
1619 rmdir (dirname);
1620
1621
1622 /* Check that a file named just ".conf" is ignored when it exists
1623 * at reload time.
1624 */
1625 TEST_FEATURE ("with literal .conf file");
1626
1627 TEST_FILENAME (dirname);
1628 mkdir (dirname, 0755);
1629
1630 source = conf_source_new (NULL, dirname, CONF_JOB_DIR);
1631 ret = conf_source_reload (source);
1632
1633 TEST_EQ (ret, 0);
1634 TEST_HASH_EMPTY (source->files);
1635 TEST_HASH_EMPTY (job_classes);
1636
1637 strcpy (filename, dirname);
1638 strcat (filename, "/.conf");
1639
1640 f = fopen (filename, "w");
1641 fprintf (f, "exec echo\n");
1642 fclose (f);
1643
1644 ret = conf_source_reload (source);
1645
1646 TEST_EQ (ret, 0);
1647
1648 TEST_HASH_EMPTY (source->files);
1649 TEST_HASH_EMPTY (job_classes);
1650
1651 nih_free (source);
1652
1653 unlink (filename);
1654 rmdir (dirname);
1655
1656
1511 nih_log_set_priority (NIH_LOG_MESSAGE);1657 nih_log_set_priority (NIH_LOG_MESSAGE);
15121658
1513 /* Release consumed instances */1659 /* Release consumed instances */
15141660
=== modified file 'init/tests/test_control.c'
--- init/tests/test_control.c 2011-05-25 19:25:11 +0000
+++ init/tests/test_control.c 2011-06-17 11:15:58 +0000
@@ -1617,44 +1617,6 @@
1617 dbus_message_unref (method);1617 dbus_message_unref (method);
16181618
16191619
1620 /* Check that if an entry in the environment list has an invalid name,
1621 * an error is returned immediately.
1622 */
1623 TEST_FEATURE ("with invalid name in environment list");
1624 method = dbus_message_new_method_call (
1625 dbus_bus_get_unique_name (conn),
1626 DBUS_PATH_UPSTART,
1627 DBUS_INTERFACE_UPSTART,
1628 "EmitEvent");
1629
1630 dbus_connection_send (client_conn, method, &serial);
1631 dbus_connection_flush (client_conn);
1632 dbus_message_unref (method);
1633
1634 TEST_DBUS_MESSAGE (conn, method);
1635 assert (dbus_message_get_serial (method) == serial);
1636
1637 message = nih_new (NULL, NihDBusMessage);
1638 message->connection = conn;
1639 message->message = method;
1640
1641 env = nih_str_array_new (message);
1642 assert (nih_str_array_add (&env, message, NULL, "FOO BAR=BAZ"));
1643
1644 ret = control_emit_event (NULL, message, "test", env, TRUE);
1645
1646 TEST_LT (ret, 0);
1647
1648 dbus_error = (NihDBusError *)nih_error_get ();
1649 TEST_ALLOC_SIZE (dbus_error, sizeof (NihDBusError));
1650 TEST_EQ (dbus_error->number, NIH_DBUS_ERROR);
1651 TEST_EQ_STR (dbus_error->name, DBUS_ERROR_INVALID_ARGS);
1652 nih_free (dbus_error);
1653
1654 nih_free (message);
1655 dbus_message_unref (method);
1656
1657
1658 TEST_DBUS_CLOSE (conn);1620 TEST_DBUS_CLOSE (conn);
1659 TEST_DBUS_CLOSE (client_conn);1621 TEST_DBUS_CLOSE (client_conn);
1660 TEST_DBUS_END (dbus_pid);1622 TEST_DBUS_END (dbus_pid);
16611623
=== modified file 'init/tests/test_environ.c'
--- init/tests/test_environ.c 2011-05-25 19:25:11 +0000
+++ init/tests/test_environ.c 2011-06-17 11:15:58 +0000
@@ -904,83 +904,6 @@
904904
905905
906void906void
907test_valid (void)
908{
909 int valid;
910
911 TEST_FUNCTION ("environ_valid");
912
913 /* Check that an all-uppercase key is valid. */
914 TEST_FEATURE ("with uppercase key");
915 valid = environ_valid ("FOO", 3);
916
917 TEST_TRUE (valid);
918
919
920 /* Check that an all-lowercase key is valid. */
921 TEST_FEATURE ("with lowercase key");
922 valid = environ_valid ("foo", 3);
923
924 TEST_TRUE (valid);
925
926
927 /* Check that an all-alphanumeric key is valid. */
928 TEST_FEATURE ("with alphanumeric key");
929 valid = environ_valid ("Foo45", 5);
930
931 TEST_TRUE (valid);
932
933
934 /* Check that an underscores in the key are valid. */
935 TEST_FEATURE ("with underscores in key");
936 valid = environ_valid ("FOO_45", 6);
937
938 TEST_TRUE (valid);
939
940
941 /* Check that a key may begin with an underscore. */
942 TEST_FEATURE ("with initial underscore");
943 valid = environ_valid ("_FOO", 4);
944
945 TEST_TRUE (valid);
946
947
948 /* Check that a key may not begin with a number. */
949 TEST_FEATURE ("with initial number");
950 valid = environ_valid ("9FOO", 4);
951
952 TEST_FALSE (valid);
953
954
955 /* Check that a key may not begin with any other character. */
956 TEST_FEATURE ("with initial dash");
957 valid = environ_valid ("-FOO", 4);
958
959 TEST_FALSE (valid);
960
961
962 /* Check that a key may not contain dashes. */
963 TEST_FEATURE ("with dash");
964 valid = environ_valid ("FOO-BAR", 7);
965
966 TEST_FALSE (valid);
967
968
969 /* Check that a key may not contain spaces. */
970 TEST_FEATURE ("with space");
971 valid = environ_valid ("FOO BAR", 7);
972
973 TEST_FALSE (valid);
974
975
976 /* Check that the length is honoured. */
977 TEST_FEATURE ("with longer string then key");
978 valid = environ_valid ("FOO BAR", 3);
979
980 TEST_TRUE (valid);
981}
982
983void
984test_all_valid (void)907test_all_valid (void)
985{908{
986 char **env;909 char **env;
@@ -1026,22 +949,6 @@
1026 TEST_FALSE (valid);949 TEST_FALSE (valid);
1027950
1028 nih_free (env);951 nih_free (env);
1029
1030
1031 /* Check that an entry with an invalid key name means the table
1032 * is also not valid.
1033 */
1034 TEST_FEATURE ("with invalid key");
1035 env = nih_str_array_new (NULL);
1036 assert (nih_str_array_add (&env, NULL, NULL, "FOO=BAR"));
1037 assert (nih_str_array_add (&env, NULL, NULL, "BAR BEE=FOO"));
1038 assert (nih_str_array_add (&env, NULL, NULL, "WIBBLE=woo"));
1039
1040 valid = environ_all_valid (env);
1041
1042 TEST_FALSE (valid);
1043
1044 nih_free (env);
1045}952}
1046953
1047954
@@ -1648,19 +1555,6 @@
1648 nih_free (error);1555 nih_free (error);
16491556
16501557
1651 /* Check that attempting to expand an illegal variable name results in
1652 * an error being raised.
1653 */
1654 TEST_FEATURE ("with expansion of illegal variable");
1655 str = environ_expand (NULL, "this is a ${WIB WOB} test", env);
1656
1657 TEST_EQ_P (str, NULL);
1658
1659 error = nih_error_get ();
1660 TEST_EQ (error->number, ENVIRON_ILLEGAL_PARAM);
1661 nih_free (error);
1662
1663
1664 /* Check that inventing a new operator results in an error1558 /* Check that inventing a new operator results in an error
1665 * being raised.1559 * being raised.
1666 */1560 */
@@ -1701,7 +1595,6 @@
1701 test_lookup ();1595 test_lookup ();
1702 test_get ();1596 test_get ();
1703 test_getn ();1597 test_getn ();
1704 test_valid ();
1705 test_all_valid ();1598 test_all_valid ();
1706 test_expand ();1599 test_expand ();
17071600
17081601
=== modified file 'init/tests/test_job_class.c'
--- init/tests/test_job_class.c 2011-05-25 19:25:11 +0000
+++ init/tests/test_job_class.c 2011-06-17 11:15:58 +0000
@@ -119,6 +119,7 @@
119 TEST_EQ (class->task, FALSE);119 TEST_EQ (class->task, FALSE);
120120
121 TEST_EQ (class->kill_timeout, 5);121 TEST_EQ (class->kill_timeout, 5);
122 TEST_EQ (class->kill_signal, SIGTERM);
122123
123 TEST_EQ (class->respawn, FALSE);124 TEST_EQ (class->respawn, FALSE);
124 TEST_EQ (class->respawn_limit, 10);125 TEST_EQ (class->respawn_limit, 10);
@@ -131,7 +132,7 @@
131132
132 TEST_EQ (class->umask, 022);133 TEST_EQ (class->umask, 022);
133 TEST_EQ (class->nice, 0);134 TEST_EQ (class->nice, 0);
134 TEST_EQ (class->oom_adj, 0);135 TEST_EQ (class->oom_score_adj, 0);
135136
136 for (i = 0; i < RLIMIT_NLIMITS; i++)137 for (i = 0; i < RLIMIT_NLIMITS; i++)
137 TEST_EQ_P (class->limits[i], NULL);138 TEST_EQ_P (class->limits[i], NULL);
@@ -1942,7 +1943,7 @@
1942 TEST_FREE_TAG (message);1943 TEST_FREE_TAG (message);
19431944
1944 env = nih_str_array_new (message);1945 env = nih_str_array_new (message);
1945 assert (nih_str_array_add (&env, message, NULL, "FOO BAR=wibble"));1946 assert (nih_str_array_add (&env, message, NULL, "FOO"));
19461947
1947 ret = job_class_start (class, message, env, TRUE);1948 ret = job_class_start (class, message, env, TRUE);
19481949
@@ -2378,7 +2379,7 @@
2378 TEST_FREE_TAG (message);2379 TEST_FREE_TAG (message);
23792380
2380 env = nih_str_array_new (message);2381 env = nih_str_array_new (message);
2381 assert (nih_str_array_add (&env, message, NULL, "FOO BAR=wibble"));2382 assert (nih_str_array_add (&env, message, NULL, "FOO"));
23822383
2383 ret = job_class_stop (class, message, env, TRUE);2384 ret = job_class_stop (class, message, env, TRUE);
23842385
@@ -2862,7 +2863,7 @@
2862 TEST_FREE_TAG (message);2863 TEST_FREE_TAG (message);
28632864
2864 env = nih_str_array_new (message);2865 env = nih_str_array_new (message);
2865 assert (nih_str_array_add (&env, message, NULL, "FOO BAR=wibble"));2866 assert (nih_str_array_add (&env, message, NULL, "FOO"));
28662867
2867 ret = job_class_restart (class, message, env, TRUE);2868 ret = job_class_restart (class, message, env, TRUE);
28682869
28692870
=== modified file 'init/tests/test_job_process.c'
--- init/tests/test_job_process.c 2011-05-25 19:25:11 +0000
+++ init/tests/test_job_process.c 2011-06-17 11:15:58 +0000
@@ -821,7 +821,7 @@
821821
822 class = job_class_new (NULL, "test", NULL);822 class = job_class_new (NULL, "test", NULL);
823823
824 pid = job_process_spawn (class, args, NULL, FALSE);824 pid = job_process_spawn (class, args, NULL, FALSE, -1);
825 TEST_GT (pid, 0);825 TEST_GT (pid, 0);
826826
827 waitpid (pid, NULL, 0);827 waitpid (pid, NULL, 0);
@@ -859,7 +859,7 @@
859 class = job_class_new (NULL, "test", NULL);859 class = job_class_new (NULL, "test", NULL);
860 class->console = CONSOLE_NONE;860 class->console = CONSOLE_NONE;
861861
862 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: