imported mkdosfs, added getopt.c for use with dosfsck

svn path=/trunk/; revision=16884
This commit is contained in:
Steven Edwards 2005-07-29 22:53:33 +00:00
parent c7cd667539
commit 42f41fa7c2
14 changed files with 1014 additions and 3 deletions

View file

@ -0,0 +1,63 @@
/*
* $Id$
* This is an unpublished work copyright (c) 1998 HELIOS Software GmbH
* 30827 Garbsen, Germany
*/
#include <stdio.h>
#include <string.h>
#ifdef HAS_UNISTD
# include <unistd.h>
#endif
char *optarg;
int optind = 1;
int opterr = 1;
int optopt;
static int subopt;
static int suboptind = 1;
int getopt(int argc, char *const argv[], const char * optstring)
{
char *curopt;
char *p;
int cursubopt;
if (suboptind == optind-1 && argv[suboptind][subopt] != '\0') {
curopt = (char *)argv[suboptind];
} else {
curopt = (char *)argv[optind];
if (curopt == NULL || curopt[0] != '-' || strcmp(curopt, "-") == 0)
return -1;
suboptind = optind;
subopt = 1;
optind++;
if (strcmp(curopt, "--") == 0)
return -1;
}
cursubopt = subopt++;
if ((p = strchr(optstring, curopt[cursubopt])) == NULL) {
optopt = curopt[cursubopt];
if (opterr)
fprintf(stderr, "%s: illegal option -- %c\n", argv[0], optopt);
return '?';
}
if (p[1] == ':') {
if (curopt[cursubopt+1] != '\0') {
optarg = curopt+cursubopt+1;
suboptind++;
return p[0];
}
if (argv[optind] == NULL) {
optopt = p[0];
if (opterr)
fprintf(stderr, "%s: option requires an argument -- %c\n", argv[0], optopt);
if (*optstring == ':')
return ':';
return '?';
}
optarg = argv[optind++];
}
return p[0];
}

View file

@ -0,0 +1 @@
mkdosfs

View file

@ -0,0 +1,41 @@
Announcing the release of mkdosfs version 0.3b (Yggdrasil)
It seems I didn't get the bug completely fixed in 0.3a. Some
borderline cases would still allocate too many sectors for the FAT.
Again, nothing to worry about, just a nitpick -- this one would only
in certain cases add one sector per FAT.
Announcing the release of mkdosfs version 0.3a (Yggdrasil)
Fixed a bug which would cause too many sectors to be reserved for the
FAT (filesystem will still work fine, but have slightly less space
available).
Announcing the release of mkdosfs version 0.3 (Yggdrasil)
This version correctly handles even very large filesystems, and
properly supports the modern (3.3+) DOS bootsector format, including a
message printed on boot attempts.
Peter Anvin
Yggdrasil Computing, Inc.
hpa@yggdrasil.com
--------------
Announcing the release of mkdosfs version 0.2
I've just uploaded mkdosfs to sunsite.unc.edu. It works in a similar way
to Remy Card's mke2fs, but creates an MS-DOS file system.
The filename is mkdosfs-0.2.tar.gz.
This second release should fix a small bug that could lead to FAT sizes that
Linux's dosfs would accept but MS-DOS wouldn't.
The archive contains a manual page, binary and source versions.
Dave Hudson
dave@humbug.demon.co.uk

View file

@ -0,0 +1,347 @@
The GPL below is copyrighted by the Free Software
Foundation, but the instance of code that it refers to (the mkdosfs
utility is copyrighted by me
- David Hudson
----------------------------------------
GNU GENERAL PUBLIC LICENSE
Version 2, June 1991
Copyright (C) 1989, 1991 Free Software Foundation, Inc.
675 Mass Ave, Cambridge, MA 02139, USA
Everyone is permitted to copy and distribute verbatim copies
of this license document, but changing it is not allowed.
Preamble
The licenses for most software are designed to take away your
freedom to share and change it. By contrast, the GNU General Public
License is intended to guarantee your freedom to share and change free
software--to make sure the software is free for all its users. This
General Public License applies to most of the Free Software
Foundation's software and to any other program whose authors commit to
using it. (Some other Free Software Foundation software is covered by
the GNU Library General Public License instead.) You can apply it to
your programs, too.
When we speak of free software, we are referring to freedom, not
price. Our General Public Licenses are designed to make sure that you
have the freedom to distribute copies of free software (and charge for
this service if you wish), that you receive source code or can get it
if you want it, that you can change the software or use pieces of it
in new free programs; and that you know you can do these things.
To protect your rights, we need to make restrictions that forbid
anyone to deny you these rights or to ask you to surrender the rights.
These restrictions translate to certain responsibilities for you if you
distribute copies of the software, or if you modify it.
For example, if you distribute copies of such a program, whether
gratis or for a fee, you must give the recipients all the rights that
you have. You must make sure that they, too, receive or can get the
source code. And you must show them these terms so they know their
rights.
We protect your rights with two steps: (1) copyright the software, and
(2) offer you this license which gives you legal permission to copy,
distribute and/or modify the software.
Also, for each author's protection and ours, we want to make certain
that everyone understands that there is no warranty for this free
software. If the software is modified by someone else and passed on, we
want its recipients to know that what they have is not the original, so
that any problems introduced by others will not reflect on the original
authors' reputations.
Finally, any free program is threatened constantly by software
patents. We wish to avoid the danger that redistributors of a free
program will individually obtain patent licenses, in effect making the
program proprietary. To prevent this, we have made it clear that any
patent must be licensed for everyone's free use or not licensed at all.
The precise terms and conditions for copying, distribution and
modification follow.
GNU GENERAL PUBLIC LICENSE
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
0. This License applies to any program or other work which contains
a notice placed by the copyright holder saying it may be distributed
under the terms of this General Public License. The "Program", below,
refers to any such program or work, and a "work based on the Program"
means either the Program or any derivative work under copyright law:
that is to say, a work containing the Program or a portion of it,
either verbatim or with modifications and/or translated into another
language. (Hereinafter, translation is included without limitation in
the term "modification".) Each licensee is addressed as "you".
Activities other than copying, distribution and modification are not
covered by this License; they are outside its scope. The act of
running the Program is not restricted, and the output from the Program
is covered only if its contents constitute a work based on the
Program (independent of having been made by running the Program).
Whether that is true depends on what the Program does.
1. You may copy and distribute verbatim copies of the Program's
source code as you receive it, in any medium, provided that you
conspicuously and appropriately publish on each copy an appropriate
copyright notice and disclaimer of warranty; keep intact all the
notices that refer to this License and to the absence of any warranty;
and give any other recipients of the Program a copy of this License
along with the Program.
You may charge a fee for the physical act of transferring a copy, and
you may at your option offer warranty protection in exchange for a fee.
2. You may modify your copy or copies of the Program or any portion
of it, thus forming a work based on the Program, and copy and
distribute such modifications or work under the terms of Section 1
above, provided that you also meet all of these conditions:
a) You must cause the modified files to carry prominent notices
stating that you changed the files and the date of any change.
b) You must cause any work that you distribute or publish, that in
whole or in part contains or is derived from the Program or any
part thereof, to be licensed as a whole at no charge to all third
parties under the terms of this License.
c) If the modified program normally reads commands interactively
when run, you must cause it, when started running for such
interactive use in the most ordinary way, to print or display an
announcement including an appropriate copyright notice and a
notice that there is no warranty (or else, saying that you provide
a warranty) and that users may redistribute the program under
these conditions, and telling the user how to view a copy of this
License. (Exception: if the Program itself is interactive but
does not normally print such an announcement, your work based on
the Program is not required to print an announcement.)
These requirements apply to the modified work as a whole. If
identifiable sections of that work are not derived from the Program,
and can be reasonably considered independent and separate works in
themselves, then this License, and its terms, do not apply to those
sections when you distribute them as separate works. But when you
distribute the same sections as part of a whole which is a work based
on the Program, the distribution of the whole must be on the terms of
this License, whose permissions for other licensees extend to the
entire whole, and thus to each and every part regardless of who wrote it.
Thus, it is not the intent of this section to claim rights or contest
your rights to work written entirely by you; rather, the intent is to
exercise the right to control the distribution of derivative or
collective works based on the Program.
In addition, mere aggregation of another work not based on the Program
with the Program (or with a work based on the Program) on a volume of
a storage or distribution medium does not bring the other work under
the scope of this License.
3. You may copy and distribute the Program (or a work based on it,
under Section 2) in object code or executable form under the terms of
Sections 1 and 2 above provided that you also do one of the following:
a) Accompany it with the complete corresponding machine-readable
source code, which must be distributed under the terms of Sections
1 and 2 above on a medium customarily used for software interchange; or,
b) Accompany it with a written offer, valid for at least three
years, to give any third party, for a charge no more than your
cost of physically performing source distribution, a complete
machine-readable copy of the corresponding source code, to be
distributed under the terms of Sections 1 and 2 above on a medium
customarily used for software interchange; or,
c) Accompany it with the information you received as to the offer
to distribute corresponding source code. (This alternative is
allowed only for noncommercial distribution and only if you
received the program in object code or executable form with such
an offer, in accord with Subsection b above.)
The source code for a work means the preferred form of the work for
making modifications to it. For an executable work, complete source
code means all the source code for all modules it contains, plus any
associated interface definition files, plus the scripts used to
control compilation and installation of the executable. However, as a
special exception, the source code distributed need not include
anything that is normally distributed (in either source or binary
form) with the major components (compiler, kernel, and so on) of the
operating system on which the executable runs, unless that component
itself accompanies the executable.
If distribution of executable or object code is made by offering
access to copy from a designated place, then offering equivalent
access to copy the source code from the same place counts as
distribution of the source code, even though third parties are not
compelled to copy the source along with the object code.
4. You may not copy, modify, sublicense, or distribute the Program
except as expressly provided under this License. Any attempt
otherwise to copy, modify, sublicense or distribute the Program is
void, and will automatically terminate your rights under this License.
However, parties who have received copies, or rights, from you under
this License will not have their licenses terminated so long as such
parties remain in full compliance.
5. You are not required to accept this License, since you have not
signed it. However, nothing else grants you permission to modify or
distribute the Program or its derivative works. These actions are
prohibited by law if you do not accept this License. Therefore, by
modifying or distributing the Program (or any work based on the
Program), you indicate your acceptance of this License to do so, and
all its terms and conditions for copying, distributing or modifying
the Program or works based on it.
6. Each time you redistribute the Program (or any work based on the
Program), the recipient automatically receives a license from the
original licensor to copy, distribute or modify the Program subject to
these terms and conditions. You may not impose any further
restrictions on the recipients' exercise of the rights granted herein.
You are not responsible for enforcing compliance by third parties to
this License.
7. If, as a consequence of a court judgment or allegation of patent
infringement or for any other reason (not limited to patent issues),
conditions are imposed on you (whether by court order, agreement or
otherwise) that contradict the conditions of this License, they do not
excuse you from the conditions of this License. If you cannot
distribute so as to satisfy simultaneously your obligations under this
License and any other pertinent obligations, then as a consequence you
may not distribute the Program at all. For example, if a patent
license would not permit royalty-free redistribution of the Program by
all those who receive copies directly or indirectly through you, then
the only way you could satisfy both it and this License would be to
refrain entirely from distribution of the Program.
If any portion of this section is held invalid or unenforceable under
any particular circumstance, the balance of the section is intended to
apply and the section as a whole is intended to apply in other
circumstances.
It is not the purpose of this section to induce you to infringe any
patents or other property right claims or to contest validity of any
such claims; this section has the sole purpose of protecting the
integrity of the free software distribution system, which is
implemented by public license practices. Many people have made
generous contributions to the wide range of software distributed
through that system in reliance on consistent application of that
system; it is up to the author/donor to decide if he or she is willing
to distribute software through any other system and a licensee cannot
impose that choice.
This section is intended to make thoroughly clear what is believed to
be a consequence of the rest of this License.
8. If the distribution and/or use of the Program is restricted in
certain countries either by patents or by copyrighted interfaces, the
original copyright holder who places the Program under this License
may add an explicit geographical distribution limitation excluding
those countries, so that distribution is permitted only in or among
countries not thus excluded. In such case, this License incorporates
the limitation as if written in the body of this License.
9. The Free Software Foundation may publish revised and/or new versions
of the General Public License from time to time. Such new versions will
be similar in spirit to the present version, but may differ in detail to
address new problems or concerns.
Each version is given a distinguishing version number. If the Program
specifies a version number of this License which applies to it and "any
later version", you have the option of following the terms and conditions
either of that version or of any later version published by the Free
Software Foundation. If the Program does not specify a version number of
this License, you may choose any version ever published by the Free Software
Foundation.
10. If you wish to incorporate parts of the Program into other free
programs whose distribution conditions are different, write to the author
to ask for permission. For software which is copyrighted by the Free
Software Foundation, write to the Free Software Foundation; we sometimes
make exceptions for this. Our decision will be guided by the two goals
of preserving the free status of all derivatives of our free software and
of promoting the sharing and reuse of software generally.
NO WARRANTY
11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS
TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE
PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
REPAIR OR CORRECTION.
12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
POSSIBILITY OF SUCH DAMAGES.
END OF TERMS AND CONDITIONS
Appendix: How to Apply These Terms to Your New Programs
If you develop a new program, and you want it to be of the greatest
possible use to the public, the best way to achieve this is to make it
free software which everyone can redistribute and change under these terms.
To do so, attach the following notices to the program. It is safest
to attach them to the start of each source file to most effectively
convey the exclusion of warranty; and each file should have at least
the "copyright" line and a pointer to where the full notice is found.
<one line to give the program's name and a brief idea of what it does.>
Copyright (C) 19yy <name of author>
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
Also add information on how to contact you by electronic and paper mail.
If the program is interactive, make it output a short notice like this
when it starts in an interactive mode:
Gnomovision version 69, Copyright (C) 19yy name of author
Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
This is free software, and you are welcome to redistribute it
under certain conditions; type `show c' for details.
The hypothetical commands `show w' and `show c' should show the appropriate
parts of the General Public License. Of course, the commands you use may
be called something other than `show w' and `show c'; they could even be
mouse-clicks or menu items--whatever suits your program.
You should also get your employer (if you work as a programmer) or your
school, if any, to sign a "copyright disclaimer" for the program, if
necessary. Here is a sample; alter the names:
Yoyodyne, Inc., hereby disclaims all copyright interest in the program
`Gnomovision' (which makes passes at compilers) written by James Hacker.
<signature of Ty Coon>, 1 April 1989
Ty Coon, President of Vice
This General Public License does not permit incorporating your program into
proprietary programs. If your program is a subroutine library, you may
consider it more useful to permit linking proprietary applications with the
library. If this is what you want to do, use the GNU Library General
Public License instead of this License.

View file

@ -0,0 +1,18 @@
28th January 1995 H. Peter Anvin (hpa@yggdrasil.com)
Better algorithm to select cluster sizes on large filesystems.
Added bogus boot sector code that on attempts to boot prints a
message (which can be chosen at mkdosfs time) and lets the user
press any key and try again. Corrected support for 1.2 Mb
floppies. mkdosfs now generates the extended bootsector
(superblock) format of DOS 3.3+, with support for volume ID's and
volume labels (volume labels are also written to the root
directory, as they should).
18th February 1994 Dave Hudson (dave@humbug.demon.co.uk)
Released version 0.2 - clears a bug in the FAT sizing code.
1st September 1993 Dave Hudson (dave@humbug.demon.co.uk)
Released version 0.1 - ALPHA release of mkdosfs

View file

@ -0,0 +1,31 @@
OBJECTS = mkdosfs.o
all: mkdosfs
mkdosfs: $(OBJECTS)
$(CC) $(LDFLAGS) $^ -o $@
.c.o:
$(CC) $(CFLAGS) -c $< -o $@
install: mkdosfs
mkdir -p $(SBINDIR) $(MANDIR)
install -m 755 mkdosfs $(SBINDIR)
install -m 644 mkdosfs.8 $(MANDIR)
rm -f $(SBINDIR)/mkfs.msdos
rm -f $(SBINDIR)/mkfs.vfat
ln -s mkdosfs $(SBINDIR)/mkfs.msdos
ln -s mkdosfs $(SBINDIR)/mkfs.vfat
rm -f $(MANDIR)/mkfs.msdos.8
ln -s mkdosfs.8 $(MANDIR)/mkfs.msdos.8
ln -s mkdosfs.8 $(MANDIR)/mkfs.vfat.8
clean :
echo *.o *.i *.s *~ \#*# core .#* .new*
rm -f *.o *.i *.s *~ \#*# core .#* .new*
distclean: clean
rm -f mkdosfs *.a *# *.orig *.rej TAGS
dep:

View file

@ -0,0 +1,50 @@
mkdosfs - Make DOS file system utilty.
I wrote this, partially to complement the dosfsck utility written by Werner
Almesberger (who graciously gave me some pointers when I asked for some
advice about writing this code), and also to avoid me having to boot DOS
just to create data partitions (I use Linux to back up DOS :-) ).
The code is really derived from Remy Card's mke2fs utility - I used this as a
framework, although all of the file system specific stuff was removed and the
DOS stuff inserted. I believe originally mke2fs was based on Linus' mkfs
code, hence the acknowledgements in the source code.
Neither Remy nor Linus have had any involvement with mkdosfs, so if there are
any bugs they're almost certainly "all my own work".
The code has been available for ftp since 1st September 1993, and I have yet
to receive any bug reports from users. I don't know of any bugs, but if you
do find a bug or have any constructive comments, please mail me!
The only bug I found with version 0.1 was an obscure fault that could lead
to an invalid (for MS-DOS, not Linux's dos fs) number of sectors used in the
file allocation table(s).
Dave Hudson
dave@humbug.demon.co.uk
FAT32 support
=============
mkdosfs now can also create filesystems in the new FAT32 format. To do
this, give mkdosfs a "-F 32" option. FAT32 isn't selected
automatically (yet), even if very large clusters are needed with
FAT16. With FAT32 you have two additional options, -R to select the
number of reserved sectors (usually 32), and -b to select the location
of the backup boot sector (default 6). Of course such a backup is
created, as well as the new info sector. On FAT32, the root directory
is always created as a cluster chain. Sorry, there's no switch to
generate an old static root dir.
One bigger bug fix besides FAT32 was to reject filesystems that need a
16 bit FAT to fit all possible clusters, but the bigger FAT needs some
more sectors, so the total number of clusters drop below the border
where MS-DOS expects a 12 bit FAT. So such filesystems would be FAT16,
but interpreted as FAT32 by DOS. The fix is to reduce filesystem size
a bit.
- Roman <Roman.Hodek@informatik.uni-erlangen.de>

View file

@ -0,0 +1,63 @@
/*
* $Id$
* This is an unpublished work copyright (c) 1998 HELIOS Software GmbH
* 30827 Garbsen, Germany
*/
#include <stdio.h>
#include <string.h>
#ifdef HAS_UNISTD
# include <unistd.h>
#endif
char *optarg;
int optind = 1;
int opterr = 1;
int optopt;
static int subopt;
static int suboptind = 1;
int getopt(int argc, char *const argv[], const char * optstring)
{
char *curopt;
char *p;
int cursubopt;
if (suboptind == optind-1 && argv[suboptind][subopt] != '\0') {
curopt = (char *)argv[suboptind];
} else {
curopt = (char *)argv[optind];
if (curopt == NULL || curopt[0] != '-' || strcmp(curopt, "-") == 0)
return -1;
suboptind = optind;
subopt = 1;
optind++;
if (strcmp(curopt, "--") == 0)
return -1;
}
cursubopt = subopt++;
if ((p = strchr(optstring, curopt[cursubopt])) == NULL) {
optopt = curopt[cursubopt];
if (opterr)
fprintf(stderr, "%s: illegal option -- %c\n", argv[0], optopt);
return '?';
}
if (p[1] == ':') {
if (curopt[cursubopt+1] != '\0') {
optarg = curopt+cursubopt+1;
suboptind++;
return p[0];
}
if (argv[optind] == NULL) {
optopt = p[0];
if (opterr)
fprintf(stderr, "%s: option requires an argument -- %c\n", argv[0], optopt);
if (*optstring == ':')
return ':';
return '?';
}
optarg = argv[optind++];
}
return p[0];
}

View file

@ -0,0 +1,19 @@
Begin3
Title: mkdosfs
Version: Yggdrasil 0.3b
Entered-date: 05MAY95
Description: A utility to create MS-DOS FAT filesystems under
Linux. This version uses the enhanced boot
sector/superblock format of DOS 3.3+ as well as
provides a default dummy boot sector code.
This is a bug fix release.
Keywords: mkdosfs, DOS FAT filesystem
Author: Dave Hudson <dave@humbug.demon.co.uk>
Maintained-by: H. Peter Anvin <hpa@yggdrasil.com>
Primary-site: sunsite.unc.edu /pub/Linux/system/Filesystems/dosfs
18531 mkdosfs-ygg-0.3b.tar.gz
Alternate-site: ftp.yggdrasil.com /pub/dist/mkdosfs
Original-site:
Platform: Linux
Copying-policy: GPL
End

View file

@ -0,0 +1,198 @@
.\" -*- nroff -*-
.TH MKDOSFS 8 "5 May 1995" "Version 2.x"
.SH NAME
.B mkdosfs
\- create an MS-DOS file system under Linux
.SH SYNOPSIS
.B mkdosfs
[
.B \-A
]
[
.B \-b
.I sector-of-backup
]
[
.B \-c
]
[
.B \-l
.I filename
]
[
.B \-C
]
[
.B \-f
.I number-of-FATs
]
[
.B \-F
.I FAT-size
]
[
.B \-i
.I volume-id
]
.RB [ " \-I " ]
[
.B \-m
.I message-file
]
[
.B \-n
.I volume-name
]
[
.B \-r
.I root-dir-entries
]
[
.B \-R
.I number-of-reserved-sectors
]
[
.B \-s
.I sectors-per-cluster
]
[
.B \-S
.I logical-sector-size
]
[
.B \-v
]
.I device
[
.I block-count
]
.SH DESCRIPTION
.B mkdosfs
is used to create an MS-DOS file system under Linux on a device (usually
a disk partition).
.I device
is the special file corresponding to the device (e.g /dev/hdXX).
.I block-count
is the number of blocks on the device. If omitted,
.B mkdosfs
automatically determiness the file system size.
.SH OPTIONS
.TP
.B \-A
Use Atari variation of the MS-DOS filesystem. This is default if
\fBmkdosfs\fP is run on an Atari, then this option turns off Atari
format. There are some differences when using Atari format: If not
directed otherwise by the user, \fBmkdosfs\fP will always use 2
sectors per cluster, since GEMDOS doesn't like other values very much.
It will also obey the maximum number of sectors GEMDOS can handle.
Larger filesystems are managed by raising the logical sector size.
Under Atari format, an Atari-compatible serial number for the
filesystem is generated, and a 12 bit FAT is used only for filesystems
that have one of the usual floppy sizes (720k, 1.2M, 1.44M, 2.88M), a
16 bit FAT otherwise. This can be overridden with the \fB\-F\fP
option. Some PC-specific boot sector fields aren't written, and a boot
message (option \fB\-m\fP) is ignored.
.TP
.BI \-b " sector-of-backup "
Selects the location of the backup boot sector for FAT32. Default
depends on number of reserved sectors, but usually is sector 6. The
backup must be within the range of reserved sectors.
.TP
.B \-c
Check the device for bad blocks before creating the file system.
.TP
.B \-C
Create the file given as \fIdevice\fP on the command line, and write
the to-be-created file system to it. This can be used to create the
new file system in a file instead of on a real device, and to avoid
using \fBdd\fP in advance to create a file of appropriate size. With
this option, the \fIblock-count\fP must be given, because otherwise
the intended size of the file system wouldn't be known. The file
created is a sparse file, which actually only contains the meta-data
areas (boot sector, FATs, and root directory). The data portions won't
be stored on the disk, but the file nevertheless will have the
correct size. The resulting file can be copied later to a floppy disk
or other device, or mounted through a loop device.
.TP
.BI \-f " number-of-FATs"
Specify the number of file allocation tables in the file system. The
default is 2. Currently the Linux MS-DOS file system does not support
more than 2 FATs.
.TP
.BI \-F " FAT-size"
Specifies the type of file allocation tables used (12, 16 or 32 bit).
If nothing is specified, \fBmkdosfs\fR will automatically select
between 12 and 16 bit, whatever fits better for the filesystem size.
32 bit FAT (FAT32 format) must (still) be selected explicitly if you
want it.
.TP
.BI \-i " volume-id"
Sets the volume ID of the newly created filesystem;
.I volume-id
is a 32-bit hexadecimal number (for example, 2e24ec82). The default
is a number which depends on the filesystem creation time.
.TP
.B \-I
Normally you are not allowed to use any 'full' fixed disk devices.
.B mkdosfs
will complain and tell you that it refuses to work. This is different
when usind MO disks. One doesn't always need partitions on MO disks.
The filesytem can go directly to the whole disk. Under other OSes
this is known as the 'superfloppy' format.
This switch will force
.B mkdosfs
to work properly.
.TP
.BI \-l " filename"
Read the bad blocks list from
.IR filename .
.TP
.BI \-m " message-file"
Sets the message the user receives on attempts to boot this filesystem
without having properly installed an operating system. The message
file must not exceed 418 bytes once line feeds have been converted to
carriage return-line feed combinations, and tabs have been expanded.
If the filename is a hyphen (-), the text is taken from standard input.
.TP
.BI \-n " volume-name"
Sets the volume name (label) of the filesystem. The volume name can
be up to 11 characters long. The default is no label.
.TP
.BI \-r " root-dir-entries"
Select the number of entries available in the root directory. The
default is 112 or 224 for floppies and 512 for hard disks.
.TP
.BI \-R " number-of-reserved-sectors "
Select the number of reserved sectos. With FAT32 format at least 2
reserved sectors are needed, the default is 32. Otherwise the default
is 1 (only the boot sector).
.TP
.BI \-s " sectors-per-cluster"
Specify the number of disk sectors per cluster. Must be a power of 2,
i.e. 1, 2, 4, 8, ... 128.
.TP
.BI \-S " logical-sector-size"
Specify the number of bytes per logical sector. Must be a power of 2
and greater than or equal to 512, i.e. 512, 1024, 2048, 4096, 8192,
16384, or 32768.
.TP
.B \-v
Verbose execution.
.SH BUGS
None are know at the moment. If you find any, please report it them
to <hpa@yggdrasil.com>. Please include the version number (Yggdrasil 0.3a).
.SH AUTHOR
Dave Hudson - <dave@humbug.demon.co.uk>; modified by Peter Anvin
<hpa@yggdrasil.com>. Fixes and additions by Roman Hodek
<Roman.Hodek@informatik.uni-erlangen.de> for Debian/GNU Linux.
.SH ACKNOWLEDGEMENTS
.B mkdosfs
is based on code from
.BR mke2fs
(written by Remy Card - <card@masi.ibp.fr>) which is itself based on
.BR mkfs
(written by Linus Torvalds - <torvalds@cs.helsinki.fi>).
.SH SEE ALSO
.BR dosfsck (8),
.BR mkfs (8)

View file

@ -50,9 +50,7 @@
/* Include the header files */
//#include "../version.h"
#define VERSION "test"
#define VERSION_DATE __DATE__
#include "../version.h"
#ifdef _WIN32
#define _WIN32_WINNT 0x0400

View file

@ -0,0 +1,104 @@
# Microsoft Developer Studio Project File - Name="mkdosfs" - Package Owner=<4>
# Microsoft Developer Studio Generated Build File, Format Version 6.00
# ** DO NOT EDIT **
# TARGTYPE "Win32 (x86) Console Application" 0x0103
CFG=mkdosfs - Win32 Debug
!MESSAGE This is not a valid makefile. To build this project using NMAKE,
!MESSAGE use the Export Makefile command and run
!MESSAGE
!MESSAGE NMAKE /f "mkdosfs.mak".
!MESSAGE
!MESSAGE You can specify a configuration when running NMAKE
!MESSAGE by defining the macro CFG on the command line. For example:
!MESSAGE
!MESSAGE NMAKE /f "mkdosfs.mak" CFG="mkdosfs - Win32 Debug"
!MESSAGE
!MESSAGE Possible choices for configuration are:
!MESSAGE
!MESSAGE "mkdosfs - Win32 Release" (based on "Win32 (x86) Console Application")
!MESSAGE "mkdosfs - Win32 Debug" (based on "Win32 (x86) Console Application")
!MESSAGE
# Begin Project
# PROP AllowPerConfigDependencies 0
# PROP Scc_ProjName ""
# PROP Scc_LocalPath ""
CPP=cl.exe
RSC=rc.exe
!IF "$(CFG)" == "mkdosfs - Win32 Release"
# PROP BASE Use_MFC 0
# PROP BASE Use_Debug_Libraries 0
# PROP BASE Output_Dir "Release"
# PROP BASE Intermediate_Dir "Release"
# PROP BASE Target_Dir ""
# PROP Use_MFC 0
# PROP Use_Debug_Libraries 0
# PROP Output_Dir "Release"
# PROP Intermediate_Dir "Release"
# PROP Target_Dir ""
# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
# ADD CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
# ADD BASE RSC /l 0x407 /d "NDEBUG"
# ADD RSC /l 0x407 /d "NDEBUG"
BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LINK32=link.exe
# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386
# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386
!ELSEIF "$(CFG)" == "mkdosfs - Win32 Debug"
# PROP BASE Use_MFC 0
# PROP BASE Use_Debug_Libraries 1
# PROP BASE Output_Dir "Debug"
# PROP BASE Intermediate_Dir "Debug"
# PROP BASE Target_Dir ""
# PROP Use_MFC 0
# PROP Use_Debug_Libraries 1
# PROP Output_Dir "Debug"
# PROP Intermediate_Dir "Debug"
# PROP Target_Dir ""
# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c
# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /FR /YX /FD /GZ /c
# ADD BASE RSC /l 0x407 /d "_DEBUG"
# ADD RSC /l 0x407 /d "_DEBUG"
BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LINK32=link.exe
# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept
# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept
!ENDIF
# Begin Target
# Name "mkdosfs - Win32 Release"
# Name "mkdosfs - Win32 Debug"
# Begin Group "Source Files"
# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
# Begin Source File
SOURCE=.\getopt.c
# End Source File
# Begin Source File
SOURCE=.\mkdosfs.c
# End Source File
# End Group
# Begin Group "Header Files"
# PROP Default_Filter "h;hpp;hxx;hm;inl"
# End Group
# Begin Group "Resource Files"
# PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe"
# End Group
# End Target
# End Project

View file

@ -0,0 +1,29 @@
Microsoft Developer Studio Workspace File, Format Version 6.00
# WARNING: DO NOT EDIT OR DELETE THIS WORKSPACE FILE!
###############################################################################
Project: "mkdosfs"=".\mkdosfs.dsp" - Package Owner=<4>
Package=<5>
{{{
}}}
Package=<4>
{{{
}}}
###############################################################################
Global:
Package=<5>
{{{
}}}
Package=<3>
{{{
}}}
###############################################################################

View file

@ -0,0 +1,49 @@
<html>
<body>
<pre>
<h1>Build Log</h1>
<h3>
--------------------Configuration: mkdosfs - Win32 Release--------------------
</h3>
<h3>Command Lines</h3>
Creating temporary file "C:\DOKUME~1\JENS-U~1\LOKALE~1\Temp\RSP173.tmp" with contents
[
/nologo /ML /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /Fp"Release/mkdosfs.pch" /YX /Fo"Release/" /Fd"Release/" /FD /c
"C:\cygwin\home\jum\dosfstools-2.8\mkdosfs\mkdosfs.c"
]
Creating command line "cl.exe @"C:\DOKUME~1\JENS-U~1\LOKALE~1\Temp\RSP173.tmp""
Creating temporary file "C:\DOKUME~1\JENS-U~1\LOKALE~1\Temp\RSP174.tmp" with contents
[
kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /incremental:no /pdb:"Release/mkdosfs.pdb" /machine:I386 /out:"Release/mkdosfs.exe"
".\Release\getopt.obj"
".\Release\mkdosfs.obj"
]
Creating command line "link.exe @"C:\DOKUME~1\JENS-U~1\LOKALE~1\Temp\RSP174.tmp""
<h3>Output Window</h3>
Compiling...
mkdosfs.c
C:\cygwin\home\jum\dosfstools-2.8\mkdosfs\mkdosfs.c(272) : warning C4244: '=' : conversion from '__int64 ' to 'long ', possible loss of data
C:\cygwin\home\jum\dosfstools-2.8\mkdosfs\mkdosfs.c(273) : warning C4244: '=' : conversion from '__int64 ' to 'long ', possible loss of data
C:\cygwin\home\jum\dosfstools-2.8\mkdosfs\mkdosfs.c(487) : warning C4305: 'initializing' : truncation from 'const int ' to 'char '
C:\cygwin\home\jum\dosfstools-2.8\mkdosfs\mkdosfs.c(487) : warning C4305: 'initializing' : truncation from 'const int ' to 'char '
C:\cygwin\home\jum\dosfstools-2.8\mkdosfs\mkdosfs.c(704) : warning C4018: '<' : signed/unsigned mismatch
C:\cygwin\home\jum\dosfstools-2.8\mkdosfs\mkdosfs.c(706) : warning C4018: '>' : signed/unsigned mismatch
C:\cygwin\home\jum\dosfstools-2.8\mkdosfs\mkdosfs.c(717) : warning C4018: '<' : signed/unsigned mismatch
C:\cygwin\home\jum\dosfstools-2.8\mkdosfs\mkdosfs.c(813) : warning C4244: 'return' : conversion from '__int64 ' to 'int ', possible loss of data
C:\cygwin\home\jum\dosfstools-2.8\mkdosfs\mkdosfs.c(888) : warning C4244: '=' : conversion from 'unsigned long ' to 'unsigned short ', possible loss of data
C:\cygwin\home\jum\dosfstools-2.8\mkdosfs\mkdosfs.c(889) : warning C4244: '=' : conversion from 'unsigned long ' to 'unsigned short ', possible loss of data
C:\cygwin\home\jum\dosfstools-2.8\mkdosfs\mkdosfs.c(1197) : warning C4244: '=' : conversion from '__int64 ' to 'unsigned int ', possible loss of data
C:\cygwin\home\jum\dosfstools-2.8\mkdosfs\mkdosfs.c(1223) : warning C4244: '=' : conversion from '__int64 ' to 'unsigned int ', possible loss of data
C:\cygwin\home\jum\dosfstools-2.8\mkdosfs\mkdosfs.c(1242) : warning C4244: '=' : conversion from '__int64 ' to 'unsigned int ', possible loss of data
C:\cygwin\home\jum\dosfstools-2.8\mkdosfs\mkdosfs.c(1270) : warning C4244: '=' : conversion from '__int64 ' to 'unsigned int ', possible loss of data
C:\cygwin\home\jum\dosfstools-2.8\mkdosfs\mkdosfs.c(1387) : warning C4244: '=' : conversion from '__int64 ' to 'unsigned int ', possible loss of data
C:\cygwin\home\jum\dosfstools-2.8\mkdosfs\mkdosfs.c(1400) : warning C4018: '<=' : signed/unsigned mismatch
Linking...
<h3>Results</h3>
mkdosfs.exe - 0 error(s), 16 warning(s)
</pre>
</body>
</html>