Changeset 929 in openpam


Ignore:
Timestamp:
Apr 26, 2017, 7:21:54 PM (20 months ago)
Author:
Dag-Erling Smørgrav
Message:

Add the new error codes and rewrite the error code handling to support
negated entries, e.g. in cases a() calls b() and b() can return code X
in certain situations, but a() ensures that this never happens.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/misc/gendoc.pl

    r910 r929  
    9494    PAM_MODULE_UNKNOWN          => "Unknown module type",
    9595    PAM_DOMAIN_UNKNOWN          => "Unknown authentication domain",
     96    PAM_BAD_HANDLE              => "Invalid PAM handle",
     97    PAM_BAD_ITEM                => "Unrecognized or restricted item",
    9698);
    9799
     
    115117    my $version;
    116118    my %xref;
    117     my @errors;
     119    my %errors;
    118120    my $author;
    119121
     
    169171    if ($type eq "int") {
    170172        foreach (split("\n", $source)) {
    171             next unless (m/^ \*\s+(!?PAM_[A-Z_]+|=[a-z_]+)\s*$/);
    172             push(@errors, $1);
     173            next unless (m/^ \*\t(!?PAM_[A-Z_]+|=[a-z_]+)\s*(.*?)\s*$/);
     174            $errors{$1} = $2;
    173175        }
    174176        ++$xref{3}->{pam_strerror};
     
    336338        'man'           => $man,
    337339        'xref'          => \%xref,
    338         'errors'        => \@errors,
     340        'errors'        => \%errors,
    339341        'author'        => $author,
    340342        'customrv'      => $customrv,
     
    366368    $$func{recursed} = 1;
    367369
    368     foreach (@{$$func{errors}}) {
     370    foreach (keys %{$$func{errors}}) {
    369371        if (m/^(PAM_[A-Z_]+)$/) {
    370372            if (!defined($PAMERR{$1})) {
     
    372374                next;
    373375            }
    374             $errors{$1} = 1;
     376            $errors{$1} = $$func{errors}->{$_};
    375377        } elsif (m/^!(PAM_[A-Z_]+)$/) {
    376378            # treat negations separately
     
    386388                next;
    387389            }
    388             foreach (@{$FUNCTIONS{$ref}->{errors}}) {
    389                 $errors{$_} = 1;
     390            foreach (keys %{$FUNCTIONS{$ref}->{errors}}) {
     391                $errors{$_} //= $FUNCTIONS{$ref}->{errors}->{$_};
    390392            }
    391393        } else {
     
    393395        }
    394396    }
    395     foreach (@{$$func{errors}}) {
     397    foreach (keys %{$$func{errors}}) {
    396398        if (m/^!(PAM_[A-Z_]+)$/) {
    397399            delete($errors{$1});
     
    399401    }
    400402    delete($$func{recursed});
    401     $$func{errors} = [ sort(keys(%errors)) ];
     403    $$func{errors} = \%errors;
    402404}
    403405
     
    431433
    432434    local *FILE;
     435    my %errors;
    433436    my $mdoc;
    434437    my $fn;
     
    490493    }
    491494    $mdoc .= "$$func{man}\n";
    492     my @errors = @{$$func{errors}};
     495    %errors = %{$$func{errors}};
    493496    if ($$func{customrv}) {
    494497        # leave it
    495     } elsif ($$func{type} eq "int" && @errors) {
     498    } elsif ($$func{type} eq "int" && %errors) {
    496499        $mdoc .= ".Sh RETURN VALUES
    497500The
     
    500503.Bl -tag -width 18n
    501504";
    502         foreach (@errors) {
    503             $mdoc .= ".It Bq Er $_\n$PAMERR{$_}.\n";
     505        delete($errors{PAM_SUCCESS});
     506        foreach ('PAM_SUCCESS', sort keys %errors) {
     507            $mdoc .= ".It Bq Er $_\n" .
     508                ($errors{$_} || $PAMERR{$_}) .
     509                ".\n";
    504510        }
    505511        $mdoc .= ".El\n";
Note: See TracChangeset for help on using the changeset viewer.