- Timestamp:
- 12/17/06 15:39:43 (2 years ago)
- Files:
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
honeyclient/branches/bug/42/lib/HoneyClient/Agent/Integrity/Registry/Parser.pm
r119 r123 597 597 $LOG->debug("Resetting parser."); 598 598 599 my $fh = $self->YYData->{'file_handle'}; 599 $self->YYData->{'file_handle'} = undef; 600 601 my $fh = new IO::File($self->YYData->{'filename'}, "r"); 602 if (!defined($fh)) { 603 $LOG->fatal("Error: Unable to read file '" . $self->YYData->{'filename'} . "'!"); 604 Carp::croak("Error: Unable to read file '" . $self->YYData->{'filename'} . "'!"); 605 } 606 607 $self->YYData->{'file_handle'} = $fh; 600 608 601 609 # Check the offset. … … 806 814 } 807 815 816 # Save the file name. 817 $parser->YYData->{'filename'} = $args{'input_file'}; 818 808 819 # Save the file handle. 809 820 $parser->YYData->{'file_handle'} = $fh; … … 1012 1023 $LOG->debug(Dumper(\%args)); 1013 1024 1025 # Reopen the file_handle, if it's been closed. 1026 if (!defined($self->YYData->{'file_handle'})) { 1027 $self->_reset(); 1028 } 1029 1014 1030 if ($self->YYData->{'input_pos'} == 0) { 1015 1031 $LOG->debug("Beginning parse of input stream."); … … 1162 1178 1163 1179 return $self->YYData->{'file_handle'}; 1180 } 1181 1182 =pod 1183 1184 =head2 $object->getFilename() 1185 1186 =over 4 1187 1188 Returns the file name associated with the current Parser B<$object>. 1189 1190 I<Output>: Returns the file name in use. 1191 1192 =back 1193 1194 =begin testing 1195 1196 my ($filename); 1197 my $test_registry_file = $ENV{PWD} . "/" . getVar(name => "registry_file", 1198 namespace => "HoneyClient::Agent::Integrity::Registry::Parser::Test"); 1199 1200 # Create a generic Parser object, with test state data. 1201 my $parser = HoneyClient::Agent::Integrity::Registry::Parser->init(input_file => $test_registry_file); 1202 1203 $filename = $parser->getFilename(); 1204 1205 is($filename, $test_registry_file, "getFilename()") or diag("The getFilename() call failed."); 1206 1207 =end testing 1208 1209 =cut 1210 1211 sub getFilename { 1212 # Extract arguments. 1213 my ($self, %args) = @_; 1214 1215 # Log resolved arguments. 1216 # Make Dumper format more terse. 1217 $Data::Dumper::Terse = 1; 1218 $Data::Dumper::Indent = 0; 1219 $LOG->debug(Dumper(\%args)); 1220 1221 return $self->YYData->{'filename'}; 1222 } 1223 1224 =pod 1225 1226 =head2 $object->closeFileHandle() 1227 1228 =over 4 1229 1230 Closes the file handle associated with the current Parser B<$object>. 1231 1232 =back 1233 1234 =begin testing 1235 1236 my ($handle); 1237 my $test_registry_file = $ENV{PWD} . "/" . getVar(name => "registry_file", 1238 namespace => "HoneyClient::Agent::Integrity::Registry::Parser::Test"); 1239 1240 # Create a generic Parser object, with test state data. 1241 my $parser = HoneyClient::Agent::Integrity::Registry::Parser->init(input_file => $test_registry_file); 1242 $parser->closeFileHandle(); 1243 1244 # Verify Test Group #1 1245 my $nextGroup = $parser->nextGroup(); 1246 my $expectedGroup = { 1247 key => 'HKEY_CURRENT_USER\]Testing Group 1[', 1248 entries => [ { 1249 name => '@', 1250 value => 'Default', 1251 }, { 1252 name => 'Foo', 1253 value => 'Bar', 1254 }, ], 1255 }; 1256 is_deeply($nextGroup, $expectedGroup, "closeFileHandle()") or diag("The closeFileHandle() call failed."); 1257 1258 =end testing 1259 1260 =cut 1261 1262 sub closeFileHandle { 1263 # Extract arguments. 1264 my ($self, %args) = @_; 1265 1266 # Log resolved arguments. 1267 # Make Dumper format more terse. 1268 $Data::Dumper::Terse = 1; 1269 $Data::Dumper::Indent = 0; 1270 $LOG->debug(Dumper(\%args)); 1271 1272 $self->YYData->{'file_handle'} = undef; 1164 1273 } 1165 1274 honeyclient/branches/bug/42/lib/HoneyClient/Agent/Integrity/Registry/Parser.yp
r119 r123 442 442 $LOG->debug("Resetting parser."); 443 443 444 my $fh = $self->YYData->{'file_handle'}; 444 $self->YYData->{'file_handle'} = undef; 445 446 my $fh = new IO::File($self->YYData->{'filename'}, "r"); 447 if (!defined($fh)) { 448 $LOG->fatal("Error: Unable to read file '" . $self->YYData->{'filename'} . "'!"); 449 Carp::croak("Error: Unable to read file '" . $self->YYData->{'filename'} . "'!"); 450 } 451 452 $self->YYData->{'file_handle'} = $fh; 445 453 446 454 # Check the offset. … … 651 659 } 652 660 661 # Save the file name. 662 $parser->YYData->{'filename'} = $args{'input_file'}; 663 653 664 # Save the file handle. 654 665 $parser->YYData->{'file_handle'} = $fh; … … 857 868 $LOG->debug(Dumper(\%args)); 858 869 870 # Reopen the file_handle, if it's been closed. 871 if (!defined($self->YYData->{'file_handle'})) { 872 $self->_reset(); 873 } 874 859 875 if ($self->YYData->{'input_pos'} == 0) { 860 876 $LOG->debug("Beginning parse of input stream."); … … 1007 1023 1008 1024 return $self->YYData->{'file_handle'}; 1025 } 1026 1027 =pod 1028 1029 =head2 $object->getFilename() 1030 1031 =over 4 1032 1033 Returns the file name associated with the current Parser B<$object>. 1034 1035 I<Output>: Returns the file name in use. 1036 1037 =back 1038 1039 =begin testing 1040 1041 my ($filename); 1042 my $test_registry_file = $ENV{PWD} . "/" . getVar(name => "registry_file", 1043 namespace => "HoneyClient::Agent::Integrity::Registry::Parser::Test"); 1044 1045 # Create a generic Parser object, with test state data. 1046 my $parser = HoneyClient::Agent::Integrity::Registry::Parser->init(input_file => $test_registry_file); 1047 1048 $filename = $parser->getFilename(); 1049 1050 is($filename, $test_registry_file, "getFilename()") or diag("The getFilename() call failed."); 1051 1052 =end testing 1053 1054 =cut 1055 1056 sub getFilename { 1057 # Extract arguments. 1058 my ($self, %args) = @_; 1059 1060 # Log resolved arguments. 1061 # Make Dumper format more terse. 1062 $Data::Dumper::Terse = 1; 1063 $Data::Dumper::Indent = 0; 1064 $LOG->debug(Dumper(\%args)); 1065 1066 return $self->YYData->{'filename'}; 1067 } 1068 1069 =pod 1070 1071 =head2 $object->closeFileHandle() 1072 1073 =over 4 1074 1075 Closes the file handle associated with the current Parser B<$object>. 1076 1077 =back 1078 1079 =begin testing 1080 1081 my ($handle); 1082 my $test_registry_file = $ENV{PWD} . "/" . getVar(name => "registry_file", 1083 namespace => "HoneyClient::Agent::Integrity::Registry::Parser::Test"); 1084 1085 # Create a generic Parser object, with test state data. 1086 my $parser = HoneyClient::Agent::Integrity::Registry::Parser->init(input_file => $test_registry_file); 1087 $parser->closeFileHandle(); 1088 1089 # Verify Test Group #1 1090 my $nextGroup = $parser->nextGroup(); 1091 my $expectedGroup = { 1092 key => 'HKEY_CURRENT_USER\]Testing Group 1[', 1093 entries => [ { 1094 name => '@', 1095 value => 'Default', 1096 }, { 1097 name => 'Foo', 1098 value => 'Bar', 1099 }, ], 1100 }; 1101 is_deeply($nextGroup, $expectedGroup, "closeFileHandle()") or diag("The closeFileHandle() call failed."); 1102 1103 =end testing 1104 1105 =cut 1106 1107 sub closeFileHandle { 1108 # Extract arguments. 1109 my ($self, %args) = @_; 1110 1111 # Log resolved arguments. 1112 # Make Dumper format more terse. 1113 $Data::Dumper::Terse = 1; 1114 $Data::Dumper::Indent = 0; 1115 $LOG->debug(Dumper(\%args)); 1116 1117 $self->YYData->{'file_handle'} = undef; 1009 1118 } 1010 1119
