diff options
Diffstat (limited to 'mqueue_remove.c')
-rw-r--r-- | mqueue_remove.c | 85 |
1 files changed, 85 insertions, 0 deletions
diff --git a/mqueue_remove.c b/mqueue_remove.c new file mode 100644 index 0000000..e0ad775 --- /dev/null +++ b/mqueue_remove.c @@ -0,0 +1,85 @@ +#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; +}
\ No newline at end of file |