blob: 842ac7402b78825b4cf924fa14590d6a420f0b16 [file] [log] [blame]
Scott James Remnant39ec35b2007-01-09 08:16:01 +000012007-01-09 Scott James Remnant <scott@netsplit.com>
2
Scott James Remnant34ff87d2007-01-09 09:00:30 +00003 * init/cfgfile.c (cfg_stanza_normalexit): Use do/while instead of
4 while, that we don't have to test has_token first as next_arg does
5 that for us.
6
Scott James Remnanta7354692007-01-09 08:56:02 +00007 * init/cfgfile.c (cfg_stanza_normalexit): Change to peek at the next
8 token to see whether it's missing or not, and then just fetch each
9 next argument at a time. This is more efficient than parsing them
10 all in one go, and also means we can report the error in the right
11 place!
12 * init/tests/test_cfgfile.c (test_stanza_normalexit): Since we've
13 changed the function that parses the stanza, add a proper test case
14 function for it, covering all the behaviours.
15
Scott James Remnant92e7fda2007-01-09 08:40:13 +000016 * init/job.c (job_new): Initialise the emits member to an empty list.
17 * init/job.h (Job): Add the emits member as a list.
18 * init/tests/test_job.c (test_new): Check the emits list starts off
19 empty.
20 * init/tests/test_cfgfile.c (test_stanza_emits): Test the new emits
21 stanza; this function will also serve as a prototype for cleaning up
22 the config tests.
23
24 * init/cfgfile.c (cfg_stanza_emits): Add function to parse the new
25 emits stanza.
26
Scott James Remnant39ec35b2007-01-09 08:16:01 +000027 * init/cfgfile.c (cfg_stanza_depends): Remove the depends stanza
28 from the configuration file. Dependency support has never been used,
29 and is to be replaced by a more flexible event/state configuration
30 and blocking on the starting/stopping events.
31 * init/tests/test_cfgfile.c: Remove references and tests for the
32 depends stanza.
33 * init/job.h: Remove the depends list from the job structure.
34 * init/job.c (job_new): No depends list to initialise.
35 (job_change_state): No dependencies to release
36 (job_start): No dependencies to iterate; this removes a particularly
37 hairy and complex interaction between state changes. Remove the
38 dependency event.
39 (job_release_depends): Drop this function.
40 * init/tests/test_job.c (test_start, test_stop): Massively simplify
41 these tests cases now we don't have dependencies to worry about.
42 (test_release_depends): Drop tests
43
Scott James Remnantd4f5fb82007-01-08 23:25:23 +0000442007-01-08 Scott James Remnant <scott@netsplit.com>
45
46 * init/cfgfile.c: Rewrite using the nih_config API, rather than one
47 huge function we now just have seperate handler functions for each
48 stanza. We can also use more fine-grained parsing than slurping
49 all args in and counting them.
50 (cfg_read_job): Catch exceptions from the configuration parser and
51 add the line number where the problem occurred to an output message.
52 Parser errors are now fatal, and not ignored.
53 * init/errors.h: Add a file containing errors raised within the init
54 daemon codebase.
55 * init/Makefile.am (init_SOURCES): Build with errors.h
56 * init/tests/test_cfgfile.c: Update test cases now we don't expect
57 a job to be returned if there's a parser error.
58
59 * TODO: Update
60
Scott James Remnant66384202007-01-06 14:23:18 +0000612007-01-06 Scott James Remnant <scott@netsplit.com>
62
Scott James Remnant4f968192007-01-06 20:31:13 +000063 * logd/main.c (logging_reader): Fix inadvertent shadowing of the
64 len parameter.
65
Scott James Remnantda100272007-01-06 20:24:18 +000066 * compat/sysv/telinit.c: Oops, nearly forgot to port this to send
67 the messages in the new way.
68 * compat/sysv/shutdown.c (shutdown_now): Likewise, port this too.
69
Scott James Remnant83a86522007-01-06 19:55:38 +000070 * TODO: Update.
71
Scott James Remnant6e941882007-01-06 14:38:57 +000072 * util/initctl.c (handle_job_status): Output the process argument,
73 not the pid argument which contains the origin of the message.
74
Scott James Remnant17d6dca2007-01-06 14:33:30 +000075 * upstart/message.c (upstart_message_handle): Raise a new unknown
76 message error if we don't have a handler and a new illegal message
77 error if the source is illegal.
78 * upstart/tests/test_message.c (test_handle): Adjust tests to check
79 for the new errors that we raise.
80 * upstart/errors.h: Define strings for new errors.
81
Scott James Remnant66384202007-01-06 14:23:18 +000082 * util/initctl.c: Yet another makeover for this little program,
83 port it to the new message/control framework using handler functions
84 and NihIoMessage. This starts to make each action function look
85 very similar, so there's method to this madness.
86
Scott James Remnantb4725d92007-01-05 13:10:21 +0000872007-01-05 Scott James Remnant <scott@netsplit.com>
88
Scott James Remnant3d6bb792007-01-05 22:33:43 +000089 * logd/main.c (main): Make sure that we add the SIGTERM handler.
90
Scott James Remnantefbaafb2007-01-05 18:12:15 +000091 * init/tests/test_job.c (test_run_script): This test case relies
92 on there only being one file descriptor watch, which won't be true
93 if the control socket has been opened because there's a message to
94 go out. Make sure it's closed first.
95
Scott James Remnantbe1941f2007-01-05 17:57:59 +000096 * init/init.supp: Update supressions file now that control_init
97 has been renamed to notify_init
98
Scott James Remnant71cc4d82007-01-05 17:53:32 +000099 * init/Makefile.am: Include notify.o from all tests.
100 * init/job.c (job_change_state, job_kill_process, job_start)
101 (job_stop): Use the new notify_job function name.
102 * init/event.c (event_queue_run): Use the new notify_event function
103 name.
104
Scott James Remnantfea6cb62007-01-05 17:49:13 +0000105 * init/control.c (control_error_handler): Handle ECONNREFUSED now
106 that the process id is available to us.
107 * init/tests/test_control.c (test_error_handler): Make sure children
108 going away is handled properly.
109
Scott James Remnant3dfb2132007-01-05 17:44:48 +0000110 * upstart/message.c (upstart_message_new): Store the process id in
111 the int_data message field.
112 * upstart/tests/test_message.c (test_new): Check the int_data field
113 is filled in.
114
Scott James Remnant5d702952007-01-05 17:21:34 +0000115 * init/main.c (main): Guard against various things returning an error
116 that we weren't catching.
117
Scott James Remnant601a0e32007-01-05 17:06:31 +0000118 * init/tests/test_notify.c: Whitespace fix.
119
Scott James Remnant15cd0862007-01-05 17:06:20 +0000120 * init/control.c (control_watch_jobs, control_unwatch_jobs)
121 (control_watch_events, control_unwatch_events): Restore functionality
122 to subscribe and unsubscribe from job and event notifications.
123 * init/tests/test_control.c (test_watch_jobs, test_unwatch_jobs)
124 (test_watch_events, test_unwatch_events): Check that the subscription
125 and unsubscription messages work.
126 * init/Makefile.am (test_control_LDADD): Link to notify.o
127
128 * init/control.c: Drop unused include of upstart/errors.h
129
Scott James Remnant58cef572007-01-05 16:18:42 +0000130 * init/notify.c: Move functions that handle subscription and
131 notification from control.c. Other than changing the names, we're
132 keeping the API the same for now; expect it to change later when we
133 add the ability to subscribe to individual jobs or events.
134 (notify_init): initialise the subscriptions list; we don't have a
135 separate send queue now that the control I/O is always asynchronous.
136 * init/notify.h: Moved notification enum, structure and prototypes
137 from control.h, changing the names so they match notify_* in the
138 process.
139 * init/Makefile.am (init_SOURCES): Build and link notify.c using
140 notify.h
141 (TESTS): Build the notify test suite binary.
142 (test_notify_SOURCES, test_notify_LDFLAGS, test_notify_LDADD): Details
143 for notify test suite binary.
144 * init/tests/test_notify.c: Rewrite test cases in the manner of
145 test_control.c so that we have one function for notify_job and
146 one for notify_event, each of which contains the child process that
147 receives the notification,
148
Scott James Remnantb1679c62007-01-05 15:49:54 +0000149 * init/control.c (control_open): Allow this to be called to obtain
150 the control socket, which means we can make it static.
151 * init/tests/test_control.c (test_open): Check that it works.
152
Scott James Remnantf7c6b062007-01-05 15:33:33 +0000153 * init/control.c, init/control.h, init/tests/test_control.c: Move
154 functions that handle subscription and notification to new notify.c
155 (control_init): Drop completely, no need to maintain a send queue now
156 (control_open): Change to return an NihIo that uses the default
157 control watcher, and our error handler. Split socket opening into
158 (control_open_sock): which can be called from other functions.
159 (control_close): Use nih_io_close() to close the socket and free the
160 structure in one go.
161 (control_reopen): Close the open control socket and open it again
162 without destroying the NihIo structure, its queues or state.
163 (control_close_handler): Handle the control socket going away
164 (control_error_handler): Handle errors on the control socket,
165 including the connection refused error that indicates a client went
166 away.
167 (control_handle): Split this into a miriad of small functions with
168 a table to link them to the message type; this will make expanding
169 each message handler much easier in future.
170 * init/control.h: Update.
171 * init/tests/test_control.c: Rewrite test cases to check the new
172 handler functions; as a side-effect, this gets rid of the evil giant
173 child/parent functions in favour of one test function per handler
174 function.
175
Scott James Remnantb4725d92007-01-05 13:10:21 +0000176 * upstart/message.c (upstart_message_handle_using): Wrapper function
177 around upstart_message_handle that ensures all messages as passed to
178 a single function.
179 * upstart/message.h: Update.
180 * upstart/tests/test_message.c (test_handle_using): Make sure it
181 calls the single function.
182
Scott James Remnantde3666f2007-01-04 23:00:07 +00001832007-01-04 Scott James Remnant <scott@netsplit.com>
184
185 * upstart/message.c (upstart_message_reader): Handle any errors
186 that occurred while handling the message.
187
Scott James Remnant92feed92007-01-02 15:27:47 +00001882007-01-02 Scott James Remnant <scott@netsplit.com>
189
Scott James Remnant7833bbf2007-01-02 20:57:23 +0000190 * upstart/message.c (upstart_message_handle): Check that the name
191 argument is never NULL.
192 (upstart_message_reader): Simple message reader function that can
193 be associated with an I/O watch and handles each message received.
194 * upstart/message.h: Add prototype.
195 * upstart/tests/test_message.c (test_reader): Test the reader function.
196
Scott James Remnant0e3b5fe2007-01-02 18:39:03 +0000197 * upstart/control.c: Rename to upstart/message.c
198 * upstart/control.h: Rename to upstart/message.h
199 * upstart/tests/test_control.c: Rename to upstart/tests/test_message.c
200 * upstart/libupstart.h: Update includes.
201 * upstart/wire.c: Include message.h
202 * upstart/wire.h: Update includes.
203 * upstart/tests/test_wire.c: Update includes.
204 * upstart/errors.h: Rename UPSTART_INVALID_MESSAGE to
205 UPSTART_MESSAGE_INVALID so that it's prefixed.
206 * upstart/Makefile.am (libupstart_la_SOURCES)
207 (upstartinclude_HEADERS, TESTS): Update filenames.
208
Scott James Remnant2ad9a042007-01-02 18:29:49 +0000209 * upstart/control.c (upstart_message_new): New function that
210 creates an NihIoMessage directly from its arguments, which are a type
211 followed by a variable number of args depending on that type.
212 (upstart_message_handler): Function to find a handler function for
213 a particular message type and origin process.
214 (upstart_message_handle): New function that takes an NihIoMessage
215 and invokes a handler function with a variable number of args
216 depending on the message type.
217 (upstart_send_msg, upstart_send_msg_to, upstart_recv_msg): Drop these
218 functions, leave it up to the caller to decide whether to send and
219 receive the messages synchronously or asynchronously; now that the
220 capability is in nih_io_*.
221 * upstart/control.h (UpstartMsgType): Rename to UpstartMessageType.
222 (UpstartMessageHandler): Function with variable number of arguments
223 that handles a message received.
224 (UpstartMsg): Drop this structure entirely, we'll encode or decode
225 the wire format directly from or into a function call, rather than
226 use an intermediate structure to marshal it.
227 (UpstartMessage): New structure to make a table that can be passed
228 to upstart_message_handle to determine which handler should be called.
229 * upstart/tests/test_control.c: Test new behaviour.
230 * upstart/wire.c (upstart_push_header, upstart_pop_header): Change
231 structure name for type parameter.
232 * upstart/wire.h: Update.
233 * upstart/tests/test_wire.c: Update.
234
Scott James Remnant92feed92007-01-02 15:27:47 +0000235 * configure.ac (AC_COPYRIGHT): Update copyright to 2007.
236
Scott James Remnant67546d12006-12-29 13:08:32 +00002372006-12-29 Scott James Remnant <scott@netsplit.com>
238
239 * upstart/wire.c (upstart_write_int, upstart_write_unsigned)
240 (upstart_write_string, upstart_write_header, upstart_write_packv)
241 (upstart_write_pack): Rename to *_push_*
242 (upstart_read_int, upstart_read_unsigned, upstart_read_string)
243 (upstart_read_header, upstart_read_packv, upstart_read_pack): Rename
244 to *_pop_*.
245 All of the above modified to modify an NihIoMessage structure,
246 instead of trying to carry around buffers ourself.
247 * upstart/wire.h: Update to match above.
248 * upstart/tests/test_wire.c: Update all tests to match the above
249 changes.
250
Scott James Remnantd76e8e32006-12-21 18:34:31 +00002512006-12-21 Scott James Remnant <scott@netsplit.com>
252
Scott James Remnantf922a982006-12-21 18:45:30 +0000253 * upstart/wire.c (upstart_read_packv, upstart_write_packv): Change
254 nih_assert_notreached to nih_assert_not_reached.
255
Scott James Remnantd76e8e32006-12-21 18:34:31 +0000256 * init/job.c (job_run_script): Open the NihIo structure in stream mode.
257 * logd/main.c (logging_watcher): Open the NihIo structure in
258 stream mode.
259 (logging_reader): Need to pass the length of the size_t as a pointer
260 so that it can be modified if less is read.
261
Scott James Remnanta0385232006-12-17 15:21:39 +00002622006-12-17 Scott James Remnant <scott@netsplit.com>
263
Scott James Remnant00cc6882006-12-17 19:54:36 +0000264 * upstart/wire.c (upstart_write_packv, upstart_write_pack)
265 (upstart_read_packv, upstart_read_pack): Functions to write a pack
266 of different variables to the stream, or read them from it
267 * upstart/wire.h: Add prototypes.
268 * upstart/tests/test_wire.c (test_write_pack, test_read_pack):
269 Check we can read and write a pack of variables at once.
270
Scott James Remnant518e1c12006-12-17 18:12:14 +0000271 * upstart/wire.c (upstart_write_header, upstart_read_header): Drop
272 the version from the header, we'll just keep the protocol always
273 backwards compatible.
274 * upstart/wire.h: Update.
275 * upstart/tests/test_wire.c (test_write_header, test_read_header):
276 Check that everything works.
277
Scott James Remnant64e378f2006-12-17 17:24:44 +0000278 * upstart/wire.c (upstart_write_string, upstart_read_string):
279 Transmit the length as an unsigned, and use 0xffffffff to mean NULL
280 instead of zero so we can still transmit the empty string.
281 * upstart/wire.h: Update.
282 * upstart/tests/test_wire.c (test_write_string, test_read_string):
283 Tests for the functions to make sure the wire is at it should be.
284
Scott James Remnantd6dde952006-12-17 17:00:56 +0000285 * upstart/wire.c (upstart_read_str, upstart_write_str): Rename to
286 upstart_read_string and upstart_write_string.
287 * upstart/wire.h: Update.
288
Scott James Remnantc71ab3b2006-12-17 16:58:28 +0000289 * upstart/wire.c (upstart_write_unsigned, upstart_read_unsigned):
290 Functions to send unsigned values over the wire, which we'll use
291 to get a bit extra for the string lengths.
292 * upstart/wire.h: Update.
293 * upstart/tests/test_wire.c (test_write_unsigned)
294 (test_read_unsigned): Test the new functions.
295
Scott James Remnant0218e3a2006-12-17 16:39:33 +0000296 * upstart/wire.c (upstart_write_ints, upstart_read_ints): Drop
297 these functions, we'll go with something far more generic and
298 useful.
299 * upstart/wire.h: Remove prototypes.
300
Scott James Remnant9ee44302006-12-17 16:37:59 +0000301 * upstart/wire.c (upstart_write_int, upstart_read_int): Transmit
302 integers as signed 32-bit values in network byte order.
303 * upstart/tests/test_wire.c (test_write_int, test_read_int): Test
304 the functions to make sure the wire is at it should be,
305
Scott James Remnant5cef53e2006-12-17 15:41:13 +0000306 * upstart/control.c (upstart_read_int, upstart_write_int)
307 (upstart_read_ints, upstart_write_ints, upstart_read_str)
308 (upstart_write_str, upstart_read_header, upstart_write_header): Move
309 functions to new wire.c file.
310 * upstart/wire.c: Source file to hold wire protocol functions.
311 * upstart/wire.h: Prototypes.
312 * upstart/tests/test_wire.c: (empty) test suite.
313 * upstart/libupstart.h: Include wire.h
314 * upstart/Makefile.am (libupstart_la_SOURCES): Build and link wire.c
315 (upstartinclude_HEADERS): Install wire.h
316 (TESTS): Build and run wire test suite.
317 (test_wire_SOURCES, test_wire_LDFLAGS, test_wire_LDADD): Details for
318 wire test suite binary.
319
Scott James Remnanta0385232006-12-17 15:21:39 +0000320 * upstart/control.c (MAGIC): Change to "upstart\n", the final
321 character was originally \0 and then was a " " for the 0.2 series.
322 * upstart/tests/test_control.c (test_recv_msg): Change to match.
323
Scott James Remnantfb9412a2006-12-15 18:03:22 +00003242006-12-15 Scott James Remnant <scott@netsplit.com>
325
Scott James Remnant2e5fe2b2006-12-15 18:27:58 +0000326 * util/initctl.c, compat/sysv/telinit.c, compat/sysv/shutdown.c:
327 Update all uses of the UpstartMsg structure to avoid the
328 intermediate union that no longer exists.
329
Scott James Remnantfb521462006-12-15 18:24:57 +0000330 * init/control.c, init/tests/test_control.c: Update all uses of
331 the UpstartMsg structure to avoid the intermediate union that no
332 longer exists.
333
Scott James Remnant99b97662006-12-15 18:15:22 +0000334 * upstart/control.h: Combine all the previous message structures
335 into just one that has all of the fields anyway.
336 * upstart/control.c, upstart/tests/test_control.c: Update all uses of
337 the UpstartMsg structure to avoid the intermediate union that no
338 longer exists.
339
Scott James Remnantd452ab12006-12-15 18:05:23 +0000340 * upstart/control.h (UPSTART_API_VERSION): Define API version macro
341 to be public.
342 * upstart/control.c (MSG_VERSION, upstart_send_msg_to): Replacing the
343 previous MSG_VERSION macro here.
344
Scott James Remnantfb9412a2006-12-15 18:03:22 +0000345 * upstart/control.c (upstart_read_int, upstart_write_int)
346 (upstart_read_ints, upstart_write_ints, upstart_read_str)
347 (upstart_write_str, upstart_read_header, upstart_write_header):
348 New functions to replace the old "write a struct" protocol with
349 something a little more regimented and supportable.
350 (IOVEC_ADD, IOVEC_READ, WireHdr, WireJobPayload, WireJobStatusPayload)
351 (WireEventPayload): Remove these structures, use the functions
352 instead.
353 (upstart_send_msg_to): Call write functions intead of using macros,
354 this makes the code somewhat neater.
355 (upstart_recv_msg): Call read functions instead of using macros,
356 again making the code somewhat neater.
357 * upstart/tests/test_control.c (test_recv_msg): Change wire
358 tests to match new protocol, and thus actually work properly,
359 previously these were endian sensitive.
360
Scott James Remnant27ebd792006-12-14 11:37:14 +00003612006-12-14 Scott James Remnant <scott@netsplit.com>
362
Scott James Remnant136dc6f2006-12-14 12:36:43 +0000363 * compat/sysv/shutdown.c (wall): Construct the wall message so that
364 we don't put \r into a po file; for some reason, gettext hates that
365 and bitches about it. Someone's confusing internationalisation with
366 operating system portability, I expect.
367
Scott James Remnantf334f842006-12-14 11:46:14 +0000368 * util/man/initctl.8: Drop reference to start(8), as that's just
369 a symlink to initctl now.
370
Scott James Remnant88847432006-12-14 11:44:36 +0000371 * init/man/init.8: Link to initctl.
372
Scott James Remnantf6b237a2006-12-14 11:40:49 +0000373 * compat/sysv/reboot.c (main): Clear up help text a little.
374
Scott James Remnant3b4b2272006-12-14 11:39:05 +0000375 * HACKING: Correct some typos.
376
Scott James Remnant27ebd792006-12-14 11:37:14 +0000377 * configure.ac (AC_INIT): Correct bug reporting address.
378
Scott James Remnant1d8763a2006-12-13 17:49:38 +00003792006-12-13 Scott James Remnant <scott@netsplit.com>
380
Scott James Remnantecec0fe2006-12-13 21:55:28 +0000381 * configure.ac: Bump version to 0.3.2
382
Scott James Remnantf642ffa2006-12-13 18:24:22 +0000383 * NEWS: Update.
384
Scott James Remnant1d8763a2006-12-13 17:49:38 +0000385 * util/initctl.c (print_job_status): Drop the newline from the
386 output.
387
Scott James Remnant567cbdc2006-12-13 17:07:58 +00003882006-12-13 Alex Smith <alex@alex-smith.me.uk>
389
390 * util/initctl.c (print_job_status): Clean up initctl job status
391 output, which was badly converted from printf to nih_message.
392
Scott James Remnante2cf6392006-12-13 17:02:20 +00003932006-12-13 Scott James Remnant <scott@netsplit.com>
394
395 * compat/sysv/man/shutdown.8: Add missing documentation on the
396 format of TIME by copying it from --help output.
397
Scott James Remnantfec90562006-12-13 17:00:40 +00003982006-12-13 Alex Smith <alex@alex-smith.me.uk>
399
400 * init/process.c (process_setup_console): Actually send output to
401 /dev/null instead of /dev/console, when CONSOLE_NONE.
402
Scott James Remnantf233c9d2006-12-13 16:45:35 +00004032006-12-13 Scott James Remnant <scott@netsplit.com>
404
Scott James Remnantfbf7a5c2006-12-13 16:54:42 +0000405 * Makefile.am (EXTRA_DIST): Distribute the nih ChangeLog as well.
406
Scott James Remnantf233c9d2006-12-13 16:45:35 +0000407 * init/tests/test_job.c: Port to the new test framework.
408 * init/job.c (job_set_idle_event): Fix a slight memory leak,
409 repeated setting of the idle event never freed the previous one set.
410
Scott James Remnant1abced42006-12-12 11:28:49 +00004112006-12-12 Scott James Remnant <scott@netsplit.com>
412
Scott James Remnantfbad50c2006-12-12 18:47:43 +0000413 * init/tests/test_cfgfile.c: Port to the new test framework.
414
Scott James Remnantef372232006-12-12 17:23:05 +0000415 * init/tests/test_control.c: Port to the new test framework.
416 * init/init.supp: Suppress the list head allocated within control_init.
417
Scott James Remnant2c2e01a2006-12-12 17:22:40 +0000418 * init/control.c (control_watcher): Need to save the pid when we
419 get ECONNREFUSED, otherwise we lose it when we free the message.
420
Scott James Remnant40f7d912006-12-12 15:31:35 +0000421 * init/tests/test_process.c: Port to the new test framework.
422 * init/init.supp: Suppress the list head allocated within job_init.
423
Scott James Remnantfc456592006-12-12 14:09:45 +0000424 * init/init.supp: Include a valgrind suppressions file.
425 * init/Makefile.am (EXTRA_DIST): Distribute the suppressions file.
426
Scott James Remnant96c9b072006-12-12 14:07:30 +0000427 * init/tests/test_event.c: Port to the new test framework.
428
Scott James Remnant237c7f62006-12-12 13:49:19 +0000429 * logd/Makefile.am, util/Makefile.am, compat/sys/Makefile.am
430 (AM_CPPFLAGS): Add -I$(srcdir), necessary for testing "programs"
431 that don't have usual library path semantics.
432
Scott James Remnant2a35ab92006-12-12 13:23:10 +0000433 * upstart/tests/test_control.c: Port to the new test framework.
434 * upstart/control.c (upstart_free): Drop this function, while not
435 exposing libnih is a valiant effort, it already slips out because
436 of the error handling.
437
Scott James Remnant905dd272006-12-12 12:38:34 +0000438 * upstart/tests/test_job.c: Add missing include.
439
Scott James Remnante77567f2006-12-12 12:25:46 +0000440 * upstart/tests/test_job.c: Port to the new test framework.
441 (test_process_state_name): Check that this returns NULL.
442
Scott James Remnantb7983062006-12-12 11:34:49 +0000443 * HACKING: Update location of download directory. Document
444 requirement that all code have test cases.
445
Scott James Remnant0c577ce2006-12-12 11:31:13 +0000446 * logd/main.c (open_logging): Likewise.
447
Scott James Remnantc654baf2006-12-12 11:30:44 +0000448 * init/control.c (control_open): No need to set ENOMEM, errno is
449 always set anyway.
450
Scott James Remnant1abced42006-12-12 11:28:49 +0000451 * configure.ac (AM_INIT_AUTOMAKE): Include nostdinc so we don't get
452 Automake's broken default includes.
453 * upstart/Makefile.am (DEFAULT_INCLUDES): Drop override now that
454 we don't need it.
455 (DEFS, INCLUDES): Replace these variables with the combined
456 (AM_CPPFLAGS): variable that declares everything.
457 * init/Makefile.am (DEFAULT_INCLUDES): Drop override now that
458 we don't need it.
459 (DEFS, INCLUDES): Replace these variables with the combined
460 (AM_CPPFLAGS): variable that declares everything.
461 * util/Makefile.am (DEFAULT_INCLUDES): Drop override now that
462 we don't need it.
463 (DEFS, INCLUDES): Replace these variables with the combined
464 (AM_CPPFLAGS): variable that declares everything.
465 * compat/sysv/Makefile.am (DEFAULT_INCLUDES): Drop override now that
466 we don't need it.
467 (DEFS, INCLUDES): Replace these variables with the combined
468 (AM_CPPFLAGS): variable that declares everything.
469 * logd/Makefile.am (DEFAULT_INCLUDES): Drop override now that
470 we don't need it.
471 (DEFS, INCLUDES): Replace these variables with the combined
472 (AM_CPPFLAGS): variable that declares everything.
473
Scott James Remnantacec3b22006-11-02 16:36:53 +00004742006-11-02 Scott James Remnant <scott@netsplit.com>
475
476 * util/initctl.c (start_action): Remove break calls which shouldn't
477 be there.
478
Scott James Remnantea806b72006-10-18 15:01:00 +01004792006-10-18 Sean E. Russell <ser@ser1.net>
480
481 * init/main.c: Include sys/time.h
482 * init/cfgfile.c: Include sys/time.h and sys/resource.h
483 * init/job.c: Include sys/time.h and sys/resource.h
484
Scott James Remnant6702ac12006-10-17 18:55:24 +01004852006-10-17 Scott James Remnant <scott@netsplit.com>
486
Scott James Remnantd5758f42006-10-17 19:21:25 +0100487 * configure.ac: Bump version to 0.3.1
488
Scott James Remnantfd029da2006-10-17 19:21:07 +0100489 * NEWS: Update.
490 * TODO: Update.
491
Scott James Remnant9f67cb82006-10-17 19:12:28 +0100492 * configure.ac (AM_GNU_GETTEXT_VERSION): Quote version number.
493
Scott James Remnant4ebe87f2006-10-17 19:04:40 +0100494 * logd/Makefile.am (event.d/logd): Make the event.d sub-directory
495 in case we're building outside of the source tree.
496
Scott James Remnant6702ac12006-10-17 18:55:24 +0100497 * compat/sysv/runlevel.c (store): Don't break strict-aliasing rules
498 by avoiding dereferencing type-punned pointer. Answers on a
499 postcard, please.
500
Scott James Remnant7f133012006-10-13 12:00:34 +01005012006-10-13 Scott James Remnant <scott@netsplit.com>
502
Scott James Remnantecbb2b52006-10-13 15:18:24 +0100503 * util/initctl.c (start_action, emit_action): Add missing \n
504
Scott James Remnant48622982006-10-13 15:15:50 +0100505 * util/initctl.c: Rewrite using nih_command_parser.
506 * util/man/initctl.8: Improve.
507
508 * util/start.c: Remove, replaced by initctl.
509 * util/man/start.8: Remove, replaced by initctl.
510 * util/Makefile.am (sbin_PROGRAMS): Drop start, now just a symlink
511 to initctl.
512 (dist_man_MANS): Drop start.8, now a symlink to initctl.8
513 (install-exec-hook): Make symlinks to initctl, add start
514 (install-data-hook): Make symlinks to initctl.8, add start.8
515
Scott James Remnantb1d8a7d2006-10-13 13:57:31 +0100516 * initctl: Rename to util again, I don't want a separate directory
517 for every single little tool; and we'll be shipping more than just
518 initctl (e.g. a non-compat reboot).
519 * configure.ac (AC_CONFIG_FILES): Make util/Makefile instead of
520 initctl/Makefile.
521 * Makefile.am (SUBDIRS): Descend into util, not initctl.
522
Scott James Remnanta48b4fe2006-10-13 13:49:46 +0100523 * compat/sysv/reboot.c: Remove long options where they didn't exist
524 before. Write help text.
525 * compat/sysv/man/reboot.8: Update.
526
Scott James Remnant462734c2006-10-13 13:36:00 +0100527 * init/main.c (main): Formatting.
528 * logd/main.c (main): Formatting.
529 * logd/man/logd.8: Formatting.
530 * compat/sysv/runlevel.c (main): Formatting.
531 * compat/sysv/telinit.c (main): Formatting.
532 * compat/sysv/man/shutdown.8: Remove long options.
533
Scott James Remnanteff01f12006-10-13 13:32:12 +0100534 * compat/sysv/shutdown.c: Remove -e/--event, it has no place in a
535 compatibility tool. Get rid of long options that never existed
536 before. Specify help text to describe the options.
537 * compat/sysv/man/shutdown.8: Spruce up a bit.
538
Scott James Remnant4a5cd212006-10-13 12:59:15 +0100539 * compat/sysv/telinit.c (main): Set help text to list the valid
540 runlevels.
541 * compat/sysv/man/telinit.8: Refine the notes to mention runlevel(8).
542
Scott James Remnantf7819622006-10-13 12:54:43 +0100543 * compat/sysv/runlevel.c (main): Make the help text describe the
544 options, rather than the behaviour.
Scott James Remnant4a5cd212006-10-13 12:59:15 +0100545 * compat/sysv/man/runlevel.8: Flesh out a little more.
Scott James Remnantf7819622006-10-13 12:54:43 +0100546
Scott James Remnant930e25a2006-10-13 12:28:05 +0100547 * configure.ac (AC_INIT): Change bug reporting address to the
548 mailing list, since Launchpad doesn't accept random bugs without
549 accounts and complicated control messages.
550 * init/main.c, logd/main.c: Add a period to the synopsis.
551
Scott James Remnanta6ed7eb2006-10-13 12:14:45 +0100552 * init/main.c (main): Set the synopsis, and direct people to look
553 at telinit in the --help output.
554 * init/man/init.8: Flesh this out a little more, still a lot of
555 explaining to do about jobs and events, but we'll wait until we've
556 changed that code before documentating the behaviour.
557
Scott James Remnant7f133012006-10-13 12:00:34 +0100558 * logd/main.c (main): Correct help text to describe the options,
559 rather than what the program does. As per standard style.
560 Don't become a daemon until the logging socket is open, and make
561 that exclusive with waiting for SIGCONT.
562 * logd/man/logd.8: Write some more extensive documentation,
563 including describing the startup interlock and the socket protocol.
564 * TODO: Plan to get rid of the signal interlock from logd.
565
Scott James Remnant8985dd32006-10-12 15:26:29 +01005662006-10-12 Scott James Remnant <scott@netsplit.com>
567
568 * configure.ac: Expand AC_GNU_SOURCE so we get _GNU_SOURCE and so
569 that gettext doesn't complain.
570 (AM_GNU_GETTEXT_VERSION): Increase to 0.15
571 (AC_PREREQ): Increase to 2.60
572 * HACKING: Update autoconf and gettext requirements.
573
Scott James Remnantc16a9b42006-10-11 17:08:58 +01005742006-10-11 Scott James Remnant <scott@netsplit.com>
575
Scott James Remnant74a11442006-10-11 17:58:56 +0100576 * init/control.c (control_init): Pass NULL to nih_list_new.
577 Clarify list item types.
578 * init/event.c (event_init): Pass NULL to nih_list_new.
579 * init/job.c (job_init): Pass NULL to nih_list_new.
580
Scott James Remnantc34c4be2006-10-11 17:56:34 +0100581 * init/main.c: Change nih_signal_add_callback to nih_signal_add_handler
582 and NihSignalCb to NihSignalHandler.
583
Scott James Remnant8b227402006-10-11 17:55:27 +0100584 * init/cfgfile.c, init/cfgfile.h, init/control.c, init/control.h,
585 init/event.c, init/event.h, init/job.c, init/job.h, init/main.c,
586 init/process.c: Clean up documentation strings and parent pointer
587 types.
588
Scott James Remnantd033c862006-10-11 17:41:22 +0100589 * compat/sysv/shutdown.c: Change nih_signal_add_callback to
590 nih_signal_add_handler.
591
Scott James Remnant1ee0f482006-10-11 17:40:41 +0100592 * compat/sysv/reboot.c: Set synopsis text depending on command
593 used (probably should use nih_command_parser?)
594 * compat/sysv/runlevel.c: Set synopsis and help text, and correct
595 usage.
596 * compat/sysv/shutdown.c: Set synopsis text.
597 * compat/sysv/telinit.c: Set synopsis text.
598
Scott James Remnant3b734642006-10-11 17:22:33 +0100599 * compat/sysv/runlevel.c, compat/sysv/shutdown.c: Clean up
600 documentation strings.
601
Scott James Remnantc6e4f002006-10-11 17:22:03 +0100602 * logd/main.c: Set synopsis and help text.
603
Scott James Remnant5e31d742006-10-11 17:16:55 +0100604 * logd/main.c: Clean up documentation strings.
605 Change nih_signal_add_callback to nih_signal_add_handler.
606
Scott James Remnant48359382006-10-11 17:13:48 +0100607 * upstart/control.c, upstart/control.h, upstart/job.c: Clean up
608 documentation strings and correct parent pointer type.
609
Scott James Remnantc16a9b42006-10-11 17:08:58 +0100610 * HACKING: Detail function documentation requirement and format.
611
Scott James Remnant59093a82006-10-10 13:09:58 +01006122006-10-10 Scott James Remnant <scott@netsplit.com>
613
Scott James Remnant335947d2006-10-11 17:08:34 +0100614 * event.d/logd.in: Move to logd/event.d
615 * event.d/Makefile.am: Remove
616 * logd/Makefile.am: Create the logd job definition and install
617 * Makefile.am (SUBDIRS): event.d directory has been removed.
618 * configure.ac (AC_CONFIG_FILES): No longer make event.d/Makefile
619
Scott James Remnant59093a82006-10-10 13:09:58 +0100620 * configure.ac: Check for --enable-compat, default to sysv if given
621 or no compat if not given.
622 * compat/sysv/Makefile.am: Don't build binaries or install manpages
623 unless COMPAT_SYSV is defined.
624
Scott James Remnant45150942006-10-06 16:36:27 +01006252006-10-06 Scott James Remnant <scott@netsplit.com>
626
627 * doc/upstart-logo.svg: Include the logo Alexandre designed.
628 * doc/Makefile.am (EXTRA_DIST): Ship the logo in the tarball.
629 * Makefile.am (SUBDIRS): Install under doc
630 * configure.ac: Generate doc/Makefile
631 * AUTHORS: Ensure he's credited fully.
632
Scott James Remnant10b8c0e2006-09-27 21:27:38 +01006332006-09-27 Scott James Remnant <scott@netsplit.com>
634
Scott James Remnant44052a32006-09-28 00:04:32 +0100635 * event.d/Makefile.am (do_subst): Eliminate duplicate /s
636
Scott James Remnant5222c402006-09-27 22:48:48 +0100637 * man/init.8: Move to init/man
638 * init/Makefile.am: Update to install man page.
639 * man/logd.8: Move to logd/man
640 * logd/Makefile.am: Update to install man page.
641 * man/initctl.8, man/start.8: Move to initctl/man
642 * initctl/Makefile.am: Update to install man pages.
643 * man/reboot.8, man/runlevel.8, man/shutdown.8, man/telinit.8:
644 Move to compat/sysv/man
645 * compat/sysv/Makefile.am: Update to install man pages.
646 * man/Makefile.am: Remove
647 * configure.ac (AC_CONFIG_FILES): Remove man/Makefile
648 * Makefile.am (SUBDIRS): Don't build in man
649
Scott James Remnant545cb8c2006-09-27 21:32:49 +0100650 * util: Rename to initctl
651 * configure.ac (AC_CONFIG_FILES): Update.
652 * Makefile.am (SUBDIRS): Update.
653
Scott James Remnant960c82d2006-09-27 21:30:42 +0100654 * util/reboot.c: Move to compat/sysv
655 * util/shutdown.c: Move to compat/sysv
656 * util/Makefile.am: Update.
657 * compat/sysv/Makefile.am: Update.
658
Scott James Remnant10b8c0e2006-09-27 21:27:38 +0100659 * configure.ac: Replace macros with single call to NIH_INIT.
660 Bump version to 0.3.0 to begin new development cycle.
661
Scott James Remnante5591992006-09-21 05:49:34 +01006622006-09-21 Scott James Remnant <scott@netsplit.com>
663
664 * logd/main.c: Revert the change that logged to the console, in
665 practice this doesn't work so well. I want to get rid of logd
666 in the long term, or at least just have it as a simple logging
667 proxy, so giving it features seems wrong.
668
Scott James Remnant9b58b842006-09-20 05:37:47 +01006692006-09-20 Scott James Remnant <scott@netsplit.com>
670
Scott James Remnant97f08fa2006-09-20 06:34:12 +0100671 * configure.ac: Bump version to 0.2.8
672 * NEWS: Updated.
673
Scott James Remnante59c71e2006-09-20 06:14:32 +0100674 * logd/main.c (main): Check the kernel command-line for "quiet"
675 (line_reader): Write to console unless silent or a daemon
676
Scott James Remnant9b58b842006-09-20 05:37:47 +0100677 * man/Makefile.am (dist_man_MANS): Drop sulogin.8
678 * man/sulogin.8: Drop, we don't include an sulogin
679
Scott James Remnant0fafba42006-09-20 01:36:29 +01006802006-09-19 Michael Biebl <mbiebl@gmail.com>
681
682 * event.d/Makefile.am (logd): Drop $(srcdir)
683 * init/Makefile.am (init_SOURCES): Distribute paths.h
684
Scott James Remnant58f165f2006-09-18 19:43:07 +01006852006-09-18 Michael Biebl <mbiebl@gmail.com>
686
687 * configure.ac: Check for sys/inotify.h
688
Scott James Remnante371cab2006-09-18 16:16:00 +01006892006-09-18 Scott James Remnant <scott@netsplit.com>
690
691 * util/shutdown.c (warning_message): Adjust method of constructing
692 the message to not confuse poor translators who think \r and \n are
693 the same thing!
694
Scott James Remnantf2b1c052006-09-14 10:34:45 +01006952006-09-14 Scott James Remnant <scott@netsplit.com>
696
Scott James Remnantb2e03d02006-09-14 11:20:13 +0100697 * init/job.c (job_change_state): Catch runaway respawns when we
698 enter the running state, so we catch stop/start loops too.
699 * init/tests/test_job.c (test_change_state): Update test.
700
Scott James Remnantb7714f72006-09-14 11:07:38 +0100701 * event.d/logd: Rename to logd.in
702 * event.d/logd.in: Replace /sbin with @sbindir@ so we can transform
703 * event.d/Makefile.am: Generate logd from logd.in
704
Scott James Remnant7e6bdb32006-09-14 10:57:03 +0100705 * util/reboot.c: Don't hardcode the location of /sbin/shutdown
706 * util/Makefile.am (DEFS): Use autoconf to seed it
707 * util/shutdown.c (sysvinit_shutdown): Don't hardcode the location
708 of /dev/initctl
709
Scott James Remnante0d0dd12006-09-14 10:51:05 +0100710 * init/paths.h: Create a new configuration file that can contain
711 all of the path definitions, and in particular, allow them to be
712 overidden elsewhere.
713 * init/Makefile.am (DEFS): Override definitions of CFG_DIR and
714 TELINIT using autoconf
715 * init/main.c: Include paths.h. Don't hardcode location of telinit
716 * init/job.c: Include paths.h
717 * init/process.c: Include paths.h
718 * init/process.h: Remove definitions from here.
719
Scott James Remnantf2b1c052006-09-14 10:34:45 +0100720 * configure.ac: Bump version to 0.2.7
721
Scott James Remnant0b8f23f2006-09-13 16:51:38 +01007222006-09-13 Scott James Remnant <scott@netsplit.com>
723
Scott James Remnant948ab872006-09-14 10:34:34 +0100724 * NEWS: Updated.
725
Scott James Remnant0b8f23f2006-09-13 16:51:38 +0100726 * TODO: More TODO.
727
Scott James Remnant080dd8d2006-09-10 12:42:03 +01007282006-09-10 Scott James Remnant <scott@netsplit.com>
729
730 * util/reboot.c (main): Don't give -H with "halt".
731
Scott James Remnantd7042862006-09-09 00:50:10 +01007322006-09-09 Scott James Remnant <scott@netsplit.com>
733
Scott James Remnantedb97902006-09-09 05:48:42 +0100734 * configure.ac: Bump version to 0.2.6
735
Scott James Remnant760237e2006-09-09 05:38:32 +0100736 * NEWS: Update.
737 * TODO: Update.
738
Scott James Remnant5e267a42006-09-09 05:21:28 +0100739 * upstart/control.c (upstart_send_msg_to, upstart_recv_msg): Change
740 the magic to be the package string.
741 * upstart/tests/test_control.c (test_recv_msg): Update tests.
742
Scott James Remnant17fec6e2006-09-09 05:05:42 +0100743 * util/initctl.c (main): Set the usage string.
744 * util/shutdown.c (main): Set the usage string.
745 * util/start.c (main): Set the usage string.
746 * compat/sysv/runlevel.c (main): Set the usage string.
747 * compat/sysv/telinit.c (main): Set the usage string.
748
Scott James Remnantabede802006-09-09 05:01:45 +0100749 * man/Makefile.am: Use install-data-hook and $(man8dir)
750 * util/Makefile.am: Also use install-exec-hook
751
Scott James Remnantc6c20052006-09-09 04:58:11 +0100752 * Makefile.am (SUBDIRS): Install contents of the man directory
753 * configure.ac (AC_CONFIG_FILES): Generate man/Makefile
754 * man/Makefile.am: Install manpages in the appropriate places.
755 * man/init.8, man/logd.8, man/initctl.8, man/reboot.8,
756 * man/shutdown.8, man/start.8, man/sulogin.8, man/runlevel.8,
757 * man/telinit.8: Include some basic manpages so we at least have
758 some level of documentation.
759
Scott James Remnant33e47112006-09-09 03:45:00 +0100760 * init/job.c (job_child_reaper): Don't check the exit status of
761 a respawning job if the goal is to stop it.
762
Scott James Remnant1889aa62006-09-09 03:41:53 +0100763 * compat/sysv/telinit.c (main): Generate events rather than
764 starting and stopping jobs directly, the events are named
765 "runlevel-X". 0, 1, 6 and s/S are shutdown events.
766
Scott James Remnant515b2b92006-09-09 03:41:27 +0100767 * logd/main.c (main): Raise SIGSTOP before entering the main loop.
768 * init/main.c (main): Interlock with logd.
769
Scott James Remnant17eb9052006-09-09 03:41:04 +0100770 * event.d/logd: Should not be a console owner, but should stop
771 on shutdown.
772
Scott James Remnant34752262006-09-09 01:38:02 +0100773 * init/process.c (process_setup_console): Revert part of the previous
774 change, should just output to /dev/null if we don't have logd.
775
Scott James Remnante5533332006-09-09 01:36:07 +0100776 * configure.ac: Bump version to 0.2.5
777
Scott James Remnantb4a1c2b2006-09-09 01:28:26 +0100778 * init/main.c (main): Start the logd job if it exists.
779
780 * init/process.c (process_setup_console): Ignore ECONNREFUSED as
781 that just means that logd isn't around, handle errors by falling
782 back to opening the console.
783
Scott James Remnant9fb20d42006-09-09 01:22:03 +0100784 * init/process.c (process_setup_console): Implement handling for
785 CONSOLE_LOGGED and generally clean up the other handling.
786 * init/process.h: Update.
787 * init/main.c (main): Pass NULL for the job to setup console.
788 * TODO: Update.
789
Scott James Remnantd7042862006-09-09 00:50:10 +0100790 * logd/main.c: Implement the logging daemon, it accepts connections
791 on a unix stream socket with the abstract name
792 "/com/ubuntu/upstart/logd", expects the length of the name and the
793 name to follow; then sequences of lines which are logged to
794 /var/log/boot, or memory until that file can be opened.
795
Scott James Remnant527b9452006-09-08 17:15:07 +01007962006-09-08 Scott James Remnant <scott@netsplit.com>
797
Scott James Remnantcb655e72006-09-08 17:49:20 +0100798 * util/shutdown.c (event_setter): Change the event names to
799 distinguish between "shutdown -h" and "shutdown -h -H".
800
Scott James Remnant90732d32006-09-08 17:33:19 +0100801 * init/job.c (job_handle_event): Allow jobs to react to their own
802 events, this is how we'll do respawn eventually.
803 * init/tests/test_job.c (test_handle_event): Remove test.
804
Scott James Remnantbb3cc3f2006-09-08 17:17:47 +0100805 * init/main.c (cad_handler, kbd_handler): Generate the new event
806 names.
807 * init/event.h (CTRLALTDEL_EVENT, KBDREQUEST_EVENT): Add definitions
808 of these event names, change the ctrlaltdel event to just that.
809
Scott James Remnant527b9452006-09-08 17:15:07 +0100810 * logd/main.c (main): Add the code to daemonise, etc.
811
Scott James Remnanta17917d2006-09-07 00:18:28 +01008122006-09-07 Scott James Remnant <scott@netsplit.com>
813
Scott James Remnant214ebe82006-09-07 21:48:55 +0100814 * TODO: Long discussion today on #upstart, many improvements to the
815 job and event model that make it more elegant.
816 * AUTHORS: Include a list of thanks.
817
Scott James Remnantb8280072006-09-07 03:19:00 +0100818 * util/shutdown.c (shutdown_now): If we get ECONNREFUSED when we
819 try and send the shutdown event to init, it probably means we're
820 still in sysvinit. So try that instead.
821 (sysvinit_shutdown): Function to send a hand-crafted runlevel
822 change message across /dev/initctl.
823
Scott James Remnantae969062006-09-07 00:43:57 +0100824 * util/initctl.c (main): Add a shutdown command that takes an
825 arbitrary event name to be issued after "shutdown". You'll
826 nearly always want the /sbin/shutdown tool instead.
827
Scott James Remnant987bcc42006-09-07 00:38:24 +0100828 * init/job.c (job_detect_idle): Only generate the stalled event
829 if at least one job handles it in its start_events list.
830 * init/tests/test_job.c (test_detect_idle): Make sure that works.
831
Scott James Remnantea204d42006-09-07 00:30:53 +0100832 * init/event.h (STARTUP_EVENT, SHUTDOWN_EVENT, STALLED_EVENT):
833 Macros to define the standard event names.
834 * init/main.c (main): Use STARTUP_EVENT macro instead of "startup"
835 * init/control.c (control_handle): Use SHUTDOWN_EVENT macro
836 instead of "shutdown".
837 * init/job.c (job_detect_idle): Use STALLED_EVENT macro instead
838 of "stalled".
839
Scott James Remnant84607df2006-09-07 00:27:22 +0100840 * init/job.c (job_detect_idle): Add some log messages for when we
841 detect the idle or stalled states.
842 (job_kill_process, job_kill_timer): Increase log verbosity.
843 * init/event.c (event_queue_run): Log which events we're handling
844 if --debug is given.
845
Scott James Remnanta17917d2006-09-07 00:18:28 +0100846 * compat/sysv/telinit.c (main): Send a shutdown command when
847 requesting to enter runlevel 0 or runlevel 6, likewise for
848 runlevel 1, s or S which all run "rc1" not "rcS".
849 * init/main.c (main): When called directory (pid != 1) try and
850 run telinit before complaining that we're not init. Make sure
851 errors aren't lost.
852
Scott James Remnantf5c376c2006-09-04 16:25:04 +01008532006-09-04 Johan Kiviniemi <johan@kiviniemi.name>
Scott James Remnantedcae302006-09-04 07:06:23 +0100854
Scott James Remnantf5c376c2006-09-04 16:25:04 +0100855 * upstart/control.c (upstart_addr): Replace use of __builtin_offsetof
856 with offsetof.
857 * upstart/tests/test_control.c (test_recv_msg): Likewise.
858
8592006-09-04 Scott James Remnant <scott@netsplit.com>
860
Scott James Remnantedcae302006-09-04 07:06:23 +0100861 * util/shutdown.c (main): Exit normally after sending the warning
862 message if -k is given.
863
Scott James Remnante94bd202006-09-01 00:48:36 +01008642006-09-01 Scott James Remnant <scott@netsplit.com>
Scott James Remnantd4cdaca2006-08-31 00:47:11 +0100865
Scott James Remnant294cde72006-09-01 19:58:35 +0100866 * configure.ac: Bump version to 0.2.2
867
Scott James Remnant7663bfb2006-09-01 19:58:19 +0100868 * NEWS: Update.
869 * configure.ac: Bump version to 0.2.1
870
Scott James Remnant67982142006-09-01 19:47:39 +0100871 * init/process.c (process_setup_console): Ensure that the console
872 is always initialised to at least /dev/null
873 * init/job.c (job_change_state): Initialise event to NULL.
874 * init/event.c (event_read_state): Don't mask initialisation of
875 other variable.
876 * init/cfgfile.c (cfg_job_stanza, cfg_parse_script, cfg_next_token):
877 Print lineno using %zi not %d
878 * compat/sysv/runlevel.c (store): Cast pointer type of timeval.
879
Scott James Remnant097b2a92006-09-01 19:30:37 +0100880 * init/main.c: Move the kernel headers include beneath the C
881 library ones, so that compilation doesn't fail on !i386.
882 * util/reboot.c: Likewise.
883
Scott James Remnant28fcc922006-09-01 04:15:57 +0100884 * init/main.c (term_handler): Close the control connection if we
885 re-exec init, otherwise it won't be able to bind. Drop debugging.
886
Scott James Remnant6f464962006-09-01 04:10:20 +0100887 * init/main.c (term_handler): It always helps if we dup2 the
888 right file descriptor.
889
Scott James Remnant1db88042006-09-01 03:14:19 +0100890 * init/main.c: Use the TERM signal instead of USR1, as old init
891 used that for something else. Also rather than passing across
892 file descriptor numbers, use a fixed descriptor and just pass
893 "--restart". When we get that option we need to unmask signals
894 otherwise we sit there looking like a lemon.
895
Scott James Remnante7a73262006-09-01 02:32:27 +0100896 * init/job.c (job_change_state): Don't free the event unless we
897 generate one.
898
Scott James Remnant12dd7252006-09-01 02:27:04 +0100899 * NEWS: Update.
900
Scott James Remnant694172a2006-09-01 02:26:45 +0100901 * init/cfgfile.c (cfg_watcher): Ignore any file with '.' or '~'
902
Scott James Remnantc6e63dd2006-09-01 02:16:43 +0100903 * TODO: Update.
904
Scott James Remnant3401ab72006-09-01 02:14:47 +0100905 * init/main.c (main): Parse command-line arguments, specifically
906 look for --state-fd which we'll use for reexec. Don't do a couple
907 of things if we're passed this.
908 (read_state): Parse the line-buffered state.
909 * init/job.c (job_read_state, job_write_state): Job state
910 serialisation so that we can re-exec ourselves.
911 * init/job.h: Update.
912 * init/tests/test_job.c: Test the serialisation.
913 * init/event.c (event_read_state, event_write_state): And similar
914 functions for serialising the event queue.
915 * init/event.h: Update.
916 * init/tests/test_event.c: Test the serialisation.
917 * init/cfgfile.c (cfg_read_job): Fix a bug, need to subtract current
918 time to get due time.
919
Scott James Remnante94bd202006-09-01 00:48:36 +0100920 * upstart/job.c (job_goal_from_name, job_state_from_name)
921 (process_state_from_name): Add opposite numbers that convert a
922 string back into an enumeration.
923 * upstart/job.h: Update.
924 * upstart/tests/test_job.c: Test the new functions.
925
9262006-08-31 Scott James Remnant <scott@netsplit.com>
Scott James Remnant694172a2006-09-01 02:26:45 +0100927
Scott James Remnantb7260a72006-08-31 22:08:56 +0100928 * init/job.h (Job): Add respawn_limit, respawn_interval,
929 respawn_count and respawn_time members so that we can keep track of
930 runaway processes.
931 * init/job.c (job_catch_runaway): Increment the respawn_count
932 within respawn_interval, or reset it if we go over.
933 (job_new): Initialise respawn_limit and respawn_interval to sensible
934 defaults.
935 * init/tests/test_job.c (test_new): Check the defaults are set.
936 (test_change_state): Check the respawning code works.
937 * init/cfgfile.c (cfg_job_stanza): Parse the "respawn limit" stanza.
938 * init/tests/test_cfgfile.c (test_read_job): Test the new stanza.
939
Scott James Remnantff0d26a2006-08-31 20:49:43 +0100940 * init/process.c (process_setup_console): Remove the console reset
941 code, it tends to just crash X and seems to do nothing interesting.
942 * init/main.c (reset_console): Instead put it here and just do it
943 on startup.
944
Scott James Remnant25b263a2006-08-31 18:59:02 +0100945 * configure.ac: Bump version to 0.2.0
946
Scott James Remnant4b61be92006-08-31 17:08:44 +0100947 * util/Makefile.am (install-exec-local): Create symbolic links,
948 not hard links.
949
Scott James Remnantaf1404f2006-08-31 16:04:16 +0100950 * init/main.c: Can't catch STOP.
951
Scott James Remnant242b50b2006-08-31 15:40:42 +0100952 * util/reboot.c: Pause init while shutting down or rebooting.
953
Scott James Remnanteabb7802006-08-31 15:39:04 +0100954 * init/main.c (stop_handler): Catch STOP/TSTP and CONT.
955 * init/event.c (event_queue_run): Don't run the event queue while
956 paused.
957 * init/job.c (job_detect_idle): Don't detect idle jobs while paused.
958
Scott James Remnant1cd8d862006-08-31 15:17:16 +0100959 * util/reboot.c: if we get the -w argument ("only write to wtmp")
960 we need to exit, and not behave as halt normally would.
961
Scott James Remnantff63cf72006-08-31 04:39:34 +0100962 * compat/sysv/runlevel.c (main): Add missing newline.
963 * compat/sysv/telinit.c (main): And here too.
964
Scott James Remnant32de9222006-08-31 04:34:27 +0100965 * init/main.c (main): Check for idle after the startup event queue
966 has been run, otherwise we may just sit there.
967
Scott James Remnant13ffffe2006-08-31 04:33:39 +0100968 * compat/sysv/Makefile.am (sbin_PROGRAMS): Build and install telinit
969 (telinit_SOURCES, telinit_LDFLAGS, telinit_LDADD): Details for
970 telinit binary.
971 * compat/sysv/telinit.c: Trivial telinit program that just runs
972 the appropriate rcX job.
973 * compat/sysv/runlevel.c (main): Suggest help on illegal runlevel.
974
Scott James Remnant40f09012006-08-31 04:21:49 +0100975 * util/Makefile.am: Tidy up.
976
Scott James Remnant12473562006-08-31 04:21:05 +0100977 * configure.ac (AC_CONFIG_FILES): Create compat/sysv/Makefile
978 * Makefile.am (SUBDIRS): Build things found in compat/sysv
979 * compat/sysv/Makefile.am (sbin_PROGRAMS): Build and install runlevel
980 (runlevel_SOURCES, runlevel_LDFLAGS, runlevel_LDADD): Details for
981 runlevel binary.
982 * compat/sysv/runlevel.c: Helper to store and retrieve the current
983 "runlevel" from utmp/wtmp; as well as the reboot time.
984
Scott James Remnantd909cca2006-08-31 04:20:14 +0100985 * init/main.c (main): Drop debugging set.
986
Scott James Remnantcedd11a2006-08-31 02:59:29 +0100987 * init/job.c (job_change_state): As well as the job/state events,
988 send the job event when a service is running or a task is stopping.
989 * init/tests/test_job.c (test_change_state): Check the events get
990 sent properly.
991
Scott James Remnant44b684a2006-08-31 02:58:45 +0100992 * util/start.c: Write a simple utility to start, stop, or query
993 the status of the named jobs.
994 * util/Makefile.am (sbin_PROGRAMS): Build and install start
995 (start_SOURCES, start_LDFLAGS, start_LDADD): Details for start
996 (install-exec-local): Also install as stop and status.
997 * util/reboot.c (main): Drop the debugging set.
998
Scott James Remnantb8ed2d12006-08-31 02:15:48 +0100999 * init/cfgfile.c (cfg_job_stanza): Correct nih_alloc error.
1000
Scott James Remnanta6125ae2006-08-31 02:14:25 +01001001 * init/process.c (process_setup_environment): Guard memory alloc.
1002 * init/job.c (job_set_idle_event): Likewise.
1003 (job_change_state): And here too.
1004 (job_run_command): Likewise.
1005 * init/control.c (control_send): Likewise.
1006 * init/cfgfile.c: And throughout this file.
1007 * upstart/control.c (upstart_recv_msg): And once here too.
1008
Scott James Remnant0b358ab2006-08-31 02:07:32 +01001009 * upstart/control.h: Abolish the separate halt, reboot and poweroff
1010 messages and replace with a single shutdown message that takes
1011 an event name (for the idle event issued afterwards).
1012 * upstart/control.c (upstart_send_msg_to, upstart_recv_msg): Handle
1013 the new shutdown event type by just treating it as an event.
1014 * upstart/tests/test_control.c (test_messages): Update tests.
1015 * init/job.c (job_set_idle_event): Store a copy of the idle event
1016 name.
1017 * init/control.c (control_send): Copy the shutdown event name.
1018 (control_handle): Replace individual handling with the new
1019 single event.
1020 * init/tests/test_control.c (test_watcher): Update.
1021 * util/initctl.c: Drop handling for things that shutdown does now.
1022 * util/shutdown.c: Send the UPSTART_SHUTDOWN event and let the user
1023 specify anything they want, just give defaults.
1024
Scott James Remnantff5efb92006-08-31 01:45:19 +01001025 This is quite a big change and abolishes level events entirely,
1026 along with the event history. We now just treat events as a
1027 transient queue of strings that go past, may cause things to change,
1028 but are otherwise forgotten. This turns out to be much easier to
1029 understand and has no real loss of power.
1030
1031 * init/event.c: Vastly simplify; gone are the separate notions of
1032 edge and level events, instead we just treat them as one-shot
1033 things that go past and are forgotten about.
1034 * init/event.h (Event): Remove value member.
1035 Update prototypes.
1036 * init/tests/test_event.c: Update.
1037 * init/job.c (job_change_state): Change the event pattern to be
1038 one that includes the job name and a description of the transition
1039 instead of the new state.
1040 (job_detect_idle): Call event_queue rather than event_queue_edge.
1041 * init/tests/test_job.c: Update.
1042 * init/cfgfile.c (cfg_job_stanza): Drop "when" and "while".
1043 * init/tests/test_cfgfile.c (test_read_job): Drop mentions of
1044 "when" and "while".
1045 * init/control.c (control_send, control_handle): Drop cases for
1046 level events.
1047 (control_handle_event): Don't include a level in the event.
1048 * init/tests/test_control.c: Update
1049 * init/main.c: Call event_queue rather than event_queue_edge.
1050 * upstart/control.c (upstart_send_msg_to, upstart_recv_msg): Change
1051 event handling so that only a name is read.
1052 * upstart/control.h: Remove value/level event structures.
1053 * upstart/tests/test_control.c (test_messages): Update.
1054 * upstart/job.c (process_state_name): Not used for events, adjust
1055 documentation so it doesn't lie.
1056 * util/initctl.c (main): Drop the set function, simplify trigger.
1057 * util/shutdown.c (shutdown_now): Call UPSTART_EVENT_QUEUE for
1058 shutdown into maintenance mode.
1059
Scott James Remnantfcbee2d2006-08-31 00:49:36 +01001060 * init/control.c (control_handle): Place a message in the syslog
1061 before halting, powering off or rebooting.
1062
Scott James Remnantd4cdaca2006-08-31 00:47:11 +01001063 * util/shutdown.c: Adjust so that the warning message is sent out
1064 if shutdown is immediate, and when it actually happens. Include
1065 the hostname as wall does.
1066
Scott James Remnant255c5f22006-08-30 16:05:01 +010010672006-08-30 Scott James Remnant <scott@netsplit.com>
1068
Scott James Remnant5be55662006-08-30 19:13:25 +01001069 * TODO: Update.
1070
Scott James Remnant4a9245f2006-08-30 19:13:00 +01001071 * util/shutdown.c: Implement shutdown utility along the same lines
1072 as the sysvinit one, but with rather different code.
1073
Scott James Remnant2a71aaa2006-08-30 16:34:06 +01001074 * util/initctl.c (main): Call setuid on the effective user id so
1075 that we can be made setuid root and executable by a special group.
1076 * util/reboot.c (main): Likewise.
1077
Scott James Remnant70cc2292006-08-30 16:06:03 +01001078 * util/initctl.c (main): Check the effective rather than the real
1079 user id, if we're effectively root, that's good enough.
1080
Scott James Remnant255c5f22006-08-30 16:05:01 +01001081 * util/reboot.c: Implement reboot/halt/poweroff utility.
1082 * util/Makefile.am (sbin_PROGRAMS): Build and install reboot
1083 (reboot_SOURCES, reboot_LDFLAGS, reboot_LDADD): Details for reboot
1084 (install-exec-local): Create hardlinks to reboot for halt and poweroff.
1085
Scott James Remnantdc8877d2006-08-29 16:56:48 +010010862006-08-29 Scott James Remnant <scott@netsplit.com>
1087
1088 * init/main.c (main): Actually run the idle-detect function.
1089 * init/job.c (job_detect_idle): Interrupt the main loop, otherwise
1090 we may end up waiting for a signal before we process the event
1091 we just issued.
1092
Scott James Remnantf43bdf32006-08-27 18:20:29 +010010932006-08-27 Scott James Remnant <scott@netsplit.com>
1094
Scott James Remnant47158482006-08-27 22:37:10 +01001095 * util/shutdown.c: Template main function.
1096 * util/Makefile.am (sbin_PROGRAMS): Build and install the
1097 shutdown binary.
1098 (shutdown_SOURCES, shutdown_LDFLAGS, shutdown_LDADD): Details for
1099 the shutdown binary
1100
Scott James Remnant70a6ec62006-08-27 22:23:50 +01001101 * util/initctl.c (main): Add commands for halt, poweroff and reboot.
1102
Scott James Remnant0c7e72a2006-08-27 22:22:53 +01001103 * init/event.c (event_queue_run): Remove the parameters.
1104 * init/event.h: Update.
1105 * init/main.c (main): Update.
1106 * init/tests/test_control.c (test_watcher): Update.
1107 * init/tests/test_job.c (test_detect_idle): Update.
1108
Scott James Remnant96ae9e42006-08-27 22:15:34 +01001109 * upstart/control.c (upstart_send_msg_to, upstart_recv_msg): Deal
1110 with halting, rebooting and powering off; or at least the appropriate
1111 messages.
1112 * upstart/control.h: Add control message structures for halting,
1113 powering off and rebooting the machine.
1114 * upstart/tests/test_control.c (test_messages): Run the tests.
1115 * init/control.c (control_handle): Add handling for halt, power off
1116 and reboot that issue the shutdown event and arrange for the halt,
1117 poweroff or reboot to be issued the next time the system is idle.
1118 * init/tests/test_control.c (test_watcher): Test the events.
1119
Scott James Remnant01a37082006-08-27 21:51:00 +01001120 * TODO: Update.
1121
Scott James Remnante02892b2006-08-27 21:49:44 +01001122 * init/job.c (job_detect_idle): Function to detect when the system is
1123 stalled or idle.
1124 * init/job.h: Update
1125 * init/tests/test_job.c (test_detect_idle): Test the new function.
1126
Scott James Remnant6a8508c2006-08-27 19:10:44 +01001127 * util/initctl.c (main): Handle the list command.
1128
Scott James Remnanta9476ad2006-08-27 19:07:23 +01001129 * TODO: Update.
1130
Scott James Remnant4da474d2006-08-27 19:06:35 +01001131 * upstart/control.c (WireJobStatusPayload): add description to the
1132 job status payload.
1133 (upstart_send_msg_to, upstart_recv_msg): Send and receieve the
1134 description over the wire.
1135 * upstart/control.h (UpstartJobStatusMsg): add a description field
1136 * upstart/tests/test_control.c: Update test cases.
1137 * init/control.c (control_handle): Include the job description in
1138 the message.
1139 (control_send): Copy the description when we put the message on
1140 the queue.
1141 (control_handle_job): Copy the description here too
1142 * init/tests/test_control.c: Update test cases.
1143
Scott James Remnant84f5e932006-08-27 18:49:25 +01001144 * init/job.c (job_list): Add a function to return the job list.
1145 * init/job.h: Update.
1146 * init/control.c (control_handle): Handle the JOB_LIST message
1147 by sending back a list of job status messages followed by the
1148 JOB_LIST_END message.
1149 * init/tests/test_control.c (test_watcher_child): Check the
1150 JOB_LIST message works properly.
1151
Scott James Remnantf4ad6d12006-08-27 18:40:01 +01001152 * upstart/control.c (upstart_send_msg_to, upstart_recv_msg): Handle
1153 the JOB_LIST and JOB_LIST_END messages which have no payload.
1154 * upstart/control.h: Add enums and structures for job list messages.
1155 * upstart/tests/test_control.c (test_messages): Update tests.
1156
Scott James Remnantf4970812006-08-27 18:27:19 +01001157 * init/main.c (main): Check that we're both uid and process #1
1158
Scott James Remnantf43bdf32006-08-27 18:20:29 +01001159 * init/main.c (main): Stop handling SIGTERM, we never want people
1160 to kill init. Handle SIGINT and SIGWINCH through the ordinary
1161 handler and SIGSEGV through a direct handler.
1162 (segv_handler): Write a sensible core dump handler, we use a child
1163 to dump core while we carry on in the parent hopefully stepping over
1164 the bad instruction.
1165 (cad_handler): Generate the control-alt-delete event.
1166 (kbd_handler): Generate the kbdrequest event.
1167
Scott James Remnant33e64d02006-08-25 14:44:32 +020011682006-08-25 Scott James Remnant <scott@netsplit.com>
1169
Scott James Remnant21679252006-08-25 16:22:13 +02001170 * configure.ac: Bump version to 0.1.2
1171 * NEWS: Update.
1172
Scott James Remnantfef12b52006-08-25 16:16:45 +02001173 * TODO: Update.
1174
Scott James Remnant94d00982006-08-25 15:38:22 +02001175 * init/process.c (process_setup_environment): Inherit the PATH
1176 and TERM environment variables from the init process, so the
1177 console works properly.
1178 * init/process.h (PATH): Declare a default value for this variable
1179 * init/main.c (main): Set the value of PATH to the default.
1180 * init/tests/test_process.c (child): Update test case.
1181
Scott James Remnant33e64d02006-08-25 14:44:32 +02001182 * NEWS: Update.
1183 * configure.ac: Bump version to 0.1.1
1184
Scott James Remnant68ccc9e2006-08-24 00:10:41 +020011852006-08-24 Scott James Remnant <scott@netsplit.com>
1186
Scott James Remnant279d4352006-08-24 15:33:19 +02001187 * init/cfgfile.h (CFG_DIR): Change configuration directory to
1188 /etc/event.d -- it's not been used by anyone, but is similar to
1189 other directories that have which is a good precedent.
1190 * event.d/Makefile.am (eventdir, dist_event_DATA): Install files
1191 into the new directory name.
1192 * Makefile.am (SUBDIRS): Rename sub directory
1193 * configure.ac (AC_CONFIG_FILES): Rename generated Makefile
1194
Scott James Remnant937192c2006-08-24 02:57:50 +02001195 * init/Makefile.am (DEFAULT_INCLUDES): Set to include the right
1196 directories so out of tree builds work.
1197 * logd/Makefile.am (DEFAULT_INCLUDES): Set to include the right
1198 directories so out of tree builds work.
1199 * upstart/Makefile.am (DEFAULT_INCLUDES): Set to include the right
1200 directories so out of tree builds work.
1201 (upstartinclude_HEADERS): Install errors.h
1202 * util/Makefile.am (DEFAULT_INCLUDES): Set to include the right
1203 directories so out of tree builds work.
1204
1205 * Makefile.am (SUBDIRS): Add m4 to the list
1206 * configure.ac (AC_CONFIG_FILES): Generate m4/Makefile
1207 * upstart/Makefile.am (upstartinclude_HEADERS): Add errors.h
1208
1209 * upstart/control.c (upstart_open):
1210
Scott James Remnante4c3d552006-08-24 02:34:01 +02001211 * init/control.c (control_open): Raise the error before
1212 performing other actions so errno is not lost.
Scott James Remnant73550092006-08-24 02:27:03 +02001213
Scott James Remnante4c3d552006-08-24 02:34:01 +02001214 * TODO: Update.o
Scott James Remnantf8b776b2006-08-24 00:36:15 +02001215 * init/cfgfile.c (cfg_next_token): Don't count quote characters
1216 unless we're actually planning to dequote the file, otherwise we
1217 end up allocating short.
1218
Scott James Remnant9e17fc02006-08-24 00:28:10 +02001219 * init/control.c (control_close): Free the io_watch using list_free
1220 in case a destructor has been set.
1221 * init/tests/test_control.c: Initialise the type of the message, and
1222 free job correctly.
1223
Scott James Remnant68ccc9e2006-08-24 00:10:41 +02001224 * upstart/tests/test_control.c: Fix overwrite of buffer.
1225 * init/tests/test_job.c: Clean up not-freed job.
1226
Scott James Remnantc961ce32006-08-23 19:46:29 +020012272006-08-23 Scott James Remnant <scott@netsplit.com>
1228
Scott James Remnant013e9722006-08-23 23:00:14 +02001229 * init/tests/test_event.c: free the entry allocated and initialise
1230 the return values.
1231
Scott James Remnantc961ce32006-08-23 19:46:29 +02001232 * init/cfgfile.c (cfg_skip_token): Drop this function; we'll
1233 make sure *pos is pointing at the start of the thing we want
1234 to parse, not the first token. Update the other functions
1235 accordingly.
1236 (cfg_read_job): Implement function to look over a job file and
1237 parse all of the stanzas that are found. Also sanity checks the
1238 job afterwards and deals with reloading existing jobs.
1239 (cfg_job_stanza): Function that parses an individual stanza,
1240 calling out to the other parse functions; this is the main config
1241 file parser!
1242 (cfg_parse_args, cfg_parse_command): Drop requirement that filename
1243 and lineno be passed, so we can be called to reparse arguments after
1244 we've already done so.
1245 (cfg_parse_script): Remove requirement that it be called at the
1246 start of the entire stanza, and instead at the start of the script.
1247 When hitting EOF, return the script so far, not NULL.
1248 (cfg_parse_args): Correct bug where we didn't check sufficient
1249 characters while skipping whitespace.
1250 (cfg_next_token): Correct bug where we didn't copy the character
1251 after a slash into the text, instead of just not copying the slash.
1252 Adjust line numbers to match the fact that it's zero based now.
1253 * init/cfgfile.h: Define prototype.
1254 * init/tests/test_cfgfile.c (test_read_job): Pretty thoroughly
1255 test the config file parser code.
1256
Scott James Remnant0c58ed02006-08-22 11:42:19 +020012572006-08-22 Scott James Remnant <scott@netsplit.com>
1258
Scott James Remnant214168f2006-08-22 18:52:51 +02001259 * init/cfgfile.c (cfg_tokenise): Rename to cfg_next_token.
1260 (cfg_skip_token): Code to skip whitespace, token and whitespace.
1261 (cfg_parse_args): Function to parse an argument list.
1262 (cfg_next_token): Extend to support the removal of quotes and
1263 slashes from the token.
1264
Scott James Remnant21590a22006-08-22 17:40:48 +02001265 * init/cfgfile.c (cfg_parse_script): Pass filename and lineno and
1266 increment the latter as we go.
1267 (cfg_script_end): Pass and increment lineno.
1268
Scott James Remnanteed2e8d2006-08-22 17:31:07 +02001269 * init/cfgfile.c: Correct a missing semi-colon in prototypes.
1270 (cfg_parse_command): Function to parse any stanza that requires
1271 a command and arguments list, e.g. exec/respawn/daemon. We don't
1272 want to require that the list be quoted, etc. and do want to allow
1273 it to be folded over lines.
1274 (cfg_tokenise): Function used by the above to tokenise the file,
1275 handling things like \, quoted strings and newlines, etc. Can be
1276 used both to determine the length of the token and to copy it.
1277
Scott James Remnantfcc98ad2006-08-22 12:28:19 +02001278 * init/cfgfile.c (cfg_read_script): Rename to cfg_parse_script.
1279
Scott James Remnantfd32dd32006-08-22 11:46:01 +02001280 * init/cfgfile.c (cfg_read_script): Function to parse a script
1281 fragment ("foo script\n....end script\n") from the job file, which
1282 is the most complex form we can find. Write it assuming the file is
1283 in a character array which may not be NULL terminated (ie. a mmap'd
1284 file).
1285 (cfg_script_end): Used by the above to detect the end of the
1286 fragment.
1287 * init/cfgfile.h: Empty header file.
1288 * init/Makefile.am (init_SOURCES): Build and link cfgfile.c
1289 using the cfgfile.h header
1290 (TESTS): Build and run the config file test cases.
1291 (test_cfgfile_SOURCES, test_cfgfile_LDFLAGS, test_cfgfile_LDADD):
1292 Details for config file test case binary.
1293
Scott James Remnant0c58ed02006-08-22 11:42:19 +02001294 * init/main.c (main): Remove the calls to the unfinished config
1295 file code.
1296
Scott James Remnant6ce44812006-08-21 08:46:32 +020012972006-08-21 Scott James Remnant <scott@netsplit.com>
1298
Scott James Remnant027dd7b2006-08-21 09:01:25 +02001299 * init/main.c: Add missing include for unistd.h
1300 * init/process.c (process_setup_console): Drop use of job.
1301 * util/initctl.c (main): Check that we're run as root.
1302
Scott James Remnant77e8db32006-08-21 08:47:50 +02001303 * init/main.c (main): Write the main function
1304
Scott James Remnant6ecceb82006-08-21 08:47:23 +02001305 * init/event.c (event_queue_cb): Rename to event_queue_run.
1306 * init/event.h: Update.
1307
Scott James Remnant6ce44812006-08-21 08:46:32 +02001308 * init/process.c (process_setup_console): Become an exported
1309 function that includes the code to reset a console.
1310
Scott James Remnant5befd932006-08-19 19:24:54 +010013112006-08-19 Scott James Remnant <scott@netsplit.com>
1312
Scott James Remnantcd39a7c2006-08-19 20:02:17 +01001313 * logd/main.c (main): Write the basic main function.
1314
Scott James Remnant3bcd15e2006-08-19 19:50:12 +01001315 * util/initctl.c (main): Fill in the details to give us a basic
1316 test client.
1317
Scott James Remnant3dc965c2006-08-19 19:25:23 +01001318 * TODO: Update.
1319
Scott James Remnant5befd932006-08-19 19:24:54 +01001320 * util/initctl.c (main): Provide the most basic main function.
1321 * util/Makefile.am (sbin_PROGRAMS): Build the initctl binary
1322 * Makefile.am (SUBDIRS): Build the utilities.
1323 * configure.ac (AC_CONFIG_FILES): Generate the util Makefile.
1324
Scott James Remnant1fe38a82006-08-18 17:06:25 +010013252006-08-18 Scott James Remnant <scott@netsplit.com>
1326
Scott James Remnantc2659612006-08-18 22:19:47 +01001327 * init/Makefile.am (test_job_LDADD): Remove the duplicate link.
1328
Scott James Remnantd5e07052006-08-18 20:39:30 +01001329 * TODO: Update.
1330
Scott James Remnanta060bb72006-08-18 20:16:55 +01001331 * init/job.c (job_handle_child): Rename to job_child_reaper.
1332 * init/job.h: Update.
1333 * init/tests/test_job.c: Update function names.
1334
Scott James Remnant829dc082006-08-18 20:10:02 +01001335 * init/control.c (control_cb): Rename to control_watcher
1336 * init/tests/test_control.c: Update function names.
1337
Scott James Remnantddc3e282006-08-18 18:49:50 +01001338 * TODO: Update.
1339
Scott James Remnantc2cac3f2006-08-18 17:17:57 +01001340 * Makefile.am (SUBDIRS): Install the rc.d files.
1341 * configure.ac (AC_CONFIG_FILES): Generate the rc.d Makefile.
1342 * rc.d/Makefile.am (rcdir): Define rcdir to be /etc/rc.d
1343 (dist_rc_DATA): Install the logd file into that directory.
1344 * rc.d/logd: Write a simple service definition for the log daemon,
1345 this saves us hardcoding any information about it into init; it'll
1346 just need to know the name.
1347
Scott James Remnant1fe38a82006-08-18 17:06:25 +01001348 * Makefile.am (SUBDIRS): Build the logd daemon
1349 * configure.ac (AC_CONFIG_FILES): Generate the logd Makefile.
1350 * logd/Makefile.am (sbin_PROGRAMS): Install the logd binary into
1351 the sbin directory by default.
1352 (logd_SOURCES): Build and link main.c
1353 * logd/main.c (main): Add basic main function for testing purposes.
1354
Scott James Remnantb9814432006-08-16 02:11:51 +010013552006-08-16 Scott James Remnant <scott@netsplit.com>
1356
Scott James Remnantc5da6fd2006-08-16 18:06:49 +01001357 * init/job.c (job_start): Ignore self-dependencies; over-document
1358 why the dependency event prodding has a surprise in its tail.
1359 (job_change_state): Move the job_release_depends call to here.
1360
Scott James Remnant133a7a32006-08-16 17:45:51 +01001361 * init/event.c (event_queue_cb): Add event consumer/dispatcher.
Scott James Remnant13e5dbf2006-08-16 17:48:01 +01001362 * init/event.h: Update.
Scott James Remnant133a7a32006-08-16 17:45:51 +01001363
Scott James Remnant3772bc62006-08-16 17:41:34 +01001364 * init/control.c (control_send): Make the event code clearer.
1365 (control_handle): Handle the changed event semantics.
1366 (control_handle_event): Issue the new event type.
1367 * init/tests/test_control.c: Update tests.
1368
Scott James Remnantcaee5b52006-08-16 17:32:12 +01001369 * upstart/control.c (upstart_send_msg_to, upstart_recv_msg): Adjust
1370 marshal code to match.
1371 * upstart/control.h: Update all structures appropriately to the
1372 previous changes.
1373 * upstart/tests/test_control.c: Update.
1374
Scott James Remnant4d4389d2006-08-16 17:19:20 +01001375 * init/job.c (job_change_state): Change call to event_trigger_level
1376 to event_queue_level.
1377
Scott James Remnant51664d72006-08-16 17:17:58 +01001378 * init/event.c (event_trigger_edge, event_trigger_level): Place
1379 the event on the event_queue rather than directly triggering it.
1380 Rename to event_queue_edge and event_queue_level respectively.
1381 * init/event.h: Update.
1382 * init/tests/test_event.c: Update test cases.
1383
Scott James Remnant4ddc86e2006-08-16 16:17:48 +01001384 * init/job.c (job_handle_event): Add another sanity check, jobs
1385 should not be able to react to their own events; that's just silly.
1386 * init/tests/test_job.c (test_handle_event): Check that the new
1387 condition does the right thing.
1388
Scott James Remnant930f3e02006-08-16 16:13:03 +01001389 * init/job.c (job_change_state): Make it illegal for a job to exist
1390 without either a command or script or both. This is for sanity
1391 reasons, allowing no primary process makes no sense and can lead
1392 to event loops if someone is feeling nefarious.
1393 * init/tests/test_job.c (test_change_state): Drop test on behaviour
1394 we've just outlawed.
1395
Scott James Remnant7dd047e2006-08-16 13:43:50 +01001396 * init/job.c (job_start): Only announce the change if we're still
1397 in the waiting state, we could have moved on to running already.
1398
Scott James Remnantf9261ba2006-08-16 13:40:05 +01001399 * init/job.c (job_start): If holding the job, at least announce
1400 the goal change to subscribed clients.
1401
Scott James Remnant853cc772006-08-16 13:34:51 +01001402 * TODO: Update.
1403
Scott James Remnantfdb82592006-08-16 13:31:49 +01001404 * init/job.c (job_start): Check for dependencies before starting
1405 the process, if we have any that aren't running we stay in waiting
1406 until they are. Any that aren't even starting get poked with a
1407 dependency event to see whether that wakes them up.
1408 * init/tests/test_job.c (test_start): Test paths through new
1409 dependency code.
1410
Scott James Remnant278150a2006-08-16 12:56:34 +01001411 * init/job.c (job_run_process): Once we've got an active process
1412 in the running state, release our dependencies.
1413
Scott James Remnant6d4104d2006-08-16 12:50:39 +01001414 * init/job.c (job_release_depends): Function to release any waiting
1415 dependencies on the given job.
1416 * init/job.h: Update.
1417 * init/tests/test_job.c (test_release_depends): Test the behaviour
1418 of the function on its own.
1419
Scott James Remnant1da1dad2006-08-16 12:18:50 +01001420 * init/job.h (Job): Add depends list field
1421 (JobName): New structure to hold the name of a job.
1422 * init/job.c (job_new): Initialise the depends list.
1423 * init/tests/test_job.c (test_new): Make sure the depends list is
1424 initialised properly.
1425
Scott James Remnant37eee032006-08-16 12:10:49 +01001426 * init/job.c (job_next_state): Return JOB_STARTING if we're in
1427 JOB_WAITING and the goal is JOB_START. This is only called when
1428 there's some change, and I don't want to hard-code the goal there.
1429 (job_start): Don't hardcode JOB_STARTING, instead just use the next
1430 state.
1431 * init/tests/test_job.c (test_next_state): Adjust test case.
1432
Scott James Remnantc3d3ead2006-08-16 09:00:50 +01001433 * init/control.c (control_subscribe): Allow the current
1434 subscription to be found by passing NOTIFY_NONE.
1435 (control_handle): Don't remove an existing subscription to jobs,
1436 a GUI will probably want a permanent one to keep the status up to
1437 date.
1438
Scott James Remnantb9a568c2006-08-16 08:57:46 +01001439 * init/job.c (job_kill_process, job_kill_timer): Don't hardcode
1440 JOB_STOPPING here, instead move to the next logical state.
1441 (job_kill_process): Notify subscribed processes that we killed
1442 the job.
1443 (job_start, job_stop): Notify subscribed processes of a change of
1444 goal that doesn't result in an immediate state change.
1445
Scott James Remnant8dbc6012006-08-16 08:57:38 +01001446 * init/event.c (event_trigger_edge, event_trigger_level): Swap
1447 order so that events are announced before processed.
1448
Scott James Remnant28161252006-08-16 08:41:48 +01001449 * init/control.c (control_handle): Handle requests to watch and
1450 unwatch jobs and events.
1451 * init/tests/test_control.c (test_cb_child, test_cb): Check that
1452 subscriptions work.
1453
Scott James Remnantb6d55bf2006-08-16 08:24:16 +01001454 * init/tests/test_control.c (test_cb_child): Add a sleep to avoid
1455 a race that upsets gdb, have tried this with a STOP/CONT interlock
1456 but can't seem to find where the child should reach first.
1457
Scott James Remnant5612b232006-08-16 08:21:06 +01001458 * init/job.c (job_change_state): Notify the control handler.
1459 * init/event.c (event_trigger_edge, event_trigger_level): Pass
1460 event to the control handler.
1461 * init/tests/test_control.c (test_cb_child): Expect to receive
1462 job status events as well.
1463 * init/Makefile.am (test_event_LDADD, test_process_LDADD)
1464 (test_job_LDADD): Add control.o to the linkage.
1465
Scott James Remnant9e0626a2006-08-16 08:17:07 +01001466 * init/control.c (control_cb): Don't display an error for
1467 ECONNREFUSED, just remove any subscriptions.
1468 * init/tests/test_control.c (test_handle_job, test_handle_error):
1469 Clean up our subscriptions properly.
1470
Scott James Remnant3c465c82006-08-16 07:40:24 +01001471 * init/control.c (control_handle_job): Function to send out an
1472 UPSTART_JOB_STATUS message to subscribed processes whenever a
1473 job state changes.
1474 (control_handle_event): Function to send out an
1475 UPSTART_EVENT_TRIGGERED message to subscribed processes whenever
1476 an event is triggered.
1477 * init/control.h: Update.
1478 * init/tests/test_control.c (test_handle_job, test_handle_event):
1479 Check that the functions work properly.
1480
Scott James Remnant16dadc52006-08-16 07:27:40 +01001481 * init/control.c (control_handle): Handle messages that trigger
1482 edge and level events; subscribe the process to receive notification
1483 of job changes during the event.
1484 * init/tests/test_control.c (test_cb_child): Check that the messages
1485 are handled properly (without subscription check).
1486
Scott James Remnanta7ba72a2006-08-16 07:11:30 +01001487 * init/control.c (control_cb): Unsubscribe a process if it stops
1488 listening.
1489
Scott James Remnant2c9669c2006-08-16 07:10:05 +01001490 * init/control.c (control_send): Copy the pointers in the new
1491 event messages.
1492 * init/tests/test_control.c (test_send): Check the pointers are
1493 copied across correctly.
1494
Scott James Remnant15d61c62006-08-16 06:55:58 +01001495 * init/control.c (control_subscribe): Add function to handle
1496 processes that want to subscribe to changes.
1497 (control_init): Initialise the subscriptions list.
1498 * init/control.h: Add structures and prototypes.
1499 * init/tests/test_control.c (test_subscribe): Test the function.
1500
Scott James Remnant8692f762006-08-16 06:21:13 +01001501 * upstart/control.h (UpstartMsgType): add messages for triggering
1502 edge and level events, receiving the trigger for an event and for
1503 watching jobs and events.
1504 (UpstartEventTriggerEdgeMsg, UpstartEventTriggerLevelMsg)
1505 (UpstartEventTriggeredMsg, UpstartWatchJobsMsg)
1506 (UpstartUnwatchJobsMsg, UpstartWatchEventsMsg):
1507 (UpstartUnwatchEventsMsg): Add structures for the new messages.
1508 (UpstartMsg): And add them to the union.
1509 * upstart/control.c (WireEventPayload): The event messages can all
1510 share a wire payload type; the watch messages don't need any special
1511 payload.
1512 (upstart_send_msg_to): Add the payloads onto the wire.
1513 (upstart_recv_msg): And take the payloads back off the wire.
1514 * upstart/tests/test_control.c (test_messages): Test the new
1515 message types.
1516
Scott James Remnant8ed97eb2006-08-16 05:46:44 +01001517 * upstart/control.h (UpstartJobStatusMsg): add a process id.
1518 * upstart/control.c (WireJobStatusPayload): and here too.
1519 (upstart_send_msg_to): copy the process id onto the wire.
1520 (upstart_recv_msg): copy the process id from the wire.
1521 * init/control.c (control_handle): Fill in the pid from the job.
1522 * upstart/tests/test_control.c (test_messages): Check the pid gets
1523 passed across the wire properly.
1524
Scott James Remnant7d914312006-08-16 05:37:50 +01001525 * init/control.c (control_cb): Disable the poll for write once the
1526 send queue becomes empty.
1527
Scott James Remnant59707c22006-08-16 05:32:20 +01001528 * upstart/Makefile.am (libupstart_la_SOURCES): Correct ordering.
1529
Scott James Remnanta98c8b82006-08-16 05:32:02 +01001530 * init/control.c (control_handle): Add missing break.
1531
Scott James Remnantb5c7a302006-08-16 05:24:55 +01001532 * upstart/job.c (job_goal_name, process_state_name): For completeness
1533 add these two functions as well.
1534 * upstart/job.h: Update.
1535 * upstart/tests/test_job.c (test_goal_name)
1536 (test_process_state_name): Test the new functions.
1537
Scott James Remnant20b15ad2006-08-16 05:20:02 +01001538 * init/job.c (job_state_name): Move this utility function from here
1539 * upstart/job.c (job_state_name): to here so all clients can use
1540 it.
1541 * init/job.h: Update.
1542 * upstart/job.h: Update.
1543 * init/tests/test_job.c (test_state_name): Move the test case from here
1544 * upstart/tests/test_job.c: to here as well.
1545 * upstart/Makefile.am (libupstart_la_SOURCES): Build and link job.c
1546 (TESTS): Run the job test cases
1547 (test_job_SOURCES, test_job_LDFLAGS, test_job_LDADD): Details for
1548 job test case binary.
1549 * init/Makefile.am (test_job_LDADD, test_process_LDADD)
1550 (test_event_LDADD): Link to libupstart.la
1551
Scott James Remnant7a5c6672006-08-16 05:01:13 +01001552 * init/control.c: Code to handle the server end of the control
1553 socket, a bit more complex than a client as we want to avoid
1554 blocking on malcious clients.
1555 * init/control.h: Prototypes.
1556 * init/tests/test_control.c: Test the control code.
1557 * init/Makefile.am (init_SOURCES): Build and link control.c
1558 using the control.h header
1559 (init_LDADD): Link to libupstart as well
1560 (TESTS): Build and run the control test suite.
1561 (test_control_SOURCES, test_control_LDFLAGS, test_control_LDADD):
1562 Details for control test suite binary.
1563
Scott James Remnantb7cbda52006-08-16 04:53:38 +01001564 * upstart/control.c: Add a way to disable the safety checks.
1565 * upstart/tests/test_control.c (test_free): Fix bad test case.
1566
Scott James Remnant71d4d842006-08-16 04:29:21 +01001567 * upstart/control.c (upstart_recv_msg): fixed bogus return type
1568 for recvmsg from size_t to ssize_t so we don't infiniloop on error.
1569
Scott James Remnant2bda3832006-08-16 03:41:10 +01001570 * upstart/control.c (upstart_send_msg_to, upstart_recv_msg): Avoid
1571 job_start as the short-cut for assigning name, as that might become
1572 a more complex message eventually. Use job_query instead.
1573
Scott James Remnantd154b952006-08-16 03:39:35 +01001574 * upstart/control.c (upstart_free): Add wrapper function around
1575 nih_free so we're a proper library and don't expose libnih too much
1576 (upstart_recv_msg): Stash the sender pid in an argument.
1577 * upstart/control.h: Update.
1578 * upstart/tests/test_control.c (test_recv_msg): Test pid is
1579 returned properly.
1580 (test_free): Test the nih_free wrapper.
1581
Scott James Remnantdc0eb442006-08-16 02:40:29 +01001582 * init/job.c (job_run_script): Document future FIXME.
1583
Scott James Remnant2f558532006-08-16 02:24:55 +01001584 * init/exent.h, init/job.h, init/process.h: Fix up headers.
1585
Scott James Remnant45aab692006-08-16 02:23:27 +01001586 * upstart/control.c, upstart/control.h, upstart/errors.h,
1587 upstart/job.h, upstart/libupstart.h: Fix up headers.
1588
Scott James Remnant8c16cc82006-08-16 02:13:40 +01001589 * upstart/control.c: Write the code to handle the control socket
1590 and communication over it; turns out this was possible to write so
1591 that both ends are handled in the same code.
1592 * upstart/control.h: Structures and prototypes.
1593 * upstart/tests/test_control.c: Test the new code.
1594
Scott James Remnant729d9222006-08-16 02:12:23 +01001595 * upstart/Makefile.am (libupstart_la_LIBADD): Link to libnih
1596
Scott James Remnantb9814432006-08-16 02:11:51 +01001597 * upstart/errors.h: Header file containing errors raised by
1598 libupstart.
1599 * upstart/libupstart.h: Include errors.h
1600
Scott James Remnant342451a2006-08-15 00:08:20 +010016012006-08-15 Scott James Remnant <scott@netsplit.com>
1602
Scott James Remnant0a8e3472006-08-15 23:54:14 +01001603 * init/event.h: Add missing attribute for event_new()
1604
Scott James Remnant6f128872006-08-15 23:54:05 +01001605 * init/job.h (JobGoal, JobState, ProcessState, ConsoleType): Move
1606 the enums from here
1607 * upstart/job.h: into here so that we can use them across the
1608 control socket.
1609
Scott James Remnante5831792006-08-15 21:46:21 +01001610 * Makefile.am (SUBDIRS): Build the libupstart library
1611 * configure.ac (AC_CONFIG_FILES): Generate upstart/Makefile
1612 * upstart/Makefile.am: Makefile for sub-directory
1613 * upstart/libupstart.ver: Linker version script.
1614 * upstart/libupstart.h: "Include everything" header file.
1615
Scott James Remnant26a8eec2006-08-15 05:46:27 +01001616 * TODO: Update.
1617
Scott James Remnant1f8619c2006-08-15 05:45:38 +01001618 * init/job.c (job_handle_child): Warn when processes are killed
1619 or exit with an abnormal status. Warn when respawning.
1620
Scott James Remnanteb5ad272006-08-15 05:43:05 +01001621 * init/job.c (job_handle_child): Respawn processes that were not
1622 supposed to have died.
1623 * init/tests/test_job.c (test_handle_child): Test the respawn code.
1624
Scott James Remnant77c926d2006-08-15 05:22:08 +01001625 * TODO: Update.
1626
Scott James Remnant429cd672006-08-15 05:09:51 +01001627 * init/event.c (event_trigger_edge, event_trigger_level): Call
1628 job_handle_event so that we actually do something useful.
1629 * init/Makefile.am (test_event_LDADD): Link to process.o and job.o
1630 now that event.c calls code from job.
1631
Scott James Remnant355e1b62006-08-15 05:07:24 +01001632 * init/job.c (job_start_event): Function to start a job if an event
1633 matches.
1634 (job_stop_event): Function to stop a job if an event matches.
1635 (job_handle_event): Iterate the job list and dispatch the given event,
1636 causing jobs to be stopped or started using the above two functions.
1637 * init/job.h: Update.
1638 * init/tests/test_job.c: Test the new functions.
1639
Scott James Remnant923400d2006-08-15 04:27:44 +01001640 * init/job.c (job_new): Initialise start_events and stop_events to
1641 an empty list.
1642 * init/job.h (Job): Add start_events and stop_events list heads.
1643 * init/tests/test_job.c (test_new): Check the lists are initialised
1644 correctly to the empty list.
1645
Scott James Remnant865534f2006-08-15 04:22:06 +01001646 * init/event.c (event_match): Function to check events for equality.
1647 * init/event.h: Update.
1648 * init/tests/test_event.c (test_match): Test function.
1649
Scott James Remnant97137a72006-08-15 04:07:08 +01001650 * init/job.c (job_change_state): Trigger the level event with the
1651 same name as the job, with the value taken from the state.
1652 * init/tests/test_job.c (test_change_state): Check the event
1653 gets set to the right values as we go.
1654 * init/Makefile.am (test_job_LDADD, test_process_LDADD): Link to
1655 event.o now that job.c uses code from there.
1656
Scott James Remnant3b35a522006-08-15 04:01:32 +01001657 * init/event.c (event_change_value): Rename event_set_value to this
1658 as we intended in the first place; makes it more consistent with job.
1659 Always change the value.
1660 (event_trigger_edge): Add a high-level function to trigger an edge
1661 event.
1662 (event_trigger_level): And another to trigger a level event with
1663 a given value, this inherits the "don't change it" functionality
1664 that was in event_set_value.
1665 * init/event.h: Update.
1666 * init/tests/test_event.c: Test new behaviours and functions.
1667
Scott James Remnant4fef0732006-08-15 01:45:02 +01001668 * init/event.c: Add simple code to keep track of events, whether
1669 they have been recorded or not and their current value if any.
1670 * init/event.h: Structures and prototypes.
1671 * init/tests/test_event.c: Test cases for event code.
1672 * init/Makefile.am (init_SOURCES): Build and link event.c using event.h
1673 (TESTS): Run the event test suite.
1674 (test_event_SOURCES, test_event_LDFLAGS, test_event_LDADD): Details
1675 for event test suite binary.
1676
Scott James Remnant38fc8ff2006-08-15 00:43:26 +01001677 * init/job.c (job_run_process, job_kill_process, job_kill_timer):
1678 Downgrade error messages to warning as they're not fatal.
1679 (job_change_state): Change info message to be more regular.
1680
Scott James Remnantf033fb02006-08-15 00:37:33 +01001681 * init/job.c (job_start): A very simple, but very necessary, function.
1682 Set the goal of the given job to JOB_START and kick it off.
1683 (job_stop): And its companion, cause a running job to be stopped.
1684 * init/job.h: Update.
1685 * init/tests/test_job.c: Test the functions.
1686
Scott James Remnant342451a2006-08-15 00:08:20 +01001687 * init/job.c (job_handle_child): Child handler to kick jobs into
1688 the next state when their process dies.
1689 * init/job.h: Update.
1690 * init/tests/test_job.c (test_handle_child): Test the handler
1691 directly by just invoking it with various job states.
1692
Scott James Remnant1c463b92006-08-14 14:46:17 +010016932006-08-14 Scott James Remnant <scott@netsplit.com>
1694
Scott James Remnant51c827d2006-08-14 23:06:00 +01001695 * init/tests/test_process.c (test_kill): Use select rather than
1696 poll for consistency with other test cases.
1697
Scott James Remnante6e4a732006-08-14 23:04:53 +01001698 * init/job.c (job_kill_process): Add function to send the active
1699 process of a job the TERM signal, and then set a timer to follow
1700 up with the KILL signal if the job doesn't get cleaned up in time.
1701 (job_kill_timer): Timer callback to send the KILL signal; this
1702 does the same job as the child handler and puts the job into the
1703 next state as there's no point waiting around now.
1704 * init/job.h: Update.
1705 * init/tests/test_job.c (test_kill_process): Test both functions
1706 in one test case (as one is just the bottom half of the other).
1707
Scott James Remnant6868f652006-08-14 21:42:45 +01001708 * init/tests/test_process.c (test_spawn): Use the right thing in
1709 the test case filename and unlink it to make sure.
1710
Scott James Remnant85df9422006-08-14 21:41:39 +01001711 * init/job.c (job_change_state): Write the principal state gate
1712 function, called once a state has been left to enter the given new
1713 state (which one should determine with job_next_state). Spawns
1714 the necessary processes or moves to the next appropriate state.
1715 * init/job.h: Update.
1716 * init/tests/test_job.c: Test the state changes.
1717
Scott James Remnantba44b8b2006-08-14 20:06:28 +01001718 * init/job.c (job_run_process): Internal function to call
1719 process_spawn and update the job structure.
1720 (job_run_command): Simple(ish) wrapper for the above to split
1721 a command by whitespace, or use a shell if it needs more complex
1722 argument processing.
1723 (job_run_script): More complex wrapper that uses a shell to execute
1724 verbatim script, either using -c or a /dev/fd/NN and feeding the
1725 shell down a pipe to it.
1726 * init/job.h: Update.
1727 * init/tests/test_job.c: Test the new functions.
1728
Scott James Remnant156f5482006-08-14 19:09:55 +01001729 * init/Makefile.am (init_SOURCES, TESTS): Reorder so that process.c,
1730 which is arguably lower level, comes first.
1731 (test_job_LDADD): Link the process code.
1732 (test_process_LDADD): Swap the order.
1733
Scott James Remnant00bcc932006-08-14 19:07:28 +01001734 * TODO: Update.
1735
Scott James Remnant1c463b92006-08-14 14:46:17 +01001736 * init/process.c (process_spawn): Correct typo (progress -> process),
1737 thanks Johan.
1738
Scott James Remnant43534ca2006-08-12 14:52:01 +010017392006-08-12 Scott James Remnant <scott@netsplit.com>
1740
Scott James Remnant3030cc22006-08-12 15:18:55 +01001741 * init/process.c (process_spawn): Correct formatting of function.
1742 * init/process.h (SHELL): Define the location of the shell, all in
1743 the spirit of not hard-coding stuff like this.
1744
Scott James Remnant43534ca2006-08-12 14:52:01 +01001745 * init/job.c (job_new): Initialise all structure members to zero
1746 as this doesn't happen automatically.
1747
Scott James Remnant60b03e32006-08-10 00:59:00 +010017482006-08-10 Scott James Remnant <scott@netsplit.com>
1749
1750 * init/job.h (job_state_name): Declare as a const function.
1751
Scott James Remnant143a8572006-08-09 17:37:00 +010017522006-08-09 Scott James Remnant <scott@netsplit.com>
1753
Scott James Remnantd945d2e2006-08-09 23:47:44 +01001754 * init/job.c (job_next_state): State transition logic; this uses
1755 our departure from the specification (the goal) so that the state
1756 can always be currently accurate rather than suggestive.
1757 (job_state_name): Cute function to convert enum into a name.
1758 * init/job.h: Update.
1759 * init/tests/test_job.c (test_next_state): Test the transitions.
1760 (test_state_name): And the return values.
1761
Scott James Remnant5fa15672006-08-09 23:23:17 +01001762 * TODO: Add file to keep track of things.
1763
Scott James Remnantdbc78612006-08-09 23:22:45 +01001764 * init/job.c: Include nih/macros.h and nih/list.h
1765 * init/process.c: Include order fixing, include nih/macros.h
1766 * init/tests/test_job.c: Include nih/macros.h and nih/list.h
1767 * init/tests/test_process.c: Include nih/list.h
1768
Scott James Remnant03853ed2006-08-09 23:11:59 +01001769 * init/job.c: Include order fixing.
1770 (job_find_by_name): Function to find a job by its (unique) name.
1771 (job_find_by_pid): Function to find a job by the pid of its process.
1772 * init/job.h: Update.
1773 * init/tests/test_job.c (test_find_by_name, test_find_by_pid): Test
1774 new functions.
1775
Scott James Remnant143a8572006-08-09 17:37:00 +01001776 * init/process.c (process_spawn): Spawn a process using the job
1777 details to set up the environment, etc.
1778 (process_setup_console): Set up the console according to the job.
1779 (process_setup_limits): Set up the limits according to the job.
1780 (process_setup_environment): Set up the environment according to
1781 the job.
1782 (process_kill): Simple function to send a kill signal or raise an
1783 error; mostly just a wrapper without any particular logic.
1784 * init/process.h: Prototypes and macros.
1785 * init/tests/test_process.c: Test cases.
1786 * init/Makefile.am (init_SOURCES): Build and link process.c and
1787 its header file.
1788 (TESTS): Run the process test suite.
1789 (test_process_SOURCES, test_process_LDFLAGS, test_process_LDADD):
1790 Details for process test sutie binary.
1791
Scott James Remnant29abda02006-08-08 15:01:24 +010017922006-08-08 Scott James Remnant <scott@netsplit.com>
1793
Scott James Remnant31ee2632006-08-08 15:06:02 +01001794 * init/job.c (job_new): nih_list_free is necessary.
1795 * init/tests/test_job.c (test_new): Free job when done.
1796
Scott James Remnant29abda02006-08-08 15:01:24 +01001797 * init/job.h: Header file to contain the definition of the Job
1798 structure and associated typedefs, etc.
1799 (JobGoal): In a divergence from the specification, we introduced a
1800 "goal" for a job which tells us which way round the state machine
1801 we're going (towards start, or towards stop).
1802 (JobState): Which means this always holds the current state, even
1803 if we're trying to get out of this state (ie. if we've sent the TERM
1804 signal to the running process, we're still in the running state until
1805 it's actually been reaped).
1806 (ProcessState): And in another divergence, we keep the state of the
1807 process so we know whether we need to force a state transition or
1808 can just expect one because something transient is happening.
1809 * init/job.c (job_new): Function to allocate a Job structure, set
1810 the pointers to NULL and other important members to sensible
1811 defaults.
1812 (job_init): Initialise the list of jobs.
1813 * init/tests/test_job.c: Test suite.
1814 * init/Makefile.am (init_SOURCES): Compile and link job.c using
1815 its header file.
1816 (TESTS): Run the job test suite.
1817 (test_job_SOURCES, test_job_LDFLAGS, test_job_LDADD): Details for the
1818 job test suite binary.
1819
Scott James Remnantb933bc92006-08-02 02:29:25 +010018202006-08-02 Scott James Remnant <scott@netsplit.com>
1821
Scott James Remnant6c7667a2006-08-02 02:43:12 +01001822 * configure.ac: Check for C99
1823
Scott James Remnantb933bc92006-08-02 02:29:25 +01001824 * HACKING: Document dependency on libnih.
1825
Scott James Remnanta780d6c2006-07-27 18:40:51 +010018262006-07-27 Scott James Remnant <scott@netsplit.com>
1827
1828 * init/Makefile.am (DEFS): Append to the default DEFS list, rather
1829 than overriding, otherwise we lose HAVE_CONFIG_H
1830
Scott James Remnantb6270dd2006-07-13 02:16:38 +010018312006-07-13 Scott James Remnant <scott@netsplit.com>
1832
Scott James Remnant1bb35142006-07-13 02:30:58 +01001833 * HACKING: Correct incorrect Bazaar URL.
1834
Scott James Remnantb6270dd2006-07-13 02:16:38 +01001835 * AUTHORS: Change e-mail address to ubuntu.com.
1836 * HACKING: Update Bazaar and Release URLS.
1837 * configure.ac (AC_COPYRIGHT): Change copyright to Canonical Ltd.
1838 (AC_INIT): Change bug submission address to Launchpad.
1839 * init/main.c: Update header to use Canonical copyright and
1840 credit me as author.
1841
Scott James Remnant50748842006-05-16 21:02:31 +010018422006-05-16 Scott James Remnant <scott@netsplit.com>
1843
1844 * init/main.c: Add the simplest template main.c
1845 * init/Makefile.am: Add template Makefile.am that builds init from
1846 main.c and links to libnih statically
1847 * configure.ac (AC_CONFIG_FILES): Configure nih and init subdirs.
1848 * Makefile.am (SUBDIRS): Recurse into nih and init subdirs.
1849
Scott James Remnant8a0cd072006-05-14 18:28:58 +010018502006-05-14 Scott James Remnant <scott@netsplit.com>
1851
1852 * ChangeLog: Initial project infrastructure created.