add temporary directory
[webserver.git] / file.c
diff --git a/file.c b/file.c
index 47f91a7c8b21b647844bd8a378bfbcb271e103c7..472ab4252a16e5b9d719733c3295155fbb9f3972 100644 (file)
--- a/file.c
+++ b/file.c
@@ -1,11 +1,14 @@
 #include <malloc.h>
 #include <stdio.h>
 #include <stdlib.h>
+#include <string.h>
 
 #include "debug.h"
 
 #include "file.h"
 
+#define TLEN 8
+
 /* read full file */
 
 int readfile (char **buffer, char *filename)
@@ -36,4 +39,21 @@ int readfile (char **buffer, char *filename)
     return size;
 }
 
+/* temp name */
+
+char *tempname (char *tempdir)
+{
+    char table[65] = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz-_";
+
+    unsigned int len = strlen (tempdir) + 1 + 4 + TLEN + 1;
+    char *name = (char *) calloc (len, 1);
+
+    sprintf (name, "%s/tmp-", tempdir);
+    while (strlen (name) + 1 < len) {
+        name[strlen (name)] = table[rand () % 64];
+    }
+
+    return name;
+}
+
 /* vim: set ts=4 sw=4 et: */