The Perl and Raku Conference 2025: Greenville, South Carolina - June 27-29 Learn more

##############################################################################
# The Faq-O-Matic is Copyright 1997 by Jon Howell, all rights reserved. #
# #
# This program is free software; you can redistribute it and/or #
# modify it under the terms of the GNU General Public License #
# as published by the Free Software Foundation; either version 2 #
# of the License, or (at your option) any later version. #
# #
# This program is distributed in the hope that it will be useful, #
# but WITHOUT ANY WARRANTY; without even the implied warranty of #
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the #
# GNU General Public License for more details. #
# #
# You should have received a copy of the GNU General Public License #
# along with this program; if not, write to the Free Software #
# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.#
# #
# Jon Howell can be contacted at: #
# 6211 Sudikoff Lab, Dartmouth College #
# Hanover, NH 03755-3510 #
# jonh@cs.dartmouth.edu #
# #
# An electronic copy of the GPL is available at: #
# #
##############################################################################
use strict;
###
### The Bags module provides services related to bit bags,
### binary files stored with and linked to by a FAQ-O-Matic.
###
sub getBagDesc {
# return an item containing descriptive properties about
# a bag
my $bagName = shift;
my $bagDesc = new FAQ::OMatic::Item($bagName.".desc",
$FAQ::OMatic::Config::bagsDir);
# if it didn't exist before...
$bagDesc->setProperty('Title', 'Bag Description');
$bagDesc->setProperty('filename', $bagName.".desc");
return $bagDesc;
}
sub getBagProperty {
my $bagName = shift;
my $property = shift;
my $default = shift || '';
my $bagDesc = getBagDesc($bagName);
return $bagDesc->getProperty($property) || $default;
}
sub saveBagDesc {
my $bagDesc = shift;
$bagDesc->saveToFile('',
$FAQ::OMatic::Config::bagsDir);
}
sub untaintBagName {
# untaint a bag name -- result is either a valid name or ''
my $name = FAQ::OMatic::untaintFilename(shift());
# Don't want user overwriting .desc files with binary bags -- YUK!
return '' if ($name =~ m/\.desc$/);
return $name;
}
sub updateDependents {
my $bagName = shift;
my $dependent;
foreach $dependent (FAQ::OMatic::Item::getDependencies("bags.".$bagName)) {
my $dependentItem = new FAQ::OMatic::Item($dependent);
$dependentItem->writeCacheCopy();
}
}
1;