Eine aufbereitete Darstellung der Quelle

 
     
 
 
Anforderungen  |   Konzepte  |   Entwurf  |   Entwicklung  |   Qualitätssicherung  |   Lebenszyklus  |   Steuerung
 
 
 
 

Benutzer

Quelle  xpostconf

  Sprache: C
 

#!/usr/bin/perl

use Getopt::Std;

# xpostconf - extract parameter info from postconf prototype file

# Usage: xpostconf [options] protofile [parameter...]
#
# -b: Brief output: print only the first sentence of each definition
#
# -c: print the classes named on the command line (default: all).
#
# -h: print help message.
#
# -p: print the parameters named on the command line (default: all).
#
# -s specfile: process the entries listed in the named file: ordinary
# text is copied as is, 
# %CLASS class-name mode
# %PARAM param-name mode
# are replaced by the respective information. Mode is b (brief)
# f (full) or i (ignore).
#
If no -s is specified, extracts the named parameter text (all
# parameters by default).

$opt_b = undef;
$opt_c = undef;
$opt_p = undef;
$opt_s = undef;
$opt_v = undef;
getopts("bcps:v");

die "Usage: $0 [-bcpv] [-s specfile] protofile [parameter...]\n" 
 unless $protofile = shift(@ARGV);

# Save one definition.

sub save_text {
    if ($category eq "PARAM") {
 $param_text{$name} = $text;
 if ($opt_v) {
     printf "saving entry %s %.20s..\n", $name, $text;
 } 
    } elsif ($category eq "CLASS") {
 $class_text{$name} = $text;
 if ($opt_v) {
     printf "saving class %s %.20s..\n", $name, $text;
 } 
    } else {
 die "Unknown category: $category. Need PARAM or CLASS.\n";
    }
}

# Read the whole file even if we want to print only one parameter.

open(POSTCONF, $protofile) || die " cannot open $protofile: $!\n";

while(<POSTCONF>) {

    next if /^#/ && $text eq "";
    next unless ($name || /\S/);

    if (/^%(PARAM|CLASS)/) {

 # Save the accumulated text.

 if ($name && $text) {
     save_text();
 }

 # Reset the parameter name and accumulated text.

 $name = $text = "";
 $category = $1;

 # Accumulate the parameter name and default value.

 do {
     $text .= $_;
 } while(($_ = <POSTCONF>) && /\S/);
 ($junk, $name, $junk) = split(/\s+/, $text, 3);

    } 

    # Accumulate the text in the class or parameter definition.

    $text .= $_;

}

# Save the last definition.

if ($name && $text) {
    save_text();
}

If working from a spec file, emit output in the specified order.

if ($opt_s) {
    open(SPEC, "$opt_s") || die "cannot open $opt_s: $!\m";
    while(<SPEC>) {
 if (/^%/) {
     ($category, $name, $mode) = split(/\s+/, substr($_, 1));
     if ($category eq "CLASS") {
  die "Unknown class name: $name.\n" 
      unless $text = $class_text{$name};
     } elsif ($category eq "PARAM") {
  die "Unknown parameter name: $name.\n"
      unless $text = $param_text{$name};
     } else {
  die "Unknown category: $category. Need CLASS or PARAM\n";
     }
     if ($mode eq "i") {
  next;
     } elsif ($mode eq "b") {
  $text =~ s/\.\s.*/.\n\n/s;
     } elsif ($mode ne "p") {
  die "Unknown mode: $mode. Need b or p or i,\n";
     }
     print $text, "\n";
 } else {
     print;
 }
    }
    exit;
}

# Print all the parameters.

if ($opt_c) {
    $what = \%class_text;
else {
    $what = \%param_text;
}

if ($#ARGV < 0) {
    for $name (sort keys %{$what}) {
 $text = ${$what}{$name};
 $text =~ s/\.\s.*/.\n\n/s if ($opt_b);
 print $text, "\n";
    }


# Print parameters in the specified order.

else {
    for $name (@ARGV) {
 $text = ${$what}{$name};
 $text =~ s/\.\s.*/.\n\n/s if ($opt_b);
 print $text;
    }
}

Messung V0.5 in Prozent
C=98 H=42 G=75

¤ Dauer der Verarbeitung: 0.1 Sekunden  (vorverarbeitet am  2026-08-08) ¤

*© Formatika GbR, Deutschland






Wurzel

Suchen

PVS Prover

Isabelle Prover

NIST Cobol Testsuite

Cephes Mathematical Library

Vienna Development Method

Haftungshinweis

Die Informationen auf dieser Webseite wurden nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit, noch Qualität der bereit gestellten Informationen zugesichert.

Bemerkung:

Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.






                                                                                                                                                                                                                                                                                                                                                                                                     


Neuigkeiten

     Aktuelles
     Motto des Tages

Open Source Software

     Quellcodebibliothek
     Eigene Quellcodes
     Fremde Quellcodes
     Suchen

Jenseits des Üblichen ....
    

Besucherstatistik

Besucherstatistik

Statistik
#Sources=141584
#Domains=738142