#include <err.h>
#define die(...) errx(EXIT_FAILURE, __VA_ARGS__);
+#define FREE(pointer) do { \
+ if (pointer != NULL) { \
+ free(pointer); \
+ pointer = NULL; \
+ } \
+} \
+while (0)
char *convert_ucs_to_utf8(char *input);
char *convert_utf8_to_ucs2(char *input, int *real_strlen);
while ((o = getopt_long(argc, argv, options_string, long_options, &option_index)) != -1) {
switch (o) {
case 's':
+ FREE(socket_path);
socket_path = strdup(optarg);
break;
case 'v':
printf("i3-input " I3_VERSION);
return 0;
case 'p':
+ FREE(command_prefix);
command_prefix = strdup(optarg);
break;
case 'l':
limit = atoi(optarg);
break;
case 'P':
+ FREE(prompt);
prompt = strdup(optarg);
break;
case 'f':
+ FREE(pattern);
pattern = strdup(optarg);
break;
case 'h':
while ((o = getopt_long(argc, argv, options_string, long_options, &option_index)) != -1) {
if (o == 's') {
+ if (socket_path != NULL)
+ free(socket_path);
socket_path = strdup(optarg);
} else if (o == 't') {
if (strcasecmp(optarg, "command") == 0)
autostart = false;
break;
case 'L':
+ FREE(layout_path);
layout_path = sstrdup(optarg);
delete_layout_path = false;
break;
case 'c':
+ FREE(override_configpath);
override_configpath = sstrdup(optarg);
break;
case 'C':
"and disable this option as soon as you can.\n");
break;
} else if (strcmp(long_options[option_index].name, "restart") == 0) {
+ FREE(layout_path);
layout_path = sstrdup(optarg);
delete_layout_path = true;
break;