~ubuntu-branches/ubuntu/utopic/glame/utopic

« back to all changes in this revision

Viewing changes to src/swapfile/glame-convert.sh

  • Committer: Bazaar Package Importer
  • Author(s): Daniel Kobras
  • Date: 2002-04-09 17:14:12 UTC
  • Revision ID: james.westby@ubuntu.com-20020409171412-jzpnov7mbz2w6zsr
Tags: upstream-0.6.2
ImportĀ upstreamĀ versionĀ 0.6.2

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
#!/bin/sh
 
2
 
 
3
if test -z "$1"; then
 
4
        echo Usage: $0 swapfile 
 
5
        exit 1
 
6
fi
 
7
 
 
8
if test ! -d "$1/clusters.data" || test ! -d "$1/clusters.meta"; then
 
9
        echo No swapfile at $1
 
10
        exit 1
 
11
fi
 
12
 
 
13
if test -f "$1/.lock"; then
 
14
        echo Swapfile busy
 
15
        exit 1
 
16
fi
 
17
 
 
18
# called with $1 directory to convert (non-rec.)
 
19
do_convert_dec2hex()
 
20
{
 
21
        mkdir $1/.newfiles
 
22
        files=`find $1 -type f -maxdepth 1`
 
23
        for i in $files; do
 
24
                dirn=`dirname $i`
 
25
                basen=`basename $i`
 
26
                mv $i $1/.newfiles/`printf "%X" $basen`
 
27
        done
 
28
        mv $1/.newfiles/* $1/
 
29
        rm -Rf $1/.newfiles
 
30
}
 
31
 
 
32
# called with $1 directory to convert (non-rec.)
 
33
do_convert_hex2dec()
 
34
{
 
35
        mkdir $1/.newfiles
 
36
        files=`find $1 -type f -maxdepth 1`
 
37
        for i in $files; do
 
38
                dirn=`dirname $i`
 
39
                basen=`basename $i`
 
40
                mv $i $1/.newfiles/$[0x$basen + 0]
 
41
        done
 
42
        mv $1/.newfiles/* $1/
 
43
        rm -Rf $1/.newfiles
 
44
}
 
45
 
 
46
# called with $1 directory to hash (non-rec.)
 
47
do_hash()
 
48
{
 
49
        # create hash dirs (with leading . to prevent clashes)
 
50
        for i in `seq 0 255`; do
 
51
                mkdir $1/.`printf "%X" $i`
 
52
        done
 
53
        # insert all files into their hash slots (renaming them, too)
 
54
        files=`find $1 -type f -maxdepth 1`
 
55
        for i in $files; do
 
56
                basen=`basename $i`
 
57
                hashname=$[0x$basen / 256]
 
58
                hashdir=$[0x$basen - $hashname*256]
 
59
                mv $i $1/.`printf "%X" $hashdir`/`printf "%X" $hashname`
 
60
        done
 
61
        # move . hash dirs to real names
 
62
        for i in `seq 0 255`; do
 
63
                mv $1/.`printf "%X" $i` $1/`printf "%X" $i`
 
64
        done
 
65
}
 
66
 
 
67
# called with $1 directory to unhash
 
68
do_unhash_and_hex2dec()
 
69
{
 
70
        # move hash dirs to .hash to avoid clashes
 
71
        dirs=`find $1/ -type d -maxdepth 1 -name '[^d.]*'`
 
72
        for d in $dirs; do
 
73
                mv $d $1/.`basename $d`
 
74
        done
 
75
        # unhash / rename files
 
76
        for d in $dirs; do
 
77
                hashdir=`basename $d`
 
78
                files=`find $1/.$hashdir -type f -maxdepth 1`
 
79
                for i in $files; do
 
80
                        hashfile=`basename $i`
 
81
                        name=$[0x$hashfile*256 + 0x$hashdir]
 
82
                        mv $i $1/$name
 
83
                done
 
84
        done
 
85
        # remove hash dirs
 
86
        for d in $dirs; do
 
87
                rm -Rf $1/.`basename $d`
 
88
        done
 
89
}
 
90
 
 
91
 
 
92
if test -d $1/clusters.meta/FF; then
 
93
        echo Converting from 0.5 format to 0.4 format
 
94
 
 
95
        echo Converting $1
 
96
        do_convert_hex2dec $1/
 
97
        echo Unhashing $1/clusters.data
 
98
        do_unhash_and_hex2dec $1/clusters.data
 
99
        echo Unhashing $1/clusters.meta
 
100
        do_unhash_and_hex2dec $1/clusters.meta
 
101
 
 
102
else
 
103
        echo Converting from 0.4 format to 0.5 format
 
104
 
 
105
        echo Converting $1
 
106
        do_convert_dec2hex $1/
 
107
        echo Converting $1/clusters.data
 
108
        do_convert_dec2hex $1/clusters.data
 
109
        echo Converting $1/clusters.meta
 
110
        do_convert_dec2hex $1/clusters.meta
 
111
        echo Hashing $1/clusters.data
 
112
        do_hash $1/clusters.data
 
113
        echo Hashing $1/clusters.meta
 
114
        do_hash $1/clusters.meta
 
115
fi