X-Git-Url: https://git.gag.com/?a=blobdiff_plain;f=server-src%2Famindex.c;h=c87c22b9189ce1a057add0d250a74e6622e8deb9;hb=d28952249e392eb31bc8eecc53f6c477f30c617b;hp=7c52bd380564043709666ffa4f51a23dbc93f03c;hpb=94a044f90357edefa6f4ae9f0b1d5885b0e34aee;p=debian%2Famanda diff --git a/server-src/amindex.c b/server-src/amindex.c index 7c52bd3..c87c22b 100644 --- a/server-src/amindex.c +++ b/server-src/amindex.c @@ -1,6 +1,7 @@ /* * Amanda, The Advanced Maryland Automatic Network Disk Archiver * Copyright (c) 1991-1998 University of Maryland at College Park + * Copyright (c) 2007-2012 Zmanda, Inc. All Rights Reserved. * All Rights Reserved. * * Permission to use, copy, modify, distribute, and sell this software and its @@ -91,6 +92,63 @@ getindexfname( return buf; } +char * +getheaderfname( + char * host, + char * disk, + char * date, + int level) +{ + char *conf_indexdir; + char *buf; + char level_str[NUM_STR_SIZE]; + char datebuf[14 + 1]; + char *dc = NULL; + char *pc; + int ch; + + if (date != NULL) { + dc = date; + pc = datebuf; + while (pc < datebuf + sizeof(datebuf)) { + ch = *dc++; + *pc++ = (char)ch; + if (ch == '\0') { + break; + } else if (! isdigit (ch)) { + pc--; + } + } + datebuf[sizeof(datebuf)-1] = '\0'; + dc = datebuf; + + g_snprintf(level_str, sizeof(level_str), "%d", level); + } + + host = sanitise_filename(host); + if (disk != NULL) { + disk = sanitise_filename(disk); + } + + conf_indexdir = config_dir_relative(getconf_str(CNF_INDEXDIR)); + /* + * Note: g_strjoin(NULL, ) will stop at the first NULL, which might be + * "disk" or "dc" (datebuf) rather than the full file name. + */ + buf = g_strjoin(NULL, conf_indexdir, "/", + host, "/", + disk, "/", + dc, "_", + level_str, ".header", + NULL); + + amfree(conf_indexdir); + amfree(host); + amfree(disk); + + return buf; +} + char * getoldindexfname( char * host,