riscv64: clone behaves like on aarch64, fixes tst-basic3, reported by sorear
[uclibc-ng.git] / extra / scripts / findC.pl
blob0fbae789b92eba859413b5fb044e05e5a442e877
1 #!/usr/bin/perl
3 # Copyright (C) 2016 Martin Thomas <mtdev@hamtam.de>
4 # LGPL version 2 or later.
6 use strict;
7 use warnings;
8 use IO::Dir;
9 use File::Find qw(find);
10 use Encode::Guess;
12 my ($dir, $directory, $f, $w, $tmp);
13 my (@files, @dirs, $file, $filename);
14 my $header;
15 my $files;
16 my $encoding;
17 my @copyright;
18 my @copyrightout;
19 my @uniqcpr;
20 my @output;
21 my $i;
23 $encoding = ":encoding(UTF-8)";
24 $encoding = "";
26 $directory="./";
28 $header = "Format: http://www.debian.org/doc/packaging-manuals/copyright-format/1.0/\n";
29 $header .= "Upstream-Name: uclibc-ng\n";
30 $header .= 'Upstream-Contact: Waldemar Brodkorb <wbx@uclibc-ng.org>'."\n";
31 $header .= "Source: git://uclibc-ng.org/git/uclibc-ng\n\n";
33 # my $emailregex='\b[[:alnum:]._%+-]+@[[:alnum:].-]+.[[:alpha:]]{2,6}\b';
35 sub list_dirs {
36 my @dirs = @_;
37 my @files;
38 find({ wanted => sub { push @files, $_ } , no_chdir => 1 }, @dirs);
39 return @files;
42 @files=list_dirs($directory);
44 foreach $file (@files) {
45 if ( -f $file ){
46 # $encoding = guess_encoding($file);
47 open(my $fh, "< $encoding", $file)
48 or die "Could not open file '$file' $!";
49 while (my $row = <$fh>) {
50 chomp $row;
51 if ($row =~ m/[Cc]opyright / )
53 $row =~ s/^[\s\/\*#!;.\"\\]*//; #remove leading
54 $row =~ s/\s+$//; #remove trailing
55 push @copyright, { file => $file, raw => $row};
56 last;
59 close $fh
63 #sort raw
64 @copyrightout = sort { $a->{raw} cmp $b->{raw} } @copyright;
66 $tmp="";
67 $i=-1;
68 foreach (@copyrightout) {
69 if ( $tmp eq $_->{'raw'} )
71 $output[$i]{"files"} .= "\n"." $_->{'file'}";
73 else
75 ++$i;
76 $output[$i]{"header"} .= "Copyright: $_->{'raw'}\n";
77 $output[$i]{"header"} .= "License: GNU Lesser General Public License 2.1\n";
78 $output[$i]{"files"} .= "Files: ".$_->{'file'};
80 $tmp=$_->{'raw'};
83 print "$header";
84 $i=0;
85 foreach (@output) {
86 print "$output[$i]->{'files'}\n";
87 print "$output[$i]->{'header'}\n";
88 ++$i;