]>
git.ipfire.org Git - thirdparty/xfsprogs-dev.git/blob - db/init.c
2 * Copyright (c) 2000-2002 Silicon Graphics, Inc. All Rights Reserved.
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.
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.
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.
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.
23 * Contact information: Silicon Graphics, Inc., 1600 Amphitheatre Pkwy,
24 * Mountain View, CA 94043, or:
28 * For further information regarding this notice, see:
30 * http://oss.sgi.com/projects/GenInfo/SGIGPLNoticeExplan/
44 static char **cmdline
;
53 xfs_agnumber_t cur_agno
= NULLAGNUMBER
;
59 "Usage: %s [-frxV] [-p prog] [-l logdev] [-c cmd]... device\n"),
73 progname
= basename(argv
[0]);
74 while ((c
= getopt(argc
, argv
, "c:fip:rxVl:")) != EOF
) {
77 cmdline
= xrealloc(cmdline
, (ncmdline
+1)*sizeof(char*));
78 cmdline
[ncmdline
++] = optarg
;
84 x
.isreadonly
= (LIBXFS_ISREADONLY
|LIBXFS_ISINACTIVE
);
90 x
.isreadonly
= LIBXFS_ISREADONLY
;
99 printf("%s version %s\n", progname
, VERSION
);
106 if (optind
+ 1 != argc
) {
111 fsdevice
= argv
[optind
];
113 x
.volname
= fsdevice
;
118 if (!libxfs_init(&x
)) {
119 fputs(_("\nfatal error -- couldn't initialize XFS library\n"),
124 if (read_bbs(XFS_SB_DADDR
, 1, &bufp
, NULL
)) {
125 dbprintf(_("%s: %s is invalid (cannot read first 512 bytes)\n"),
130 /* copy SB from buffer to in-core, converting architecture as we go */
131 libxfs_xlate_sb(bufp
, &xmount
.m_sb
, 1, ARCH_CONVERT
, XFS_SB_ALL_BITS
);
135 if (sbp
->sb_magicnum
!= XFS_SB_MAGIC
) {
136 dbprintf(_("%s: unexpected XFS SB magic number 0x%08x\n"),
137 progname
, sbp
->sb_magicnum
);
140 mp
= libxfs_mount(&xmount
, sbp
, x
.ddev
, x
.logdev
, x
.rtdev
,
141 LIBXFS_MOUNT_ROOTINOS
| LIBXFS_MOUNT_DEBUGGER
);
143 blkbb
= 1 << mp
->m_blkbb_log
;
162 for (i
= 0; !done
&& i
< ncmdline
; i
++) {
163 v
= breakline(cmdline
[i
], &c
);
165 done
= command(c
, v
);
174 if ((input
= fetchline()) == NULL
)
176 v
= breakline(input
, &c
);
178 done
= command(c
, v
);