summaryrefslogblamecommitdiffstats
path: root/mqueue_remove.c
blob: e0ad7750631cc354285c94d7a0e0075003ea94ea (plain) (tree)




















































































                                                                          
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include <getopt.h>
#include <unistd.h>
#include <mqueue.h>
#include <errno.h>

typedef struct {
    char *f_mqname;
    int   f_verbose;
    int   f_helper;
} mqueue_params;

mqueue_params g_params;

void helper(char *progname)
{
    printf("Usage: %s [OPTS] VALUE\n\n"
        "Version: 0.0.1 \n"
        "-m mqueue name\n"
        "-v verbose output\n"
        "-h help options\n"
        "\n"
        , progname);
}

#define full_mqpath_len 1024

int main(int argc, char **argv)
{
    //stack params
    int ret=0;
    int c,err;
    int i;
    int mq_fd;
    char full_mqpath[full_mqpath_len];
    

    memset(&g_params,0,sizeof(g_params));

    //process arguments
    while ((c = getopt(argc, argv, "m:vh")) != -1)
    {
        switch (c)
        {
            case 'm':
                g_params.f_mqname = optarg;
                break;
            case 'v':
                g_params.f_verbose = 1;
                break;
            case 'h':
            default:
                helper(argv[0]);
                exit(1);
        }
    }

    if (g_params.f_helper)
    {
        helper(argv[0]);
        return 0;
    }

    //set mqueue name
    if (g_params.f_mqname == NULL)
    {
        g_params.f_mqname = "/stack-0";
    }

    //compose string
    memset(&full_mqpath[0], 0, full_mqpath_len);
    snprintf(&full_mqpath[0], full_mqpath_len-1, "%s", g_params.f_mqname);
    if (g_params.f_verbose)
    {
        printf("Full path: %s\n",&full_mqpath);
    }
    
    mq_unlink(g_params.f_mqname);

    close(mq_fd);

    return ret;
}