$ git clone http://tcclient.ion.nu/tc_client.git
commit 84413b92a72d623b906d4c605d4db2351a99a34c
Author: Alicia <...>
Date: Sat May 23 18:10:59 2015 +0200
Added an 'install' make target, adjusted utilities to run tc_client from PATH unless they were run from the build directory (i.e. './<executable>')
diff --git a/ChangeLog b/ChangeLog
index 3cc21f3..2420b4b 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,4 +1,5 @@
0.32:
+Added an 'install' make target, adjusted utilities to run tc_client from PATH unless they were run from the build directory (i.e. './<executable>')
irchack: send passwords by pipe, not argument.
tc_client-gtk: ignore anything after the offset in /mbs commands.
0.31:
diff --git a/Makefile b/Makefile
index ad075f4..af9513d 100644
--- a/Makefile
+++ b/Makefile
@@ -1,6 +1,7 @@
VERSION=0.32pre
CFLAGS=-g3 -Wall $(shell curl-config --cflags)
LIBS=-g3 $(shell curl-config --libs)
+PREFIX=/usr/local
ifneq ($(wildcard config.mk),)
include config.mk
endif
@@ -17,6 +18,7 @@ ifdef AVUTIL_LIBS
ifdef SWSCALE_LIBS
UTILS+=camviewer tc_client-gtk
CFLAGS+=$(GTK_CFLAGS) $(AVCODEC_CFLAGS) $(AVUTIL_CFLAGS) $(SWSCALE_CFLAGS)
+ INSTALLDEPS+=tc_client-gtk gtkgui.glade
ifdef AO_LIBS
ifdef AVRESAMPLE_LIBS
CFLAGS+=-DHAVE_AVRESAMPLE=1 $(AVRESAMPLE_CFLAGS) $(AO_CFLAGS)
@@ -36,8 +38,11 @@ ifdef CURSES_LIBS
ifdef READLINE_LIBS
UTILS+=cursedchat
CFLAGS+=$(CURSES_CFLAGS) $(READLINE_CFLAGS)
+ INSTALLDEPS+=cursedchat
endif
endif
+CFLAGS+=-DPREFIX=\"$(PREFIX)\"
+INSTALLDEPS=tc_client
tc_client: $(OBJ)
$(CC) $(LDFLAGS) $^ $(LIBS) -o $@
@@ -71,3 +76,21 @@ SOURCES+=utilities/gtk/camviewer.c utilities/gtk/userlist.c utilities/gtk/media.
SOURCES+=utilities/compat.c utilities/compat.h utilities/list.c utilities/list.h utilities/stringutils.c utilities/stringutils.h
tarball:
tar -cJf tc_client-$(VERSION).tar.xz --transform='s|^|tc_client-$(VERSION)/|' $(SOURCES)
+
+install: $(INSTALLDEPS)
+ install -m 755 -D tc_client "$(PREFIX)/bin/tc_client"
+ifdef GTK_LIBS
+ifdef AVCODEC_LIBS
+ifdef AVUTIL_LIBS
+ifdef SWSCALE_LIBS
+ install -m 755 -D tc_client-gtk "$(PREFIX)/bin/tc_client-gtk"
+ install -D gtkgui.glade "$(PREFIX)/share/tc_client/gtkgui.glade"
+endif
+endif
+endif
+endif
+ifdef CURSES_LIBS
+ifdef READLINE_LIBS
+ install -m 755 -D cursedchat "$(PREFIX)/bin/tc_client-cursedchat"
+endif
+endif
diff --git a/configure b/configure
index 6d37dbf..7d21e90 100755
--- a/configure
+++ b/configure
@@ -6,6 +6,7 @@ host=''
while [ "$#" -gt 0 ]; do
case "$1" in
--host=*) host="`echo "$1" | sed -e 's/--host=//'`";;
+ --prefix=*) echo "$1" | sed -e 's/--prefix=/PREFIX=/' >> config.mk;;
esac
shift
done
diff --git a/utilities/camviewer/camviewer.c b/utilities/camviewer/camviewer.c
index 1d83ca9..ac52f75 100644
--- a/utilities/camviewer/camviewer.c
+++ b/utilities/camviewer/camviewer.c
@@ -505,8 +505,8 @@ int main(int argc, char** argv)
close(tc_client_in[1]);
dup2(tc_client[1], 1);
dup2(tc_client_in[0], 0);
- argv[0]="./tc_client";
- execv("./tc_client", argv);
+ argv[0]=(strncmp(argv[0], "./", 2)?"tc_client":"./tc_client");
+ execvp(argv[0], argv);
}
close(tc_client_in[0]);
GIOChannel* tcchannel=g_io_channel_unix_new(tc_client[0]);
diff --git a/utilities/cursedchat/cursedchat.c b/utilities/cursedchat/cursedchat.c
index 60ddc5e..dd3ad67 100644
--- a/utilities/cursedchat/cursedchat.c
+++ b/utilities/cursedchat/cursedchat.c
@@ -331,7 +331,7 @@ char* completenicks(const char* text, int state)
int main(int argc, char** argv)
{
- if(argc<3){execv("./tc_client", argv); return 1;}
+ if(argc<3){execvp(strncmp(argv[0], "./", 2)?"tc_client":"./tc_client", argv); return 1;}
setlocale(LC_ALL, "");
WINDOW* w=initscr();
signal(SIGWINCH, resizechat);
@@ -373,8 +373,8 @@ int main(int argc, char** argv)
close(app_out[0]);
dup2(app_in[0],0);
dup2(app_out[1],1);
- argv[0]="./tc_client";
- execv("./tc_client", argv);
+ argv[0]=(strncmp(argv[0], "./", 2)?"tc_client":"./tc_client");
+ execvp(argv[0], argv);
_exit(1);
}
close(app_in[0]);
diff --git a/utilities/gtk/camviewer.c b/utilities/gtk/camviewer.c
index 82aa5cc..4990b21 100644
--- a/utilities/gtk/camviewer.c
+++ b/utilities/gtk/camviewer.c
@@ -76,6 +76,8 @@ int tc_client_in[2];
const char* channel=0;
const char* mycolor=0;
char* nickname=0;
+char frombuild=0; // Running from the build directory
+#define TC_CLIENT (frombuild?"./tc_client":"tc_client")
void updatescaling(struct viddata* data, unsigned int width, unsigned int height)
{
@@ -720,9 +722,9 @@ void startsession(GtkButton* button, struct viddata* data)
dup2(tc_client_in[0], 0);
if(acc_user[0])
{
- execl("./tc_client", "./tc_client", "-u", acc_user, channel, nick, chanpass, (char*)0);
+ execlp(TC_CLIENT, TC_CLIENT, "-u", acc_user, channel, nick, chanpass, (char*)0);
}else{
- execl("./tc_client", "./tc_client", channel, nick, chanpass, (char*)0);
+ execlp(TC_CLIENT, TC_CLIENT, channel, nick, chanpass, (char*)0);
}
}
if(acc_user[0]){dprintf(tc_client_in[1], "%s\n", acc_pass);}
@@ -766,6 +768,7 @@ void startsession(GtkButton* button, struct viddata* data)
int main(int argc, char** argv)
{
+ if(!strncmp(argv[0], "./", 2)){frombuild=1;}
struct viddata data={0,0,0,0,0};
avcodec_register_all();
data.vdecoder=avcodec_find_decoder(AV_CODEC_ID_FLV1);
@@ -801,7 +804,13 @@ int main(int argc, char** argv)
#endif
gtk_init(&argc, &argv);
- GtkBuilder* gui=gtk_builder_new_from_file("gtkgui.glade");
+ GtkBuilder* gui;
+ if(frombuild)
+ {
+ gui=gtk_builder_new_from_file("gtkgui.glade");
+ }else{
+ gui=gtk_builder_new_from_file(PREFIX "/share/tc_client/gtkgui.glade");
+ }
gtk_builder_connect_signals(gui, 0);
data.gui=gui;
diff --git a/utilities/irchack/irchack.c b/utilities/irchack/irchack.c
index 516d746..e50835b 100644
--- a/utilities/irchack/irchack.c
+++ b/utilities/irchack/irchack.c
@@ -46,6 +46,8 @@ struct color colortable[]={
{"35;1", "\x03""13"},
{"35;1", "\x03""13"}
};
+char frombuild=0; // Running from the source directory
+#define TC_CLIENT (frombuild?"./tc_client":"tc_client")
const char* findcolor_irc(const char* ansi)
{
@@ -189,9 +191,9 @@ char session(int sock, const char* nick, const char* channel, const char* pass,
dup2(tc_out[1], 1);
if(acc_user && acc_pass)
{
- execl("./tc_client", "./tc_client", "-u", acc_user, channel, nick, pass, (char*)0);
+ execlp(TC_CLIENT, TC_CLIENT, "-u", acc_user, channel, nick, pass, (char*)0);
}else{
- execl("./tc_client", "./tc_client", channel, nick, pass, (char*)0);
+ execlp(TC_CLIENT, TC_CLIENT, channel, nick, pass, (char*)0);
}
perror("Failed to exec tc_client");
_exit(1);
diff --git a/utilities/modbot/modbot.c b/utilities/modbot/modbot.c
index 4f02146..1b8a9d9 100644
--- a/utilities/modbot/modbot.c
+++ b/utilities/modbot/modbot.c
@@ -224,7 +224,7 @@ int main(int argc, char** argv)
"-l/--log <file> = log output into <file>\n"
"-v/--verbose = print/log all incoming messages\n"
"\n");
- execv("./tc_client", argv);
+ execvp(strncmp(argv[0], "./", 2)?"tc_client":"./tc_client", argv);
return 1;
}
}
@@ -238,7 +238,7 @@ int main(int argc, char** argv)
close(out[0]);
dup2(in[0], 0);
dup2(out[1], 1);
- execv("./tc_client", argv);
+ execvp(strncmp(argv[0], "./", 2)?"tc_client":"./tc_client", argv);
_exit(1);
}
close(in[0]);