blob: 92a24cc5a1fa2ade861cf77ea369a70251c82cd8 [file] [log] [blame]
Scott James Remnant39ec35b2007-01-09 08:16:01 +000012007-01-09 Scott James Remnant <scott@netsplit.com>
2
Scott James Remnanta7354692007-01-09 08:56:02 +00003 * init/cfgfile.c (cfg_stanza_normalexit): Change to peek at the next
4 token to see whether it's missing or not, and then just fetch each
5 next argument at a time. This is more efficient than parsing them
6 all in one go, and also means we can report the error in the right
7 place!
8 * init/tests/test_cfgfile.c (test_stanza_normalexit): Since we've
9 changed the function that parses the stanza, add a proper test case
10 function for it, covering all the behaviours.
11
Scott James Remnant92e7fda2007-01-09 08:40:13 +000012 * init/job.c (job_new): Initialise the emits member to an empty list.
13 * init/job.h (Job): Add the emits member as a list.
14 * init/tests/test_job.c (test_new): Check the emits list starts off
15 empty.
16 * init/tests/test_cfgfile.c (test_stanza_emits): Test the new emits
17 stanza; this function will also serve as a prototype for cleaning up
18 the config tests.
19
20 * init/cfgfile.c (cfg_stanza_emits): Add function to parse the new
21 emits stanza.
22
Scott James Remnant39ec35b2007-01-09 08:16:01 +000023 * init/cfgfile.c (cfg_stanza_depends): Remove the depends stanza
24 from the configuration file. Dependency support has never been used,
25 and is to be replaced by a more flexible event/state configuration
26 and blocking on the starting/stopping events.
27 * init/tests/test_cfgfile.c: Remove references and tests for the
28 depends stanza.
29 * init/job.h: Remove the depends list from the job structure.
30 * init/job.c (job_new): No depends list to initialise.
31 (job_change_state): No dependencies to release
32 (job_start): No dependencies to iterate; this removes a particularly
33 hairy and complex interaction between state changes. Remove the
34 dependency event.
35 (job_release_depends): Drop this function.
36 * init/tests/test_job.c (test_start, test_stop): Massively simplify
37 these tests cases now we don't have dependencies to worry about.
38 (test_release_depends): Drop tests
39
Scott James Remnantd4f5fb82007-01-08 23:25:23 +0000402007-01-08 Scott James Remnant <scott@netsplit.com>
41
42 * init/cfgfile.c: Rewrite using the nih_config API, rather than one
43 huge function we now just have seperate handler functions for each
44 stanza. We can also use more fine-grained parsing than slurping
45 all args in and counting them.
46 (cfg_read_job): Catch exceptions from the configuration parser and
47 add the line number where the problem occurred to an output message.
48 Parser errors are now fatal, and not ignored.
49 * init/errors.h: Add a file containing errors raised within the init
50 daemon codebase.
51 * init/Makefile.am (init_SOURCES): Build with errors.h
52 * init/tests/test_cfgfile.c: Update test cases now we don't expect
53 a job to be returned if there's a parser error.
54
55 * TODO: Update
56
Scott James Remnant66384202007-01-06 14:23:18 +0000572007-01-06 Scott James Remnant <scott@netsplit.com>
58
Scott James Remnant4f968192007-01-06 20:31:13 +000059 * logd/main.c (logging_reader): Fix inadvertent shadowing of the
60 len parameter.
61
Scott James Remnantda100272007-01-06 20:24:18 +000062 * compat/sysv/telinit.c: Oops, nearly forgot to port this to send
63 the messages in the new way.
64 * compat/sysv/shutdown.c (shutdown_now): Likewise, port this too.
65
Scott James Remnant83a86522007-01-06 19:55:38 +000066 * TODO: Update.
67
Scott James Remnant6e941882007-01-06 14:38:57 +000068 * util/initctl.c (handle_job_status): Output the process argument,
69 not the pid argument which contains the origin of the message.
70
Scott James Remnant17d6dca2007-01-06 14:33:30 +000071 * upstart/message.c (upstart_message_handle): Raise a new unknown
72 message error if we don't have a handler and a new illegal message
73 error if the source is illegal.
74 * upstart/tests/test_message.c (test_handle): Adjust tests to check
75 for the new errors that we raise.
76 * upstart/errors.h: Define strings for new errors.
77
Scott James Remnant66384202007-01-06 14:23:18 +000078 * util/initctl.c: Yet another makeover for this little program,
79 port it to the new message/control framework using handler functions
80 and NihIoMessage. This starts to make each action function look
81 very similar, so there's method to this madness.
82
Scott James Remnantb4725d92007-01-05 13:10:21 +0000832007-01-05 Scott James Remnant <scott@netsplit.com>
84
Scott James Remnant3d6bb792007-01-05 22:33:43 +000085 * logd/main.c (main): Make sure that we add the SIGTERM handler.
86
Scott James Remnantefbaafb2007-01-05 18:12:15 +000087 * init/tests/test_job.c (test_run_script): This test case relies
88 on there only being one file descriptor watch, which won't be true
89 if the control socket has been opened because there's a message to
90 go out. Make sure it's closed first.
91
Scott James Remnantbe1941f2007-01-05 17:57:59 +000092 * init/init.supp: Update supressions file now that control_init
93 has been renamed to notify_init
94
Scott James Remnant71cc4d82007-01-05 17:53:32 +000095 * init/Makefile.am: Include notify.o from all tests.
96 * init/job.c (job_change_state, job_kill_process, job_start)
97 (job_stop): Use the new notify_job function name.
98 * init/event.c (event_queue_run): Use the new notify_event function
99 name.
100
Scott James Remnantfea6cb62007-01-05 17:49:13 +0000101 * init/control.c (control_error_handler): Handle ECONNREFUSED now
102 that the process id is available to us.
103 * init/tests/test_control.c (test_error_handler): Make sure children
104 going away is handled properly.
105
Scott James Remnant3dfb2132007-01-05 17:44:48 +0000106 * upstart/message.c (upstart_message_new): Store the process id in
107 the int_data message field.
108 * upstart/tests/test_message.c (test_new): Check the int_data field
109 is filled in.
110
Scott James Remnant5d702952007-01-05 17:21:34 +0000111 * init/main.c (main): Guard against various things returning an error
112 that we weren't catching.
113
Scott James Remnant601a0e32007-01-05 17:06:31 +0000114 * init/tests/test_notify.c: Whitespace fix.
115
Scott James Remnant15cd0862007-01-05 17:06:20 +0000116 * init/control.c (control_watch_jobs, control_unwatch_jobs)
117 (control_watch_events, control_unwatch_events): Restore functionality
118 to subscribe and unsubscribe from job and event notifications.
119 * init/tests/test_control.c (test_watch_jobs, test_unwatch_jobs)
120 (test_watch_events, test_unwatch_events): Check that the subscription
121 and unsubscription messages work.
122 * init/Makefile.am (test_control_LDADD): Link to notify.o
123
124 * init/control.c: Drop unused include of upstart/errors.h
125
Scott James Remnant58cef572007-01-05 16:18:42 +0000126 * init/notify.c: Move functions that handle subscription and
127 notification from control.c. Other than changing the names, we're
128 keeping the API the same for now; expect it to change later when we
129 add the ability to subscribe to individual jobs or events.
130 (notify_init): initialise the subscriptions list; we don't have a
131 separate send queue now that the control I/O is always asynchronous.
132 * init/notify.h: Moved notification enum, structure and prototypes
133 from control.h, changing the names so they match notify_* in the
134 process.
135 * init/Makefile.am (init_SOURCES): Build and link notify.c using
136 notify.h
137 (TESTS): Build the notify test suite binary.
138 (test_notify_SOURCES, test_notify_LDFLAGS, test_notify_LDADD): Details
139 for notify test suite binary.
140 * init/tests/test_notify.c: Rewrite test cases in the manner of
141 test_control.c so that we have one function for notify_job and
142 one for notify_event, each of which contains the child process that
143 receives the notification,
144
Scott James Remnantb1679c62007-01-05 15:49:54 +0000145 * init/control.c (control_open): Allow this to be called to obtain
146 the control socket, which means we can make it static.
147 * init/tests/test_control.c (test_open): Check that it works.
148
Scott James Remnantf7c6b062007-01-05 15:33:33 +0000149 * init/control.c, init/control.h, init/tests/test_control.c: Move
150 functions that handle subscription and notification to new notify.c
151 (control_init): Drop completely, no need to maintain a send queue now
152 (control_open): Change to return an NihIo that uses the default
153 control watcher, and our error handler. Split socket opening into
154 (control_open_sock): which can be called from other functions.
155 (control_close): Use nih_io_close() to close the socket and free the
156 structure in one go.
157 (control_reopen): Close the open control socket and open it again
158 without destroying the NihIo structure, its queues or state.
159 (control_close_handler): Handle the control socket going away
160 (control_error_handler): Handle errors on the control socket,
161 including the connection refused error that indicates a client went
162 away.
163 (control_handle): Split this into a miriad of small functions with
164 a table to link them to the message type; this will make expanding
165 each message handler much easier in future.
166 * init/control.h: Update.
167 * init/tests/test_control.c: Rewrite test cases to check the new
168 handler functions; as a side-effect, this gets rid of the evil giant
169 child/parent functions in favour of one test function per handler
170 function.
171
Scott James Remnantb4725d92007-01-05 13:10:21 +0000172 * upstart/message.c (upstart_message_handle_using): Wrapper function
173 around upstart_message_handle that ensures all messages as passed to
174 a single function.
175 * upstart/message.h: Update.
176 * upstart/tests/test_message.c (test_handle_using): Make sure it
177 calls the single function.
178
Scott James Remnantde3666f2007-01-04 23:00:07 +00001792007-01-04 Scott James Remnant <scott@netsplit.com>
180
181 * upstart/message.c (upstart_message_reader): Handle any errors
182 that occurred while handling the message.
183
Scott James Remnant92feed92007-01-02 15:27:47 +00001842007-01-02 Scott James Remnant <scott@netsplit.com>
185
Scott James Remnant7833bbf2007-01-02 20:57:23 +0000186 * upstart/message.c (upstart_message_handle): Check that the name
187 argument is never NULL.
188 (upstart_message_reader): Simple message reader function that can
189 be associated with an I/O watch and handles each message received.
190 * upstart/message.h: Add prototype.
191 * upstart/tests/test_message.c (test_reader): Test the reader function.
192
Scott James Remnant0e3b5fe2007-01-02 18:39:03 +0000193 * upstart/control.c: Rename to upstart/message.c
194 * upstart/control.h: Rename to upstart/message.h
195 * upstart/tests/test_control.c: Rename to upstart/tests/test_message.c
196 * upstart/libupstart.h: Update includes.
197 * upstart/wire.c: Include message.h
198 * upstart/wire.h: Update includes.
199 * upstart/tests/test_wire.c: Update includes.
200 * upstart/errors.h: Rename UPSTART_INVALID_MESSAGE to
201 UPSTART_MESSAGE_INVALID so that it's prefixed.
202 * upstart/Makefile.am (libupstart_la_SOURCES)
203 (upstartinclude_HEADERS, TESTS): Update filenames.
204
Scott James Remnant2ad9a042007-01-02 18:29:49 +0000205 * upstart/control.c (upstart_message_new): New function that
206 creates an NihIoMessage directly from its arguments, which are a type
207 followed by a variable number of args depending on that type.
208 (upstart_message_handler): Function to find a handler function for
209 a particular message type and origin process.
210 (upstart_message_handle): New function that takes an NihIoMessage
211 and invokes a handler function with a variable number of args
212 depending on the message type.
213 (upstart_send_msg, upstart_send_msg_to, upstart_recv_msg): Drop these
214 functions, leave it up to the caller to decide whether to send and
215 receive the messages synchronously or asynchronously; now that the
216 capability is in nih_io_*.
217 * upstart/control.h (UpstartMsgType): Rename to UpstartMessageType.
218 (UpstartMessageHandler): Function with variable number of arguments
219 that handles a message received.
220 (UpstartMsg): Drop this structure entirely, we'll encode or decode
221 the wire format directly from or into a function call, rather than
222 use an intermediate structure to marshal it.
223 (UpstartMessage): New structure to make a table that can be passed
224 to upstart_message_handle to determine which handler should be called.
225 * upstart/tests/test_control.c: Test new behaviour.
226 * upstart/wire.c (upstart_push_header, upstart_pop_header): Change
227 structure name for type parameter.
228 * upstart/wire.h: Update.
229 * upstart/tests/test_wire.c: Update.
230
Scott James Remnant92feed92007-01-02 15:27:47 +0000231 * configure.ac (AC_COPYRIGHT): Update copyright to 2007.
232
Scott James Remnant67546d12006-12-29 13:08:32 +00002332006-12-29 Scott James Remnant <scott@netsplit.com>
234
235 * upstart/wire.c (upstart_write_int, upstart_write_unsigned)
236 (upstart_write_string, upstart_write_header, upstart_write_packv)
237 (upstart_write_pack): Rename to *_push_*
238 (upstart_read_int, upstart_read_unsigned, upstart_read_string)
239 (upstart_read_header, upstart_read_packv, upstart_read_pack): Rename
240 to *_pop_*.
241 All of the above modified to modify an NihIoMessage structure,
242 instead of trying to carry around buffers ourself.
243 * upstart/wire.h: Update to match above.
244 * upstart/tests/test_wire.c: Update all tests to match the above
245 changes.
246
Scott James Remnantd76e8e32006-12-21 18:34:31 +00002472006-12-21 Scott James Remnant <scott@netsplit.com>
248
Scott James Remnantf922a982006-12-21 18:45:30 +0000249 * upstart/wire.c (upstart_read_packv, upstart_write_packv): Change
250 nih_assert_notreached to nih_assert_not_reached.
251
Scott James Remnantd76e8e32006-12-21 18:34:31 +0000252 * init/job.c (job_run_script): Open the NihIo structure in stream mode.
253 * logd/main.c (logging_watcher): Open the NihIo structure in
254 stream mode.
255 (logging_reader): Need to pass the length of the size_t as a pointer
256 so that it can be modified if less is read.
257
Scott James Remnanta0385232006-12-17 15:21:39 +00002582006-12-17 Scott James Remnant <scott@netsplit.com>
259
Scott James Remnant00cc6882006-12-17 19:54:36 +0000260 * upstart/wire.c (upstart_write_packv, upstart_write_pack)
261 (upstart_read_packv, upstart_read_pack): Functions to write a pack
262 of different variables to the stream, or read them from it
263 * upstart/wire.h: Add prototypes.
264 * upstart/tests/test_wire.c (test_write_pack, test_read_pack):
265 Check we can read and write a pack of variables at once.
266
Scott James Remnant518e1c12006-12-17 18:12:14 +0000267 * upstart/wire.c (upstart_write_header, upstart_read_header): Drop
268 the version from the header, we'll just keep the protocol always
269 backwards compatible.
270 * upstart/wire.h: Update.
271 * upstart/tests/test_wire.c (test_write_header, test_read_header):
272 Check that everything works.
273
Scott James Remnant64e378f2006-12-17 17:24:44 +0000274 * upstart/wire.c (upstart_write_string, upstart_read_string):
275 Transmit the length as an unsigned, and use 0xffffffff to mean NULL
276 instead of zero so we can still transmit the empty string.
277 * upstart/wire.h: Update.
278 * upstart/tests/test_wire.c (test_write_string, test_read_string):
279 Tests for the functions to make sure the wire is at it should be.
280
Scott James Remnantd6dde952006-12-17 17:00:56 +0000281 * upstart/wire.c (upstart_read_str, upstart_write_str): Rename to
282 upstart_read_string and upstart_write_string.
283 * upstart/wire.h: Update.
284
Scott James Remnantc71ab3b2006-12-17 16:58:28 +0000285 * upstart/wire.c (upstart_write_unsigned, upstart_read_unsigned):
286 Functions to send unsigned values over the wire, which we'll use
287 to get a bit extra for the string lengths.
288 * upstart/wire.h: Update.
289 * upstart/tests/test_wire.c (test_write_unsigned)
290 (test_read_unsigned): Test the new functions.
291
Scott James Remnant0218e3a2006-12-17 16:39:33 +0000292 * upstart/wire.c (upstart_write_ints, upstart_read_ints): Drop
293 these functions, we'll go with something far more generic and
294 useful.
295 * upstart/wire.h: Remove prototypes.
296
Scott James Remnant9ee44302006-12-17 16:37:59 +0000297 * upstart/wire.c (upstart_write_int, upstart_read_int): Transmit
298 integers as signed 32-bit values in network byte order.
299 * upstart/tests/test_wire.c (test_write_int, test_read_int): Test
300 the functions to make sure the wire is at it should be,
301
Scott James Remnant5cef53e2006-12-17 15:41:13 +0000302 * upstart/control.c (upstart_read_int, upstart_write_int)
303 (upstart_read_ints, upstart_write_ints, upstart_read_str)
304 (upstart_write_str, upstart_read_header, upstart_write_header): Move
305 functions to new wire.c file.
306 * upstart/wire.c: Source file to hold wire protocol functions.
307 * upstart/wire.h: Prototypes.
308 * upstart/tests/test_wire.c: (empty) test suite.
309 * upstart/libupstart.h: Include wire.h
310 * upstart/Makefile.am (libupstart_la_SOURCES): Build and link wire.c
311 (upstartinclude_HEADERS): Install wire.h
312 (TESTS): Build and run wire test suite.
313 (test_wire_SOURCES, test_wire_LDFLAGS, test_wire_LDADD): Details for
314 wire test suite binary.
315
Scott James Remnanta0385232006-12-17 15:21:39 +0000316 * upstart/control.c (MAGIC): Change to "upstart\n", the final
317 character was originally \0 and then was a " " for the 0.2 series.
318 * upstart/tests/test_control.c (test_recv_msg): Change to match.
319
Scott James Remnantfb9412a2006-12-15 18:03:22 +00003202006-12-15 Scott James Remnant <scott@netsplit.com>
321
Scott James Remnant2e5fe2b2006-12-15 18:27:58 +0000322 * util/initctl.c, compat/sysv/telinit.c, compat/sysv/shutdown.c:
323 Update all uses of the UpstartMsg structure to avoid the
324 intermediate union that no longer exists.
325
Scott James Remnantfb521462006-12-15 18:24:57 +0000326 * init/control.c, init/tests/test_control.c: Update all uses of
327 the UpstartMsg structure to avoid the intermediate union that no
328 longer exists.
329
Scott James Remnant99b97662006-12-15 18:15:22 +0000330 * upstart/control.h: Combine all the previous message structures
331 into just one that has all of the fields anyway.
332 * upstart/control.c, upstart/tests/test_control.c: Update all uses of
333 the UpstartMsg structure to avoid the intermediate union that no
334 longer exists.
335
Scott James Remnantd452ab12006-12-15 18:05:23 +0000336 * upstart/control.h (UPSTART_API_VERSION): Define API version macro
337 to be public.
338 * upstart/control.c (MSG_VERSION, upstart_send_msg_to): Replacing the
339 previous MSG_VERSION macro here.
340
Scott James Remnantfb9412a2006-12-15 18:03:22 +0000341 * upstart/control.c (upstart_read_int, upstart_write_int)
342 (upstart_read_ints, upstart_write_ints, upstart_read_str)
343 (upstart_write_str, upstart_read_header, upstart_write_header):
344 New functions to replace the old "write a struct" protocol with
345 something a little more regimented and supportable.
346 (IOVEC_ADD, IOVEC_READ, WireHdr, WireJobPayload, WireJobStatusPayload)
347 (WireEventPayload): Remove these structures, use the functions
348 instead.
349 (upstart_send_msg_to): Call write functions intead of using macros,
350 this makes the code somewhat neater.
351 (upstart_recv_msg): Call read functions instead of using macros,
352 again making the code somewhat neater.
353 * upstart/tests/test_control.c (test_recv_msg): Change wire
354 tests to match new protocol, and thus actually work properly,
355 previously these were endian sensitive.
356
Scott James Remnant27ebd792006-12-14 11:37:14 +00003572006-12-14 Scott James Remnant <scott@netsplit.com>
358
Scott James Remnant136dc6f2006-12-14 12:36:43 +0000359 * compat/sysv/shutdown.c (wall): Construct the wall message so that
360 we don't put \r into a po file; for some reason, gettext hates that
361 and bitches about it. Someone's confusing internationalisation with
362 operating system portability, I expect.
363
Scott James Remnantf334f842006-12-14 11:46:14 +0000364 * util/man/initctl.8: Drop reference to start(8), as that's just
365 a symlink to initctl now.
366
Scott James Remnant88847432006-12-14 11:44:36 +0000367 * init/man/init.8: Link to initctl.
368
Scott James Remnantf6b237a2006-12-14 11:40:49 +0000369 * compat/sysv/reboot.c (main): Clear up help text a little.
370
Scott James Remnant3b4b2272006-12-14 11:39:05 +0000371 * HACKING: Correct some typos.
372
Scott James Remnant27ebd792006-12-14 11:37:14 +0000373 * configure.ac (AC_INIT): Correct bug reporting address.
374
Scott James Remnant1d8763a2006-12-13 17:49:38 +00003752006-12-13 Scott James Remnant <scott@netsplit.com>
376
Scott James Remnantecec0fe2006-12-13 21:55:28 +0000377 * configure.ac: Bump version to 0.3.2
378
Scott James Remnantf642ffa2006-12-13 18:24:22 +0000379 * NEWS: Update.
380
Scott James Remnant1d8763a2006-12-13 17:49:38 +0000381 * util/initctl.c (print_job_status): Drop the newline from the
382 output.
383
Scott James Remnant567cbdc2006-12-13 17:07:58 +00003842006-12-13 Alex Smith <alex@alex-smith.me.uk>
385
386 * util/initctl.c (print_job_status): Clean up initctl job status
387 output, which was badly converted from printf to nih_message.
388
Scott James Remnante2cf6392006-12-13 17:02:20 +00003892006-12-13 Scott James Remnant <scott@netsplit.com>
390
391 * compat/sysv/man/shutdown.8: Add missing documentation on the
392 format of TIME by copying it from --help output.
393
Scott James Remnantfec90562006-12-13 17:00:40 +00003942006-12-13 Alex Smith <alex@alex-smith.me.uk>
395
396 * init/process.c (process_setup_console): Actually send output to
397 /dev/null instead of /dev/console, when CONSOLE_NONE.
398
Scott James Remnantf233c9d2006-12-13 16:45:35 +00003992006-12-13 Scott James Remnant <scott@netsplit.com>
400
Scott James Remnantfbf7a5c2006-12-13 16:54:42 +0000401 * Makefile.am (EXTRA_DIST): Distribute the nih ChangeLog as well.
402
Scott James Remnantf233c9d2006-12-13 16:45:35 +0000403 * init/tests/test_job.c: Port to the new test framework.
404 * init/job.c (job_set_idle_event): Fix a slight memory leak,
405 repeated setting of the idle event never freed the previous one set.
406
Scott James Remnant1abced42006-12-12 11:28:49 +00004072006-12-12 Scott James Remnant <scott@netsplit.com>
408
Scott James Remnantfbad50c2006-12-12 18:47:43 +0000409 * init/tests/test_cfgfile.c: Port to the new test framework.
410
Scott James Remnantef372232006-12-12 17:23:05 +0000411 * init/tests/test_control.c: Port to the new test framework.
412 * init/init.supp: Suppress the list head allocated within control_init.
413
Scott James Remnant2c2e01a2006-12-12 17:22:40 +0000414 * init/control.c (control_watcher): Need to save the pid when we
415 get ECONNREFUSED, otherwise we lose it when we free the message.
416
Scott James Remnant40f7d912006-12-12 15:31:35 +0000417 * init/tests/test_process.c: Port to the new test framework.
418 * init/init.supp: Suppress the list head allocated within job_init.
419
Scott James Remnantfc456592006-12-12 14:09:45 +0000420 * init/init.supp: Include a valgrind suppressions file.
421 * init/Makefile.am (EXTRA_DIST): Distribute the suppressions file.
422
Scott James Remnant96c9b072006-12-12 14:07:30 +0000423 * init/tests/test_event.c: Port to the new test framework.
424
Scott James Remnant237c7f62006-12-12 13:49:19 +0000425 * logd/Makefile.am, util/Makefile.am, compat/sys/Makefile.am
426 (AM_CPPFLAGS): Add -I$(srcdir), necessary for testing "programs"
427 that don't have usual library path semantics.
428
Scott James Remnant2a35ab92006-12-12 13:23:10 +0000429 * upstart/tests/test_control.c: Port to the new test framework.
430 * upstart/control.c (upstart_free): Drop this function, while not
431 exposing libnih is a valiant effort, it already slips out because
432 of the error handling.
433
Scott James Remnant905dd272006-12-12 12:38:34 +0000434 * upstart/tests/test_job.c: Add missing include.
435
Scott James Remnante77567f2006-12-12 12:25:46 +0000436 * upstart/tests/test_job.c: Port to the new test framework.
437 (test_process_state_name): Check that this returns NULL.
438
Scott James Remnantb7983062006-12-12 11:34:49 +0000439 * HACKING: Update location of download directory. Document
440 requirement that all code have test cases.
441
Scott James Remnant0c577ce2006-12-12 11:31:13 +0000442 * logd/main.c (open_logging): Likewise.
443
Scott James Remnantc654baf2006-12-12 11:30:44 +0000444 * init/control.c (control_open): No need to set ENOMEM, errno is
445 always set anyway.
446
Scott James Remnant1abced42006-12-12 11:28:49 +0000447 * configure.ac (AM_INIT_AUTOMAKE): Include nostdinc so we don't get
448 Automake's broken default includes.
449 * upstart/Makefile.am (DEFAULT_INCLUDES): Drop override now that
450 we don't need it.
451 (DEFS, INCLUDES): Replace these variables with the combined
452 (AM_CPPFLAGS): variable that declares everything.
453 * init/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 * util/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 * compat/sysv/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 * logd/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
Scott James Remnantacec3b22006-11-02 16:36:53 +00004702006-11-02 Scott James Remnant <scott@netsplit.com>
471
472 * util/initctl.c (start_action): Remove break calls which shouldn't
473 be there.
474
Scott James Remnantea806b72006-10-18 15:01:00 +01004752006-10-18 Sean E. Russell <ser@ser1.net>
476
477 * init/main.c: Include sys/time.h
478 * init/cfgfile.c: Include sys/time.h and sys/resource.h
479 * init/job.c: Include sys/time.h and sys/resource.h
480
Scott James Remnant6702ac12006-10-17 18:55:24 +01004812006-10-17 Scott James Remnant <scott@netsplit.com>
482
Scott James Remnantd5758f42006-10-17 19:21:25 +0100483 * configure.ac: Bump version to 0.3.1
484
Scott James Remnantfd029da2006-10-17 19:21:07 +0100485 * NEWS: Update.
486 * TODO: Update.
487
Scott James Remnant9f67cb82006-10-17 19:12:28 +0100488 * configure.ac (AM_GNU_GETTEXT_VERSION): Quote version number.
489
Scott James Remnant4ebe87f2006-10-17 19:04:40 +0100490 * logd/Makefile.am (event.d/logd): Make the event.d sub-directory
491 in case we're building outside of the source tree.
492
Scott James Remnant6702ac12006-10-17 18:55:24 +0100493 * compat/sysv/runlevel.c (store): Don't break strict-aliasing rules
494 by avoiding dereferencing type-punned pointer. Answers on a
495 postcard, please.
496
Scott James Remnant7f133012006-10-13 12:00:34 +01004972006-10-13 Scott James Remnant <scott@netsplit.com>
498
Scott James Remnantecbb2b52006-10-13 15:18:24 +0100499 * util/initctl.c (start_action, emit_action): Add missing \n
500
Scott James Remnant48622982006-10-13 15:15:50 +0100501 * util/initctl.c: Rewrite using nih_command_parser.
502 * util/man/initctl.8: Improve.
503
504 * util/start.c: Remove, replaced by initctl.
505 * util/man/start.8: Remove, replaced by initctl.
506 * util/Makefile.am (sbin_PROGRAMS): Drop start, now just a symlink
507 to initctl.
508 (dist_man_MANS): Drop start.8, now a symlink to initctl.8
509 (install-exec-hook): Make symlinks to initctl, add start
510 (install-data-hook): Make symlinks to initctl.8, add start.8
511
Scott James Remnantb1d8a7d2006-10-13 13:57:31 +0100512 * initctl: Rename to util again, I don't want a separate directory
513 for every single little tool; and we'll be shipping more than just
514 initctl (e.g. a non-compat reboot).
515 * configure.ac (AC_CONFIG_FILES): Make util/Makefile instead of
516 initctl/Makefile.
517 * Makefile.am (SUBDIRS): Descend into util, not initctl.
518
Scott James Remnanta48b4fe2006-10-13 13:49:46 +0100519 * compat/sysv/reboot.c: Remove long options where they didn't exist
520 before. Write help text.
521 * compat/sysv/man/reboot.8: Update.
522
Scott James Remnant462734c2006-10-13 13:36:00 +0100523 * init/main.c (main): Formatting.
524 * logd/main.c (main): Formatting.
525 * logd/man/logd.8: Formatting.
526 * compat/sysv/runlevel.c (main): Formatting.
527 * compat/sysv/telinit.c (main): Formatting.
528 * compat/sysv/man/shutdown.8: Remove long options.
529
Scott James Remnanteff01f12006-10-13 13:32:12 +0100530 * compat/sysv/shutdown.c: Remove -e/--event, it has no place in a
531 compatibility tool. Get rid of long options that never existed
532 before. Specify help text to describe the options.
533 * compat/sysv/man/shutdown.8: Spruce up a bit.
534
Scott James Remnant4a5cd212006-10-13 12:59:15 +0100535 * compat/sysv/telinit.c (main): Set help text to list the valid
536 runlevels.
537 * compat/sysv/man/telinit.8: Refine the notes to mention runlevel(8).
538
Scott James Remnantf7819622006-10-13 12:54:43 +0100539 * compat/sysv/runlevel.c (main): Make the help text describe the
540 options, rather than the behaviour.
Scott James Remnant4a5cd212006-10-13 12:59:15 +0100541 * compat/sysv/man/runlevel.8: Flesh out a little more.
Scott James Remnantf7819622006-10-13 12:54:43 +0100542
Scott James Remnant930e25a2006-10-13 12:28:05 +0100543 * configure.ac (AC_INIT): Change bug reporting address to the
544 mailing list, since Launchpad doesn't accept random bugs without
545 accounts and complicated control messages.
546 * init/main.c, logd/main.c: Add a period to the synopsis.
547
Scott James Remnanta6ed7eb2006-10-13 12:14:45 +0100548 * init/main.c (main): Set the synopsis, and direct people to look
549 at telinit in the --help output.
550 * init/man/init.8: Flesh this out a little more, still a lot of
551 explaining to do about jobs and events, but we'll wait until we've
552 changed that code before documentating the behaviour.
553
Scott James Remnant7f133012006-10-13 12:00:34 +0100554 * logd/main.c (main): Correct help text to describe the options,
555 rather than what the program does. As per standard style.
556 Don't become a daemon until the logging socket is open, and make
557 that exclusive with waiting for SIGCONT.
558 * logd/man/logd.8: Write some more extensive documentation,
559 including describing the startup interlock and the socket protocol.
560 * TODO: Plan to get rid of the signal interlock from logd.
561
Scott James Remnant8985dd32006-10-12 15:26:29 +01005622006-10-12 Scott James Remnant <scott@netsplit.com>
563
564 * configure.ac: Expand AC_GNU_SOURCE so we get _GNU_SOURCE and so
565 that gettext doesn't complain.
566 (AM_GNU_GETTEXT_VERSION): Increase to 0.15
567 (AC_PREREQ): Increase to 2.60
568 * HACKING: Update autoconf and gettext requirements.
569
Scott James Remnantc16a9b42006-10-11 17:08:58 +01005702006-10-11 Scott James Remnant <scott@netsplit.com>
571
Scott James Remnant74a11442006-10-11 17:58:56 +0100572 * init/control.c (control_init): Pass NULL to nih_list_new.
573 Clarify list item types.
574 * init/event.c (event_init): Pass NULL to nih_list_new.
575 * init/job.c (job_init): Pass NULL to nih_list_new.
576
Scott James Remnantc34c4be2006-10-11 17:56:34 +0100577 * init/main.c: Change nih_signal_add_callback to nih_signal_add_handler
578 and NihSignalCb to NihSignalHandler.
579
Scott James Remnant8b227402006-10-11 17:55:27 +0100580 * init/cfgfile.c, init/cfgfile.h, init/control.c, init/control.h,
581 init/event.c, init/event.h, init/job.c, init/job.h, init/main.c,
582 init/process.c: Clean up documentation strings and parent pointer
583 types.
584
Scott James Remnantd033c862006-10-11 17:41:22 +0100585 * compat/sysv/shutdown.c: Change nih_signal_add_callback to
586 nih_signal_add_handler.
587
Scott James Remnant1ee0f482006-10-11 17:40:41 +0100588 * compat/sysv/reboot.c: Set synopsis text depending on command
589 used (probably should use nih_command_parser?)
590 * compat/sysv/runlevel.c: Set synopsis and help text, and correct
591 usage.
592 * compat/sysv/shutdown.c: Set synopsis text.
593 * compat/sysv/telinit.c: Set synopsis text.
594
Scott James Remnant3b734642006-10-11 17:22:33 +0100595 * compat/sysv/runlevel.c, compat/sysv/shutdown.c: Clean up
596 documentation strings.
597
Scott James Remnantc6e4f002006-10-11 17:22:03 +0100598 * logd/main.c: Set synopsis and help text.
599
Scott James Remnant5e31d742006-10-11 17:16:55 +0100600 * logd/main.c: Clean up documentation strings.
601 Change nih_signal_add_callback to nih_signal_add_handler.
602
Scott James Remnant48359382006-10-11 17:13:48 +0100603 * upstart/control.c, upstart/control.h, upstart/job.c: Clean up
604 documentation strings and correct parent pointer type.
605
Scott James Remnantc16a9b42006-10-11 17:08:58 +0100606 * HACKING: Detail function documentation requirement and format.
607
Scott James Remnant59093a82006-10-10 13:09:58 +01006082006-10-10 Scott James Remnant <scott@netsplit.com>
609
Scott James Remnant335947d2006-10-11 17:08:34 +0100610 * event.d/logd.in: Move to logd/event.d
611 * event.d/Makefile.am: Remove
612 * logd/Makefile.am: Create the logd job definition and install
613 * Makefile.am (SUBDIRS): event.d directory has been removed.
614 * configure.ac (AC_CONFIG_FILES): No longer make event.d/Makefile
615
Scott James Remnant59093a82006-10-10 13:09:58 +0100616 * configure.ac: Check for --enable-compat, default to sysv if given
617 or no compat if not given.
618 * compat/sysv/Makefile.am: Don't build binaries or install manpages
619 unless COMPAT_SYSV is defined.
620
Scott James Remnant45150942006-10-06 16:36:27 +01006212006-10-06 Scott James Remnant <scott@netsplit.com>
622
623 * doc/upstart-logo.svg: Include the logo Alexandre designed.
624 * doc/Makefile.am (EXTRA_DIST): Ship the logo in the tarball.
625 * Makefile.am (SUBDIRS): Install under doc
626 * configure.ac: Generate doc/Makefile
627 * AUTHORS: Ensure he's credited fully.
628
Scott James Remnant10b8c0e2006-09-27 21:27:38 +01006292006-09-27 Scott James Remnant <scott@netsplit.com>
630
Scott James Remnant44052a32006-09-28 00:04:32 +0100631 * event.d/Makefile.am (do_subst): Eliminate duplicate /s
632
Scott James Remnant5222c402006-09-27 22:48:48 +0100633 * man/init.8: Move to init/man
634 * init/Makefile.am: Update to install man page.
635 * man/logd.8: Move to logd/man
636 * logd/Makefile.am: Update to install man page.
637 * man/initctl.8, man/start.8: Move to initctl/man
638 * initctl/Makefile.am: Update to install man pages.
639 * man/reboot.8, man/runlevel.8, man/shutdown.8, man/telinit.8:
640 Move to compat/sysv/man
641 * compat/sysv/Makefile.am: Update to install man pages.
642 * man/Makefile.am: Remove
643 * configure.ac (AC_CONFIG_FILES): Remove man/Makefile
644 * Makefile.am (SUBDIRS): Don't build in man
645
Scott James Remnant545cb8c2006-09-27 21:32:49 +0100646 * util: Rename to initctl
647 * configure.ac (AC_CONFIG_FILES): Update.
648 * Makefile.am (SUBDIRS): Update.
649
Scott James Remnant960c82d2006-09-27 21:30:42 +0100650 * util/reboot.c: Move to compat/sysv
651 * util/shutdown.c: Move to compat/sysv
652 * util/Makefile.am: Update.
653 * compat/sysv/Makefile.am: Update.
654
Scott James Remnant10b8c0e2006-09-27 21:27:38 +0100655 * configure.ac: Replace macros with single call to NIH_INIT.
656 Bump version to 0.3.0 to begin new development cycle.
657
Scott James Remnante5591992006-09-21 05:49:34 +01006582006-09-21 Scott James Remnant <scott@netsplit.com>
659
660 * logd/main.c: Revert the change that logged to the console, in
661 practice this doesn't work so well. I want to get rid of logd
662 in the long term, or at least just have it as a simple logging
663 proxy, so giving it features seems wrong.
664
Scott James Remnant9b58b842006-09-20 05:37:47 +01006652006-09-20 Scott James Remnant <scott@netsplit.com>
666
Scott James Remnant97f08fa2006-09-20 06:34:12 +0100667 * configure.ac: Bump version to 0.2.8
668 * NEWS: Updated.
669
Scott James Remnante59c71e2006-09-20 06:14:32 +0100670 * logd/main.c (main): Check the kernel command-line for "quiet"
671 (line_reader): Write to console unless silent or a daemon
672
Scott James Remnant9b58b842006-09-20 05:37:47 +0100673 * man/Makefile.am (dist_man_MANS): Drop sulogin.8
674 * man/sulogin.8: Drop, we don't include an sulogin
675
Scott James Remnant0fafba42006-09-20 01:36:29 +01006762006-09-19 Michael Biebl <mbiebl@gmail.com>
677
678 * event.d/Makefile.am (logd): Drop $(srcdir)
679 * init/Makefile.am (init_SOURCES): Distribute paths.h
680
Scott James Remnant58f165f2006-09-18 19:43:07 +01006812006-09-18 Michael Biebl <mbiebl@gmail.com>
682
683 * configure.ac: Check for sys/inotify.h
684
Scott James Remnante371cab2006-09-18 16:16:00 +01006852006-09-18 Scott James Remnant <scott@netsplit.com>
686
687 * util/shutdown.c (warning_message): Adjust method of constructing
688 the message to not confuse poor translators who think \r and \n are
689 the same thing!
690
Scott James Remnantf2b1c052006-09-14 10:34:45 +01006912006-09-14 Scott James Remnant <scott@netsplit.com>
692
Scott James Remnantb2e03d02006-09-14 11:20:13 +0100693 * init/job.c (job_change_state): Catch runaway respawns when we
694 enter the running state, so we catch stop/start loops too.
695 * init/tests/test_job.c (test_change_state): Update test.
696
Scott James Remnantb7714f72006-09-14 11:07:38 +0100697 * event.d/logd: Rename to logd.in
698 * event.d/logd.in: Replace /sbin with @sbindir@ so we can transform
699 * event.d/Makefile.am: Generate logd from logd.in
700
Scott James Remnant7e6bdb32006-09-14 10:57:03 +0100701 * util/reboot.c: Don't hardcode the location of /sbin/shutdown
702 * util/Makefile.am (DEFS): Use autoconf to seed it
703 * util/shutdown.c (sysvinit_shutdown): Don't hardcode the location
704 of /dev/initctl
705
Scott James Remnante0d0dd12006-09-14 10:51:05 +0100706 * init/paths.h: Create a new configuration file that can contain
707 all of the path definitions, and in particular, allow them to be
708 overidden elsewhere.
709 * init/Makefile.am (DEFS): Override definitions of CFG_DIR and
710 TELINIT using autoconf
711 * init/main.c: Include paths.h. Don't hardcode location of telinit
712 * init/job.c: Include paths.h
713 * init/process.c: Include paths.h
714 * init/process.h: Remove definitions from here.
715
Scott James Remnantf2b1c052006-09-14 10:34:45 +0100716 * configure.ac: Bump version to 0.2.7
717
Scott James Remnant0b8f23f2006-09-13 16:51:38 +01007182006-09-13 Scott James Remnant <scott@netsplit.com>
719
Scott James Remnant948ab872006-09-14 10:34:34 +0100720 * NEWS: Updated.
721
Scott James Remnant0b8f23f2006-09-13 16:51:38 +0100722 * TODO: More TODO.
723
Scott James Remnant080dd8d2006-09-10 12:42:03 +01007242006-09-10 Scott James Remnant <scott@netsplit.com>
725
726 * util/reboot.c (main): Don't give -H with "halt".
727
Scott James Remnantd7042862006-09-09 00:50:10 +01007282006-09-09 Scott James Remnant <scott@netsplit.com>
729
Scott James Remnantedb97902006-09-09 05:48:42 +0100730 * configure.ac: Bump version to 0.2.6
731
Scott James Remnant760237e2006-09-09 05:38:32 +0100732 * NEWS: Update.
733 * TODO: Update.
734
Scott James Remnant5e267a42006-09-09 05:21:28 +0100735 * upstart/control.c (upstart_send_msg_to, upstart_recv_msg): Change
736 the magic to be the package string.
737 * upstart/tests/test_control.c (test_recv_msg): Update tests.
738
Scott James Remnant17fec6e2006-09-09 05:05:42 +0100739 * util/initctl.c (main): Set the usage string.
740 * util/shutdown.c (main): Set the usage string.
741 * util/start.c (main): Set the usage string.
742 * compat/sysv/runlevel.c (main): Set the usage string.
743 * compat/sysv/telinit.c (main): Set the usage string.
744
Scott James Remnantabede802006-09-09 05:01:45 +0100745 * man/Makefile.am: Use install-data-hook and $(man8dir)
746 * util/Makefile.am: Also use install-exec-hook
747
Scott James Remnantc6c20052006-09-09 04:58:11 +0100748 * Makefile.am (SUBDIRS): Install contents of the man directory
749 * configure.ac (AC_CONFIG_FILES): Generate man/Makefile
750 * man/Makefile.am: Install manpages in the appropriate places.
751 * man/init.8, man/logd.8, man/initctl.8, man/reboot.8,
752 * man/shutdown.8, man/start.8, man/sulogin.8, man/runlevel.8,
753 * man/telinit.8: Include some basic manpages so we at least have
754 some level of documentation.
755
Scott James Remnant33e47112006-09-09 03:45:00 +0100756 * init/job.c (job_child_reaper): Don't check the exit status of
757 a respawning job if the goal is to stop it.
758
Scott James Remnant1889aa62006-09-09 03:41:53 +0100759 * compat/sysv/telinit.c (main): Generate events rather than
760 starting and stopping jobs directly, the events are named
761 "runlevel-X". 0, 1, 6 and s/S are shutdown events.
762
Scott James Remnant515b2b92006-09-09 03:41:27 +0100763 * logd/main.c (main): Raise SIGSTOP before entering the main loop.
764 * init/main.c (main): Interlock with logd.
765
Scott James Remnant17eb9052006-09-09 03:41:04 +0100766 * event.d/logd: Should not be a console owner, but should stop
767 on shutdown.
768
Scott James Remnant34752262006-09-09 01:38:02 +0100769 * init/process.c (process_setup_console): Revert part of the previous
770 change, should just output to /dev/null if we don't have logd.
771
Scott James Remnante5533332006-09-09 01:36:07 +0100772 * configure.ac: Bump version to 0.2.5
773
Scott James Remnantb4a1c2b2006-09-09 01:28:26 +0100774 * init/main.c (main): Start the logd job if it exists.
775
776 * init/process.c (process_setup_console): Ignore ECONNREFUSED as
777 that just means that logd isn't around, handle errors by falling
778 back to opening the console.
779
Scott James Remnant9fb20d42006-09-09 01:22:03 +0100780 * init/process.c (process_setup_console): Implement handling for
781 CONSOLE_LOGGED and generally clean up the other handling.
782 * init/process.h: Update.
783 * init/main.c (main): Pass NULL for the job to setup console.
784 * TODO: Update.
785
Scott James Remnantd7042862006-09-09 00:50:10 +0100786 * logd/main.c: Implement the logging daemon, it accepts connections
787 on a unix stream socket with the abstract name
788 "/com/ubuntu/upstart/logd", expects the length of the name and the
789 name to follow; then sequences of lines which are logged to
790 /var/log/boot, or memory until that file can be opened.
791
Scott James Remnant527b9452006-09-08 17:15:07 +01007922006-09-08 Scott James Remnant <scott@netsplit.com>
793
Scott James Remnantcb655e72006-09-08 17:49:20 +0100794 * util/shutdown.c (event_setter): Change the event names to
795 distinguish between "shutdown -h" and "shutdown -h -H".
796
Scott James Remnant90732d32006-09-08 17:33:19 +0100797 * init/job.c (job_handle_event): Allow jobs to react to their own
798 events, this is how we'll do respawn eventually.
799 * init/tests/test_job.c (test_handle_event): Remove test.
800
Scott James Remnantbb3cc3f2006-09-08 17:17:47 +0100801 * init/main.c (cad_handler, kbd_handler): Generate the new event
802 names.
803 * init/event.h (CTRLALTDEL_EVENT, KBDREQUEST_EVENT): Add definitions
804 of these event names, change the ctrlaltdel event to just that.
805
Scott James Remnant527b9452006-09-08 17:15:07 +0100806 * logd/main.c (main): Add the code to daemonise, etc.
807
Scott James Remnanta17917d2006-09-07 00:18:28 +01008082006-09-07 Scott James Remnant <scott@netsplit.com>
809
Scott James Remnant214ebe82006-09-07 21:48:55 +0100810 * TODO: Long discussion today on #upstart, many improvements to the
811 job and event model that make it more elegant.
812 * AUTHORS: Include a list of thanks.
813
Scott James Remnantb8280072006-09-07 03:19:00 +0100814 * util/shutdown.c (shutdown_now): If we get ECONNREFUSED when we
815 try and send the shutdown event to init, it probably means we're
816 still in sysvinit. So try that instead.
817 (sysvinit_shutdown): Function to send a hand-crafted runlevel
818 change message across /dev/initctl.
819
Scott James Remnantae969062006-09-07 00:43:57 +0100820 * util/initctl.c (main): Add a shutdown command that takes an
821 arbitrary event name to be issued after "shutdown". You'll
822 nearly always want the /sbin/shutdown tool instead.
823
Scott James Remnant987bcc42006-09-07 00:38:24 +0100824 * init/job.c (job_detect_idle): Only generate the stalled event
825 if at least one job handles it in its start_events list.
826 * init/tests/test_job.c (test_detect_idle): Make sure that works.
827
Scott James Remnantea204d42006-09-07 00:30:53 +0100828 * init/event.h (STARTUP_EVENT, SHUTDOWN_EVENT, STALLED_EVENT):
829 Macros to define the standard event names.
830 * init/main.c (main): Use STARTUP_EVENT macro instead of "startup"
831 * init/control.c (control_handle): Use SHUTDOWN_EVENT macro
832 instead of "shutdown".
833 * init/job.c (job_detect_idle): Use STALLED_EVENT macro instead
834 of "stalled".
835
Scott James Remnant84607df2006-09-07 00:27:22 +0100836 * init/job.c (job_detect_idle): Add some log messages for when we
837 detect the idle or stalled states.
838 (job_kill_process, job_kill_timer): Increase log verbosity.
839 * init/event.c (event_queue_run): Log which events we're handling
840 if --debug is given.
841
Scott James Remnanta17917d2006-09-07 00:18:28 +0100842 * compat/sysv/telinit.c (main): Send a shutdown command when
843 requesting to enter runlevel 0 or runlevel 6, likewise for
844 runlevel 1, s or S which all run "rc1" not "rcS".
845 * init/main.c (main): When called directory (pid != 1) try and
846 run telinit before complaining that we're not init. Make sure
847 errors aren't lost.
848
Scott James Remnantf5c376c2006-09-04 16:25:04 +01008492006-09-04 Johan Kiviniemi <johan@kiviniemi.name>
Scott James Remnantedcae302006-09-04 07:06:23 +0100850
Scott James Remnantf5c376c2006-09-04 16:25:04 +0100851 * upstart/control.c (upstart_addr): Replace use of __builtin_offsetof
852 with offsetof.
853 * upstart/tests/test_control.c (test_recv_msg): Likewise.
854
8552006-09-04 Scott James Remnant <scott@netsplit.com>
856
Scott James Remnantedcae302006-09-04 07:06:23 +0100857 * util/shutdown.c (main): Exit normally after sending the warning
858 message if -k is given.
859
Scott James Remnante94bd202006-09-01 00:48:36 +01008602006-09-01 Scott James Remnant <scott@netsplit.com>
Scott James Remnantd4cdaca2006-08-31 00:47:11 +0100861
Scott James Remnant294cde72006-09-01 19:58:35 +0100862 * configure.ac: Bump version to 0.2.2
863
Scott James Remnant7663bfb2006-09-01 19:58:19 +0100864 * NEWS: Update.
865 * configure.ac: Bump version to 0.2.1
866
Scott James Remnant67982142006-09-01 19:47:39 +0100867 * init/process.c (process_setup_console): Ensure that the console
868 is always initialised to at least /dev/null
869 * init/job.c (job_change_state): Initialise event to NULL.
870 * init/event.c (event_read_state): Don't mask initialisation of
871 other variable.
872 * init/cfgfile.c (cfg_job_stanza, cfg_parse_script, cfg_next_token):
873 Print lineno using %zi not %d
874 * compat/sysv/runlevel.c (store): Cast pointer type of timeval.
875
Scott James Remnant097b2a92006-09-01 19:30:37 +0100876 * init/main.c: Move the kernel headers include beneath the C
877 library ones, so that compilation doesn't fail on !i386.
878 * util/reboot.c: Likewise.
879
Scott James Remnant28fcc922006-09-01 04:15:57 +0100880 * init/main.c (term_handler): Close the control connection if we
881 re-exec init, otherwise it won't be able to bind. Drop debugging.
882
Scott James Remnant6f464962006-09-01 04:10:20 +0100883 * init/main.c (term_handler): It always helps if we dup2 the
884 right file descriptor.
885
Scott James Remnant1db88042006-09-01 03:14:19 +0100886 * init/main.c: Use the TERM signal instead of USR1, as old init
887 used that for something else. Also rather than passing across
888 file descriptor numbers, use a fixed descriptor and just pass
889 "--restart". When we get that option we need to unmask signals
890 otherwise we sit there looking like a lemon.
891
Scott James Remnante7a73262006-09-01 02:32:27 +0100892 * init/job.c (job_change_state): Don't free the event unless we
893 generate one.
894
Scott James Remnant12dd7252006-09-01 02:27:04 +0100895 * NEWS: Update.
896
Scott James Remnant694172a2006-09-01 02:26:45 +0100897 * init/cfgfile.c (cfg_watcher): Ignore any file with '.' or '~'
898
Scott James Remnantc6e63dd2006-09-01 02:16:43 +0100899 * TODO: Update.
900
Scott James Remnant3401ab72006-09-01 02:14:47 +0100901 * init/main.c (main): Parse command-line arguments, specifically
902 look for --state-fd which we'll use for reexec. Don't do a couple
903 of things if we're passed this.
904 (read_state): Parse the line-buffered state.
905 * init/job.c (job_read_state, job_write_state): Job state
906 serialisation so that we can re-exec ourselves.
907 * init/job.h: Update.
908 * init/tests/test_job.c: Test the serialisation.
909 * init/event.c (event_read_state, event_write_state): And similar
910 functions for serialising the event queue.
911 * init/event.h: Update.
912 * init/tests/test_event.c: Test the serialisation.
913 * init/cfgfile.c (cfg_read_job): Fix a bug, need to subtract current
914 time to get due time.
915
Scott James Remnante94bd202006-09-01 00:48:36 +0100916 * upstart/job.c (job_goal_from_name, job_state_from_name)
917 (process_state_from_name): Add opposite numbers that convert a
918 string back into an enumeration.
919 * upstart/job.h: Update.
920 * upstart/tests/test_job.c: Test the new functions.
921
9222006-08-31 Scott James Remnant <scott@netsplit.com>
Scott James Remnant694172a2006-09-01 02:26:45 +0100923
Scott James Remnantb7260a72006-08-31 22:08:56 +0100924 * init/job.h (Job): Add respawn_limit, respawn_interval,
925 respawn_count and respawn_time members so that we can keep track of
926 runaway processes.
927 * init/job.c (job_catch_runaway): Increment the respawn_count
928 within respawn_interval, or reset it if we go over.
929 (job_new): Initialise respawn_limit and respawn_interval to sensible
930 defaults.
931 * init/tests/test_job.c (test_new): Check the defaults are set.
932 (test_change_state): Check the respawning code works.
933 * init/cfgfile.c (cfg_job_stanza): Parse the "respawn limit" stanza.
934 * init/tests/test_cfgfile.c (test_read_job): Test the new stanza.
935
Scott James Remnantff0d26a2006-08-31 20:49:43 +0100936 * init/process.c (process_setup_console): Remove the console reset
937 code, it tends to just crash X and seems to do nothing interesting.
938 * init/main.c (reset_console): Instead put it here and just do it
939 on startup.
940
Scott James Remnant25b263a2006-08-31 18:59:02 +0100941 * configure.ac: Bump version to 0.2.0
942
Scott James Remnant4b61be92006-08-31 17:08:44 +0100943 * util/Makefile.am (install-exec-local): Create symbolic links,
944 not hard links.
945
Scott James Remnantaf1404f2006-08-31 16:04:16 +0100946 * init/main.c: Can't catch STOP.
947
Scott James Remnant242b50b2006-08-31 15:40:42 +0100948 * util/reboot.c: Pause init while shutting down or rebooting.
949
Scott James Remnanteabb7802006-08-31 15:39:04 +0100950 * init/main.c (stop_handler): Catch STOP/TSTP and CONT.
951 * init/event.c (event_queue_run): Don't run the event queue while
952 paused.
953 * init/job.c (job_detect_idle): Don't detect idle jobs while paused.
954
Scott James Remnant1cd8d862006-08-31 15:17:16 +0100955 * util/reboot.c: if we get the -w argument ("only write to wtmp")
956 we need to exit, and not behave as halt normally would.
957
Scott James Remnantff63cf72006-08-31 04:39:34 +0100958 * compat/sysv/runlevel.c (main): Add missing newline.
959 * compat/sysv/telinit.c (main): And here too.
960
Scott James Remnant32de9222006-08-31 04:34:27 +0100961 * init/main.c (main): Check for idle after the startup event queue
962 has been run, otherwise we may just sit there.
963
Scott James Remnant13ffffe2006-08-31 04:33:39 +0100964 * compat/sysv/Makefile.am (sbin_PROGRAMS): Build and install telinit
965 (telinit_SOURCES, telinit_LDFLAGS, telinit_LDADD): Details for
966 telinit binary.
967 * compat/sysv/telinit.c: Trivial telinit program that just runs
968 the appropriate rcX job.
969 * compat/sysv/runlevel.c (main): Suggest help on illegal runlevel.
970
Scott James Remnant40f09012006-08-31 04:21:49 +0100971 * util/Makefile.am: Tidy up.
972
Scott James Remnant12473562006-08-31 04:21:05 +0100973 * configure.ac (AC_CONFIG_FILES): Create compat/sysv/Makefile
974 * Makefile.am (SUBDIRS): Build things found in compat/sysv
975 * compat/sysv/Makefile.am (sbin_PROGRAMS): Build and install runlevel
976 (runlevel_SOURCES, runlevel_LDFLAGS, runlevel_LDADD): Details for
977 runlevel binary.
978 * compat/sysv/runlevel.c: Helper to store and retrieve the current
979 "runlevel" from utmp/wtmp; as well as the reboot time.
980
Scott James Remnantd909cca2006-08-31 04:20:14 +0100981 * init/main.c (main): Drop debugging set.
982
Scott James Remnantcedd11a2006-08-31 02:59:29 +0100983 * init/job.c (job_change_state): As well as the job/state events,
984 send the job event when a service is running or a task is stopping.
985 * init/tests/test_job.c (test_change_state): Check the events get
986 sent properly.
987
Scott James Remnant44b684a2006-08-31 02:58:45 +0100988 * util/start.c: Write a simple utility to start, stop, or query
989 the status of the named jobs.
990 * util/Makefile.am (sbin_PROGRAMS): Build and install start
991 (start_SOURCES, start_LDFLAGS, start_LDADD): Details for start
992 (install-exec-local): Also install as stop and status.
993 * util/reboot.c (main): Drop the debugging set.
994
Scott James Remnantb8ed2d12006-08-31 02:15:48 +0100995 * init/cfgfile.c (cfg_job_stanza): Correct nih_alloc error.
996
Scott James Remnanta6125ae2006-08-31 02:14:25 +0100997 * init/process.c (process_setup_environment): Guard memory alloc.
998 * init/job.c (job_set_idle_event): Likewise.
999 (job_change_state): And here too.
1000 (job_run_command): Likewise.
1001 * init/control.c (control_send): Likewise.
1002 * init/cfgfile.c: And throughout this file.
1003 * upstart/control.c (upstart_recv_msg): And once here too.
1004
Scott James Remnant0b358ab2006-08-31 02:07:32 +01001005 * upstart/control.h: Abolish the separate halt, reboot and poweroff
1006 messages and replace with a single shutdown message that takes
1007 an event name (for the idle event issued afterwards).
1008 * upstart/control.c (upstart_send_msg_to, upstart_recv_msg): Handle
1009 the new shutdown event type by just treating it as an event.
1010 * upstart/tests/test_control.c (test_messages): Update tests.
1011 * init/job.c (job_set_idle_event): Store a copy of the idle event
1012 name.
1013 * init/control.c (control_send): Copy the shutdown event name.
1014 (control_handle): Replace individual handling with the new
1015 single event.
1016 * init/tests/test_control.c (test_watcher): Update.
1017 * util/initctl.c: Drop handling for things that shutdown does now.
1018 * util/shutdown.c: Send the UPSTART_SHUTDOWN event and let the user
1019 specify anything they want, just give defaults.
1020
Scott James Remnantff5efb92006-08-31 01:45:19 +01001021 This is quite a big change and abolishes level events entirely,
1022 along with the event history. We now just treat events as a
1023 transient queue of strings that go past, may cause things to change,
1024 but are otherwise forgotten. This turns out to be much easier to
1025 understand and has no real loss of power.
1026
1027 * init/event.c: Vastly simplify; gone are the separate notions of
1028 edge and level events, instead we just treat them as one-shot
1029 things that go past and are forgotten about.
1030 * init/event.h (Event): Remove value member.
1031 Update prototypes.
1032 * init/tests/test_event.c: Update.
1033 * init/job.c (job_change_state): Change the event pattern to be
1034 one that includes the job name and a description of the transition
1035 instead of the new state.
1036 (job_detect_idle): Call event_queue rather than event_queue_edge.
1037 * init/tests/test_job.c: Update.
1038 * init/cfgfile.c (cfg_job_stanza): Drop "when" and "while".
1039 * init/tests/test_cfgfile.c (test_read_job): Drop mentions of
1040 "when" and "while".
1041 * init/control.c (control_send, control_handle): Drop cases for
1042 level events.
1043 (control_handle_event): Don't include a level in the event.
1044 * init/tests/test_control.c: Update
1045 * init/main.c: Call event_queue rather than event_queue_edge.
1046 * upstart/control.c (upstart_send_msg_to, upstart_recv_msg): Change
1047 event handling so that only a name is read.
1048 * upstart/control.h: Remove value/level event structures.
1049 * upstart/tests/test_control.c (test_messages): Update.
1050 * upstart/job.c (process_state_name): Not used for events, adjust
1051 documentation so it doesn't lie.
1052 * util/initctl.c (main): Drop the set function, simplify trigger.
1053 * util/shutdown.c (shutdown_now): Call UPSTART_EVENT_QUEUE for
1054 shutdown into maintenance mode.
1055
Scott James Remnantfcbee2d2006-08-31 00:49:36 +01001056 * init/control.c (control_handle): Place a message in the syslog
1057 before halting, powering off or rebooting.
1058
Scott James Remnantd4cdaca2006-08-31 00:47:11 +01001059 * util/shutdown.c: Adjust so that the warning message is sent out
1060 if shutdown is immediate, and when it actually happens. Include
1061 the hostname as wall does.
1062
Scott James Remnant255c5f22006-08-30 16:05:01 +010010632006-08-30 Scott James Remnant <scott@netsplit.com>
1064
Scott James Remnant5be55662006-08-30 19:13:25 +01001065 * TODO: Update.
1066
Scott James Remnant4a9245f2006-08-30 19:13:00 +01001067 * util/shutdown.c: Implement shutdown utility along the same lines
1068 as the sysvinit one, but with rather different code.
1069
Scott James Remnant2a71aaa2006-08-30 16:34:06 +01001070 * util/initctl.c (main): Call setuid on the effective user id so
1071 that we can be made setuid root and executable by a special group.
1072 * util/reboot.c (main): Likewise.
1073
Scott James Remnant70cc2292006-08-30 16:06:03 +01001074 * util/initctl.c (main): Check the effective rather than the real
1075 user id, if we're effectively root, that's good enough.
1076
Scott James Remnant255c5f22006-08-30 16:05:01 +01001077 * util/reboot.c: Implement reboot/halt/poweroff utility.
1078 * util/Makefile.am (sbin_PROGRAMS): Build and install reboot
1079 (reboot_SOURCES, reboot_LDFLAGS, reboot_LDADD): Details for reboot
1080 (install-exec-local): Create hardlinks to reboot for halt and poweroff.
1081
Scott James Remnantdc8877d2006-08-29 16:56:48 +010010822006-08-29 Scott James Remnant <scott@netsplit.com>
1083
1084 * init/main.c (main): Actually run the idle-detect function.
1085 * init/job.c (job_detect_idle): Interrupt the main loop, otherwise
1086 we may end up waiting for a signal before we process the event
1087 we just issued.
1088
Scott James Remnantf43bdf32006-08-27 18:20:29 +010010892006-08-27 Scott James Remnant <scott@netsplit.com>
1090
Scott James Remnant47158482006-08-27 22:37:10 +01001091 * util/shutdown.c: Template main function.
1092 * util/Makefile.am (sbin_PROGRAMS): Build and install the
1093 shutdown binary.
1094 (shutdown_SOURCES, shutdown_LDFLAGS, shutdown_LDADD): Details for
1095 the shutdown binary
1096
Scott James Remnant70a6ec62006-08-27 22:23:50 +01001097 * util/initctl.c (main): Add commands for halt, poweroff and reboot.
1098
Scott James Remnant0c7e72a2006-08-27 22:22:53 +01001099 * init/event.c (event_queue_run): Remove the parameters.
1100 * init/event.h: Update.
1101 * init/main.c (main): Update.
1102 * init/tests/test_control.c (test_watcher): Update.
1103 * init/tests/test_job.c (test_detect_idle): Update.
1104
Scott James Remnant96ae9e42006-08-27 22:15:34 +01001105 * upstart/control.c (upstart_send_msg_to, upstart_recv_msg): Deal
1106 with halting, rebooting and powering off; or at least the appropriate
1107 messages.
1108 * upstart/control.h: Add control message structures for halting,
1109 powering off and rebooting the machine.
1110 * upstart/tests/test_control.c (test_messages): Run the tests.
1111 * init/control.c (control_handle): Add handling for halt, power off
1112 and reboot that issue the shutdown event and arrange for the halt,
1113 poweroff or reboot to be issued the next time the system is idle.
1114 * init/tests/test_control.c (test_watcher): Test the events.
1115
Scott James Remnant01a37082006-08-27 21:51:00 +01001116 * TODO: Update.
1117
Scott James Remnante02892b2006-08-27 21:49:44 +01001118 * init/job.c (job_detect_idle): Function to detect when the system is
1119 stalled or idle.
1120 * init/job.h: Update
1121 * init/tests/test_job.c (test_detect_idle): Test the new function.
1122
Scott James Remnant6a8508c2006-08-27 19:10:44 +01001123 * util/initctl.c (main): Handle the list command.
1124
Scott James Remnanta9476ad2006-08-27 19:07:23 +01001125 * TODO: Update.
1126
Scott James Remnant4da474d2006-08-27 19:06:35 +01001127 * upstart/control.c (WireJobStatusPayload): add description to the
1128 job status payload.
1129 (upstart_send_msg_to, upstart_recv_msg): Send and receieve the
1130 description over the wire.
1131 * upstart/control.h (UpstartJobStatusMsg): add a description field
1132 * upstart/tests/test_control.c: Update test cases.
1133 * init/control.c (control_handle): Include the job description in
1134 the message.
1135 (control_send): Copy the description when we put the message on
1136 the queue.
1137 (control_handle_job): Copy the description here too
1138 * init/tests/test_control.c: Update test cases.
1139
Scott James Remnant84f5e932006-08-27 18:49:25 +01001140 * init/job.c (job_list): Add a function to return the job list.
1141 * init/job.h: Update.
1142 * init/control.c (control_handle): Handle the JOB_LIST message
1143 by sending back a list of job status messages followed by the
1144 JOB_LIST_END message.
1145 * init/tests/test_control.c (test_watcher_child): Check the
1146 JOB_LIST message works properly.
1147
Scott James Remnantf4ad6d12006-08-27 18:40:01 +01001148 * upstart/control.c (upstart_send_msg_to, upstart_recv_msg): Handle
1149 the JOB_LIST and JOB_LIST_END messages which have no payload.
1150 * upstart/control.h: Add enums and structures for job list messages.
1151 * upstart/tests/test_control.c (test_messages): Update tests.
1152
Scott James Remnantf4970812006-08-27 18:27:19 +01001153 * init/main.c (main): Check that we're both uid and process #1
1154
Scott James Remnantf43bdf32006-08-27 18:20:29 +01001155 * init/main.c (main): Stop handling SIGTERM, we never want people
1156 to kill init. Handle SIGINT and SIGWINCH through the ordinary
1157 handler and SIGSEGV through a direct handler.
1158 (segv_handler): Write a sensible core dump handler, we use a child
1159 to dump core while we carry on in the parent hopefully stepping over
1160 the bad instruction.
1161 (cad_handler): Generate the control-alt-delete event.
1162 (kbd_handler): Generate the kbdrequest event.
1163
Scott James Remnant33e64d02006-08-25 14:44:32 +020011642006-08-25 Scott James Remnant <scott@netsplit.com>
1165
Scott James Remnant21679252006-08-25 16:22:13 +02001166 * configure.ac: Bump version to 0.1.2
1167 * NEWS: Update.
1168
Scott James Remnantfef12b52006-08-25 16:16:45 +02001169 * TODO: Update.
1170
Scott James Remnant94d00982006-08-25 15:38:22 +02001171 * init/process.c (process_setup_environment): Inherit the PATH
1172 and TERM environment variables from the init process, so the
1173 console works properly.
1174 * init/process.h (PATH): Declare a default value for this variable
1175 * init/main.c (main): Set the value of PATH to the default.
1176 * init/tests/test_process.c (child): Update test case.
1177
Scott James Remnant33e64d02006-08-25 14:44:32 +02001178 * NEWS: Update.
1179 * configure.ac: Bump version to 0.1.1
1180
Scott James Remnant68ccc9e2006-08-24 00:10:41 +020011812006-08-24 Scott James Remnant <scott@netsplit.com>
1182
Scott James Remnant279d4352006-08-24 15:33:19 +02001183 * init/cfgfile.h (CFG_DIR): Change configuration directory to
1184 /etc/event.d -- it's not been used by anyone, but is similar to
1185 other directories that have which is a good precedent.
1186 * event.d/Makefile.am (eventdir, dist_event_DATA): Install files
1187 into the new directory name.
1188 * Makefile.am (SUBDIRS): Rename sub directory
1189 * configure.ac (AC_CONFIG_FILES): Rename generated Makefile
1190
Scott James Remnant937192c2006-08-24 02:57:50 +02001191 * init/Makefile.am (DEFAULT_INCLUDES): Set to include the right
1192 directories so out of tree builds work.
1193 * logd/Makefile.am (DEFAULT_INCLUDES): Set to include the right
1194 directories so out of tree builds work.
1195 * upstart/Makefile.am (DEFAULT_INCLUDES): Set to include the right
1196 directories so out of tree builds work.
1197 (upstartinclude_HEADERS): Install errors.h
1198 * util/Makefile.am (DEFAULT_INCLUDES): Set to include the right
1199 directories so out of tree builds work.
1200
1201 * Makefile.am (SUBDIRS): Add m4 to the list
1202 * configure.ac (AC_CONFIG_FILES): Generate m4/Makefile
1203 * upstart/Makefile.am (upstartinclude_HEADERS): Add errors.h
1204
1205 * upstart/control.c (upstart_open):
1206
Scott James Remnante4c3d552006-08-24 02:34:01 +02001207 * init/control.c (control_open): Raise the error before
1208 performing other actions so errno is not lost.
Scott James Remnant73550092006-08-24 02:27:03 +02001209
Scott James Remnante4c3d552006-08-24 02:34:01 +02001210 * TODO: Update.o
Scott James Remnantf8b776b2006-08-24 00:36:15 +02001211 * init/cfgfile.c (cfg_next_token): Don't count quote characters
1212 unless we're actually planning to dequote the file, otherwise we
1213 end up allocating short.
1214
Scott James Remnant9e17fc02006-08-24 00:28:10 +02001215 * init/control.c (control_close): Free the io_watch using list_free
1216 in case a destructor has been set.
1217 * init/tests/test_control.c: Initialise the type of the message, and
1218 free job correctly.
1219
Scott James Remnant68ccc9e2006-08-24 00:10:41 +02001220 * upstart/tests/test_control.c: Fix overwrite of buffer.
1221 * init/tests/test_job.c: Clean up not-freed job.
1222
Scott James Remnantc961ce32006-08-23 19:46:29 +020012232006-08-23 Scott James Remnant <scott@netsplit.com>
1224
Scott James Remnant013e9722006-08-23 23:00:14 +02001225 * init/tests/test_event.c: free the entry allocated and initialise
1226 the return values.
1227
Scott James Remnantc961ce32006-08-23 19:46:29 +02001228 * init/cfgfile.c (cfg_skip_token): Drop this function; we'll
1229 make sure *pos is pointing at the start of the thing we want
1230 to parse, not the first token. Update the other functions
1231 accordingly.
1232 (cfg_read_job): Implement function to look over a job file and
1233 parse all of the stanzas that are found. Also sanity checks the
1234 job afterwards and deals with reloading existing jobs.
1235 (cfg_job_stanza): Function that parses an individual stanza,
1236 calling out to the other parse functions; this is the main config
1237 file parser!
1238 (cfg_parse_args, cfg_parse_command): Drop requirement that filename
1239 and lineno be passed, so we can be called to reparse arguments after
1240 we've already done so.
1241 (cfg_parse_script): Remove requirement that it be called at the
1242 start of the entire stanza, and instead at the start of the script.
1243 When hitting EOF, return the script so far, not NULL.
1244 (cfg_parse_args): Correct bug where we didn't check sufficient
1245 characters while skipping whitespace.
1246 (cfg_next_token): Correct bug where we didn't copy the character
1247 after a slash into the text, instead of just not copying the slash.
1248 Adjust line numbers to match the fact that it's zero based now.
1249 * init/cfgfile.h: Define prototype.
1250 * init/tests/test_cfgfile.c (test_read_job): Pretty thoroughly
1251 test the config file parser code.
1252
Scott James Remnant0c58ed02006-08-22 11:42:19 +020012532006-08-22 Scott James Remnant <scott@netsplit.com>
1254
Scott James Remnant214168f2006-08-22 18:52:51 +02001255 * init/cfgfile.c (cfg_tokenise): Rename to cfg_next_token.
1256 (cfg_skip_token): Code to skip whitespace, token and whitespace.
1257 (cfg_parse_args): Function to parse an argument list.
1258 (cfg_next_token): Extend to support the removal of quotes and
1259 slashes from the token.
1260
Scott James Remnant21590a22006-08-22 17:40:48 +02001261 * init/cfgfile.c (cfg_parse_script): Pass filename and lineno and
1262 increment the latter as we go.
1263 (cfg_script_end): Pass and increment lineno.
1264
Scott James Remnanteed2e8d2006-08-22 17:31:07 +02001265 * init/cfgfile.c: Correct a missing semi-colon in prototypes.
1266 (cfg_parse_command): Function to parse any stanza that requires
1267 a command and arguments list, e.g. exec/respawn/daemon. We don't
1268 want to require that the list be quoted, etc. and do want to allow
1269 it to be folded over lines.
1270 (cfg_tokenise): Function used by the above to tokenise the file,
1271 handling things like \, quoted strings and newlines, etc. Can be
1272 used both to determine the length of the token and to copy it.
1273
Scott James Remnantfcc98ad2006-08-22 12:28:19 +02001274 * init/cfgfile.c (cfg_read_script): Rename to cfg_parse_script.
1275
Scott James Remnantfd32dd32006-08-22 11:46:01 +02001276 * init/cfgfile.c (cfg_read_script): Function to parse a script
1277 fragment ("foo script\n....end script\n") from the job file, which
1278 is the most complex form we can find. Write it assuming the file is
1279 in a character array which may not be NULL terminated (ie. a mmap'd
1280 file).
1281 (cfg_script_end): Used by the above to detect the end of the
1282 fragment.
1283 * init/cfgfile.h: Empty header file.
1284 * init/Makefile.am (init_SOURCES): Build and link cfgfile.c
1285 using the cfgfile.h header
1286 (TESTS): Build and run the config file test cases.
1287 (test_cfgfile_SOURCES, test_cfgfile_LDFLAGS, test_cfgfile_LDADD):
1288 Details for config file test case binary.
1289
Scott James Remnant0c58ed02006-08-22 11:42:19 +02001290 * init/main.c (main): Remove the calls to the unfinished config
1291 file code.
1292
Scott James Remnant6ce44812006-08-21 08:46:32 +020012932006-08-21 Scott James Remnant <scott@netsplit.com>
1294
Scott James Remnant027dd7b2006-08-21 09:01:25 +02001295 * init/main.c: Add missing include for unistd.h
1296 * init/process.c (process_setup_console): Drop use of job.
1297 * util/initctl.c (main): Check that we're run as root.
1298
Scott James Remnant77e8db32006-08-21 08:47:50 +02001299 * init/main.c (main): Write the main function
1300
Scott James Remnant6ecceb82006-08-21 08:47:23 +02001301 * init/event.c (event_queue_cb): Rename to event_queue_run.
1302 * init/event.h: Update.
1303
Scott James Remnant6ce44812006-08-21 08:46:32 +02001304 * init/process.c (process_setup_console): Become an exported
1305 function that includes the code to reset a console.
1306
Scott James Remnant5befd932006-08-19 19:24:54 +010013072006-08-19 Scott James Remnant <scott@netsplit.com>
1308
Scott James Remnantcd39a7c2006-08-19 20:02:17 +01001309 * logd/main.c (main): Write the basic main function.
1310
Scott James Remnant3bcd15e2006-08-19 19:50:12 +01001311 * util/initctl.c (main): Fill in the details to give us a basic
1312 test client.
1313
Scott James Remnant3dc965c2006-08-19 19:25:23 +01001314 * TODO: Update.
1315
Scott James Remnant5befd932006-08-19 19:24:54 +01001316 * util/initctl.c (main): Provide the most basic main function.
1317 * util/Makefile.am (sbin_PROGRAMS): Build the initctl binary
1318 * Makefile.am (SUBDIRS): Build the utilities.
1319 * configure.ac (AC_CONFIG_FILES): Generate the util Makefile.
1320
Scott James Remnant1fe38a82006-08-18 17:06:25 +010013212006-08-18 Scott James Remnant <scott@netsplit.com>
1322
Scott James Remnantc2659612006-08-18 22:19:47 +01001323 * init/Makefile.am (test_job_LDADD): Remove the duplicate link.
1324
Scott James Remnantd5e07052006-08-18 20:39:30 +01001325 * TODO: Update.
1326
Scott James Remnanta060bb72006-08-18 20:16:55 +01001327 * init/job.c (job_handle_child): Rename to job_child_reaper.
1328 * init/job.h: Update.
1329 * init/tests/test_job.c: Update function names.
1330
Scott James Remnant829dc082006-08-18 20:10:02 +01001331 * init/control.c (control_cb): Rename to control_watcher
1332 * init/tests/test_control.c: Update function names.
1333
Scott James Remnantddc3e282006-08-18 18:49:50 +01001334 * TODO: Update.
1335
Scott James Remnantc2cac3f2006-08-18 17:17:57 +01001336 * Makefile.am (SUBDIRS): Install the rc.d files.
1337 * configure.ac (AC_CONFIG_FILES): Generate the rc.d Makefile.
1338 * rc.d/Makefile.am (rcdir): Define rcdir to be /etc/rc.d
1339 (dist_rc_DATA): Install the logd file into that directory.
1340 * rc.d/logd: Write a simple service definition for the log daemon,
1341 this saves us hardcoding any information about it into init; it'll
1342 just need to know the name.
1343
Scott James Remnant1fe38a82006-08-18 17:06:25 +01001344 * Makefile.am (SUBDIRS): Build the logd daemon
1345 * configure.ac (AC_CONFIG_FILES): Generate the logd Makefile.
1346 * logd/Makefile.am (sbin_PROGRAMS): Install the logd binary into
1347 the sbin directory by default.
1348 (logd_SOURCES): Build and link main.c
1349 * logd/main.c (main): Add basic main function for testing purposes.
1350
Scott James Remnantb9814432006-08-16 02:11:51 +010013512006-08-16 Scott James Remnant <scott@netsplit.com>
1352
Scott James Remnantc5da6fd2006-08-16 18:06:49 +01001353 * init/job.c (job_start): Ignore self-dependencies; over-document
1354 why the dependency event prodding has a surprise in its tail.
1355 (job_change_state): Move the job_release_depends call to here.
1356
Scott James Remnant133a7a32006-08-16 17:45:51 +01001357 * init/event.c (event_queue_cb): Add event consumer/dispatcher.
Scott James Remnant13e5dbf2006-08-16 17:48:01 +01001358 * init/event.h: Update.
Scott James Remnant133a7a32006-08-16 17:45:51 +01001359
Scott James Remnant3772bc62006-08-16 17:41:34 +01001360 * init/control.c (control_send): Make the event code clearer.
1361 (control_handle): Handle the changed event semantics.
1362 (control_handle_event): Issue the new event type.
1363 * init/tests/test_control.c: Update tests.
1364
Scott James Remnantcaee5b52006-08-16 17:32:12 +01001365 * upstart/control.c (upstart_send_msg_to, upstart_recv_msg): Adjust
1366 marshal code to match.
1367 * upstart/control.h: Update all structures appropriately to the
1368 previous changes.
1369 * upstart/tests/test_control.c: Update.
1370
Scott James Remnant4d4389d2006-08-16 17:19:20 +01001371 * init/job.c (job_change_state): Change call to event_trigger_level
1372 to event_queue_level.
1373
Scott James Remnant51664d72006-08-16 17:17:58 +01001374 * init/event.c (event_trigger_edge, event_trigger_level): Place
1375 the event on the event_queue rather than directly triggering it.
1376 Rename to event_queue_edge and event_queue_level respectively.
1377 * init/event.h: Update.
1378 * init/tests/test_event.c: Update test cases.
1379
Scott James Remnant4ddc86e2006-08-16 16:17:48 +01001380 * init/job.c (job_handle_event): Add another sanity check, jobs
1381 should not be able to react to their own events; that's just silly.
1382 * init/tests/test_job.c (test_handle_event): Check that the new
1383 condition does the right thing.
1384
Scott James Remnant930f3e02006-08-16 16:13:03 +01001385 * init/job.c (job_change_state): Make it illegal for a job to exist
1386 without either a command or script or both. This is for sanity
1387 reasons, allowing no primary process makes no sense and can lead
1388 to event loops if someone is feeling nefarious.
1389 * init/tests/test_job.c (test_change_state): Drop test on behaviour
1390 we've just outlawed.
1391
Scott James Remnant7dd047e2006-08-16 13:43:50 +01001392 * init/job.c (job_start): Only announce the change if we're still
1393 in the waiting state, we could have moved on to running already.
1394
Scott James Remnantf9261ba2006-08-16 13:40:05 +01001395 * init/job.c (job_start): If holding the job, at least announce
1396 the goal change to subscribed clients.
1397
Scott James Remnant853cc772006-08-16 13:34:51 +01001398 * TODO: Update.
1399
Scott James Remnantfdb82592006-08-16 13:31:49 +01001400 * init/job.c (job_start): Check for dependencies before starting
1401 the process, if we have any that aren't running we stay in waiting
1402 until they are. Any that aren't even starting get poked with a
1403 dependency event to see whether that wakes them up.
1404 * init/tests/test_job.c (test_start): Test paths through new
1405 dependency code.
1406
Scott James Remnant278150a2006-08-16 12:56:34 +01001407 * init/job.c (job_run_process): Once we've got an active process
1408 in the running state, release our dependencies.
1409
Scott James Remnant6d4104d2006-08-16 12:50:39 +01001410 * init/job.c (job_release_depends): Function to release any waiting
1411 dependencies on the given job.
1412 * init/job.h: Update.
1413 * init/tests/test_job.c (test_release_depends): Test the behaviour
1414 of the function on its own.
1415
Scott James Remnant1da1dad2006-08-16 12:18:50 +01001416 * init/job.h (Job): Add depends list field
1417 (JobName): New structure to hold the name of a job.
1418 * init/job.c (job_new): Initialise the depends list.
1419 * init/tests/test_job.c (test_new): Make sure the depends list is
1420 initialised properly.
1421
Scott James Remnant37eee032006-08-16 12:10:49 +01001422 * init/job.c (job_next_state): Return JOB_STARTING if we're in
1423 JOB_WAITING and the goal is JOB_START. This is only called when
1424 there's some change, and I don't want to hard-code the goal there.
1425 (job_start): Don't hardcode JOB_STARTING, instead just use the next
1426 state.
1427 * init/tests/test_job.c (test_next_state): Adjust test case.
1428
Scott James Remnantc3d3ead2006-08-16 09:00:50 +01001429 * init/control.c (control_subscribe): Allow the current
1430 subscription to be found by passing NOTIFY_NONE.
1431 (control_handle): Don't remove an existing subscription to jobs,
1432 a GUI will probably want a permanent one to keep the status up to
1433 date.
1434
Scott James Remnantb9a568c2006-08-16 08:57:46 +01001435 * init/job.c (job_kill_process, job_kill_timer): Don't hardcode
1436 JOB_STOPPING here, instead move to the next logical state.
1437 (job_kill_process): Notify subscribed processes that we killed
1438 the job.
1439 (job_start, job_stop): Notify subscribed processes of a change of
1440 goal that doesn't result in an immediate state change.
1441
Scott James Remnant8dbc6012006-08-16 08:57:38 +01001442 * init/event.c (event_trigger_edge, event_trigger_level): Swap
1443 order so that events are announced before processed.
1444
Scott James Remnant28161252006-08-16 08:41:48 +01001445 * init/control.c (control_handle): Handle requests to watch and
1446 unwatch jobs and events.
1447 * init/tests/test_control.c (test_cb_child, test_cb): Check that
1448 subscriptions work.
1449
Scott James Remnantb6d55bf2006-08-16 08:24:16 +01001450 * init/tests/test_control.c (test_cb_child): Add a sleep to avoid
1451 a race that upsets gdb, have tried this with a STOP/CONT interlock
1452 but can't seem to find where the child should reach first.
1453
Scott James Remnant5612b232006-08-16 08:21:06 +01001454 * init/job.c (job_change_state): Notify the control handler.
1455 * init/event.c (event_trigger_edge, event_trigger_level): Pass
1456 event to the control handler.
1457 * init/tests/test_control.c (test_cb_child): Expect to receive
1458 job status events as well.
1459 * init/Makefile.am (test_event_LDADD, test_process_LDADD)
1460 (test_job_LDADD): Add control.o to the linkage.
1461
Scott James Remnant9e0626a2006-08-16 08:17:07 +01001462 * init/control.c (control_cb): Don't display an error for
1463 ECONNREFUSED, just remove any subscriptions.
1464 * init/tests/test_control.c (test_handle_job, test_handle_error):
1465 Clean up our subscriptions properly.
1466
Scott James Remnant3c465c82006-08-16 07:40:24 +01001467 * init/control.c (control_handle_job): Function to send out an
1468 UPSTART_JOB_STATUS message to subscribed processes whenever a
1469 job state changes.
1470 (control_handle_event): Function to send out an
1471 UPSTART_EVENT_TRIGGERED message to subscribed processes whenever
1472 an event is triggered.
1473 * init/control.h: Update.
1474 * init/tests/test_control.c (test_handle_job, test_handle_event):
1475 Check that the functions work properly.
1476
Scott James Remnant16dadc52006-08-16 07:27:40 +01001477 * init/control.c (control_handle): Handle messages that trigger
1478 edge and level events; subscribe the process to receive notification
1479 of job changes during the event.
1480 * init/tests/test_control.c (test_cb_child): Check that the messages
1481 are handled properly (without subscription check).
1482
Scott James Remnanta7ba72a2006-08-16 07:11:30 +01001483 * init/control.c (control_cb): Unsubscribe a process if it stops
1484 listening.
1485
Scott James Remnant2c9669c2006-08-16 07:10:05 +01001486 * init/control.c (control_send): Copy the pointers in the new
1487 event messages.
1488 * init/tests/test_control.c (test_send): Check the pointers are
1489 copied across correctly.
1490
Scott James Remnant15d61c62006-08-16 06:55:58 +01001491 * init/control.c (control_subscribe): Add function to handle
1492 processes that want to subscribe to changes.
1493 (control_init): Initialise the subscriptions list.
1494 * init/control.h: Add structures and prototypes.
1495 * init/tests/test_control.c (test_subscribe): Test the function.
1496
Scott James Remnant8692f762006-08-16 06:21:13 +01001497 * upstart/control.h (UpstartMsgType): add messages for triggering
1498 edge and level events, receiving the trigger for an event and for
1499 watching jobs and events.
1500 (UpstartEventTriggerEdgeMsg, UpstartEventTriggerLevelMsg)
1501 (UpstartEventTriggeredMsg, UpstartWatchJobsMsg)
1502 (UpstartUnwatchJobsMsg, UpstartWatchEventsMsg):
1503 (UpstartUnwatchEventsMsg): Add structures for the new messages.
1504 (UpstartMsg): And add them to the union.
1505 * upstart/control.c (WireEventPayload): The event messages can all
1506 share a wire payload type; the watch messages don't need any special
1507 payload.
1508 (upstart_send_msg_to): Add the payloads onto the wire.
1509 (upstart_recv_msg): And take the payloads back off the wire.
1510 * upstart/tests/test_control.c (test_messages): Test the new
1511 message types.
1512
Scott James Remnant8ed97eb2006-08-16 05:46:44 +01001513 * upstart/control.h (UpstartJobStatusMsg): add a process id.
1514 * upstart/control.c (WireJobStatusPayload): and here too.
1515 (upstart_send_msg_to): copy the process id onto the wire.
1516 (upstart_recv_msg): copy the process id from the wire.
1517 * init/control.c (control_handle): Fill in the pid from the job.
1518 * upstart/tests/test_control.c (test_messages): Check the pid gets
1519 passed across the wire properly.
1520
Scott James Remnant7d914312006-08-16 05:37:50 +01001521 * init/control.c (control_cb): Disable the poll for write once the
1522 send queue becomes empty.
1523
Scott James Remnant59707c22006-08-16 05:32:20 +01001524 * upstart/Makefile.am (libupstart_la_SOURCES): Correct ordering.
1525
Scott James Remnanta98c8b82006-08-16 05:32:02 +01001526 * init/control.c (control_handle): Add missing break.
1527
Scott James Remnantb5c7a302006-08-16 05:24:55 +01001528 * upstart/job.c (job_goal_name, process_state_name): For completeness
1529 add these two functions as well.
1530 * upstart/job.h: Update.
1531 * upstart/tests/test_job.c (test_goal_name)
1532 (test_process_state_name): Test the new functions.
1533
Scott James Remnant20b15ad2006-08-16 05:20:02 +01001534 * init/job.c (job_state_name): Move this utility function from here
1535 * upstart/job.c (job_state_name): to here so all clients can use
1536 it.
1537 * init/job.h: Update.
1538 * upstart/job.h: Update.
1539 * init/tests/test_job.c (test_state_name): Move the test case from here
1540 * upstart/tests/test_job.c: to here as well.
1541 * upstart/Makefile.am (libupstart_la_SOURCES): Build and link job.c
1542 (TESTS): Run the job test cases
1543 (test_job_SOURCES, test_job_LDFLAGS, test_job_LDADD): Details for
1544 job test case binary.
1545 * init/Makefile.am (test_job_LDADD, test_process_LDADD)
1546 (test_event_LDADD): Link to libupstart.la
1547
Scott James Remnant7a5c6672006-08-16 05:01:13 +01001548 * init/control.c: Code to handle the server end of the control
1549 socket, a bit more complex than a client as we want to avoid
1550 blocking on malcious clients.
1551 * init/control.h: Prototypes.
1552 * init/tests/test_control.c: Test the control code.
1553 * init/Makefile.am (init_SOURCES): Build and link control.c
1554 using the control.h header
1555 (init_LDADD): Link to libupstart as well
1556 (TESTS): Build and run the control test suite.
1557 (test_control_SOURCES, test_control_LDFLAGS, test_control_LDADD):
1558 Details for control test suite binary.
1559
Scott James Remnantb7cbda52006-08-16 04:53:38 +01001560 * upstart/control.c: Add a way to disable the safety checks.
1561 * upstart/tests/test_control.c (test_free): Fix bad test case.
1562
Scott James Remnant71d4d842006-08-16 04:29:21 +01001563 * upstart/control.c (upstart_recv_msg): fixed bogus return type
1564 for recvmsg from size_t to ssize_t so we don't infiniloop on error.
1565
Scott James Remnant2bda3832006-08-16 03:41:10 +01001566 * upstart/control.c (upstart_send_msg_to, upstart_recv_msg): Avoid
1567 job_start as the short-cut for assigning name, as that might become
1568 a more complex message eventually. Use job_query instead.
1569
Scott James Remnantd154b952006-08-16 03:39:35 +01001570 * upstart/control.c (upstart_free): Add wrapper function around
1571 nih_free so we're a proper library and don't expose libnih too much
1572 (upstart_recv_msg): Stash the sender pid in an argument.
1573 * upstart/control.h: Update.
1574 * upstart/tests/test_control.c (test_recv_msg): Test pid is
1575 returned properly.
1576 (test_free): Test the nih_free wrapper.
1577
Scott James Remnantdc0eb442006-08-16 02:40:29 +01001578 * init/job.c (job_run_script): Document future FIXME.
1579
Scott James Remnant2f558532006-08-16 02:24:55 +01001580 * init/exent.h, init/job.h, init/process.h: Fix up headers.
1581
Scott James Remnant45aab692006-08-16 02:23:27 +01001582 * upstart/control.c, upstart/control.h, upstart/errors.h,
1583 upstart/job.h, upstart/libupstart.h: Fix up headers.
1584
Scott James Remnant8c16cc82006-08-16 02:13:40 +01001585 * upstart/control.c: Write the code to handle the control socket
1586 and communication over it; turns out this was possible to write so
1587 that both ends are handled in the same code.
1588 * upstart/control.h: Structures and prototypes.
1589 * upstart/tests/test_control.c: Test the new code.
1590
Scott James Remnant729d9222006-08-16 02:12:23 +01001591 * upstart/Makefile.am (libupstart_la_LIBADD): Link to libnih
1592
Scott James Remnantb9814432006-08-16 02:11:51 +01001593 * upstart/errors.h: Header file containing errors raised by
1594 libupstart.
1595 * upstart/libupstart.h: Include errors.h
1596
Scott James Remnant342451a2006-08-15 00:08:20 +010015972006-08-15 Scott James Remnant <scott@netsplit.com>
1598
Scott James Remnant0a8e3472006-08-15 23:54:14 +01001599 * init/event.h: Add missing attribute for event_new()
1600
Scott James Remnant6f128872006-08-15 23:54:05 +01001601 * init/job.h (JobGoal, JobState, ProcessState, ConsoleType): Move
1602 the enums from here
1603 * upstart/job.h: into here so that we can use them across the
1604 control socket.
1605
Scott James Remnante5831792006-08-15 21:46:21 +01001606 * Makefile.am (SUBDIRS): Build the libupstart library
1607 * configure.ac (AC_CONFIG_FILES): Generate upstart/Makefile
1608 * upstart/Makefile.am: Makefile for sub-directory
1609 * upstart/libupstart.ver: Linker version script.
1610 * upstart/libupstart.h: "Include everything" header file.
1611
Scott James Remnant26a8eec2006-08-15 05:46:27 +01001612 * TODO: Update.
1613
Scott James Remnant1f8619c2006-08-15 05:45:38 +01001614 * init/job.c (job_handle_child): Warn when processes are killed
1615 or exit with an abnormal status. Warn when respawning.
1616
Scott James Remnanteb5ad272006-08-15 05:43:05 +01001617 * init/job.c (job_handle_child): Respawn processes that were not
1618 supposed to have died.
1619 * init/tests/test_job.c (test_handle_child): Test the respawn code.
1620
Scott James Remnant77c926d2006-08-15 05:22:08 +01001621 * TODO: Update.
1622
Scott James Remnant429cd672006-08-15 05:09:51 +01001623 * init/event.c (event_trigger_edge, event_trigger_level): Call
1624 job_handle_event so that we actually do something useful.
1625 * init/Makefile.am (test_event_LDADD): Link to process.o and job.o
1626 now that event.c calls code from job.
1627
Scott James Remnant355e1b62006-08-15 05:07:24 +01001628 * init/job.c (job_start_event): Function to start a job if an event
1629 matches.
1630 (job_stop_event): Function to stop a job if an event matches.
1631 (job_handle_event): Iterate the job list and dispatch the given event,
1632 causing jobs to be stopped or started using the above two functions.
1633 * init/job.h: Update.
1634 * init/tests/test_job.c: Test the new functions.
1635
Scott James Remnant923400d2006-08-15 04:27:44 +01001636 * init/job.c (job_new): Initialise start_events and stop_events to
1637 an empty list.
1638 * init/job.h (Job): Add start_events and stop_events list heads.
1639 * init/tests/test_job.c (test_new): Check the lists are initialised
1640 correctly to the empty list.
1641
Scott James Remnant865534f2006-08-15 04:22:06 +01001642 * init/event.c (event_match): Function to check events for equality.
1643 * init/event.h: Update.
1644 * init/tests/test_event.c (test_match): Test function.
1645
Scott James Remnant97137a72006-08-15 04:07:08 +01001646 * init/job.c (job_change_state): Trigger the level event with the
1647 same name as the job, with the value taken from the state.
1648 * init/tests/test_job.c (test_change_state): Check the event
1649 gets set to the right values as we go.
1650 * init/Makefile.am (test_job_LDADD, test_process_LDADD): Link to
1651 event.o now that job.c uses code from there.
1652
Scott James Remnant3b35a522006-08-15 04:01:32 +01001653 * init/event.c (event_change_value): Rename event_set_value to this
1654 as we intended in the first place; makes it more consistent with job.
1655 Always change the value.
1656 (event_trigger_edge): Add a high-level function to trigger an edge
1657 event.
1658 (event_trigger_level): And another to trigger a level event with
1659 a given value, this inherits the "don't change it" functionality
1660 that was in event_set_value.
1661 * init/event.h: Update.
1662 * init/tests/test_event.c: Test new behaviours and functions.
1663
Scott James Remnant4fef0732006-08-15 01:45:02 +01001664 * init/event.c: Add simple code to keep track of events, whether
1665 they have been recorded or not and their current value if any.
1666 * init/event.h: Structures and prototypes.
1667 * init/tests/test_event.c: Test cases for event code.
1668 * init/Makefile.am (init_SOURCES): Build and link event.c using event.h
1669 (TESTS): Run the event test suite.
1670 (test_event_SOURCES, test_event_LDFLAGS, test_event_LDADD): Details
1671 for event test suite binary.
1672
Scott James Remnant38fc8ff2006-08-15 00:43:26 +01001673 * init/job.c (job_run_process, job_kill_process, job_kill_timer):
1674 Downgrade error messages to warning as they're not fatal.
1675 (job_change_state): Change info message to be more regular.
1676
Scott James Remnantf033fb02006-08-15 00:37:33 +01001677 * init/job.c (job_start): A very simple, but very necessary, function.
1678 Set the goal of the given job to JOB_START and kick it off.
1679 (job_stop): And its companion, cause a running job to be stopped.
1680 * init/job.h: Update.
1681 * init/tests/test_job.c: Test the functions.
1682
Scott James Remnant342451a2006-08-15 00:08:20 +01001683 * init/job.c (job_handle_child): Child handler to kick jobs into
1684 the next state when their process dies.
1685 * init/job.h: Update.
1686 * init/tests/test_job.c (test_handle_child): Test the handler
1687 directly by just invoking it with various job states.
1688
Scott James Remnant1c463b92006-08-14 14:46:17 +010016892006-08-14 Scott James Remnant <scott@netsplit.com>
1690
Scott James Remnant51c827d2006-08-14 23:06:00 +01001691 * init/tests/test_process.c (test_kill): Use select rather than
1692 poll for consistency with other test cases.
1693
Scott James Remnante6e4a732006-08-14 23:04:53 +01001694 * init/job.c (job_kill_process): Add function to send the active
1695 process of a job the TERM signal, and then set a timer to follow
1696 up with the KILL signal if the job doesn't get cleaned up in time.
1697 (job_kill_timer): Timer callback to send the KILL signal; this
1698 does the same job as the child handler and puts the job into the
1699 next state as there's no point waiting around now.
1700 * init/job.h: Update.
1701 * init/tests/test_job.c (test_kill_process): Test both functions
1702 in one test case (as one is just the bottom half of the other).
1703
Scott James Remnant6868f652006-08-14 21:42:45 +01001704 * init/tests/test_process.c (test_spawn): Use the right thing in
1705 the test case filename and unlink it to make sure.
1706
Scott James Remnant85df9422006-08-14 21:41:39 +01001707 * init/job.c (job_change_state): Write the principal state gate
1708 function, called once a state has been left to enter the given new
1709 state (which one should determine with job_next_state). Spawns
1710 the necessary processes or moves to the next appropriate state.
1711 * init/job.h: Update.
1712 * init/tests/test_job.c: Test the state changes.
1713
Scott James Remnantba44b8b2006-08-14 20:06:28 +01001714 * init/job.c (job_run_process): Internal function to call
1715 process_spawn and update the job structure.
1716 (job_run_command): Simple(ish) wrapper for the above to split
1717 a command by whitespace, or use a shell if it needs more complex
1718 argument processing.
1719 (job_run_script): More complex wrapper that uses a shell to execute
1720 verbatim script, either using -c or a /dev/fd/NN and feeding the
1721 shell down a pipe to it.
1722 * init/job.h: Update.
1723 * init/tests/test_job.c: Test the new functions.
1724
Scott James Remnant156f5482006-08-14 19:09:55 +01001725 * init/Makefile.am (init_SOURCES, TESTS): Reorder so that process.c,
1726 which is arguably lower level, comes first.
1727 (test_job_LDADD): Link the process code.
1728 (test_process_LDADD): Swap the order.
1729
Scott James Remnant00bcc932006-08-14 19:07:28 +01001730 * TODO: Update.
1731
Scott James Remnant1c463b92006-08-14 14:46:17 +01001732 * init/process.c (process_spawn): Correct typo (progress -> process),
1733 thanks Johan.
1734
Scott James Remnant43534ca2006-08-12 14:52:01 +010017352006-08-12 Scott James Remnant <scott@netsplit.com>
1736
Scott James Remnant3030cc22006-08-12 15:18:55 +01001737 * init/process.c (process_spawn): Correct formatting of function.
1738 * init/process.h (SHELL): Define the location of the shell, all in
1739 the spirit of not hard-coding stuff like this.
1740
Scott James Remnant43534ca2006-08-12 14:52:01 +01001741 * init/job.c (job_new): Initialise all structure members to zero
1742 as this doesn't happen automatically.
1743
Scott James Remnant60b03e32006-08-10 00:59:00 +010017442006-08-10 Scott James Remnant <scott@netsplit.com>
1745
1746 * init/job.h (job_state_name): Declare as a const function.
1747
Scott James Remnant143a8572006-08-09 17:37:00 +010017482006-08-09 Scott James Remnant <scott@netsplit.com>
1749
Scott James Remnantd945d2e2006-08-09 23:47:44 +01001750 * init/job.c (job_next_state): State transition logic; this uses
1751 our departure from the specification (the goal) so that the state
1752 can always be currently accurate rather than suggestive.
1753 (job_state_name): Cute function to convert enum into a name.
1754 * init/job.h: Update.
1755 * init/tests/test_job.c (test_next_state): Test the transitions.
1756 (test_state_name): And the return values.
1757
Scott James Remnant5fa15672006-08-09 23:23:17 +01001758 * TODO: Add file to keep track of things.
1759
Scott James Remnantdbc78612006-08-09 23:22:45 +01001760 * init/job.c: Include nih/macros.h and nih/list.h
1761 * init/process.c: Include order fixing, include nih/macros.h
1762 * init/tests/test_job.c: Include nih/macros.h and nih/list.h
1763 * init/tests/test_process.c: Include nih/list.h
1764
Scott James Remnant03853ed2006-08-09 23:11:59 +01001765 * init/job.c: Include order fixing.
1766 (job_find_by_name): Function to find a job by its (unique) name.
1767 (job_find_by_pid): Function to find a job by the pid of its process.
1768 * init/job.h: Update.
1769 * init/tests/test_job.c (test_find_by_name, test_find_by_pid): Test
1770 new functions.
1771
Scott James Remnant143a8572006-08-09 17:37:00 +01001772 * init/process.c (process_spawn): Spawn a process using the job
1773 details to set up the environment, etc.
1774 (process_setup_console): Set up the console according to the job.
1775 (process_setup_limits): Set up the limits according to the job.
1776 (process_setup_environment): Set up the environment according to
1777 the job.
1778 (process_kill): Simple function to send a kill signal or raise an
1779 error; mostly just a wrapper without any particular logic.
1780 * init/process.h: Prototypes and macros.
1781 * init/tests/test_process.c: Test cases.
1782 * init/Makefile.am (init_SOURCES): Build and link process.c and
1783 its header file.
1784 (TESTS): Run the process test suite.
1785 (test_process_SOURCES, test_process_LDFLAGS, test_process_LDADD):
1786 Details for process test sutie binary.
1787
Scott James Remnant29abda02006-08-08 15:01:24 +010017882006-08-08 Scott James Remnant <scott@netsplit.com>
1789
Scott James Remnant31ee2632006-08-08 15:06:02 +01001790 * init/job.c (job_new): nih_list_free is necessary.
1791 * init/tests/test_job.c (test_new): Free job when done.
1792
Scott James Remnant29abda02006-08-08 15:01:24 +01001793 * init/job.h: Header file to contain the definition of the Job
1794 structure and associated typedefs, etc.
1795 (JobGoal): In a divergence from the specification, we introduced a
1796 "goal" for a job which tells us which way round the state machine
1797 we're going (towards start, or towards stop).
1798 (JobState): Which means this always holds the current state, even
1799 if we're trying to get out of this state (ie. if we've sent the TERM
1800 signal to the running process, we're still in the running state until
1801 it's actually been reaped).
1802 (ProcessState): And in another divergence, we keep the state of the
1803 process so we know whether we need to force a state transition or
1804 can just expect one because something transient is happening.
1805 * init/job.c (job_new): Function to allocate a Job structure, set
1806 the pointers to NULL and other important members to sensible
1807 defaults.
1808 (job_init): Initialise the list of jobs.
1809 * init/tests/test_job.c: Test suite.
1810 * init/Makefile.am (init_SOURCES): Compile and link job.c using
1811 its header file.
1812 (TESTS): Run the job test suite.
1813 (test_job_SOURCES, test_job_LDFLAGS, test_job_LDADD): Details for the
1814 job test suite binary.
1815
Scott James Remnantb933bc92006-08-02 02:29:25 +010018162006-08-02 Scott James Remnant <scott@netsplit.com>
1817
Scott James Remnant6c7667a2006-08-02 02:43:12 +01001818 * configure.ac: Check for C99
1819
Scott James Remnantb933bc92006-08-02 02:29:25 +01001820 * HACKING: Document dependency on libnih.
1821
Scott James Remnanta780d6c2006-07-27 18:40:51 +010018222006-07-27 Scott James Remnant <scott@netsplit.com>
1823
1824 * init/Makefile.am (DEFS): Append to the default DEFS list, rather
1825 than overriding, otherwise we lose HAVE_CONFIG_H
1826
Scott James Remnantb6270dd2006-07-13 02:16:38 +010018272006-07-13 Scott James Remnant <scott@netsplit.com>
1828
Scott James Remnant1bb35142006-07-13 02:30:58 +01001829 * HACKING: Correct incorrect Bazaar URL.
1830
Scott James Remnantb6270dd2006-07-13 02:16:38 +01001831 * AUTHORS: Change e-mail address to ubuntu.com.
1832 * HACKING: Update Bazaar and Release URLS.
1833 * configure.ac (AC_COPYRIGHT): Change copyright to Canonical Ltd.
1834 (AC_INIT): Change bug submission address to Launchpad.
1835 * init/main.c: Update header to use Canonical copyright and
1836 credit me as author.
1837
Scott James Remnant50748842006-05-16 21:02:31 +010018382006-05-16 Scott James Remnant <scott@netsplit.com>
1839
1840 * init/main.c: Add the simplest template main.c
1841 * init/Makefile.am: Add template Makefile.am that builds init from
1842 main.c and links to libnih statically
1843 * configure.ac (AC_CONFIG_FILES): Configure nih and init subdirs.
1844 * Makefile.am (SUBDIRS): Recurse into nih and init subdirs.
1845
Scott James Remnant8a0cd072006-05-14 18:28:58 +010018462006-05-14 Scott James Remnant <scott@netsplit.com>
1847
1848 * ChangeLog: Initial project infrastructure created.