flat2cdb.pl
上传用户:tany51
上传日期:2013-06-12
资源大小:1397k
文件大小:2k
源码类别:

MySQL数据库

开发平台:

Visual C++

  1. #!/usr/bin/perl
  2. $cdb_command = "/usr/local/bin/cdb";
  3. if (scalar(@ARGV) != 2) {
  4.     &usage;
  5.     exit;
  6. }
  7. &header;
  8. # remove a trailing /
  9. $dirpath = $ARGV[0];
  10. $dirpath =~ s!(.*)/$!$1!;
  11. $dirpath2 = $ARGV[1];
  12. $dirpath2 =~ s!(.*)/$!$1!;
  13. $max_uid = -1;
  14. opendir FILEDIR, $dirpath or die "Error opening filedir!n";
  15. while ($filename = readdir FILEDIR) {
  16.     if ($filename =~ m/^./) { next; } #ignore . and ..
  17.     if ( ! (($dev,$ino,$mode,$nlink,$uid,$gid,$rdev,$size,
  18.     $atime,$mtime,$ctime,$blksize,$blocks) = stat $dirpath ."/". $filename )) {
  19.         print "Error stat-ing the file $pathdir/$filename!n" ; next; }
  20.     
  21.     $type = ($mode & 070000) >> 12;
  22.     
  23.     if ($type != 0) {
  24. print "File ". $dirpath ."/". $filename ." its not regularn";
  25. next;
  26.     }
  27.     convertfile($filename);
  28. }
  29. closedir FILEDIR;
  30. sub convertfile {
  31.     my $filen = shift;
  32.     my ($key, $val, $outpath);
  33.     open FILE, $dirpath ."/". $filen or die "Error opening file ". $dirpath ."/". $filen ."n";
  34.     $outpath = $dirpath2 ."/". $filen;
  35.     if (open FILEOUT, $outpath) {
  36. die "Found existent file : ". $outpath ."!! Plese provide an empty output directory !!";
  37.     }
  38.     close FILEOUT;
  39.     open CDB, "| $cdb_command -c -t '". $outpath . ".tmp' '". $outpath ."'" || die "Error running $cdb_commandn";
  40.     print "Converting file ". $filen ."... ";
  41.     while($line = <FILE>) {
  42. if ($line =~ m/^#/) { next; }
  43. if ($line =~ m/^"(.*)"="(.*)"s*$/) {
  44.     $key = $1;
  45.     $val = $2;
  46.     $key =~ s/\\/\/g;
  47.     print CDB "+". length($key) .",". length($val) .":". $key ."->". $val ."n";
  48. }
  49.     }
  50.     print CDB "n";
  51.     close CDB;
  52.     close FILE;
  53.     print "donen";
  54. }
  55. sub header {
  56.     print "Account files flat2cdb converting tool.n";
  57.     print " Copyright (C) 2003 Mihai RUSU (dizzy@roedu.net)n";
  58.     print " People Versus People Gaming Network (www.pvpgn.org)nn";
  59. }
  60. sub usage {
  61.     &header;
  62.     print "Usage:nntflat2cdb.pl <inputdir> <outputdir>nn";
  63.     print "t <inputdir>t: directory with the input flat account filesn";
  64.     print "t <outputdir>t: directory where the output cdb account files will residen";
  65. }