Cmake export tests: Set \origin also for unavailable

This is important for lyx-files not under the lyxsystemdir.
Since the exports are done from a copied lyx-file, some referenced data
may be available only relative to the source of the original.
This commit is contained in:
Kornel Benko 2019-03-31 18:06:40 +02:00
parent 18ee587a1e
commit 1d90561675
2 changed files with 13 additions and 9 deletions

View File

@ -26,12 +26,12 @@ sub getFileType($);
sub getFileIdx($);
sub getExt($);
sub getResult($);
sub checkForHeader($);
sub checkForHeader($$);
sub checkForPreamble($);
sub checkForLayoutStart($);
sub checkForInsetStart($);
sub checkForLatexCommand($);
sub checkLyxLine($);
sub checkLyxLine($$);
my @stack = (); # list of HASH-Arrays
my $rFont = {};
@ -201,9 +201,9 @@ sub getResult($)
return($m->{"result"});
}
sub checkForHeader($)
sub checkForHeader($$)
{
my ($l) = @_;
my ($l, $sourcedir) = @_;
if ($l =~ /^\\begin_header\s*$/) {
my %selem = ();
@ -247,6 +247,10 @@ sub checkForHeader($)
"filetype" => "replace_only",
"result" => ["\\origin $sysdir", "2"]);
push(@rElems, $origin);
my $originu = newMatch("search" => qr/^\\origin\s+unavailable/,
"filetype" => "replace_only",
"result" => ["\\origin $sourcedir"]);
push(@rElems, $originu);
setMatching(\@rElems);
return(1);
}
@ -369,11 +373,11 @@ sub checkForLatexCommand($)
# separator: to be used while concatenating the filenames
# filetype: prefix_only,replace_only,copy_only,interpret
# same as before, but without 'prefix_for_list'
sub checkLyxLine($)
sub checkLyxLine($$)
{
my ($l) = @_;
my ($l, $sourcedir) = @_;
return({"found" => 0}) if (checkForHeader($l));
return({"found" => 0}) if (checkForHeader($l, $sourcedir));
return({"found" => 0}) if (checkForPreamble($l));
return({"found" => 0}) if (checkForEndBlock($l));
return({"found" => 0}) if (checkForLayoutStart($l));

View File

@ -182,7 +182,7 @@ sub interpretedCopy($$$$)
$fi_line_no += 1;
$l =~ s/[\n\r]+$//;
#chomp($l);
my $rStatus = checkLyxLine($l);
my $rStatus = checkLyxLine($l, $sourcedir);
if ($rStatus->{found}) {
my $rF = $rStatus->{result};
if ($rStatus->{"filetype"} eq "replace_only") {
@ -258,7 +258,7 @@ sub interpretedCopy($$$$)
}
}
}
if ($foundrelative && $rStatus->{"filetype"} ne "prefix_for_list") {
if ($foundrelative && $rStatus->{"filetype"} !~ /^(prefix_for_list|prefix_only)$/) {
# The result can be relative too
# but, since prefix_for_list does no copy, we have to use absolute paths
# to address files inside the source dir