From: Steven Edwards Date: Fri, 29 Jul 2005 22:53:33 +0000 (+0000) Subject: imported mkdosfs, added getopt.c for use with dosfsck X-Git-Tag: ReactOS-0.2.8~1452 X-Git-Url: https://git.reactos.org/?p=reactos.git;a=commitdiff_plain;h=42f41fa7c2187a7f97ef18e0a2bc0fdcf0b12ea7 imported mkdosfs, added getopt.c for use with dosfsck svn path=/trunk/; revision=16884 --- diff --git a/rosapps/sysutils/dosfsck/getopt.c b/rosapps/sysutils/dosfsck/getopt.c new file mode 100644 index 00000000000..0783623e9cb --- /dev/null +++ b/rosapps/sysutils/dosfsck/getopt.c @@ -0,0 +1,63 @@ +/* + * $Id$ + * This is an unpublished work copyright (c) 1998 HELIOS Software GmbH + * 30827 Garbsen, Germany + */ + + +#include +#include +#ifdef HAS_UNISTD +# include +#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]; +} diff --git a/rosapps/sysutils/mkdosfs/.cvsignore b/rosapps/sysutils/mkdosfs/.cvsignore new file mode 100644 index 00000000000..7c78b65bc11 --- /dev/null +++ b/rosapps/sysutils/mkdosfs/.cvsignore @@ -0,0 +1 @@ +mkdosfs diff --git a/rosapps/sysutils/mkdosfs/ANNOUNCE b/rosapps/sysutils/mkdosfs/ANNOUNCE new file mode 100644 index 00000000000..1f02ea28138 --- /dev/null +++ b/rosapps/sysutils/mkdosfs/ANNOUNCE @@ -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 diff --git a/rosapps/sysutils/mkdosfs/COPYING b/rosapps/sysutils/mkdosfs/COPYING new file mode 100644 index 00000000000..8857e53d44f --- /dev/null +++ b/rosapps/sysutils/mkdosfs/COPYING @@ -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. + + + Copyright (C) 19yy + + 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. + + , 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. diff --git a/rosapps/sysutils/mkdosfs/ChangeLog b/rosapps/sysutils/mkdosfs/ChangeLog new file mode 100644 index 00000000000..c428a50c055 --- /dev/null +++ b/rosapps/sysutils/mkdosfs/ChangeLog @@ -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 diff --git a/rosapps/sysutils/mkdosfs/Makefile b/rosapps/sysutils/mkdosfs/Makefile new file mode 100644 index 00000000000..1a9365ee72a --- /dev/null +++ b/rosapps/sysutils/mkdosfs/Makefile @@ -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: diff --git a/rosapps/sysutils/mkdosfs/README b/rosapps/sysutils/mkdosfs/README new file mode 100644 index 00000000000..2da136e3720 --- /dev/null +++ b/rosapps/sysutils/mkdosfs/README @@ -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 diff --git a/rosapps/sysutils/mkdosfs/getopt.c b/rosapps/sysutils/mkdosfs/getopt.c new file mode 100644 index 00000000000..0783623e9cb --- /dev/null +++ b/rosapps/sysutils/mkdosfs/getopt.c @@ -0,0 +1,63 @@ +/* + * $Id$ + * This is an unpublished work copyright (c) 1998 HELIOS Software GmbH + * 30827 Garbsen, Germany + */ + + +#include +#include +#ifdef HAS_UNISTD +# include +#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]; +} diff --git a/rosapps/sysutils/mkdosfs/mkdosfs-ygg-0.3b.lsm b/rosapps/sysutils/mkdosfs/mkdosfs-ygg-0.3b.lsm new file mode 100644 index 00000000000..9f78af7a1e0 --- /dev/null +++ b/rosapps/sysutils/mkdosfs/mkdosfs-ygg-0.3b.lsm @@ -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 +Maintained-by: H. Peter Anvin +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 diff --git a/rosapps/sysutils/mkdosfs/mkdosfs.8 b/rosapps/sysutils/mkdosfs/mkdosfs.8 new file mode 100644 index 00000000000..0d5d589c629 --- /dev/null +++ b/rosapps/sysutils/mkdosfs/mkdosfs.8 @@ -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 . Please include the version number (Yggdrasil 0.3a). +.SH AUTHOR +Dave Hudson - ; modified by Peter Anvin +. Fixes and additions by Roman Hodek + for Debian/GNU Linux. +.SH ACKNOWLEDGEMENTS +.B mkdosfs +is based on code from +.BR mke2fs +(written by Remy Card - ) which is itself based on +.BR mkfs +(written by Linus Torvalds - ). +.SH SEE ALSO +.BR dosfsck (8), +.BR mkfs (8) diff --git a/rosapps/sysutils/dosfsck/mkdosfs.c b/rosapps/sysutils/mkdosfs/mkdosfs.c similarity index 99% rename from rosapps/sysutils/dosfsck/mkdosfs.c rename to rosapps/sysutils/mkdosfs/mkdosfs.c index a74dcca87d9..9c6e0ed82f3 100644 --- a/rosapps/sysutils/dosfsck/mkdosfs.c +++ b/rosapps/sysutils/mkdosfs/mkdosfs.c @@ -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 diff --git a/rosapps/sysutils/mkdosfs/mkdosfs.dsp b/rosapps/sysutils/mkdosfs/mkdosfs.dsp new file mode 100644 index 00000000000..60c88816d13 --- /dev/null +++ b/rosapps/sysutils/mkdosfs/mkdosfs.dsp @@ -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 diff --git a/rosapps/sysutils/mkdosfs/mkdosfs.dsw b/rosapps/sysutils/mkdosfs/mkdosfs.dsw new file mode 100644 index 00000000000..abc4fb05151 --- /dev/null +++ b/rosapps/sysutils/mkdosfs/mkdosfs.dsw @@ -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> +{{{ +}}} + +############################################################################### + diff --git a/rosapps/sysutils/mkdosfs/mkdosfs.plg b/rosapps/sysutils/mkdosfs/mkdosfs.plg new file mode 100644 index 00000000000..cc807431f79 --- /dev/null +++ b/rosapps/sysutils/mkdosfs/mkdosfs.plg @@ -0,0 +1,49 @@ + + +
+

Build Log

+

+--------------------Configuration: mkdosfs - Win32 Release-------------------- +

+

Command Lines

+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"" +

Output Window

+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... + + + +

Results

+mkdosfs.exe - 0 error(s), 16 warning(s) +
+ +