]> arthur.barton.de Git - bup.git/blob - dev/make-random-paths
README: reflect report that WSL works fine
[bup.git] / dev / make-random-paths
1 #!/bin/sh
2 """": # -*-python-*-
3 bup_python="$(dirname "$0")//bup-python" || exit $?
4 exec "$bup_python" "$0" ${1+"$@"}
5 """
6 # end of bup preamble
7
8 from __future__ import absolute_import, print_function
9
10 from os.path import abspath, dirname
11 from random import randint
12 from sys import argv, exit, stderr, stdout
13 import errno, re, sys
14
15 from bup.compat import fsencode, range
16
17
18 def usage(out=stdout):
19     print('Usage:', argv[0], 'NUM', 'DEST_DIR', file=out)
20
21 def misuse():
22     usage(stderr)
23     exit(2)
24
25 if sys.version_info[0] >= 3:
26     def bytes_from_ints(ints):
27         return bytes(ints)
28 else:
29     def bytes_from_ints(ints):
30         return ''.join([chr(x) for x in ints])
31
32 invalid_fragments = re.compile(br'(\x00|[./]|\.\.)')
33
34 def random_filename():
35     n = randint(1, 32)
36     def random_candidate():
37         return invalid_fragments.sub(b'', bytes_from_ints([randint(1, 255)
38                                                            for x in range(n)]))
39     candidate = random_candidate()
40     while not candidate:
41         candidate = random_candidate()
42     return candidate
43
44 if len(argv) != 3:
45     misuse()
46
47 count, dest = argv[1:]
48 count = int(count)
49
50 i = 0
51 while i < count:
52     with open(fsencode(dest) + b'/' + random_filename(), 'w') as _:
53         i += 1