fileno-to-pathname.pl
上传用户:liugui
上传日期:2007-01-04
资源大小:822k
文件大小:1k
源码类别:

代理服务器

开发平台:

Unix_Linux

  1. #!/usr/local/bin/perl
  2. # $Id: fileno-to-pathname.pl,v 1.2 1997/07/16 20:31:55 wessels Exp $
  3. # Convert hexadecimal cache file numbers (from swap log) into full pathnames.  
  4. # Duane Wessels 6/30/97
  5. require 'getopts.pl';
  6. &Getopts('c:');
  7. $L1 = 16;
  8. $L2 = 256;
  9. $CF = $opt_c || '/usr/local/squid/etc/squid.conf';
  10. &usage unless (open (CF));
  11. $ncache_dirs = 0;
  12. while (<CF>) {
  13. $CD[$ncache_dirs++] = $1 if (/^cache_dirs+(S+)/);
  14. $L1 = $1 if (/^swap_level1_dirss+(d+)/);
  15. $L2 = $1 if (/^swap_level2_dirss+(d+)/);
  16. }
  17. close(CF);
  18. unless ($ncache_dirs) {
  19. $CD[$ncache_dirs++] = '/usr/local/squid/cache';
  20. }
  21. while (<>) {
  22. chop;
  23. print &storeSwapFullPath(hex($_)), "n";
  24. }
  25. sub storeSwapFullPath {
  26. local($fn) = @_;
  27. sprintf "%s/%02X/%02X/%08X",
  28. $CD[$fn % $ncache_dirs],
  29. ($fn / $ncache_dirs) % $L1,
  30. ($fn / $ncache_dirs) / $L1 % $L2,
  31. $fn;
  32. }
  33. sub usage {
  34. print STDERR "usage: $0 -c confign";
  35. print STDERR "hexadecimal file numbers are read from stdinn";
  36. exit 1;
  37. }