From 3916a66a87a639a1733cfe4fb33f32904eda7f59 Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Tue, 9 Nov 2004 00:14:07 +0000 Subject: export FQDN instead of hostname git-svn-id: file:///home/lennart/svn/public/pulseaudio/trunk@277 fefdeb5f-60dc-0310-8127-8f9354f1896f --- polyp/pax11publish.c | 13 +++++++++++-- polyp/util.c | 20 ++++++++++++++++++++ polyp/util.h | 1 + 3 files changed, 32 insertions(+), 2 deletions(-) (limited to 'polyp') diff --git a/polyp/pax11publish.c b/polyp/pax11publish.c index d1391dcf..fc1d6ab7 100644 --- a/polyp/pax11publish.c +++ b/polyp/pax11publish.c @@ -87,7 +87,12 @@ int main(int argc, char *argv[]) { dname = optarg; break; case 'h': - printf("%s [-D display] [-S server] [-O sink] [-I source] [-c file] [-d|-e|-i|-r]\n", pa_path_get_filename(argv[0])); + printf("%s [-D display] [-S server] [-O sink] [-I source] [-c file] [-d|-e|-i|-r]\n\n" + " -d Show current Polypaudio data attached to X11 display (default)\n" + " -e Export local Polypaudio data to X11 display\n" + " -i Import Polypaudio data from X11 display to local environment variables and cookie file.\n" + " -r Remove Polypaudio data from X11 display\n", + pa_path_get_filename(argv[0])); ret = 0; goto finish; case 'd': @@ -195,7 +200,11 @@ int main(int argc, char *argv[]) { set_x11_prop(d, "POLYP_SERVER", c->default_server); else { char hn[256]; - pa_get_host_name(hn, sizeof(hn)); + if (!pa_get_fqdn(hn, sizeof(hn))) { + fprintf(stderr, "Failed to get FQDN.\n"); + goto finish; + } + set_x11_prop(d, "POLYP_SERVER", hn); } diff --git a/polyp/util.c b/polyp/util.c index b4c16dbb..ad91a307 100644 --- a/polyp/util.c +++ b/polyp/util.c @@ -43,6 +43,7 @@ #include #include #include +#include #include @@ -773,3 +774,22 @@ size_t pa_parsehex(const char *p, uint8_t *d, size_t dlength) { return j; } + +char *pa_get_fqdn(char *s, size_t l) { + char hn[256]; + struct addrinfo *a, hints; + + if (!pa_get_host_name(hn, sizeof(hn))) + return NULL; + + memset(&hints, 0, sizeof(hints)); + hints.ai_family = AF_UNSPEC; + hints.ai_flags = AI_CANONNAME; + + if (getaddrinfo(hn, NULL, &hints, &a) < 0 || !a || !a->ai_canonname || !*a->ai_canonname) + return pa_strlcpy(s, hn, l); + + pa_strlcpy(s, a->ai_canonname, l); + freeaddrinfo(a); + return s; +} diff --git a/polyp/util.h b/polyp/util.h index 2448b0fa..3f09a9a7 100644 --- a/polyp/util.h +++ b/polyp/util.h @@ -46,6 +46,7 @@ char *pa_strlcpy(char *b, const char *s, size_t l); char *pa_get_user_name(char *s, size_t l); char *pa_get_host_name(char *s, size_t l); +char *pa_get_fqdn(char *s, size_t l); char *pa_get_binary_name(char *s, size_t l); char *pa_get_home_dir(char *s, size_t l); -- cgit