From: Nathan Scott Date: Thu, 19 Apr 2001 04:57:33 +0000 (+0000) Subject: add in fstyp checker as a non-default make target. X-Git-Tag: Release-1_0_0~8 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=7dcf02662afa4e1919e7e1d2490e57b7cc0d7e6c;p=thirdparty%2Fxfsprogs-dev.git add in fstyp checker as a non-default make target. --- diff --git a/mkfs/Makefile b/mkfs/Makefile index 97b102603..690a1be61 100644 --- a/mkfs/Makefile +++ b/mkfs/Makefile @@ -35,6 +35,7 @@ include $(TOPDIR)/include/builddefs CMDTARGET = mkfs.xfs MAXTRRES = maxtrres +FSTYP = fstyp CFILES = xfs_mkfs.c mountinfo.c proto.c HFILES = xfs_mkfs.h mountinfo.h proto.h volume.h @@ -43,8 +44,8 @@ LLDLIBS = $(LIBXFS) $(LIBUUID) $(LIBLVM) LLDFLAGS = -L$(TOPDIR)/libxfs MAXTRLIBS = $(LIBXFS) $(LIBUUID) -LSRCFILES = $(MAXTRRES).c -LDIRT = $(MAXTRRES) $(MAXTRRES).h +LSRCFILES = $(MAXTRRES).c $(FSTYP).c +LDIRT = $(MAXTRRES) $(MAXTRRES).h $(FSTYP) default: $(MAXTRRES).h $(CMDTARGET) @@ -57,6 +58,9 @@ $(MAXTRRES).h: $(MAXTRRES) LD_LIBRARY_PATH=../libxfs; export LD_LIBRARY_PATH; \ ./$(MAXTRRES) > $@ || ( rm -f $@ && exit 1 ) +$(FSTYP): $(CMDTARGET) + $(CCF) $@.c -o $@ $(LDFLAGS) mountinfo.o + install: default $(INSTALL) -m 755 -d $(PKG_SBIN_DIR) $(INSTALL) -m 755 $(CMDTARGET) $(PKG_SBIN_DIR) diff --git a/mkfs/fstyp.c b/mkfs/fstyp.c new file mode 100644 index 000000000..5fa010b32 --- /dev/null +++ b/mkfs/fstyp.c @@ -0,0 +1,77 @@ +/* + * Copyright (c) 2000 Silicon Graphics, Inc. All Rights Reserved. + * + * This program is free software; you can redistribute it and/or modify it + * under the terms of version 2 of the GNU General Public License as + * published by the Free Software Foundation. + * + * This program is distributed in the hope that it would be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + * + * Further, this software is distributed without any warranty that it is + * free of the rightful claim of any third person regarding infringement + * or the like. Any license provided herein, whether implied or + * otherwise, applies only to this software file. Patent licenses, if + * any, provided herein do not apply to combinations of this program with + * other software, or any other product whatsoever. + * + * You should have received a copy of the GNU General Public License along + * with this program; if not, write the Free Software Foundation, Inc., 59 + * Temple Place - Suite 330, Boston MA 02111-1307, USA. + * + * Contact information: Silicon Graphics, Inc., 1600 Amphitheatre Pkwy, + * Mountain View, CA 94043, or: + * + * http://www.sgi.com + * + * For further information regarding this notice, see: + * + * http://oss.sgi.com/projects/GenInfo/SGIGPLNoticeExplan/ + */ + +#include +#include +#include +#include + +#include "mountinfo.h" + +/* + * fstyp allows the user to determine the filesystem identifier of + * mounted or unmounted filesystems using heuristics. + * + * The filesystem type is required by mount(2) and sometimes by mount(8) + * to mount filesystems of different types. fstyp uses exactly the same + * heuristics that mount does to determine whether the supplied device + * special file is of a known filesystem type. If it is, fstyp prints + * on standard output the usual filesystem identifier for that type and + * exits with a zero return code. If no filesystem is identified, fstyp + * prints "Unknown" to indicate failure and exits with a non-zero status. + * + * WARNING: The use of heuristics implies that the result of fstyp is not + * guaranteed to be accurate. + */ + +int +main(int argc, char *argv[]) +{ + char *type; + + if (argc != 2) { + fprintf(stderr, "Usage: %s \n", basename(argv[0])); + exit(1); + } + + if (access(argv[1], R_OK) < 0) { + perror(argv[1]); + exit(1); + } + + if ((type = mnt_known_fs_type(argv[1])) == NULL) { + printf("Unknown\n"); + exit(1); + } + printf("%s\n", type); + exit(0); +}