OSDN Git Service

blkid: fix LARGEFILE_SOURCE redefined warnings
[android-x86/external-e2fsprogs.git] / contrib / dconf
1 #!/bin/sh
2 #$Id$
3 # Create Adobe-PostScript file that graphically displays the output of
4 # dumpe2fs(8). Use "dumpe2fs | dconf" to create a PostScript file on stdout.
5 # Developed and tested for Linux 1.0.
6 # Copyright (c) 1994
7 # Ulrich Windl
8 # ALte Regensburger Strasse 11a
9 # D-93149 Nittenau, Germany
10 # <Ulrich.Windl@rz.uni-regensburg.de>
11 SELF=`basename $0`
12 AWKFILE=/tmp/${SELF}.awk
13 TEMPFILE=/tmp/${SELF}.tmp
14 echo '
15 BEGIN {
16         print "B"
17 }
18 /^Inode count:/ {
19         ic=$3; next
20 }
21 /^Block count:/ {
22         bc=$3; next
23 }
24 /^First block:/ {
25         fb=$3; next
26 }
27 /^Block size:/ {
28         bs=$3; next
29 }
30 /^Blocks per group:/ {
31         bpg=$4
32         printf("BC %d\n", bpg)
33         printf("GC %d\n", (bc + bpg - 1) / bpg)
34         next
35 }
36 /^Inodes per group:/ {
37         ipg=$4; next
38 }
39 /^Last write time:/ {
40         lwtime=$0; gsub("Last write time:[ ]+", "", lwtime)
41         printf("T %s\n", lwtime)
42         next
43 }
44 /^Group [0-9]+:/ {
45         group=$2; gsub(":", "", group)
46         block=""
47         group_start=group*bpg+fb
48         group_end=group_start+bpg
49         printf("G %d : %d - %d\n", group, group_start, group_end)
50         next
51 }
52 /^[ ]+Free blocks: / {
53         for ( i=3; i < NF; ++i ) {
54                 block=$i; gsub(",", "", block)
55                 if ( index(block, "-") == 0 ) block=block "-" block
56                 pos=index(block, "-")
57                 printf("FB %d-%d\n",
58                        substr(block, 0, pos) - group_start,
59                        substr(block, pos + 1) - group_start)
60         }
61         if ( block == "" ) printf("Group %d is full\n", group)
62         print "----"
63         next
64 }
65 END {
66         printf("E %s\n", lwtime)
67 }' >$AWKFILE
68 awk -f $AWKFILE $* >$TEMPFILE
69 echo '
70 BEGIN {
71         printf("%%!PS-Adobe\n")
72         printf("%%%%BoundingBox: 0 0 1 1\n")
73         printf("/rect {/y2 exch def /x2 exch def /y1 exch def /x1 exch def\n")
74         printf("       newpath x1 y1 moveto x2 y1 lineto x2 y2 lineto\n")
75         printf("       x1 y2 lineto closepath} def\n")
76         printf("/fb {rect gsave 1.0 setgray fill grestore} def\n")
77         printf("/dg {rect gsave gsave 0.0 setgray fill grestore\n")
78         printf("     0.5 setgray stroke grestore} def\n")
79         printf("/textxy {moveto show} bind def\n")
80         printf("0.0001 setlinewidth\n")
81 }
82 $1 == "GC" && NF == 2 {
83         number_of_groups=$2
84         printf("/Times-Roman findfont %g scalefont setfont\n",
85                1.0 / number_of_groups)
86         next
87 }
88 $1 == "BC" && NF == 2 {
89         blocks_per_group=$2; next
90 }
91 $1 == "T" && NF > 1 {
92         printf("(%s) %g %g textxy\n",
93                substr($0, 2), 0, 1.02)
94         next
95 }
96 $1 == "G" && NF == 6 && $3 == ":" && $5 == "-" {
97         group_index=$2
98         gs=$4
99         ge=$6
100         height=1.0 / number_of_groups
101         vstart=group_index * height
102         printf("%% group %d of %d:\n0 %g 1 %g dg\n",
103                group_index, number_of_groups, vstart, vstart + height)
104         printf("(Group %s) 1.02 %g textxy\n", group_index, vstart)
105         next
106 }
107 $1 == "FB" && NF == 2 {
108         pos = index($2, "-")
109         printf("%% hole %s\n%g %g %g %g fb\n",
110                $2, substr($2, 0, pos) / blocks_per_group, vstart,
111                (substr($2, pos + 1) + 1) / blocks_per_group, vstart + height)
112         next
113 }
114 END {
115         printf("%%%%EOF\n")
116 }
117 ' >$AWKFILE
118 awk -f $AWKFILE $TEMPFILE