8 use vars qw/$db_driver $db_host $db_user $db_pwd $DB_PWD $db_name $db/;
9 use vars qw/$tb_obsah/;
14 $DB_PWD=$ENV{"HOME"}."/priv/mysql.${db_user}.pwd";
16 $tb_obsah="energie_obsah";
18 open DB_PWD or die "Failed open \"$DB_PWD\": $!";
23 $db=DBI->connect("DBI:$db_driver:database=$db_name;host=$db_host",$db_user,$db_pwd) or die "Database open fail: $!";
29 $db->do($cmd) or die("SQL command \"$cmd\" failed: $!");
32 eval { &db_do("drop table $tb_obsah") };
34 &db_do("create table $tb_obsah ("
35 ."year year(4) not null,"
36 ."month tinyint not null,"
37 ."month_last tinyint not null,"
38 ."sequential smallint not null,"
39 ."contents text not null"
42 &db_do("alter table $tb_obsah add unique (year,month)");
45 use vars qw/$insert_tb_obsah $year $month $month_last $sequential $contents $first/;
49 return " in file $ARGV on line $.";
55 return if !defined $_;
57 print("Empty contents".&where()."!\n");
61 s/([\001\n]) | ([\002\n])/$1$2/g;
62 die "Page marker not found somewhere in this month".&where() if (/^[^\004]*\001[^\003\004]*\002/);
63 die "Duplicate page markers in this month".&where() if (/strana /);
67 $insert_tb_obsah->execute($year,$month,$month_last,$sequential,$_) or die "SQL insert failure: $!";
73 $insert_tb_obsah=$db->prepare("insert into $tb_obsah (year,month,month_last,sequential,contents) values (?,?,?,?,?)")
74 or die "Prepare fail: $!";
78 if (m#^EaP (\d+)(-(\d+))?/(\d+) \((\d+)(-\d+)?\)$#) {
81 $month_last=($3 ? $3 : $1);
88 die "Multiple \"Pøíloha\"s".&where() if ($contents=~/\004/);
92 if (/^[^[:space:]]/ || (/^\s/ && $contents=~/\004/)) {
93 $contents.="\001$_\002";
97 if (/^\s+strana \.\.\. ([\d ,-]+)$/) {
98 die "Page number without start".&where() if ("\002"!=substr($contents,-1,1));
99 die "Page number already specified".&where() if ($contents=~/\003[^\001\002\004]*\002$/);
100 $contents=substr($contents,0,-1)."\003$1\002";
105 die "INTERNAL: continuation for \"Pøíloha\"".&where() if ($contents=~/\004/);
106 die "Continuation contents without start".&where() if ("\002"!=substr($contents,-1,1));
107 if ($contents=~/\003[^\001\002\004]*\002$/) {
108 die "First line not found".&where() if !defined($first);
109 $contents.="\001$first\002";
111 $contents=substr($contents,0,-1)."\n$s\002";
114 die "Unexpected text".&where().": $_" if (/\S/);