Skip to content

Instantly share code, notes, and snippets.

@mike-burns
Created April 5, 2015 16:33

Revisions

  1. mike-burns created this gist Apr 5, 2015.
    47 changes: 47 additions & 0 deletions main.c
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,47 @@
    /*
    * gcc -g `pkg-config gtk+-3.0 --libs --cflags` main.c -o main
    */

    #include <err.h>
    #include <stddef.h>
    #include <stdlib.h>

    #include <gtk/gtk.h>

    extern int errno;

    __dead static void usage();

    int
    main(int argc, char *argv[])
    {
    GAppInfo *app_info;
    GFile *file;
    GError *error;

    if (argc < 2)
    usage();

    file = g_file_new_for_uri(argv[1]);

    error = NULL;
    app_info = g_file_query_default_handler(file, NULL, &error);
    g_object_unref(file);

    if (app_info == NULL)
    errx(1, "could not get app info from URI scheme: %s",
    error->message);

    printf("exec: '%s'\n", g_app_info_get_commandline(app_info));

    g_object_unref(app_info);

    return 0;
    }

    static void
    usage()
    {
    fprintf(stderr, "usage: ./main file-uri\n");
    exit(64);
    }