2
* Copyright (c) 2000 Silicon Graphics, Inc. All Rights Reserved.
2
* Copyright (c) 2000-2001 Silicon Graphics, Inc. All Rights Reserved.
4
4
* This program is free software; you can redistribute it and/or modify it
5
5
* under the terms of version 2 of the GNU General Public License as
6
6
* published by the Free Software Foundation.
8
8
* This program is distributed in the hope that it would be useful, but
9
9
* WITHOUT ANY WARRANTY; without even the implied warranty of
10
10
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
12
12
* Further, this software is distributed without any warranty that it is
13
13
* free of the rightful claim of any third person regarding infringement
14
14
* or the like. Any license provided herein, whether implied or
15
15
* otherwise, applies only to this software file. Patent licenses, if
16
16
* any, provided herein do not apply to combinations of this program with
17
17
* other software, or any other product whatsoever.
19
19
* You should have received a copy of the GNU General Public License along
20
20
* with this program; if not, write the Free Software Foundation, Inc., 59
21
21
* Temple Place - Suite 330, Boston MA 02111-1307, USA.
23
23
* Contact information: Silicon Graphics, Inc., 1600 Amphitheatre Pkwy,
24
24
* Mountain View, CA 94043, or:
28
* For further information regarding this notice, see:
28
* For further information regarding this notice, see:
30
30
* http://oss.sgi.com/projects/GenInfo/SGIGPLNoticeExplan/
33
#include <xfs/libxfs.h>
34
34
#include "command.h"
38
37
#include "fprint.h"
100
99
FLD_COUNT, TYP_NONE },
101
100
{ "uid", FLDT_UINT32D, OI(COFF(uid)), C1, 0, TYP_NONE },
102
101
{ "gid", FLDT_UINT32D, OI(COFF(gid)), C1, 0, TYP_NONE },
102
{ "flushiter", FLDT_UINT16D, OI(COFF(flushiter)), C1, 0, TYP_NONE },
103
103
{ "atime", FLDT_TIMESTAMP, OI(COFF(atime)), C1, 0, TYP_NONE },
104
104
{ "mtime", FLDT_TIMESTAMP, OI(COFF(mtime)), C1, 0, TYP_NONE },
105
105
{ "ctime", FLDT_TIMESTAMP, OI(COFF(ctime)), C1, 0, TYP_NONE },
122
122
{ "realtime", FLDT_UINT1,
123
123
OI(COFF(flags) + bitsz(__uint16_t) - XFS_DIFLAG_REALTIME_BIT - 1), C1,
125
{ "immutable", FLDT_UINT1,
126
OI(COFF(flags) + bitsz(__uint16_t) - XFS_DIFLAG_IMMUTABLE_BIT-1), C1,
128
{ "append", FLDT_UINT1,
129
OI(COFF(flags) + bitsz(__uint16_t) - XFS_DIFLAG_APPEND_BIT - 1), C1,
131
{ "sync", FLDT_UINT1,
132
OI(COFF(flags) + bitsz(__uint16_t) - XFS_DIFLAG_SYNC_BIT - 1), C1,
134
{ "noatime", FLDT_UINT1,
135
OI(COFF(flags) + bitsz(__uint16_t) - XFS_DIFLAG_NOATIME_BIT - 1), C1,
137
{ "nodump", FLDT_UINT1,
138
OI(COFF(flags) + bitsz(__uint16_t) - XFS_DIFLAG_NODUMP_BIT - 1), C1,
125
140
{ "gen", FLDT_UINT32D, OI(COFF(gen)), C1, 0, TYP_NONE },
376
391
inode_next_type(void)
378
switch (iocur_top->mode & IFMT) {
393
switch (iocur_top->mode & S_IFMT) {
380
395
return XFS_DIR_IS_V2(mp) ? TYP_DIR2 : TYP_DIR;
382
397
return TYP_SYMLINK;
384
399
if (iocur_top->ino == mp->m_sb.sb_rbmino)
385
400
return TYP_RTBITMAP;
386
401
else if (iocur_top->ino == mp->m_sb.sb_rsumino)
446
461
ASSERT((char *)&dip->di_u - (char *)dip == byteize(startoff));
447
462
return INT_GET(dip->di_core.di_format, ARCH_CONVERT) == XFS_DINODE_FMT_LOCAL &&
448
(INT_GET(dip->di_core.di_mode, ARCH_CONVERT) & IFMT) == IFREG ?
463
(INT_GET(dip->di_core.di_mode, ARCH_CONVERT) & S_IFMT) == S_IFREG ?
449
464
(int)INT_GET(dip->di_core.di_size, ARCH_CONVERT) : 0;
490
505
ASSERT((char *)&dip->di_u - (char *)dip == byteize(startoff));
491
506
return INT_GET(dip->di_core.di_format, ARCH_CONVERT) == XFS_DINODE_FMT_LOCAL &&
492
(INT_GET(dip->di_core.di_mode, ARCH_CONVERT) & IFMT) == IFDIR
507
(INT_GET(dip->di_core.di_mode, ARCH_CONVERT) & S_IFMT) == S_IFDIR
493
508
&& XFS_DIR_IS_V1(mp);
506
521
ASSERT((char *)&dip->di_u - (char *)dip == byteize(startoff));
507
522
return INT_GET(dip->di_core.di_format, ARCH_CONVERT) == XFS_DINODE_FMT_LOCAL &&
508
(INT_GET(dip->di_core.di_mode, ARCH_CONVERT) & IFMT) == IFDIR &&
523
(INT_GET(dip->di_core.di_mode, ARCH_CONVERT) & S_IFMT) == S_IFDIR &&
509
524
XFS_DIR_IS_V2(mp);
549
564
ASSERT((char *)&dip->di_u - (char *)dip == byteize(startoff));
550
565
return INT_GET(dip->di_core.di_format, ARCH_CONVERT) == XFS_DINODE_FMT_LOCAL &&
551
(INT_GET(dip->di_core.di_mode, ARCH_CONVERT) & IFMT) == IFLNK ?
566
(INT_GET(dip->di_core.di_mode, ARCH_CONVERT) & S_IFMT) == S_IFLNK ?
552
567
(int)INT_GET(dip->di_core.di_size, ARCH_CONVERT) : 0;
586
601
dip = iocur_top->data;
587
602
iocur_top->ino = ino;
588
603
iocur_top->mode = INT_GET(dip->di_core.di_mode, ARCH_CONVERT);
589
if ((iocur_top->mode & IFMT) == IFDIR)
604
if ((iocur_top->mode & S_IFMT) == S_IFDIR)
590
605
iocur_top->dirino = ino;
592
607
/* track updated info in ring */