1# ex:ts=8 sw=4:
2# $OpenBSD: Find.pm,v 1.2 2005/03/05 11:02:35 espie Exp $
3# Copyright (c) 2000-2004 Marc Espie <espie@openbsd.org>
4#
5# Permission to use, copy, modify, and distribute this software for any
6# purpose with or without fee is hereby granted, provided that the above
7# copyright notice and this permission notice appear in all copies.
8#
9# THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
10# WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
11# MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
12# ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
13# WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
14# ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
15# OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
16
17use strict;
18use warnings;
19package OpenBSD::Makewhatis::Find;
20
21use File::Find;
22
23
24# $list = find_manpages($dir)
25#
26#   find all manpages under $dir, trim some duplicates.
27#
28sub find_manpages($)
29{
30    my $dir = shift;
31    my ($list, %nodes);
32    $list=[];
33    find(
34	sub {
35	    return unless m/\.[\dln]\w*(?:\.Z|\.gz)?$/;
36	    return unless -f $_;
37	    my $unique = (stat _)[0]."/".(stat _)[1];
38	    return if defined $nodes{$unique};
39	    $nodes{$unique} = 1;
40	    push(@$list, $File::Find::name);
41	}, $dir);
42    return $list;
43}
44
451;
46