ViewVC Help
View File | Revision Log | Show Annotations | Download File
/cvs/deliantra/server/utils/cfutil.in
(Generate patch)

Comparing deliantra/server/utils/cfutil.in (file contents):
Revision 1.82 by root, Sat Apr 3 22:30:21 2010 UTC vs.
Revision 1.83 by root, Wed Apr 28 20:51:58 2010 UTC

74my $VERBOSE = 1; 74my $VERBOSE = 1;
75my $CACHE = 0; 75my $CACHE = 0;
76my $FORCE; 76my $FORCE;
77my $TMPDIR = "/tmp/cfutil$$~"; 77my $TMPDIR = "/tmp/cfutil$$~";
78my $TMPFILE = "aaaa0"; 78my $TMPFILE = "aaaa0";
79my @COMMIT;
79 80
80our %COLOR = ( 81our %COLOR = (
81 black => 0, 82 black => 0,
82 white => 1, 83 white => 1,
83 navy => 2, 84 navy => 2,
802 803
803 print "processing resources...\n" if $VERBOSE; 804 print "processing resources...\n" if $VERBOSE;
804 my $enc = JSON::XS->new->utf8->canonical->relaxed; 805 my $enc = JSON::XS->new->utf8->canonical->relaxed;
805 while (my ($k, $v) = each %RESOURCE) { 806 while (my ($k, $v) = each %RESOURCE) {
806 807
808 if ($v->{meta} && $v->{meta}{datadir}) {
809 delete $RESOURCE{$k};
810
811 $k =~ s/^res\/// or die "$k: datadir files must be in res/";
812
813 printf "writing $k (%d octets)...\n", length $v->{data} if $VERBOSE;
814 open my $fh, ">:raw", "$DATADIR/$k~"
815 or die "$DATADIR/$k~: $!";
816 syswrite $fh, $v->{data};
817 push @COMMIT, $k;
818
819 } else {
807 if ($v->{type} & 1) { 820 if ($v->{type} & 1) {
808 # prepend meta info 821 # prepend meta info
809 822
810 my $meta = $enc->encode ({ 823 my $meta = $enc->encode ({
811 name => $k, 824 name => $k,
812 %{ $v->{meta} || {} }, 825 %{ $v->{meta} || {} },
813 }); 826 });
814 827
815 $v->{data} = pack "(w/a*)*", $meta, $v->{data}; 828 $v->{data} = pack "(w/a*)*", $meta, $v->{data};
816 } 829 }
817 830
818 make_hash $k, $v->{data}, $v->{hash}, 6; # 6 for the benefit of existing clients 831 make_hash $k, $v->{data}, $v->{hash}, 6; # 6 for the benefit of existing clients
832 }
819 } 833 }
820 834
821 printf "writing facedata (%d faces, %d anims, %d resources)...\n", 835 printf "writing facedata (%d faces, %d anims, %d resources)...\n",
822 scalar keys %FACEINFO, 836 scalar keys %FACEINFO,
823 scalar keys %ANIMINFO, 837 scalar keys %ANIMINFO,
836 850
837 } 851 }
838 852
839 print "committing files...\n" if $VERBOSE; 853 print "committing files...\n" if $VERBOSE;
840 854
841 for (qw(archetypes facedata treasures)) { 855 for (qw(archetypes facedata treasures), @COMMIT) {
842 chmod 0644, "$DATADIR/$_~"; 856 chmod 0644, "$DATADIR/$_~";
843 rename "$DATADIR/$_~", "$DATADIR/$_" 857 rename "$DATADIR/$_~", "$DATADIR/$_"
844 or die "$DATADIR/$_: $!"; 858 or die "$DATADIR/$_: $!";
845 } 859 }
846 860

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines