Beispiel #1
0
static void log_target(mrp_console_t *c, void *user_data,
                       int argc, char **argv)
{
    const char *target;
    const char *targets[32];
    int         i, n;

    MRP_UNUSED(c);
    MRP_UNUSED(user_data);

    if (argc == 2) {
        target = mrp_log_get_target();
        n      = mrp_log_get_targets(targets, MRP_ARRAY_SIZE(targets));

        printf("available log targets:\n");
        for (i = 0; i < n; i++)
            printf("    %s%s\n", targets[i],
                   !strcmp(targets[i], target) ? " (active)" : "");
    }
    else if (argc == 3) {
        target = argv[2];

        if (!mrp_log_set_target(target))
            printf("failed to change logging target to %s", target);
        else {
            printf("changed log target to %s\n", target);
            mrp_log_info("changed log target to %s", target);
        }
    }
    else {
        printf("%s/%s invoked with wrong number of arguments\n",
               argv[0], argv[1]);
    }
}
Beispiel #2
0
int main(int argc, char *argv[])
{
    context_t c;

    mrp_clear(&c);

    if (!parse_cmdline(&c, argc, argv))
        exit(1);

    mrp_log_set_mask(c.log_mask);
    mrp_log_set_target(c.log_target);

    if (c.server)
        mrp_log_info("Running as server, using D-BUS '%s'...", c.busaddr);
    else
        mrp_log_info("Running as client, using D-BUS '%s'...", c.busaddr);

    c.ml = mrp_mainloop_create();
    mrp_add_sighandler(c.ml, SIGINT , signal_handler, &c);

    if (c.server)
        server_setup(&c);
    else
        client_setup(&c);

    mrp_mainloop_run(c.ml);

    if (c.server)
        server_cleanup(&c);
    else
        client_cleanup(&c);

    return 0;
}
Beispiel #3
0
static void setup_logging(mrp_context_t *ctx)
{
    const char *target;

    target = mrp_log_parse_target(ctx->log_target);

    if (!target)
        mrp_log_error("invalid log target '%s'", ctx->log_target);
    else
        mrp_log_set_target(target);
}
Beispiel #4
0
static void config_set_defaults(ripncode_t *r, const char *argv0)
{
    mrp_clear(r);
    r->argv0      = argv0;
    r->device     = "/dev/cdrom";
    r->driver     = "linux";
    r->log_mask   = MRP_LOG_UPTO(MRP_LOG_WARNING);
    r->log_target = "stdout";

    mrp_log_set_mask(r->log_mask);
    mrp_log_set_target(r->log_target);
}
Beispiel #5
0
int main(int argc, char *argv[])
{
    mrp_fragbuf_t *buf;
    size_t         chunkstbl[][8] = {
        { 3, 1, 2, 3, 5, 0, 0, 0 },
        { 1, 2, 3, 4, 3, 2, 1, 0 },
        { 1, 5, 3, 4, 2, 1, 1, 0 },
        { 4, 3, 2, 1, 2, 3, 4, 0 },
    };
    size_t *chunks;
    size_t  single[]    = { 1, 0 };
    int     intervals[] = { 1, 2, 3, 4, 5, 0, -1 };
    int     i, j, interval;

    parse_cmdline(argc, argv);

    mrp_log_set_mask(ctx.log_mask);
    mrp_log_set_target(ctx.log_target);

    buf = mrp_fragbuf_create(ctx.framed, 0);

    if (buf == NULL)
        fatal("failed to create data collecting buffer");

    for (i = 0; i < (int)MRP_ARRAY_SIZE(intervals); i++) {
        interval = intervals[i];
        for (j = 0; j < (int)MRP_ARRAY_SIZE(chunkstbl); j++) {
            chunks = &chunkstbl[j][0];
            mrp_log_info("testing with interval %d, chunks #%d", interval, j);
            test(buf, chunks, interval);
            test(buf, single, interval);
            mrp_log_info("testing with interval %d, chunks #%d", -i -2, j);
            test(buf, chunks, -i - 2);
            test(buf, single, -i - 2);
        }
    }

    mrp_fragbuf_destroy(buf);

    return 0;
}
Beispiel #6
0
int main(int argc, char *argv[])
{
    mrp_mainloop_t *ml;

    mrp_clear(&cfg);
    parse_cmdline(&cfg, argc, argv);

    mrp_log_set_mask(cfg.log_mask);
    mrp_log_set_target(cfg.log_target);

    ml = mainloop_create(&cfg);

    if (ml == NULL)
        fatal("failed to create main loop.");

    dbus_test.ml = ml;
    setup_dbus_tests(ml);
    ml = dbus_test.ml;

    setup_timers(ml);
    setup_io(ml);
    setup_signals(ml);
    MRP_UNUSED(setup_deferred);   /* XXX TODO: add deferred tests... */

#ifdef GLIB_ENABLED
    if (cfg.mainloop_type != MAINLOOP_GLIB && cfg.mainloop_type != MAINLOOP_QT) {
        if (cfg.ngio > 0 || cfg.ngtimer > 0)
            glib_pump_setup(ml);
    }

    setup_glib_io();
    setup_glib_timers();
#endif

    if (mrp_add_timer(ml, 1000, check_quit, NULL) == NULL)
        fatal("failed to create quit-check timer");

    setup_wakeup(ml);

    mainloop_run(&cfg);

    check_io();
    check_timers();
    check_signals();

#ifdef GLIB_ENABLED
    check_glib_io();
    check_glib_timers();
#endif

    if (dbus_test.client != 0)
        close(dbus_test.pipe[1]);   /* let the client continue */

    check_dbus();

#ifdef GLIB_ENABLED
    if (cfg.mainloop_type != MAINLOOP_GLIB) {
        if (cfg.ngio > 0 || cfg.ngtimer > 0)
            glib_pump_cleanup();
    }
#endif

    cleanup_wakeup();

    mainloop_cleanup(&cfg);
}
Beispiel #7
0
static void parse_cmdline(ripncode_t *r, int argc, char **argv, char **envp)
{
#   define OPTIONS "d:c:t:f:m:L:T:v::d:nh"

    struct option options[] = {
        { "device"           , required_argument, NULL, 'd' },
        { "driver"           , required_argument, NULL, 'c' },
        { "tracks"           , required_argument, NULL, 't' },
        { "format"           , required_argument, NULL, 'f' },
        { "metadata"         , required_argument, NULL, 'm' },
        { "log-level"        , required_argument, NULL, 'L' },
        { "log-target"       , required_argument, NULL, 'T' },
        { "verbose"          , optional_argument, NULL, 'v' },
        { "debug"            , required_argument, NULL, 'd' },
        { "dry-run"          , no_argument      , NULL, 'n' },
        { "help"             , no_argument      , NULL, 'h' },
        { NULL , 0, NULL, 0 }
    };

    int opt, help;

    MRP_UNUSED(envp);

    help = FALSE;

    while ((opt = getopt_long(argc, argv, OPTIONS, options, NULL)) != -1) {
        switch (opt) {
        case 'D':
            r->device = optarg;
            if (access(r->device, R_OK) < 0)
                ripncode_fatal(r, "can't access '%s' (%d: %s).", r->device,
                               errno, strerror(errno));
            break;

        case 'c':
            r->driver = optarg;
            break;

        case 't':
            r->rip = optarg;
            parse_tracks(r);
            break;

        case 'f':
            r->format = optarg;
            break;

        case 'm':
            r->metadata = optarg;
            if (access(r->metadata, R_OK) < 0)
                ripncode_fatal(r, "can't access '%s' (%d: %s).", r->metadata,
                               errno, strerror(errno));
            break;

        case 'L':
            r->log_mask = mrp_log_parse_levels(optarg);
            mrp_log_set_mask(r->log_mask);
            break;

        case 'v':
            r->log_mask <<= 1;
            r->log_mask  |= 1;
            mrp_log_set_mask(r->log_mask);
            break;

        case 'T':
            r->log_target = optarg;
            mrp_log_set_target(r->log_target);
            break;

        case 'd':
            r->log_mask |= MRP_LOG_MASK_DEBUG;
            mrp_log_set_mask(r->log_mask);
            mrp_debug_set_config(optarg);
            mrp_debug_enable(TRUE);
            break;

        case 'n':
            r->dryrun = 1;
            break;

        case 'h':
            help++;
            break;

        default:
            print_usage(r, EINVAL, "invalid option '%c'", opt);
        }
    }

    if (help) {
        print_usage(r, -1, "");
        exit(0);
    }
}