From 325c86073b19eb4203ea69acc7fdf1a6017a06b1 Mon Sep 17 00:00:00 2001 From: Ron Pedde Date: Mon, 16 Oct 2006 03:52:45 +0000 Subject: [PATCH] Add hostname (%h) and version (%v) templates for the servername parameter --- src/conf.c | 72 +++++++++++++++++++++++++++++++++++++++++++++++++----- src/main.c | 5 ++++ 2 files changed, 71 insertions(+), 6 deletions(-) diff --git a/src/conf.c b/src/conf.c index 03be5698..d6c130ec 100644 --- a/src/conf.c +++ b/src/conf.c @@ -1635,19 +1635,79 @@ char *conf_get_filename(void) { */ char *conf_get_servername(void) { char *retval; - char newname[HOST_NAME_MAX + 1 + 16]; /* " Firefly Server" */ + char *default_name = "firefly %v on %h"; + char hostname[HOST_NAME_MAX + 1]; /* " Firefly Server" */ + char *template, *src, *dst; + int len; - gethostname(newname,HOST_NAME_MAX); - retval = strchr(newname,'.'); + gethostname(hostname,HOST_NAME_MAX); + retval = strchr(hostname,'.'); if(retval) *retval = '\0'; - retval = newname; + retval = hostname; while(*retval) { *retval = tolower(*retval); retval++; } - strcat(newname," Firefly Server"); + template = conf_alloc_string("general","servername",default_name); + src = template; + len = 0; + while(*src) { + if(*src == '%') { + src++; + switch(*src) { + case 'h': + len += strlen(hostname); + src++; + break; + case 'v': + len += strlen(VERSION); + src++; + break; + default: + len += 2; + src++; + break; + } + } else { + len++; + src++; + } + } - return conf_alloc_string("general","servername",newname); + retval = (char*)malloc(len+1); + if(!retval) DPRINTF(E_FATAL,L_MISC,"malloc"); + + memset(retval,0,len+1); + + dst = retval; + src = template; + + while(*src) { + if(*src == '%') { + src++; + switch(*src) { + case 'h': + strcat(dst,hostname); + dst += strlen(hostname); + src ++; + break; + case 'v': + strcat(dst,VERSION); + dst += strlen(VERSION); + src++; + break; + default: + *dst++ = '%'; + *dst++ = *src++; + break; + } + } else { + *dst++ = *src++; + } + + } + + return retval; } diff --git a/src/main.c b/src/main.c index ce6540df..85d097f9 100644 --- a/src/main.c +++ b/src/main.c @@ -132,6 +132,11 @@ void txt_add(char *txtrecord, char *fmt, ...) { va_end(ap); len = (int)strlen(buff); + if(len + strlen(txtrecord) > 255) { + DPRINTF(E_FATAL,L_MAIN,"dns-sd text string too long. Try a shorter " + "share name.\n"); + } + end = txtrecord + strlen(txtrecord); *end = len; strcpy(end+1,buff);