| #!/usr/bin/env perl |
| #*************************************************************************** |
| # _ _ ____ _ |
| # Project ___| | | | _ \| | |
| # / __| | | | |_) | | |
| # | (__| |_| | _ <| |___ |
| # \___|\___/|_| \_\_____| |
| # |
| # Copyright (C) Daniel Stenberg, <[email protected]>, et al. |
| # |
| # This software is licensed as described in the file COPYING, which |
| # you should have received as part of this distribution. The terms |
| # are also available at https://curl.se/docs/copyright.html. |
| # |
| # You may opt to use, copy, modify, merge, publish, distribute and/or sell |
| # copies of the Software, and permit persons to whom the Software is |
| # furnished to do so, under the terms of the COPYING file. |
| # |
| # This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY |
| # KIND, either express or implied. |
| # |
| # SPDX-License-Identifier: curl |
| # |
| ########################################################################### |
| |
| sub showline { |
| my ($l) = @_; |
| $l =~ s/([^\x20-\x7f])/sprintf "%%%02x", ord $1/eg; |
| return $l; |
| } |
| |
| my $root = $ARGV[0]; |
| |
| open(F, "perl $root/lib/optiontable.pl < $root/include/curl/curl.h|"); |
| binmode F; |
| my @gen=<F>; |
| close(F); |
| |
| open(F, "<$root/lib/easyoptions.c"); |
| binmode F; |
| my @file=<F>; |
| close(F); |
| |
| if(join("", @gen) ne join("", @file)) { |
| print "easyoptions.c need to be regenerated!\n"; |
| |
| printf "easyoptions.c is %u lines\n", scalar(@file); |
| printf "generated file is %u lines\n", scalar(@gen); |
| my $e = 0; |
| for my $i (0 .. $#gen) { |
| # strip CRLFs to unify |
| $gen[$i] =~ s/[\r\n]//g; |
| $file[$i] =~ s/[\r\n]//g; |
| if($gen[$i] ne $file[$i]) { |
| printf "File: %u:%s\nGen: %u:%s\n", |
| $i+1, showline($file[$i]), |
| $i+1, showline($gen[$i]); |
| $e++; |
| if($e > 10) { |
| # only show 10 lines diff |
| last; |
| } |
| } |
| } |
| exit 1 if($e); |
| } |