A LOT updates. Cannot separate. :)
[silc.git] / lib / silcutil / silcutil.c
index 39b9ab1ad92eb7a79c5f297f8a70324833a9fad4..81b5afe2e41fc76345850024037b214f8a7e1a4c 100644 (file)
  * These are general utility functions that doesn't belong to any specific
  * group of routines.
  */
-/*
- * $Id$
- * $Log$
- * Revision 1.1  2000/09/13 17:45:16  priikone
- *     Splitted SILC core library. Core library includes now only
- *     SILC protocol specific stuff. New utility library includes the
- *     old stuff from core library that is more generic purpose stuff.
- *
- * Revision 1.4  2000/07/19 07:04:04  priikone
- *     Minor bug fix in silc_encode_pem
- *
- * Revision 1.3  2000/07/10 05:34:40  priikone
- *     Added PEM encoding/decoding functions.
- *
- * Revision 1.2  2000/07/05 06:06:12  priikone
- *     Added file saving with specific mode.
- *
- * Revision 1.1.1.1  2000/06/27 11:36:55  priikone
- *     Imported from internal CVS/Added Log headers.
- *
- *
- */
+/* $Id$ */
 
 #include "silcincludes.h"
 
@@ -84,8 +63,10 @@ char *silc_file_read(const char *filename, int *return_len)
 
   close(fd);
   buffer[filelen] = EOF;
-  
-  *return_len = filelen;
+
+  if (return_len)
+    *return_len = filelen;
+
   return buffer;
 }
 
@@ -547,3 +528,19 @@ void silc_parse_command_line(unsigned char *buffer,
 
   *parsed_num = argc;
 }
+
+/* Formats arguments to a string and returns it after allocating memory
+   for it. It must be remembered to free it later. */
+
+char *silc_format(char *fmt, ...)
+{
+  va_list args;
+  static char buf[8192];
+
+  memset(buf, 0, sizeof(buf));
+  va_start(args, fmt);
+  vsnprintf(buf, sizeof(buf) - 1, fmt, args);
+  va_end(args);
+
+  return strdup(buf);
+}