summaryrefslogtreecommitdiffstats
path: root/source/lib
diff options
context:
space:
mode:
authorJeremy Allison <jra@samba.org>2001-04-12 07:00:08 +0000
committerJeremy Allison <jra@samba.org>2001-04-12 07:00:08 +0000
commit71a330987f990007beb16f00fc468107361b5e9d (patch)
tree9b5b636a1a34567ea398115262511daf8ab03a52 /source/lib
parent1e38eef54d729aeb7fe905b344cf1480c686a348 (diff)
downloadsamba-71a330987f990007beb16f00fc468107361b5e9d.tar.gz
samba-71a330987f990007beb16f00fc468107361b5e9d.tar.xz
samba-71a330987f990007beb16f00fc468107361b5e9d.zip
Changed lp_add/delete/enum scripts to use lockdir if spool dir doesn't
exist for printer. Rather than using pid for suffix, use a 16 byte random string. Created generate_random_str() function in genrand.c. Still needs more testing but this is the way to go. Jeremy.
Diffstat (limited to 'source/lib')
-rw-r--r--source/lib/genrand.c24
1 files changed, 24 insertions, 0 deletions
diff --git a/source/lib/genrand.c b/source/lib/genrand.c
index 102eec63009..67fbbc7a06c 100644
--- a/source/lib/genrand.c
+++ b/source/lib/genrand.c
@@ -227,3 +227,27 @@ void generate_random_buffer( unsigned char *out, int len, BOOL re_seed)
len -= copy_len;
}
}
+
+/*******************************************************************
+ Use the random number generator to generate a random string.
+********************************************************************/
+
+static char c_list[] = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+ _-#.,";
+
+char *generate_random_str(size_t len)
+{
+ static unsigned char retstr[256];
+ size_t i;
+
+ memset(retstr, '\0', sizeof(retstr));
+
+ if (len > sizeof(retstr)-1)
+ len = sizeof(retstr) -1;
+ generate_random_buffer( retstr, len, False);
+ for (i = 0; i < len; i++)
+ retstr[i] = c_list[ retstr[i] % sizeof(c_list) ];
+
+ retstr[i] = '\0';
+
+ return retstr;
+}