Annotation of loncom/debugging_tools/make_slots.pl, revision 1.1
1.1 ! albertel 1: use Date::Manip;
! 2: use GDBM_File;
! 3: use Storable qw(nfreeze thaw);
! 4:
! 5: my $fname="/home/httpd/lonUsers/annarbor/9/7/7/9778182de3942c1annarborl2/slots.db";
! 6: my %db;
! 7: if (! tie(%db,'GDBM_File',$fname,&GDBM_WRITER(),0640)) {
! 8: warn "Unable to tie to $fname";
! 9: exit;
! 10: }
! 11: $db{'slot1'}=
! 12: &freeze_escape({
! 13: 'starttime' => &UnixDate("Aug 30th 00:00:00 2004","%s"),
! 14: 'endtime' => &UnixDate("Aug 30th 01:00:00 2004","%s"),
! 15: 'ip' => "*albertelli.com",
! 16: });
! 17: $db{'slot2'}=
! 18: &freeze_escape({
! 19: 'starttime' => &UnixDate("Aug 30th 00:00:00 2006","%s"),
! 20: 'endtime' => &UnixDate("Aug 30th 00:00:00 2006","%s"),
! 21: 'ip' => "*albertelli.com",
! 22: });
! 23: $db{'slot3'}=
! 24: &freeze_escape({
! 25: 'starttime' => &UnixDate("Aug 30th 00:00:00 2004","%s"),
! 26: 'endtime' => &UnixDate("Aug 30th 00:00:00 2006","%s"),
! 27: 'ip' => "1.2.3.4",
! 28: });
! 29: $db{'slot4'}=
! 30: &freeze_escape({
! 31: 'starttime' => &UnixDate("Aug 30th 00:00:00 2004","%s"),
! 32: 'endtime' => &UnixDate("Aug 30th 00:00:00 2006","%s"),
! 33: 'ip' => "*albertelli.com",
! 34: });
! 35:
! 36: sub freeze_escape {
! 37: my ($value)=@_;
! 38: if (ref($value)) {
! 39: $value=&nfreeze($value);
! 40: return '__FROZEN__'.&escape($value);
! 41: }
! 42: return &escape($value);
! 43: }
! 44:
! 45: sub escape {
! 46: my $str=shift;
! 47: $str =~ s/(\W)/"%".unpack('H2',$1)/eg;
! 48: return $str;
! 49: }
! 50:
! 51: sub thaw_unescape {
! 52: my ($value)=@_;
! 53: if ($value =~ /^__FROZEN__/) {
! 54: substr($value,0,10,undef);
! 55: $value=&unescape($value);
! 56: return &thaw($value);
! 57: }
! 58: return &unescape($value);
! 59: }
! 60:
! 61: sub unescape {
! 62: my $str=shift;
! 63: $str =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C",hex($1))/eg;
! 64: return $str;
! 65: }
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>