Use correct default-path for ipc-socket

next
Axel Wagner 2010-08-06 04:11:44 +02:00
parent fae997038d
commit 36445f500f
1 changed files with 23 additions and 8 deletions

View File

@ -6,10 +6,26 @@
#include <errno.h>
#include <ev.h>
#include <getopt.h>
#include <glob.h>
#include "common.h"
char *i3_default_sock_path = "/home/mero/.i3/ipc.sock";
char *i3_default_sock_path = "~/.i3/ipc.sock";
char *expand_path(char *path) {
static glob_t globbuf;
if (glob(path, GLOB_NOCHECK | GLOB_TILDE, NULL, &globbuf) < 0) {
printf("glob() failed");
exit(EXIT_FAILURE);
}
char *result = strdup(globbuf.gl_pathc > 0 ? globbuf.gl_pathv[0] : path);
if (result == NULL) {
printf("malloc() failed");
exit(EXIT_FAILURE);
}
globfree(&globbuf);
return result;
}
int main(int argc, char **argv) {
int opt;
@ -29,16 +45,13 @@ int main(int argc, char **argv) {
while ((opt = getopt_long(argc, argv, "s:c:f:h", long_opt, &option_index)) != -1) {
switch (opt) {
case 's':
socket_path = malloc(strlen(optarg));
strcpy(socket_path, optarg);
socket_path = expand_path(optarg);
break;
case 'c':
command = malloc(strlen(optarg));
strcpy(command, optarg);
command = strdup(optarg);
break;
case 'f':
fontname = malloc(strlen(optarg));
strcpy(socket_path, optarg);
fontname = strdup(optarg);
break;
default:
printf("Usage: %s [-s socket_path] [-c command] [-f font] [-h]\n", argv[0]);
@ -57,7 +70,7 @@ int main(int argc, char **argv) {
if (socket_path == NULL) {
printf("No Socket Path Specified, default to %s\n", i3_default_sock_path);
socket_path = i3_default_sock_path;
socket_path = expand_path(i3_default_sock_path);
}
main_loop = ev_default_loop(0);
@ -66,6 +79,8 @@ int main(int argc, char **argv) {
init_outputs();
init_connection(socket_path);
FREE(socket_path);
subscribe_events();
i3_send_msg(I3_IPC_MESSAGE_TYPE_GET_OUTPUTS, NULL);