]> git.ipfire.org Git - thirdparty/xfsprogs-dev.git/blame - db/fprint.c
Merge whitespace changes over
[thirdparty/xfsprogs-dev.git] / db / fprint.c
CommitLineData
2bd0ea18 1/*
0d3e0b37 2 * Copyright (c) 2000-2002 Silicon Graphics, Inc. All Rights Reserved.
dfc130f3 3 *
2bd0ea18
NS
4 * This program is free software; you can redistribute it and/or modify it
5 * under the terms of version 2 of the GNU General Public License as
6 * published by the Free Software Foundation.
dfc130f3 7 *
2bd0ea18
NS
8 * This program is distributed in the hope that it would be useful, but
9 * WITHOUT ANY WARRANTY; without even the implied warranty of
10 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
dfc130f3 11 *
2bd0ea18
NS
12 * Further, this software is distributed without any warranty that it is
13 * free of the rightful claim of any third person regarding infringement
14 * or the like. Any license provided herein, whether implied or
15 * otherwise, applies only to this software file. Patent licenses, if
16 * any, provided herein do not apply to combinations of this program with
17 * other software, or any other product whatsoever.
dfc130f3 18 *
2bd0ea18
NS
19 * You should have received a copy of the GNU General Public License along
20 * with this program; if not, write the Free Software Foundation, Inc., 59
21 * Temple Place - Suite 330, Boston MA 02111-1307, USA.
dfc130f3 22 *
2bd0ea18
NS
23 * Contact information: Silicon Graphics, Inc., 1600 Amphitheatre Pkwy,
24 * Mountain View, CA 94043, or:
dfc130f3
RC
25 *
26 * http://www.sgi.com
27 *
28 * For further information regarding this notice, see:
29 *
2bd0ea18
NS
30 * http://oss.sgi.com/projects/GenInfo/SGIGPLNoticeExplan/
31 */
32
33#include <libxfs.h>
2bd0ea18
NS
34#include <ctype.h>
35#include <time.h>
36#include "type.h"
37#include "faddr.h"
38#include "fprint.h"
39#include "field.h"
40#include "inode.h"
41#include "inobt.h"
42#include "bit.h"
43#include "print.h"
44#include "output.h"
45#include "sig.h"
46#include "malloc.h"
47
48int
49fp_charns(
50 void *obj,
51 int bit,
52 int count,
53 char *fmtstr,
54 int size,
55 int arg,
56 int base,
57 int array)
58{
59 int i;
60 char *p;
61
62 ASSERT(bitoffs(bit) == 0);
63 ASSERT(size == bitsz(char));
64 dbprintf("\"");
65 for (i = 0, p = (char *)obj + byteize(bit);
66 i < count && !seenint();
67 i++, p++) {
68 if (*p == '\\' || *p == '\'' || *p == '"' || *p == '\?')
69 dbprintf("\\%c", *p);
93d9f139 70 else if (isgraph((int)*p) || *p == ' ')
2bd0ea18
NS
71 dbprintf("%c", *p);
72 else if (*p == '\a' || *p == '\b' || *p == '\f' || *p == '\n' ||
73 *p == '\r' || *p == '\t' || *p == '\v')
74 dbprintf("\\%c", *p + ('a' - '\a'));
75 else
76 dbprintf("\\%03o", *p & 0xff);
77 }
78 dbprintf("\"");
79 return 1;
80}
81
82int
83fp_num(
84 void *obj,
85 int bit,
86 int count,
87 char *fmtstr,
88 int size,
89 int arg,
90 int base,
91 int array)
92{
93 int bitpos;
94 int i;
95 int isnull;
96 __int64_t val;
97
98 for (i = 0, bitpos = bit;
99 i < count && !seenint();
100 i++, bitpos += size) {
101 val = getbitval(obj, bitpos, size,
102 (arg & FTARG_SIGNED) ? BVSIGNED : BVUNSIGNED);
103 if ((arg & FTARG_SKIPZERO) && val == 0)
104 continue;
105 isnull = (arg & FTARG_SIGNED) || size == 64 ?
106 val == -1LL : val == ((1LL << size) - 1LL);
107 if ((arg & FTARG_SKIPNULL) && isnull)
108 continue;
109 if (array)
110 dbprintf("%d:", i + base);
111 if ((arg & FTARG_DONULL) && isnull)
112 dbprintf("null");
113 else if (size > 32)
114 dbprintf(fmtstr, val);
115 else
116 dbprintf(fmtstr, (__int32_t)val);
117 if (i < count - 1)
118 dbprintf(" ");
119 }
120 return 1;
121}
122
123/*ARGSUSED*/
124int
125fp_sarray(
126 void *obj,
127 int bit,
128 int count,
129 char *fmtstr,
130 int size,
131 int arg,
132 int base,
133 int array)
134{
135 print_sarray(obj, bit, count, size, base, array,
136 (const field_t *)fmtstr, (arg & FTARG_SKIPNMS) != 0);
137 return 1;
138}
139
140/*ARGSUSED*/
141int
142fp_time(
143 void *obj,
144 int bit,
145 int count,
146 char *fmtstr,
147 int size,
148 int arg,
149 int base,
150 int array)
151{
152 int bitpos;
153 char *c;
154 int i;
dfc130f3 155 time_t t;
2bd0ea18
NS
156
157 ASSERT(bitoffs(bit) == 0);
158 for (i = 0, bitpos = bit;
159 i < count && !seenint();
160 i++, bitpos += size) {
161 if (array)
162 dbprintf("%d:", i + base);
dfc130f3 163 t=(time_t)getbitval((char *)obj + byteize(bitpos), 0, sizeof(int32_t)*8, 0);
2bd0ea18
NS
164 c = ctime(&t);
165 dbprintf("%24.24s", c);
166 if (i < count - 1)
167 dbprintf(" ");
168 }
169 return 1;
170}
171
172/*ARGSUSED*/
173int
174fp_uuid(
175 void *obj,
176 int bit,
177 int count,
178 char *fmtstr,
179 int size,
180 int arg,
181 int base,
182 int array)
183{
184 char bp[40]; /* UUID string is 36 chars + trailing '\0' */
185 int i;
186 uuid_t *p;
187
188 ASSERT(bitoffs(bit) == 0);
189 for (p = (uuid_t *)((char *)obj + byteize(bit)), i = 0;
190 i < count && !seenint();
191 i++, p++) {
192 if (array)
193 dbprintf("%d:", i + base);
194 uuid_unparse(*p, bp);
195 dbprintf("%s", bp);
196 if (i < count - 1)
197 dbprintf(" ");
198 }
199 return 1;
200}