+# used to fixup pre-1.7.0 folders
+sub update_fid ($$$) {
+ my ($dbh, $fid, $loc) = @_;
+ my $sth = $dbh->prepare(<<'');
+UPDATE folders SET loc = ? WHERE fid = ?
+
+ $sth->bind_param(1, $loc, SQL_BLOB);
+ $sth->bind_param(2, $fid);
+ $sth->execute;
+}
+
+sub get_fid ($$$) {
+ my ($sth, $folder, $dbh) = @_;
+ $sth->bind_param(1, $folder, SQL_BLOB);
+ $sth->execute;
+ my ($fid) = $sth->fetchrow_array;
+ if (defined $fid) { # for downgrade+upgrade (1.8 -> 1.7 -> 1.8)
+ $dbh->do('DELETE FROM folders WHERE loc = ? AND fid != ?',
+ undef, $folder, $fid) if defined($dbh);
+ } else {
+ $sth->execute($folder); # fixup old stuff
+ ($fid) = $sth->fetchrow_array;
+ update_fid($dbh, $fid, $folder) if defined($fid) && $dbh;
+ }
+ $fid;
+}
+