16 fmt.Fprintf(os.Stdout, "pickrand.go: picks a random file.\n")
17 fmt.Fprintf(os.Stdout, "\n")
20 prevDays := flag.Int("n", 0, "The number of days back to look.")
22 var maxDuration time.Duration
24 maxDuration = time.Duration(int64(*prevDays) * (24 * 60 * 60 * 1e9))
31 files := make([]string, 0, 32)
32 err := filepath.Walk(root, func(p string, f os.FileInfo, err error) error {
37 var duration = time.Now().Sub(f.ModTime())
38 if duration > maxDuration {
43 files = append(files, p)
48 fmt.Fprintf(os.Stderr, "** Error: %s\n", err.Error())
52 fmt.Fprintf(os.Stderr, "No matching files found.\n")
56 _, err = rand.Read(b[:])
58 fmt.Fprintf(os.Stderr, "Failed to access cryptographic randomness. " +
59 "Error: %s\n\n", err.Error())
62 i, err := rand.Int(bytes.NewReader(b[:]), big.NewInt(int64(len(files))))
64 fmt.Fprintf(os.Stderr, "Failed to get a random int. Error: %s\n", err.Error())
69 fmt.Printf("%s\n", files[j])