create-toc
上传用户:wxp200602
上传日期:2007-10-30
资源大小:4028k
文件大小:4k
源码类别:

SNMP编程

开发平台:

Unix_Linux

  1. #!/usr/bin/perl
  2. #
  3. # This program generates an HTML document containing links to man
  4. # pages already converted to html using man2html3.0.1 
  5. # (http://search.cpan.org/~ehood/man2html3.0.1/) 
  6. #
  7. # Written by:     Alex Burger
  8. # Date:           March 2nd, 2004
  9. ################################################################
  10. # Options
  11. # Location of man pages to parse
  12. $man_dir = "/tmp/net-snmp/html/";
  13. $include_header = 1;
  14. $include_footer = 1;
  15. # Output file
  16. $toc_file = "/tmp/net-snmp/html/toc.hhc";
  17. #URL up to the name of the man page
  18. $url = '';
  19. ################################################################
  20. if ($man_dir =~ //$/) {
  21.   chop $man_dir;
  22. }
  23. @files = `find $man_dir`;
  24. @files = sort @files;
  25. open (FILE_OUT, ">$toc_file") || die "Could not open file $toc_file for writing. $!";
  26. select FILE_OUT;
  27. foreach my $file (@files)
  28. {
  29.   chomp $file;
  30.   # Man pages  
  31.   if ($file =~ /$man_dir/man(d+)-(.*)/)
  32.   {
  33.     push (@man_pages, "$1-$2");
  34.   }
  35.   # Perl POD files  
  36.   elsif ($file =~ /$man_dir/perl-(.*)/) {
  37.     push (@perl_files, "$1");
  38.   }
  39.   # README files
  40.   elsif ($file =~ /$man_dir/readme-(.*)/) {
  41.     push (@readme_files, "$1");
  42.   }
  43. }
  44. @man_pages = sort (@man_pages);
  45. @perl_files = sort (@perl_files);
  46. @readme_files = sort (@readme_files);
  47. # Divide up man pages  
  48. foreach my $man_page (@man_pages)
  49. {
  50.   $man_page =~ /(d+)-(.*)/;
  51.   if ($1 == 1) { push (@man1,$2); }
  52.   elsif ($1 == 2) { push (@man2,$2); }
  53.   elsif ($1 == 3) { push (@man3,$2); }
  54.   elsif ($1 == 4) { push (@man4,$2); }
  55.   elsif ($1 == 5) { push (@man5,$2); }
  56.   elsif ($1 == 6) { push (@man6,$2); }
  57.   elsif ($1 == 7) { push (@man7,$2); }
  58.   elsif ($1 == 8) { push (@man8,$2); }
  59.   elsif ($1 == 9) { push (@man9,$2); }
  60. }
  61.   
  62. if ($include_header > 0) {
  63.   print '<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">' . "n";
  64.   print '<HTML>' . "n";
  65.   print '<HEAD>' . "n";
  66.   print '<meta name="GENERATOR" content="Microsoft&reg; HTML Help Workshop 4.1">' . "n";
  67.   print '<!-- Sitemap 1.0 -->' . "n";
  68.   print '</HEAD><BODY>' . "n";
  69.   print '<OBJECT type="text/site properties">' . "n";
  70.   print ' <param name="ImageType" value="Folder">' . "n";
  71.   print '</OBJECT>' . "n";
  72.   
  73.   print "<UL>n";
  74. }
  75. print_section("Applications",   "man1-",@man1);
  76. print_section("man2",           "man2-",@man2);
  77. print_section("API",            "man3-",@man3);
  78. print_section("man4",           "man4-",@man4);
  79. print_section("Configuration",  "man5-",@man5);
  80. print_section("man6",           "man6-",@man6);
  81. print_section("man7",           "man7-",@man7);
  82. print_section("Servers",        "man8-",@man8);
  83. print_section("man9",           "man9-",@man9);
  84. print_section("Start Here",     "readme-",@readme_files);
  85. print_section("Perl Modules",   "perl-",@perl_files);
  86. sub print_section{
  87.   # Section title, subfolder/prefix, array
  88.   my $section_name = shift;
  89.   my $folder = shift;
  90.   my $man = shift;
  91.   if (defined(@$man)) {
  92.       
  93.     print ' <LI> <OBJECT type="text/sitemap">' . "n";
  94.     print " <param name="Name" value="$section_name">n";
  95.     print ' <param name="ImageNumber" value="1">' . "n";
  96.     print ' </OBJECT>' . "n";
  97.     print " <UL>n";
  98.     foreach my $man_page (@$man)
  99.     {
  100.       my $man_page_short;
  101.       if ($man_page =~ /(.*?).d+.html/i) {
  102.         $man_page_short = $1;
  103.       }
  104.       else {
  105.         $man_page =~ /(.*?).html/i;
  106.         $man_page_short = $1;
  107.       }
  108.       print ' <LI> <OBJECT type="text/sitemap">' . "n";
  109.       print " <param name="Name "value="$man_page_short">n";
  110.       print " <param name="Local" value="$folder$url$man_page">n";
  111.       print ' </OBJECT>' . "n";
  112.     }
  113.     print " </UL>n";
  114.   }
  115. }
  116. if ($include_footer > 0) {
  117.   print "</UL>n";
  118.   print "</BODY>n";
  119.   print "</HTML>n";
  120. }
  121. close FILE_OUT;