Mercurial > hg > mlmmj
view src/strgen.c @ 0:21ce01de8109
Initial revision
author | mmj |
---|---|
date | Thu, 22 Apr 2004 04:02:09 +1000 |
parents | |
children | 762570b02394 |
line wrap: on
line source
/* Copyright (C) 2003 Mads Martin Joergensen <mmj at mmj.dk> * * $Id$ * * This file is redistributable under version 2 of the GNU General * Public License as described at http://www.gnu.org/licenses/gpl.txt */ #include <stdio.h> #include <stdlib.h> #include <string.h> #include <stdarg.h> #include "strgen.h" #include "wrappers.h" char *random_str() { size_t len = 16; char *dest = malloc(len); snprintf(dest, len, "%d", random_int()); return dest; } char *random_plus_addr(const char *addr) { size_t len = strlen(addr) + 16; char *dest = malloc(len); char *atsign; char *tmpstr; tmpstr = malloc(len); snprintf(tmpstr, len, "%s", addr); atsign = index(tmpstr, '@'); *atsign = '='; snprintf(dest, len, "%d-%s", random_int(), tmpstr); free(tmpstr); return dest; } char *headerstr(const char *headertoken, const char *str) { size_t len = strlen(headertoken) + strlen(str) + 2; char *dest = malloc(len); snprintf(dest, len, "%s%s\n", headertoken, str); return dest; } char *gendirname(const char *listdir, const char *subdir, const char *filename) { size_t len = strlen(listdir) + strlen(subdir) + strlen(filename) + 1; char *dest = malloc(len); snprintf(dest, len, "%s%s%s", listdir, subdir, filename); return dest; } char *genfilename(const char *dir, const char *file) { size_t len = strlen(dir) + strlen(file) + 1; char *dest = malloc(len); snprintf(dest, len, "%s%s", dir, file); return dest; } char *genlistname(const char *listaddr) { size_t len; char *dest, *atsign; atsign = index(listaddr, '@'); len = atsign - listaddr + 1; dest = malloc(len); snprintf(dest, len, "%s", listaddr); return dest; } char *genlistfqdn(const char *listaddr) { size_t len; char *dest, *atsign; atsign = index(listaddr, '@'); len = strlen(listaddr) - (atsign - listaddr); dest = malloc(len); snprintf(dest, len, "%s", atsign + 1); return dest; } char *concatstr(int count, ...) { va_list arg; const char *str; int i; size_t len = 0; char *retstr; va_start(arg, count); for(i = 0; i < count; i++) { str = va_arg(arg, const char *); if(str) len += strlen(str); } retstr = malloc(len + 1); retstr[0] = retstr[len] = 0; va_start(arg, count); for(i = 0; i < count; i++) { str = va_arg(arg, const char *); if(str) strcat(retstr, str); } va_end(arg); return retstr; }