~jamesodhunt/upstart/1.3

« back to all changes in this revision

Viewing changes to init/parse_job.c

Merge of lp:~jamesodhunt/upstart/upstream-override-support.

Show diffs side-by-side

added added

removed removed

Lines of Context:
264
264
 * parse_job:
265
265
 * @parent: parent object for new job,
266
266
 * @session: session,
 
267
 * @update: If not NULL, update the existing specified JobClass,
267
268
 * @name: name of new job,
268
269
 * @file: file or string to parse,
269
270
 * @len: length of @file,
279
280
 * of the returned job are freed, the returned job will also be
280
281
 * freed.
281
282
 *
282
 
 * Returns: new JobClass structure on success, NULL on raised error.
 
283
 * Returns: if @update is NULL, returns new JobClass structure on success, NULL on raised error.
 
284
 * If @update is not NULL, returns @update or NULL on error.
283
285
 **/
284
286
JobClass *
285
287
parse_job (const void *parent,
286
 
           Session *   session,
 
288
           Session    *session,
 
289
           JobClass   *update,
287
290
           const char *name,
288
291
           const char *file,
289
292
           size_t      len,
296
299
        nih_assert (file != NULL);
297
300
        nih_assert (pos != NULL);
298
301
 
299
 
        class = job_class_new (parent, name, session);
300
 
        if (! class)
301
 
                nih_return_system_error (NULL);
 
302
        if (update) {
 
303
                class = update;
 
304
                nih_debug ("Reusing JobClass %s (%s)",
 
305
                                class->name, class->path);
 
306
        } else {
 
307
                nih_debug ("Creating new JobClass %s",
 
308
                          name);
 
309
                class = job_class_new (parent, name, session);
 
310
                if (! class)
 
311
                        nih_return_system_error (NULL);
 
312
        }
302
313
 
303
314
        if (nih_config_parse_file (file, len, pos, lineno,
304
 
                                   stanzas, class) < 0) {
305
 
                nih_free (class);
 
315
                                stanzas, class) < 0) {
 
316
                if (!update)
 
317
                        nih_free (class);
306
318
                return NULL;
307
319
        }
308
320