This is mkshared.pl in view mode; [Download] [Up]
#!@@PERL@@ -s
#
# This script is part of rtfdtohtml.
# Copyright (c) 1996 Elmar Ludwig - Universitaet Osnabrueck
#
# Collect all Resources (e.g. Images) in a single shared Folder.
#
# Options: -link preserve original files as (hard) links
$place = $ENV{'RTFDSHARED'} ? $ENV{'RTFDSHARED'} : 'shared';
-d $place || mkdir($place, 0777) || die "cannot create $place folder: $!";
# preload the resource cache
opendir(IMAGES, $place) || die "cannot open $place folder: $!";
@files = readdir IMAGES;
closedir IMAGES;
foreach (@files)
{
$shared{-s _} .= $_.'/' if -f $place.'/'.$_;
}
# process the argument list
foreach $dir (@ARGV)
{
@tmp = split(/\//, $dir);
$shared = '../' x @tmp . $place.'/'; # find path to resources
next unless open(INDEX, $dir.'/index.html');
read(INDEX, $html, 0xffffff); # no more than 16MB
close INDEX;
@files = ();
opendir(DIR, $dir) || die "cannot open $dir: $!";
$dir .= '/';
while ($file = readdir DIR) # build local filelist
{
push(@files, $file) if ($file !~ /\.html?$/ && -f $dir.$file);
}
closedir DIR;
foreach $file (@files) # find all matches
{
$path = $dir.$file;
$alias = '';
$size = -s $path;
foreach (split(/\//, $shared{$size}))
{
if (system('cmp', '-s', $place.'/'.$_, $path) == 0)
{
$alias = $_;
last;
}
}
# no alias found, add file to resource cache
if ($alias eq '')
{
$count = 0;
$alias = $file;
$alias = ++$count.'_'.$file while -e $place.'/'.$alias;
die "cp command failed" if system('cp', $path, $place.'/'.$alias);
$shared{$size} .= $alias.'/';
}
# replace this resource with shared alias
unlink $path || die "cannot remove $path: $!";
link($place.'/'.$alias, $path) if $link;
$alias = $shared.$alias;
$file =~ s/\W/\\$&/g;
$html =~ s/<[Ii][Mm][Gg] [Ss][Rr][Cc]=["']$file["']/<IMG src="$alias"/g;
$html =~ s/<[Aa] [Hh][Rr][Ee][Ff]=["']$file["']/<A href="$alias"/g;
}
open(INDEX, '>'.$dir.'index.html') || die "${dir}index.html failed: $!";
print INDEX $html;
close INDEX;
}
These are the contents of the former NiCE NeXT User Group NeXTSTEP/OpenStep software archive, currently hosted by Netfuture.ch.