Skip to main content
  • Home
  • login
  • Browse the archive

    swh mirror partner logo
swh logo
SoftwareHeritage
Software
Heritage
Mirror
Features
  • Search

  • Downloads

  • Save code now

  • Add forge now

  • Help

Revision 222b0a8e1a43e67c8d65fd325828d8860ed2d348 authored by Richard Levitte on 21 October 2018, 09:11:04 UTC, committed by Richard Levitte on 31 October 2018, 14:47:56 UTC
Configuration: when building the dirinfo structure, include shared_sources
This makes sure that any resulting directory target in the build files
also depend on object files meant for shared libraries.

As a side effect, we move the production of the dirinfo structure from
common.tmpl to Configure, to make it easier to check the result.

Reviewed-by: Matt Caswell <matt@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/7452)

(cherry picked from commit b6e660754c2e799cffe4906269fcace0e07c73bc)
1 parent 3b1928f
  • Files
  • Changes
  • 60738fb
  • /
  • util
  • /
  • su-filter.pl
Raw File
Cook and download a directory from the Software Heritage Vault

You have requested the cooking of the directory with identifier None into a standard tar.gz archive.

Are you sure you want to continue ?

Download a directory from the Software Heritage Vault

You have requested the download of the directory with identifier None as a standard tar.gz archive.

Are you sure you want to continue ?

Cook and download a revision from the Software Heritage Vault

You have requested the cooking of the history heading to revision with identifier swh:1:rev:222b0a8e1a43e67c8d65fd325828d8860ed2d348 into a bare git archive.

Are you sure you want to continue ?

Download a revision from the Software Heritage Vault

You have requested the download of the history heading to revision with identifier swh:1:rev:222b0a8e1a43e67c8d65fd325828d8860ed2d348 as a bare git archive.

Are you sure you want to continue ?

Invalid Email !

The provided email is not well-formed.

Download link has expired

The requested archive is no longer available for download from the Software Heritage Vault.

Do you want to cook it again ?

Permalinks

To reference or cite the objects present in the Software Heritage archive, permalinks based on SoftWare Hash IDentifiers (SWHIDs) must be used.
Select below a type of object currently browsed in order to display its associated SWHID and permalink.

  • revision
  • content
revision badge
swh:1:rev:222b0a8e1a43e67c8d65fd325828d8860ed2d348
content badge Iframe embedding
swh:1:cnt:389c7c35c5847a2df51afc497a12af6a6a8963f5
su-filter.pl
#! /usr/bin/env perl
# Copyright 2015-2016 The OpenSSL Project Authors. All Rights Reserved.
#
# Licensed under the OpenSSL license (the "License").  You may not use
# this file except in compliance with the License.  You can obtain a copy
# in the file LICENSE in the source distribution or at
# https://www.openssl.org/source/license.html

use strict;

my $in_su = 0;
my $indent = 0;
my $out;
my $braces = 0;
my $arrcnt;
my $data;
my $tststr;
my $incomm = 0;

while(<>) {
    $tststr = $_;
    $incomm++ while $tststr =~ /\/\*/g;
    $incomm-- while $tststr =~ /\*\//g;

    if($in_su == 1) {
        if(/}(.*);/) {
            $out .= $_;
            do_output($out);
            $in_su = 0;
        } elsif(/^ *\} [^\s]+(\[\d*\])* = \{/) {
           $tststr = $1;
           $arrcnt = 0;
           $arrcnt++ while $tststr =~ /\[/g;
           $in_su++;
           $braces = 1;
           /^(.* = \{)(.*)$/;
           $data = $2;
           $out .= $1."\n";
        } else {
            $out .= $_;
        }
    } elsif($in_su == 2) {
        $data .= $_;
        if(/};$/) {
            #$data = "\n$data";
            $data =~ s/\n */\n/g;
            $data =~ s/};\n?//s;
            my @strucdata = structureData($data);
            $out .= displayData($indent, 0, \@strucdata);
            $out .= "\n$indent};\n";
            do_output($out);
            $in_su = 0;
        }
    } elsif($incomm <= 0 && /( *)(static )?(const )?(union|struct) ([a-zA-Z_\$][\$0-9a-zA-Z_]+ )?\{/) {
        $in_su = 1;
        $indent = $1;
        $out = $_;
        next;
    } else {
        do_output($_);
    }
}


sub structureData {
    my $data = $_[0];
    my @datalist = split(/(\{|\}|,|"|#|\n|\/\*|\*\/|\(|\))/, $data);
    my $item;
    my $dataitem = "";
    my @struclist = ();
    my $substruc;
    my $inquote = 0;
    my $inbrace = 0;
    my $preproc = 0;
    my $comment = 0;
    my $inparen = 0;


    foreach $item (@datalist) {
        if($comment) {
            if($item eq "*/") {
                $comment = 0;
                $dataitem .= "*/";
                push @struclist, $dataitem;
                $dataitem = "";
                next;
            }
            $dataitem .= $item;
            next;
        }
        if($inquote) {
            $dataitem .= $item;
            if($item eq "\"") {
                $inquote--;
            }
            next;
        }
        if($preproc) {
            if($item eq "\n") {
                $preproc = 0;
                push @struclist, $dataitem;
                $dataitem = "";
                next;
            }
            $dataitem .= $item;
            next;
        }
        if($inbrace) {
            if($item eq "}") {
                $inbrace --;

                if(!$inbrace) {
                    $substruc = structureData($dataitem);
                    $dataitem = $substruc;
                    next;
                }
            } elsif($item eq "{") {
                $inbrace++;
            } elsif ($item eq "\"") {
                $inquote++;
            }
            $dataitem .= $item;
            next;
        }
        if($inparen) {
            if($item eq ")") {
                $inparen--;
            }
            $dataitem .= $item;
            next;
        }
        if($item eq "\n") {
            next;
        }
        if($item eq "#") {
            $preproc = 1;
            push @struclist, $dataitem;
            $dataitem = "#";
            next;
        }
        if($item eq "/*") {
            $comment = 1;
            push @struclist, $dataitem;
            $dataitem= "/*";
            next;
        }
        if($item eq "\"") {
            $dataitem .= $item;
            $inquote++;
            next;
        }
        if($item eq "{") {
            $inbrace++;
            next;
        }
        if($item eq ",") {
            push @struclist, $dataitem;
            $dataitem = "";
            next;
        }
        if($item eq "(") {
            $dataitem .= $item;
            $inparen++;
            next;
        }
        if($item =~ /^\s*$/) {
            next;
        }
        if(ref $dataitem eq 'ARRAY') {
            push @struclist, $dataitem;
            $dataitem = "";
        }
        $dataitem .= $item;
    }
    push @struclist, $dataitem;
    return \@struclist;
}

sub displayData {
    my $indent = shift;
    my $depth = shift;
    my $data = shift;
    my $item;
    my $out = "";
    my $currline = "";
    my $first = 1;
    my $prevpreproc = 0;
    my $prevcomment = 0;

    foreach $item (@{$data}) {
        if($item =~ /^\/\*/) {
            #Comment
            $item =~ s/\n/\n$indent/g;
            if($out =~ /\n\s*$/s) {
                $out .= $item."\n".$indent;
            } else {
                $out .= "\n".$indent.$item."\n".$indent;
            }
            $currline = $indent;
            $prevcomment = 1;
            next;
        }
        $item =~ s/^\s+//;
        if($item =~ /^#/) {
            #Pre-processor directive
            if($out =~ /\n\s*$/s) {
                $out =~ s/\n\s*$/\n/;
                $out .= $item."\n".$indent;
            } else {
                $out .= "\n".$item."\n".$indent;
            }
            $currline = $indent;
            $prevpreproc = 1;
            next;
        }
        if($first) {
            $first = 0;
            if($depth != 0) {
                $out .= $indent;
                $currline = $indent;
            }
        } else {
            if(!$prevpreproc && !$prevcomment) {
                $out .= ", ";
                $currline .= ", ";
                if($depth == 1) {
                    $out .= "\n";
                    $currline = "";
                }
                if($depth == 1) {
                    $out .= $indent;
                    $currline .= $indent;
                }
            }

        }
        $prevpreproc = 0;
        $prevcomment = 0;

        if (ref $item eq 'ARRAY') {
            if($depth == 0) {
                $out .= displayData("$indent    ", $depth+1, $item);
            } else {
                $out .= "{\n".displayData("$indent    ", $depth+1, $item)."\n".$indent."}";
                $currline = $indent."}";
            }
        } else {
            if(length $currline.$item > 79) {
                $currline = $indent;
                $out .= "\n$indent";
            }
            $out .= $item;
            $currline .= $item;
        }
    }
    return $out;
}

sub do_output {
    my $out = shift;
    # Strip any trailing whitespace
    $out =~ s/\s+\n/\n/g;
    print $out;
}
The diff you're trying to view is too large. Only the first 1000 changed files have been loaded.
Showing with 0 additions and 0 deletions (0 / 0 diffs computed)
swh spinner

Computing file changes ...

ENEA — Copyright (C), ENEA. License: GNU AGPLv3+.
Legal notes  ::  JavaScript license information ::  Web API

back to top