X-Git-Url: https://git.jankratochvil.net/?p=gnokii.git;a=blobdiff_plain;f=common%2Fmisc.c;fp=common%2Fmisc.c;h=9ab975fb74a8ca363ed8a6558e03c90e0910e756;hp=d9c57ad824830c8774dd7c7ca764d79f72ac1bb4;hb=7fe9e12e4451190f8ca2543a98de9abd4f9b8958;hpb=4ee1266711b695852ec88f06784fd84400cd70bb;ds=sidebyside diff --git a/common/misc.c b/common/misc.c index d9c57ad..9ab975f 100644 --- a/common/misc.c +++ b/common/misc.c @@ -11,8 +11,11 @@ $Id$ $Log$ - Revision 1.1.1.1 2001/11/25 21:59:04 short - :pserver:cvs@pserver.samba.org:/cvsroot - gnokii - Sun Nov 25 22:56 CET 2001 + Revision 1.1.1.2 2001/11/27 04:19:24 short + :pserver:cvs@pserver.samba.org:/cvsroot - gnokii - Tue Nov 27 05:17 CET 2001 + + Revision 1.20 2001/11/26 18:06:08 pkot + Checking for *printf functions, N_(x) for localization, generic ARRAY_LEN, SAFE_STRNCPY, G_GNUC_PRINTF (Jan Kratochvil) Revision 1.19 2001/11/22 17:56:53 pkot smslib update. sms sending @@ -46,6 +49,7 @@ */ #include +#include #include "misc.h" int GetLine(FILE *File, char *Line, int count) @@ -55,8 +59,8 @@ int GetLine(FILE *File, char *Line, int count) if (fgets(Line, count, File)) { ptr = Line + strlen(Line) - 1; - while ( (*ptr == '\n' || *ptr == '\r') && ptr>=Line) - *ptr--='\0'; + while ( (*ptr == '\n' || *ptr == '\r') && ptr >= Line) + *ptr-- = '\0'; return strlen(Line); } @@ -126,4 +130,49 @@ inline char *GetModel (const char *num) return (GetPhoneModel(num)->model); } +#ifndef HAVE_VASPRINTF +/* Adapted from snprintf(3) man page: */ +int gvasprintf(char **destp, const char *fmt, va_list ap) +{ + int n, size = 0x100; + char *p, *pnew; + if (!(p = malloc(size))) { + *destp = NULL; + return(-1); + } + for (;;) { + /* Try to print in the allocated space. */ + n = gvsprintf(p, size, fmt, ap); + /* If that worked, return the string. */ + if (n > -1 && n < size) { + *destp = p; + return(n); + } + /* Else try again with more space. */ + if (n > -1) /* glibc 2.1 */ + size = n + 1; /* precisely what is needed */ + else /* glibc 2.0 */ + size *= 2; /* twice the old size */ + if (!(pnew = realloc(p, size))) { + free(p); + *destp = NULL; + return(-1); + } + p = pnew; + } +} +#endif + +#ifndef HAVE_ASPRINTF +int gasprintf(char **destp, const char *fmt,...) +{ + va_list ap; + int r; + + va_start(ap,fmt); + r = gvasprintf(destp, fmt, ap); + va_end(ap); + return(r); +} +#endif