Commit Graph

56 Commits

Author SHA1 Message Date
Dimitry Andric
e54f2950a6 Fix the following -Werror warning from clang 10.0.0 in newfs_msdos:
sbin/newfs_msdos/newfs_msdos.c:181:2: error: misleading indentation; statement is not part of the previous 'if' [-Werror,-Wmisleading-indentation]
        if (o.align) {
        ^
sbin/newfs_msdos/newfs_msdos.c:179:5: note: previous statement is here
    if (argc < 1 || argc > 2)
    ^

MFC after:	3 days
2020-01-28 20:10:26 +00:00
Xin LI
2780a26b6a Fix a couple of minor issues with newfs_msdos:
- Do not unnecessarily strdup().
 - Check return value of getdiskinfo(), if it failed, bail out.

Reviewed by:	imp
MFC after:	2 weeks
Differential Revision:	https://reviews.freebsd.org/D22729
2019-12-08 01:20:37 +00:00
Xin LI
7b9934a1c6 Explicitly exit() instead of return in main().
MFC after:	2 weeks
2019-12-03 07:03:25 +00:00
Xin LI
e453f01668 newfs_msdos: -A is incompatible with -r, not -o.
PR:		242314
Submitted by:	Guy Yur <guyyur gmail com>
MFC after:	2 weeks
2019-12-03 07:01:28 +00:00
Xin LI
0531ab7253 Added option to cluster-align the start of the root directory.
Obtained from:	Android
Obtained from:	052f275621
Obtained from:	8218b6aae9
MFC after:	1 month
Differential Revision:	https://reviews.freebsd.org/D15672
2018-06-15 06:03:40 +00:00
Pedro F. Giffuni
1de7b4b805 various: general adoption of SPDX licensing ID tags.
Mainly focus on files that use BSD 2-Clause license, however the tool I
was using misidentified many licenses so this was mostly a manual - error
prone - task.

The Software Package Data Exchange (SPDX) group provides a specification
to make it easier for automated tools to detect and summarize well known
opensource licenses. We are gradually adopting the specification, noting
that the tags are considered only advisory and do not, in any way,
superceed or replace the license texts.

No functional change intended.
2017-11-27 15:37:16 +00:00
Ed Maste
28ef05f7c3 newfs_msdos: add -T (timestamp) option for reproducible builds
This includes some whitespace and minor bug fixes relative to NetBSD,
which will be submitted upstream at the conclusion of the makefs
msdos update.

NetBSD revs:
mkfs_msdos.c	1.11
mkfs_msdos.h	1.4
newfs_msdos.8	1.22
newfs_msdos.c	1.44

Submitted by:	Siva Mahadevan <smahadevan@freebsdfoundation.org>
Reviewed by:	emaste
Obtained from:	NetBSD
Sponsored by:	The FreeBSD Foundation
2017-05-16 17:04:50 +00:00
Ed Maste
64953dd1dd Use netbsd usage() implementation in newfs_msdos
In r289629 newfs_msdos option descriptions are available in
mkfs_msdos.h.

Obtained from:	NetBSD
2015-11-27 14:40:21 +00:00
Ed Maste
99f4158c82 newfs_msdos: rework error handling for eventual use in makefs
Return -1 on errors from mkfs_msdos() instead of err()/errx(), to
allow different consumers to handle errors as appropriate.

Obtained from:	NetBSD
Sponsored by:	The FreeBSD Foundation
2015-11-23 18:58:00 +00:00
Ed Maste
041b03daab newfs_msdos: move mkfs_msdos to separate file for later use in makefs
Sponsored by:	The FreeBSD Foundation
2015-10-15 19:00:33 +00:00
Ed Maste
4d45a6738a newfs_msdos: rework option parsing to match NetBSD
NetBSD split newfs_msdos in two so that they can reuse the file system
creation part in makefs. This change is a step on the path of bringing
that support to FreeBSD.

Reviewed by:	kib, pfg
Sponsored by:	The FreeBSD Foundation
Differential Revision: https://reviews.freebsd.org/D3905
2015-10-15 16:19:00 +00:00
Warner Losh
a91275f72f Remove old ioctl use and support, once and for all. 2015-01-06 05:28:37 +00:00
Pedro F. Giffuni
69905bdec3 Use "NO NAME" as the default unnamed label.
Microsoft recommends avoiding the use of spaces in the
string structures for FAT. Unfortunately they do just
that by default in the case of unlabeled filesystems.

Follow the default MS behavior to avoid confusion in
common tools like file(1). This was actually the
default behavior before r203868.

Obtained from:	NetBSD (CVS rev. 1.39)
MFC after:	3 days
2014-08-13 21:18:31 +00:00
Pedro F. Giffuni
b251c17a97 Small cleanup: mostly whitespace vs. tabs. 2014-04-30 21:19:46 +00:00
Ed Maste
6bb4cf4fef Correct min/max cluster counts for FAT12/16/32
FAT12      1..4084
FAT16   4085..65524
FAT32  65525..

This is required for interoperability with other FAT implementations,
and in particular UEFI.

Obtained from:      NetBSD
Sponsored by:       The FreeBSD Foundation
2014-04-24 20:53:09 +00:00
Pedro F. Giffuni
a0161728bb newfs_msdos: fix inaccurate comments.
The fields from deMTime and deMDate in the DOS directory entry
are actually the last-modified time/date.

According to some online documentation these are the only
timestamps available in FAT12/FAT16.

MFC after:	3 days
2013-09-07 03:10:12 +00:00
Pedro F. Giffuni
f4f891a751 newfs_msdos: cosmetical cleanups
- Simplify diagnostic messages.
- Adopt lowercase first letters to make the messages
  more canonical.

PR:		bin/175404
Submitted by:	Christoph Mallon
Reviewed by:	bde
MFC after:	3 days
2013-01-19 03:34:02 +00:00
Pedro F. Giffuni
1ac4aa743c Many style fixes.
Remove C99 initializers: they don't help in this case.
Set errno to 0 before strtoll() (from NetBSD).

PR:		151850
Suggested by:	bde
Approved by:	jhb (Mentor)
MFC after:	2 weeks
2011-12-20 15:50:54 +00:00
Xin LI
658029e0d8 Use __packed to prevent alignment from taking place, which otherwise may
change the on-disk format in an incompatible way.  Without this change,
msdosfs created on FreeBSD/arm would not be mountable.

PR:		bin/162486
Submitted by:	Ian Lepore <freebsd damnhippie dyndns org>
Reported by:	Mattia Rossi <mrossi at swin.edu.au>
MFC after:	3 days
2011-11-11 20:31:48 +00:00
Andrey V. Elsukov
20ddb07906 Use NULL instead of 0 for third argument of sigaction(2).
Pointed by:	kib
MFC after:	2 weeks
2011-07-12 10:07:07 +00:00
Andrey V. Elsukov
40be4bee6f Add SIGINFO handler.
Reviewed by:	kib
Obtained from:	NetBSD (partly)
MFC after:	2 weeks
2011-07-12 09:03:38 +00:00
Konstantin Belousov
2490c5654b Rename variables to match msdosfs headers.
Submitted by:	Pedro F. Giffuni <giffunip tutopia com>
Reviewed by:	bde
MFC after:	2 weeks
2010-02-14 12:25:39 +00:00
Konstantin Belousov
fb95e056a5 Some cleanups from NetBSD:
- C99 initializers.
- Change the default volume label from "NO NAME" to "NO_NAME".
- Set OEM String to "BSD4.4 " following the unnamed spacing convention
  in that other OS that suggests "MSWIN4.1"
Also, David Naylor's changes for Clang, mostly changing the signess
of constants.

Submitted by:	Pedro F. Giffuni <giffunip tutopia com>
Clang fixes by:	David Naylor <naylor.b.david gmail com>
Reviewed by:	bde (with some disagreement about Clang issues)
MFC after:	2 weeks
2010-02-14 12:25:03 +00:00
Ed Schouten
3c7bcffad2 Do not prepend /dev/ when -C is used.
Submitted by:	Christoph Mallon <christoph mallon gmx de>
2009-04-11 14:56:29 +00:00
Ed Schouten
36df607c9f When using -C, do not warn when the file is not a character device, but warn when it is not a regular file.
Submitted by:	Christoph Mallon <christoph mallon gmx de>
2009-04-11 14:53:32 +00:00
Ed Schouten
f069c0aff0 Fix a bug in r185587.
fstat(fd, &sb) was not executed unconditionally anymore so sb was read
uninitialised when -C is used.

Submitted by:	Christoph Mallon <christoph mallon gmx de>
2009-04-11 14:43:22 +00:00
Ed Schouten
18a064438f Use ftruncate() instead of lseek()+write()+lseek() to set the created
file (-C) to the requested size.

Submitted by:	Christoph Mallon <christoph mallon gmx de>
2009-04-11 14:33:10 +00:00
Ed Schouten
20f96000fa De-static local variables in main() (which is not recursive) and const-ify
others.

Submitted by:	Christoph Mallon <christoph mallon gmx de>
2009-04-11 14:24:54 +00:00
Ed Schouten
101669c6f0 Show -@ and -C in usage, which were added in r185587.
Submitted by:	Christoph Mallon <christoph mallon gmx de>
2009-04-11 14:20:45 +00:00
Ed Schouten
b64e8d53e7 Clean up the usage() function to use a single fprintf().
Submitted by:	Christoph Mallon <christoph mallon gmx de>
2009-04-11 14:15:56 +00:00
Andriy Gapon
d461b46dd5 newfs_msdos: allow to work with media that doesn't have any CHS params
Either use parameters provided by user or make them up.
The code for faking CHS params is borrowed from disklabel code.
The logic for using user-provided and auto-guessed parameters is not
perfect, so to speak.

PR:		bin/121182
Approved by:	jhb (mentor)
2009-02-27 17:29:48 +00:00
Max Laier
d3adc65594 Fix build - cast off_t to (intmax_t) for printing. 2008-12-03 23:00:57 +00:00
Luigi Rizzo
b87d1601b6 Some useful operational extensions to newfs_msdos, especially
when preparing images for emulators or flash devices:

+ option '-C size' to create the underlying image file with given size.
  Saves doing a 'dd' before, and especially it creates a sparse file

+ option '-@ offset' to build the FAT image at the specified offset
  in the image file or device;

+ make the cluster size adaptive on the filesystem size.
  Previously the default was 4k which is really unconvenient with
  large media; now it goes from 512 bytes to 32k depending on
  filesystem size (i still need to check whether it makes sense
  to go further up, to 64k or above);

+ fix default geometry when not specified on the command line,
  use 63 sectors/255 heads by default.
  Also trim the size so it exactly a multiple of a track, to avoid
  complaints in some filesystem code.

+ document all the above, plus some manual page clarifications.

MFC after:	4 weeks
2008-12-03 18:22:36 +00:00
Luigi Rizzo
045651ec1e Create a fake geometry (16 heads, 64 sectors) when dealing with
a plain file and a geometry is not explicitly supplied through
command line or disktab entry.

This way you can a FAT image on a file as simply as this:

	newfs_msdos ./some/file

(right now you need a much longer command

	newfs_msdos -h 32 -u 64 -S 512 -s $total_blocks -o 0 ./some/file

Will be merged after 7.1 and 6.4 are released.
See also the related PR which suggests a similar change.

PR:		bin/121182
MFC after:	4 weeks
2008-11-26 21:05:03 +00:00
Tom Rhodes
93c26a8293 The newfs_msdos utility does not store the boot signature in the
correct place on large sector disks.  The boot signature should be at
offset 0x1fe in the BPB; newfs_msdos currently stores it 2 bytes from
the end of the sector.

Taken from:	NetBSD
2007-05-31 20:06:46 +00:00
Xin LI
d4b442791d WARNS=6 cleanup:
- Initialize everything in the struct array, not only the mentioned
   ones
 - Unconditionally initialize hs to 0 to avoid repeatly doing so
 - Cast to unsigned int when comparing to unsigned variables.
2005-01-17 14:14:00 +00:00
Tim J. Robbins
6abefb4fcd Remove unnecessary newlines from errx() arguments. 2004-02-17 02:02:18 +00:00
Scott Long
d702a8542a Bring newfs_msdos into the GEOM world. Totally rewrite and simplify
getdiskinfo().  For the fixed-disk case, bpb->hid probably isn't
handled correctly, but I'm not sure if this is a serious problem since
the primary use of this program is to format floppy disks.

Reviewed by:    phk
2002-11-03 08:54:46 +00:00
Peter Wemm
a1c254d8c6 EFI GPT partitions use 'p' as a slice seperator. eg: da0p1 or da0p217.
(There is a theoretical limit of 16384 partitions)
2002-10-04 00:29:26 +00:00
Tom Rhodes
ce66ddb763 s/filesystem/file system/g as discussed on -developers 2002-08-21 18:11:48 +00:00
Tom Rhodes
3468b317cb more file system > filesystem 2002-05-16 04:10:46 +00:00
Garrett Wollman
eb2fc78027 Don't depend on <sys/stat.h> bogusly including <sys/time.h> (and thereby
<time.h>).
2000-10-10 01:50:26 +00:00
Robert Nordier
5306a1eccb Remove redundant code left over on removal of /dev/rXXX handling
in r1.12.
2000-08-15 18:04:16 +00:00
Robert Nordier
e3d24c1a5f Partially revert r1.12, in which a warnx() if the device is not a
character device is changed to an errx().  This unnecessarily
compromises device independence.
2000-08-15 17:42:24 +00:00
Jeroen Ruigrok van der Werven
7333848d98 Fix the reporting of a raw device node.
Change a warnx to an errx since we should only attempt to use
this utility on a character device.

Approved by:	green
2000-07-26 20:12:46 +00:00
Warner Losh
71e93b3961 Better error message for a case that I hit. 2000-04-14 06:10:01 +00:00
KATO Takenori
4557555b36 Added 640KB and 1232KB formats, which were standard MS-DOS formats of
2DD and 2HD disks in Japan.

Submitted by:	Shigeharu TAKENO <shige@iee.niit.ac.jp>
Pointed out by:	chi@bd.mbn.or.jp (Chiharu Shibata)
2000-03-30 03:41:09 +00:00
Peter Wemm
7f3dea244c $Id$ -> $FreeBSD$ 1999-08-28 00:22:10 +00:00
Bill Fumerola
9292be42ca Avoid ambigious if-else 1999-07-21 01:55:03 +00:00
Jordan K. Hubbard
d26a815b77 Clean up some more residual /usr/mdec references. I left all the
extra rbootd/boot rom cruft pointing at /usr/mdec since it either
doesn't exist or doesn't work anyway, so who cares? :)
1999-01-03 02:18:58 +00:00