home *** CD-ROM | disk | FTP | other *** search
open in:
MacOS 8.1
|
Win98
|
DOS
browse contents |
view JSON data
|
view as text
This file was processed as: SHell self-extracting ARchive
(archive/shar).
Confidence | Program | Detection | Match Type | Support
|
---|
100%
| dexvert
| Newsgroup Content (archive/news)
| magic
| Supported |
100%
| dexvert
| SHell self-extracting ARchive (archive/shar)
| magic
| Supported |
1%
| dexvert
| Text File (text/txt)
| fallback
| Supported |
100%
| file
| news text
| default
| |
99%
| file
| C source, ASCII text
| default
| |
100%
| checkBytes
| Printable ASCII
| default
| |
100%
| dexmagic
| PrintFox/Pagefox WEAK
| default
| |
100%
| perlTextCheck
| Likely Text (Perl)
| default
| |
100%
| siegfried
| fmt/329 Shell Archive Format
| default
| |
100%
| detectItEasy
| Format: plain text[LF]
| default (weak)
| |
100%
| xdgMime
| message/news
| default
|
|
hex view+--------+-------------------------+-------------------------+--------+--------+
|00000000| 50 61 74 68 3a 20 75 75 | 6e 65 74 21 72 73 0a 46 |Path: uu|net!rs.F|
|00000010| 72 6f 6d 3a 20 72 73 40 | 75 75 6e 65 74 2e 55 55 |rom: rs@|uunet.UU|
|00000020| 2e 4e 45 54 20 28 52 69 | 63 68 20 53 61 6c 7a 29 |.NET (Ri|ch Salz)|
|00000030| 0a 4e 65 77 73 67 72 6f | 75 70 73 3a 20 63 6f 6d |.Newsgro|ups: com|
|00000040| 70 2e 73 6f 75 72 63 65 | 73 2e 75 6e 69 78 0a 53 |p.source|s.unix.S|
|00000050| 75 62 6a 65 63 74 3a 20 | 76 31 31 69 30 32 34 3a |ubject: |v11i024:|
|00000060| 20 20 4d 53 2d 44 4f 53 | 20 64 69 73 6b 20 74 6f | MS-DOS| disk to|
|00000070| 6f 6c 73 20 66 6f 72 20 | 55 6e 69 78 2c 20 50 61 |ols for |Unix, Pa|
|00000080| 72 74 30 32 2f 30 32 0a | 4d 65 73 73 61 67 65 2d |rt02/02.|Message-|
|00000090| 49 44 3a 20 3c 31 32 34 | 38 40 75 75 6e 65 74 2e |ID: <124|8@uunet.|
|000000a0| 55 55 2e 4e 45 54 3e 0a | 44 61 74 65 3a 20 32 38 |UU.NET>.|Date: 28|
|000000b0| 20 41 75 67 20 38 37 20 | 31 33 3a 30 39 3a 34 30 | Aug 87 |13:09:40|
|000000c0| 20 47 4d 54 0a 53 65 6e | 64 65 72 3a 20 55 6e 6b | GMT.Sen|der: Unk|
|000000d0| 6e 6f 77 6e 40 75 75 6e | 65 74 2e 55 55 2e 4e 45 |nown@uun|et.UU.NE|
|000000e0| 54 0a 4f 72 67 61 6e 69 | 7a 61 74 69 6f 6e 3a 20 |T.Organi|zation: |
|000000f0| 55 55 4e 45 54 20 43 6f | 6d 6d 75 6e 69 63 61 74 |UUNET Co|mmunicat|
|00000100| 69 6f 6e 73 20 53 65 72 | 76 69 63 65 73 2c 20 41 |ions Ser|vices, A|
|00000110| 72 6c 69 6e 67 74 6f 6e | 2c 20 56 41 0a 4c 69 6e |rlington|, VA.Lin|
|00000120| 65 73 3a 20 31 37 39 39 | 0a 41 70 70 72 6f 76 65 |es: 1799|.Approve|
|00000130| 64 3a 20 72 73 40 75 75 | 6e 65 74 2e 55 55 2e 4e |d: rs@uu|net.UU.N|
|00000140| 45 54 0a 0a 53 75 62 6d | 69 74 74 65 64 2d 62 79 |ET..Subm|itted-by|
|00000150| 3a 20 75 69 75 63 64 63 | 73 21 66 74 68 6f 6f 64 |: uiucdc|s!fthood|
|00000160| 21 65 67 72 61 79 40 68 | 61 72 76 61 72 64 2e 68 |!egray@h|arvard.h|
|00000170| 61 72 76 61 72 64 2e 65 | 64 75 0a 50 6f 73 74 69 |arvard.e|du.Posti|
|00000180| 6e 67 2d 6e 75 6d 62 65 | 72 3a 20 56 6f 6c 75 6d |ng-numbe|r: Volum|
|00000190| 65 20 31 31 2c 20 49 73 | 73 75 65 20 32 34 0a 41 |e 11, Is|sue 24.A|
|000001a0| 72 63 68 69 76 65 2d 6e | 61 6d 65 3a 20 6d 74 6f |rchive-n|ame: mto|
|000001b0| 6f 6c 73 2f 50 61 72 74 | 30 32 0a 0a 23 21 20 2f |ols/Part|02..#! /|
|000001c0| 62 69 6e 2f 73 68 0a 23 | 20 54 68 69 73 20 69 73 |bin/sh.#| This is|
|000001d0| 20 61 20 73 68 65 6c 6c | 20 61 72 63 68 69 76 65 | a shell| archive|
|000001e0| 2c 20 6d 65 61 6e 69 6e | 67 3a 0a 23 20 31 2e 20 |, meanin|g:.# 1. |
|000001f0| 52 65 6d 6f 76 65 20 65 | 76 65 72 79 74 68 69 6e |Remove e|verythin|
|00000200| 67 20 61 62 6f 76 65 20 | 74 68 65 20 23 21 20 2f |g above |the #! /|
|00000210| 62 69 6e 2f 73 68 20 6c | 69 6e 65 2e 0a 23 20 32 |bin/sh l|ine..# 2|
|00000220| 2e 20 53 61 76 65 20 74 | 68 65 20 72 65 73 75 6c |. Save t|he resul|
|00000230| 74 69 6e 67 20 74 65 78 | 74 20 69 6e 20 61 20 66 |ting tex|t in a f|
|00000240| 69 6c 65 2e 0a 23 20 33 | 2e 20 45 78 65 63 75 74 |ile..# 3|. Execut|
|00000250| 65 20 74 68 65 20 66 69 | 6c 65 20 77 69 74 68 20 |e the fi|le with |
|00000260| 2f 62 69 6e 2f 73 68 20 | 28 6e 6f 74 20 63 73 68 |/bin/sh |(not csh|
|00000270| 29 20 74 6f 20 63 72 65 | 61 74 65 3a 0a 23 09 6d |) to cre|ate:.#.m|
|00000280| 6b 65 6e 74 72 79 2e 63 | 0a 23 09 6d 6d 64 2e 63 |kentry.c|.#.mmd.c|
|00000290| 0a 23 09 6d 72 64 2e 63 | 0a 23 09 6d 72 65 61 64 |.#.mrd.c|.#.mread|
|000002a0| 2e 63 0a 23 09 6d 72 65 | 6e 2e 63 0a 23 09 6d 74 |.c.#.mre|n.c.#.mt|
|000002b0| 79 70 65 2e 63 0a 23 09 | 6d 77 72 69 74 65 2e 63 |ype.c.#.|mwrite.c|
|000002c0| 0a 23 09 70 75 74 66 61 | 74 2e 63 0a 23 09 73 65 |.#.putfa|t.c.#.se|
|000002d0| 61 72 63 68 2e 63 0a 23 | 09 73 75 62 64 69 72 2e |arch.c.#|.subdir.|
|000002e0| 63 0a 23 09 75 6e 69 78 | 6e 61 6d 65 2e 63 0a 23 |c.#.unix|name.c.#|
|000002f0| 20 54 68 69 73 20 61 72 | 63 68 69 76 65 20 63 72 | This ar|chive cr|
|00000300| 65 61 74 65 64 3a 20 54 | 68 75 20 4a 75 6c 20 20 |eated: T|hu Jul |
|00000310| 39 20 32 32 3a 33 35 3a | 34 35 20 31 39 38 37 0a |9 22:35:|45 1987.|
|00000320| 65 78 70 6f 72 74 20 50 | 41 54 48 3b 20 50 41 54 |export P|ATH; PAT|
|00000330| 48 3d 2f 62 69 6e 3a 2f | 75 73 72 2f 62 69 6e 3a |H=/bin:/|usr/bin:|
|00000340| 24 50 41 54 48 0a 65 63 | 68 6f 20 73 68 61 72 3a |$PATH.ec|ho shar:|
|00000350| 20 22 65 78 74 72 61 63 | 74 69 6e 67 20 27 6d 6b | "extrac|ting 'mk|
|00000360| 65 6e 74 72 79 2e 63 27 | 22 20 27 28 32 34 39 37 |entry.c'|" '(2497|
|00000370| 20 63 68 61 72 61 63 74 | 65 72 73 29 27 0a 69 66 | charact|ers)'.if|
|00000380| 20 74 65 73 74 20 2d 66 | 20 27 6d 6b 65 6e 74 72 | test -f| 'mkentr|
|00000390| 79 2e 63 27 0a 74 68 65 | 6e 0a 09 65 63 68 6f 20 |y.c'.the|n..echo |
|000003a0| 73 68 61 72 3a 20 22 77 | 69 6c 6c 20 6e 6f 74 20 |shar: "w|ill not |
|000003b0| 6f 76 65 72 2d 77 72 69 | 74 65 20 65 78 69 73 74 |over-wri|te exist|
|000003c0| 69 6e 67 20 66 69 6c 65 | 20 27 6d 6b 65 6e 74 72 |ing file| 'mkentr|
|000003d0| 79 2e 63 27 22 0a 65 6c | 73 65 0a 73 65 64 20 27 |y.c'".el|se.sed '|
|000003e0| 73 2f 5e 58 2f 2f 27 20 | 3c 3c 20 5c 53 48 41 52 |s/^X//' |<< \SHAR|
|000003f0| 5f 45 4f 46 20 3e 20 27 | 6d 6b 65 6e 74 72 79 2e |_EOF > '|mkentry.|
|00000400| 63 27 0a 58 2f 2a 0a 58 | 20 2a 20 6d 6b 5f 65 6e |c'.X/*.X| * mk_en|
|00000410| 74 72 79 28 29 2c 20 67 | 72 6f 77 28 29 0a 58 20 |try(), g|row().X |
|00000420| 2a 2f 0a 58 0a 58 23 69 | 6e 63 6c 75 64 65 20 3c |*/.X.X#i|nclude <|
|00000430| 73 74 64 69 6f 2e 68 3e | 0a 58 23 69 6e 63 6c 75 |stdio.h>|.X#inclu|
|00000440| 64 65 20 3c 74 69 6d 65 | 2e 68 3e 0a 58 23 69 6e |de <time|.h>.X#in|
|00000450| 63 6c 75 64 65 20 22 6d | 73 64 6f 73 2e 68 22 0a |clude "m|sdos.h".|
|00000460| 58 0a 58 65 78 74 65 72 | 6e 20 69 6e 74 20 66 64 |X.Xexter|n int fd|
|00000470| 2c 20 64 69 72 5f 73 74 | 61 72 74 2c 20 64 69 72 |, dir_st|art, dir|
|00000480| 5f 6c 65 6e 2c 20 63 6c | 75 73 5f 73 69 7a 65 2c |_len, cl|us_size,|
|00000490| 20 64 69 72 5f 65 6e 74 | 72 69 65 73 3b 0a 58 65 | dir_ent|ries;.Xe|
|000004a0| 78 74 65 72 6e 20 69 6e | 74 20 64 69 72 5f 63 68 |xtern in|t dir_ch|
|000004b0| 61 69 6e 5b 32 35 5d 3b | 0a 58 0a 58 2f 2a 0a 58 |ain[25];|.X.X/*.X|
|000004c0| 20 2a 20 4d 61 6b 65 20 | 61 20 64 69 72 65 63 74 | * Make |a direct|
|000004d0| 6f 72 79 20 65 6e 74 72 | 79 2e 20 20 42 75 69 6c |ory entr|y. Buil|
|000004e0| 64 73 20 61 20 64 69 72 | 65 63 74 6f 72 79 20 65 |ds a dir|ectory e|
|000004f0| 6e 74 72 79 20 62 61 73 | 65 64 20 6f 6e 20 74 68 |ntry bas|ed on th|
|00000500| 65 0a 58 20 2a 20 6e 61 | 6d 65 2c 20 61 74 74 72 |e.X * na|me, attr|
|00000510| 69 62 75 74 65 2c 20 73 | 74 61 72 74 69 6e 67 20 |ibute, s|tarting |
|00000520| 63 6c 75 73 74 65 72 20 | 6e 75 6d 62 65 72 2c 20 |cluster |number, |
|00000530| 61 6e 64 20 73 69 7a 65 | 2e 20 20 52 65 74 75 72 |and size|. Retur|
|00000540| 6e 73 20 61 20 70 6f 69 | 6e 74 65 72 0a 58 20 2a |ns a poi|nter.X *|
|00000550| 20 74 6f 20 74 68 65 20 | 64 69 72 65 63 74 6f 72 | to the |director|
|00000560| 79 20 73 74 72 75 63 74 | 75 72 65 2e 0a 58 20 2a |y struct|ure..X *|
|00000570| 2f 0a 58 0a 58 73 74 72 | 75 63 74 20 64 69 72 65 |/.X.Xstr|uct dire|
|00000580| 63 74 6f 72 79 20 2a 0a | 58 6d 6b 5f 65 6e 74 72 |ctory *.|Xmk_entr|
|00000590| 79 28 66 69 6c 65 6e 61 | 6d 65 2c 20 61 74 74 72 |y(filena|me, attr|
|000005a0| 2c 20 66 61 74 2c 20 73 | 69 7a 65 29 0a 58 63 68 |, fat, s|ize).Xch|
|000005b0| 61 72 20 2a 66 69 6c 65 | 6e 61 6d 65 3b 0a 58 75 |ar *file|name;.Xu|
|000005c0| 6e 73 69 67 6e 65 64 20 | 63 68 61 72 20 61 74 74 |nsigned |char att|
|000005d0| 72 3b 0a 58 69 6e 74 20 | 66 61 74 3b 0a 58 69 6e |r;.Xint |fat;.Xin|
|000005e0| 74 20 73 69 7a 65 3b 0a | 58 7b 0a 58 09 6c 6f 6e |t size;.|X{.X.lon|
|000005f0| 67 20 63 6c 6f 63 6b 2c | 20 74 69 6d 65 28 29 3b |g clock,| time();|
|00000600| 0a 58 09 69 6e 74 20 69 | 3b 0a 58 09 63 68 61 72 |.X.int i|;.X.char|
|00000610| 20 2a 73 74 72 6e 63 70 | 79 28 29 3b 0a 58 09 73 | *strncp|y();.X.s|
|00000620| 74 61 74 69 63 20 73 74 | 72 75 63 74 20 64 69 72 |tatic st|ruct dir|
|00000630| 65 63 74 6f 72 79 20 6e | 64 69 72 3b 0a 58 09 73 |ectory n|dir;.X.s|
|00000640| 74 72 75 63 74 20 74 6d | 20 2a 6e 6f 77 2c 20 2a |truct tm| *now, *|
|00000650| 6c 6f 63 61 6c 74 69 6d | 65 28 29 3b 0a 58 09 75 |localtim|e();.X.u|
|00000660| 6e 73 69 67 6e 65 64 20 | 63 68 61 72 20 68 6f 75 |nsigned |char hou|
|00000670| 72 2c 20 6d 69 6e 5f 68 | 69 2c 20 6d 69 6e 5f 6c |r, min_h|i, min_l|
|00000680| 6f 77 2c 20 73 65 63 3b | 0a 58 09 75 6e 73 69 67 |ow, sec;|.X.unsig|
|00000690| 6e 65 64 20 63 68 61 72 | 20 79 65 61 72 2c 20 6d |ned char| year, m|
|000006a0| 6f 6e 74 68 5f 68 69 2c | 20 6d 6f 6e 74 68 5f 6c |onth_hi,| month_l|
|000006b0| 6f 77 2c 20 64 61 79 3b | 0a 58 0a 58 09 74 69 6d |ow, day;|.X.X.tim|
|000006c0| 65 28 26 63 6c 6f 63 6b | 29 3b 0a 58 09 6e 6f 77 |e(&clock|);.X.now|
|000006d0| 20 3d 20 6c 6f 63 61 6c | 74 69 6d 65 28 26 63 6c | = local|time(&cl|
|000006e0| 6f 63 6b 29 3b 0a 58 09 | 73 74 72 6e 63 70 79 28 |ock);.X.|strncpy(|
|000006f0| 6e 64 69 72 2e 6e 61 6d | 65 2c 20 66 69 6c 65 6e |ndir.nam|e, filen|
|00000700| 61 6d 65 2c 20 38 29 3b | 0a 58 09 73 74 72 6e 63 |ame, 8);|.X.strnc|
|00000710| 70 79 28 6e 64 69 72 2e | 65 78 74 2c 20 66 69 6c |py(ndir.|ext, fil|
|00000720| 65 6e 61 6d 65 2b 38 2c | 20 33 29 3b 0a 58 09 6e |ename+8,| 3);.X.n|
|00000730| 64 69 72 2e 61 74 74 72 | 20 3d 20 61 74 74 72 3b |dir.attr| = attr;|
|00000740| 0a 58 09 66 6f 72 20 28 | 69 3d 30 3b 20 69 3c 31 |.X.for (|i=0; i<1|
|00000750| 30 3b 20 69 2b 2b 29 0a | 58 09 09 6e 64 69 72 2e |0; i++).|X..ndir.|
|00000760| 72 65 73 65 72 76 65 64 | 5b 69 5d 20 3d 20 4e 55 |reserved|[i] = NU|
|00000770| 4c 4c 3b 0a 58 09 68 6f | 75 72 20 3d 20 6e 6f 77 |LL;.X.ho|ur = now|
|00000780| 2d 3e 74 6d 5f 68 6f 75 | 72 20 3c 3c 20 33 3b 0a |->tm_hou|r << 3;.|
|00000790| 58 09 6d 69 6e 5f 68 69 | 20 3d 20 6e 6f 77 2d 3e |X.min_hi| = now->|
|000007a0| 74 6d 5f 6d 69 6e 20 3e | 3e 20 33 3b 0a 58 09 6d |tm_min >|> 3;.X.m|
|000007b0| 69 6e 5f 6c 6f 77 20 3d | 20 6e 6f 77 2d 3e 74 6d |in_low =| now->tm|
|000007c0| 5f 6d 69 6e 20 3c 3c 20 | 35 3b 0a 58 09 73 65 63 |_min << |5;.X.sec|
|000007d0| 20 3d 20 30 3b 0a 58 09 | 6e 64 69 72 2e 74 69 6d | = 0;.X.|ndir.tim|
|000007e0| 65 5b 31 5d 20 3d 20 68 | 6f 75 72 20 2b 20 6d 69 |e[1] = h|our + mi|
|000007f0| 6e 5f 68 69 3b 0a 58 09 | 6e 64 69 72 2e 74 69 6d |n_hi;.X.|ndir.tim|
|00000800| 65 5b 30 5d 20 3d 20 6d | 69 6e 5f 6c 6f 77 20 2b |e[0] = m|in_low +|
|00000810| 20 73 65 63 3b 0a 58 09 | 79 65 61 72 20 3d 20 28 | sec;.X.|year = (|
|00000820| 6e 6f 77 2d 3e 74 6d 5f | 79 65 61 72 20 2d 20 38 |now->tm_|year - 8|
|00000830| 30 29 20 3c 3c 20 31 3b | 0a 58 09 6d 6f 6e 74 68 |0) << 1;|.X.month|
|00000840| 5f 68 69 20 3d 20 28 6e | 6f 77 2d 3e 74 6d 5f 6d |_hi = (n|ow->tm_m|
|00000850| 6f 6e 2b 31 29 20 3e 3e | 20 33 3b 0a 58 09 6d 6f |on+1) >>| 3;.X.mo|
|00000860| 6e 74 68 5f 6c 6f 77 20 | 3d 20 28 6e 6f 77 2d 3e |nth_low |= (now->|
|00000870| 74 6d 5f 6d 6f 6e 2b 31 | 29 20 3c 3c 20 35 3b 0a |tm_mon+1|) << 5;.|
|00000880| 58 09 64 61 79 20 3d 20 | 6e 6f 77 2d 3e 74 6d 5f |X.day = |now->tm_|
|00000890| 6d 64 61 79 3b 0a 58 09 | 6e 64 69 72 2e 64 61 74 |mday;.X.|ndir.dat|
|000008a0| 65 5b 31 5d 20 3d 20 79 | 65 61 72 20 2b 20 6d 6f |e[1] = y|ear + mo|
|000008b0| 6e 74 68 5f 68 69 3b 0a | 58 09 6e 64 69 72 2e 64 |nth_hi;.|X.ndir.d|
|000008c0| 61 74 65 5b 30 5d 20 3d | 20 6d 6f 6e 74 68 5f 6c |ate[0] =| month_l|
|000008d0| 6f 77 20 2b 20 64 61 79 | 3b 0a 58 09 6e 64 69 72 |ow + day|;.X.ndir|
|000008e0| 2e 73 74 61 72 74 5b 31 | 5d 20 3d 20 66 61 74 20 |.start[1|] = fat |
|000008f0| 2f 20 30 78 31 30 30 3b | 0a 58 09 6e 64 69 72 2e |/ 0x100;|.X.ndir.|
|00000900| 73 74 61 72 74 5b 30 5d | 20 3d 20 66 61 74 20 25 |start[0]| = fat %|
|00000910| 20 30 78 31 30 30 3b 0a | 58 09 6e 64 69 72 2e 73 | 0x100;.|X.ndir.s|
|00000920| 69 7a 65 5b 33 5d 20 3d | 20 30 3b 09 09 2f 2a 20 |ize[3] =| 0;../* |
|00000930| 63 61 6e 27 74 20 62 65 | 20 54 48 41 54 20 6c 61 |can't be| THAT la|
|00000940| 72 67 65 20 2a 2f 0a 58 | 09 6e 64 69 72 2e 73 69 |rge */.X|.ndir.si|
|00000950| 7a 65 5b 32 5d 20 3d 20 | 73 69 7a 65 20 2f 20 30 |ze[2] = |size / 0|
|00000960| 78 31 30 30 30 30 3b 0a | 58 09 6e 64 69 72 2e 73 |x10000;.|X.ndir.s|
|00000970| 69 7a 65 5b 31 5d 20 3d | 20 28 73 69 7a 65 20 25 |ize[1] =| (size %|
|00000980| 20 30 78 31 30 30 30 30 | 29 20 2f 20 30 78 31 30 | 0x10000|) / 0x10|
|00000990| 30 3b 0a 58 09 6e 64 69 | 72 2e 73 69 7a 65 5b 30 |0;.X.ndi|r.size[0|
|000009a0| 5d 20 3d 20 28 73 69 7a | 65 20 25 20 30 78 31 30 |] = (siz|e % 0x10|
|000009b0| 30 30 30 29 20 25 20 30 | 78 31 30 30 3b 0a 58 09 |000) % 0|x100;.X.|
|000009c0| 72 65 74 75 72 6e 28 26 | 6e 64 69 72 29 3b 0a 58 |return(&|ndir);.X|
|000009d0| 7d 0a 58 0a 58 2f 2a 0a | 58 20 2a 20 4d 61 6b 65 |}.X.X/*.|X * Make|
|000009e0| 20 61 20 73 75 62 64 69 | 72 65 63 74 6f 72 79 20 | a subdi|rectory |
|000009f0| 67 72 6f 77 20 69 6e 20 | 6c 65 6e 67 74 68 2e 20 |grow in |length. |
|00000a00| 20 4f 6e 6c 79 20 73 75 | 62 64 69 72 65 63 74 6f | Only su|bdirecto|
|00000a10| 72 69 65 73 20 28 6e 6f | 74 20 72 6f 6f 74 29 20 |ries (no|t root) |
|00000a20| 0a 58 20 2a 20 6d 61 79 | 20 67 72 6f 77 2e 20 20 |.X * may| grow. |
|00000a30| 52 65 74 75 72 6e 73 20 | 61 20 30 20 6f 6e 20 73 |Returns |a 0 on s|
|00000a40| 75 63 63 65 73 73 20 6f | 72 20 31 20 6f 6e 20 66 |uccess o|r 1 on f|
|00000a50| 61 69 6c 75 72 65 20 28 | 64 69 73 6b 20 66 75 6c |ailure (|disk ful|
|00000a60| 6c 29 2e 0a 58 20 2a 2f | 0a 58 0a 58 69 6e 74 0a |l)..X */|.X.Xint.|
|00000a70| 58 67 72 6f 77 28 66 61 | 74 29 0a 58 69 6e 74 20 |Xgrow(fa|t).Xint |
|00000a80| 66 61 74 3b 0a 58 7b 0a | 58 09 69 6e 74 20 69 2c |fat;.X{.|X.int i,|
|00000a90| 20 6e 65 78 74 2c 20 6c | 61 73 74 2c 20 67 65 74 | next, l|ast, get|
|00000aa0| 66 61 74 28 29 2c 20 6e | 65 78 74 66 61 74 28 29 |fat(), n|extfat()|
|00000ab0| 2c 20 6e 75 6d 2c 20 73 | 65 63 74 6f 72 2c 20 62 |, num, s|ector, b|
|00000ac0| 75 66 6c 65 6e 3b 0a 58 | 09 63 68 61 72 20 74 62 |uflen;.X|.char tb|
|00000ad0| 75 66 5b 31 30 32 34 5d | 3b 0a 58 09 76 6f 69 64 |uf[1024]|;.X.void|
|00000ae0| 20 70 65 72 72 6f 72 28 | 29 2c 20 65 78 69 74 28 | perror(|), exit(|
|00000af0| 29 3b 0a 58 0a 58 09 6c | 61 73 74 20 3d 20 6e 65 |);.X.X.l|ast = ne|
|00000b00| 78 74 66 61 74 28 30 29 | 3b 0a 58 09 69 66 20 28 |xtfat(0)|;.X.if (|
|00000b10| 6c 61 73 74 20 3d 3d 20 | 2d 31 29 0a 58 09 09 72 |last == |-1).X..r|
|00000b20| 65 74 75 72 6e 28 31 29 | 3b 0a 58 0a 58 09 77 68 |eturn(1)|;.X.X.wh|
|00000b30| 69 6c 65 20 28 31 29 20 | 7b 0a 58 09 09 6e 65 78 |ile (1) |{.X..nex|
|00000b40| 74 20 3d 20 67 65 74 66 | 61 74 28 66 61 74 29 3b |t = getf|at(fat);|
|00000b50| 0a 58 09 09 69 66 20 28 | 6e 65 78 74 20 3d 3d 20 |.X..if (|next == |
|00000b60| 2d 31 29 20 7b 0a 58 09 | 09 09 66 70 72 69 6e 74 |-1) {.X.|..fprint|
|00000b70| 66 28 73 74 64 65 72 72 | 2c 20 22 67 72 6f 77 3a |f(stderr|, "grow:|
|00000b80| 20 46 41 54 20 70 72 6f | 62 6c 65 6d 5c 6e 22 29 | FAT pro|blem\n")|
|00000b90| 3b 0a 58 09 09 09 65 78 | 69 74 28 31 29 3b 0a 58 |;.X...ex|it(1);.X|
|00000ba0| 09 09 7d 0a 58 09 09 09 | 09 09 2f 2a 20 65 6e 64 |..}.X...|../* end|
|00000bb0| 20 6f 66 20 63 6c 75 73 | 74 65 72 20 63 68 61 69 | of clus|ter chai|
|00000bc0| 6e 20 2a 2f 0a 58 09 09 | 69 66 20 28 6e 65 78 74 |n */.X..|if (next|
|00000bd0| 20 3e 3d 20 30 78 66 66 | 38 29 0a 58 09 09 09 62 | >= 0xff|8).X...b|
|00000be0| 72 65 61 6b 3b 0a 58 09 | 09 66 61 74 20 3d 20 6e |reak;.X.|.fat = n|
|00000bf0| 65 78 74 3b 0a 58 09 7d | 0a 58 09 09 09 09 09 2f |ext;.X.}|.X...../|
|00000c00| 2a 20 6d 61 72 6b 20 74 | 68 65 20 65 6e 64 20 6f |* mark t|he end o|
|00000c10| 66 20 74 68 65 20 63 68 | 61 69 6e 20 2a 2f 0a 58 |f the ch|ain */.X|
|00000c20| 09 70 75 74 66 61 74 28 | 66 61 74 2c 20 6c 61 73 |.putfat(|fat, las|
|00000c30| 74 29 3b 0a 58 09 70 75 | 74 66 61 74 28 6c 61 73 |t);.X.pu|tfat(las|
|00000c40| 74 2c 20 30 78 66 66 66 | 29 3b 0a 58 09 09 09 09 |t, 0xfff|);.X....|
|00000c50| 09 2f 2a 20 7a 65 72 6f | 20 74 68 65 20 62 75 66 |./* zero| the buf|
|00000c60| 66 65 72 20 2a 2f 0a 58 | 09 62 75 66 6c 65 6e 20 |fer */.X|.buflen |
|00000c70| 3d 20 63 6c 75 73 5f 73 | 69 7a 65 20 2a 20 4d 53 |= clus_s|ize * MS|
|00000c80| 45 43 53 49 5a 3b 0a 58 | 09 66 6f 72 20 28 69 3d |ECSIZ;.X|.for (i=|
|00000c90| 30 3b 20 69 3c 62 75 66 | 6c 65 6e 3b 20 69 2b 2b |0; i<buf|len; i++|
|00000ca0| 29 0a 58 09 09 74 62 75 | 66 5b 69 5d 20 3d 20 4e |).X..tbu|f[i] = N|
|00000cb0| 55 4c 4c 3b 0a 58 0a 58 | 09 09 09 09 09 2f 2a 20 |ULL;.X.X|...../* |
|00000cc0| 77 72 69 74 65 20 74 68 | 65 20 63 6c 75 73 74 65 |write th|e cluste|
|00000cd0| 72 20 2a 2f 0a 58 09 73 | 65 63 74 6f 72 20 3d 20 |r */.X.s|ector = |
|00000ce0| 28 6c 61 73 74 20 2d 20 | 32 29 20 2a 20 63 6c 75 |(last - |2) * clu|
|00000cf0| 73 5f 73 69 7a 65 20 2b | 20 64 69 72 5f 73 74 61 |s_size +| dir_sta|
|00000d00| 72 74 20 2b 20 64 69 72 | 5f 6c 65 6e 3b 0a 58 09 |rt + dir|_len;.X.|
|00000d10| 6d 6f 76 65 28 73 65 63 | 74 6f 72 29 3b 0a 58 09 |move(sec|tor);.X.|
|00000d20| 69 66 20 28 77 72 69 74 | 65 28 66 64 2c 20 74 62 |if (writ|e(fd, tb|
|00000d30| 75 66 2c 20 62 75 66 6c | 65 6e 29 20 21 3d 20 62 |uf, bufl|en) != b|
|00000d40| 75 66 6c 65 6e 29 20 7b | 0a 58 09 09 70 65 72 72 |uflen) {|.X..perr|
|00000d50| 6f 72 28 22 67 72 6f 77 | 3a 20 77 72 69 74 65 22 |or("grow|: write"|
|00000d60| 29 3b 0a 58 09 09 65 78 | 69 74 28 31 29 3b 0a 58 |);.X..ex|it(1);.X|
|00000d70| 09 7d 0a 58 09 09 09 09 | 09 2f 2a 20 66 69 78 20 |.}.X....|./* fix |
|00000d80| 75 70 20 74 68 65 20 67 | 6c 6f 62 61 6c 73 2e 2e |up the g|lobals..|
|00000d90| 2e 2e 20 2a 2f 0a 58 09 | 6e 75 6d 20 3d 20 64 69 |.. */.X.|num = di|
|00000da0| 72 5f 65 6e 74 72 69 65 | 73 20 2f 20 31 36 3b 0a |r_entrie|s / 16;.|
|00000db0| 58 09 64 69 72 5f 65 6e | 74 72 69 65 73 20 2b 3d |X.dir_en|tries +=|
|00000dc0| 20 63 6c 75 73 5f 73 69 | 7a 65 20 2a 20 31 36 3b | clus_si|ze * 16;|
|00000dd0| 0a 58 09 64 69 72 5f 63 | 68 61 69 6e 5b 6e 75 6d |.X.dir_c|hain[num|
|00000de0| 5d 20 3d 20 73 65 63 74 | 6f 72 3b 0a 58 09 69 66 |] = sect|or;.X.if|
|00000df0| 20 28 63 6c 75 73 5f 73 | 69 7a 65 20 3d 3d 20 32 | (clus_s|ize == 2|
|00000e00| 29 0a 58 09 09 64 69 72 | 5f 63 68 61 69 6e 5b 6e |).X..dir|_chain[n|
|00000e10| 75 6d 2b 31 5d 20 3d 20 | 73 65 63 74 6f 72 20 2b |um+1] = |sector +|
|00000e20| 31 3b 0a 58 09 72 65 74 | 75 72 6e 28 30 29 3b 0a |1;.X.ret|urn(0);.|
|00000e30| 58 7d 0a 53 48 41 52 5f | 45 4f 46 0a 69 66 20 74 |X}.SHAR_|EOF.if t|
|00000e40| 65 73 74 20 32 34 39 37 | 20 2d 6e 65 20 22 60 77 |est 2497| -ne "`w|
|00000e50| 63 20 2d 63 20 3c 20 27 | 6d 6b 65 6e 74 72 79 2e |c -c < '|mkentry.|
|00000e60| 63 27 60 22 0a 74 68 65 | 6e 0a 09 65 63 68 6f 20 |c'`".the|n..echo |
|00000e70| 73 68 61 72 3a 20 22 65 | 72 72 6f 72 20 74 72 61 |shar: "e|rror tra|
|00000e80| 6e 73 6d 69 74 74 69 6e | 67 20 27 6d 6b 65 6e 74 |nsmittin|g 'mkent|
|00000e90| 72 79 2e 63 27 22 20 27 | 28 73 68 6f 75 6c 64 20 |ry.c'" '|(should |
|00000ea0| 68 61 76 65 20 62 65 65 | 6e 20 32 34 39 37 20 63 |have bee|n 2497 c|
|00000eb0| 68 61 72 61 63 74 65 72 | 73 29 27 0a 66 69 0a 66 |haracter|s)'.fi.f|
|00000ec0| 69 0a 65 63 68 6f 20 73 | 68 61 72 3a 20 22 65 78 |i.echo s|har: "ex|
|00000ed0| 74 72 61 63 74 69 6e 67 | 20 27 6d 6d 64 2e 63 27 |tracting| 'mmd.c'|
|00000ee0| 22 20 27 28 33 36 37 32 | 20 63 68 61 72 61 63 74 |" '(3672| charact|
|00000ef0| 65 72 73 29 27 0a 69 66 | 20 74 65 73 74 20 2d 66 |ers)'.if| test -f|
|00000f00| 20 27 6d 6d 64 2e 63 27 | 0a 74 68 65 6e 0a 09 65 | 'mmd.c'|.then..e|
|00000f10| 63 68 6f 20 73 68 61 72 | 3a 20 22 77 69 6c 6c 20 |cho shar|: "will |
|00000f20| 6e 6f 74 20 6f 76 65 72 | 2d 77 72 69 74 65 20 65 |not over|-write e|
|00000f30| 78 69 73 74 69 6e 67 20 | 66 69 6c 65 20 27 6d 6d |xisting |file 'mm|
|00000f40| 64 2e 63 27 22 0a 65 6c | 73 65 0a 73 65 64 20 27 |d.c'".el|se.sed '|
|00000f50| 73 2f 5e 58 2f 2f 27 20 | 3c 3c 20 5c 53 48 41 52 |s/^X//' |<< \SHAR|
|00000f60| 5f 45 4f 46 20 3e 20 27 | 6d 6d 64 2e 63 27 0a 58 |_EOF > '|mmd.c'.X|
|00000f70| 2f 2a 0a 58 20 2a 20 4d | 61 6b 65 20 61 20 4d 53 |/*.X * M|ake a MS|
|00000f80| 44 4f 53 20 73 75 62 20 | 64 69 72 65 63 74 6f 72 |DOS sub |director|
|00000f90| 79 0a 58 20 2a 0a 58 20 | 2a 20 45 6d 6d 65 74 20 |y.X *.X |* Emmet |
|00000fa0| 50 2e 20 47 72 61 79 09 | 09 09 55 53 20 41 72 6d |P. Gray.|..US Arm|
|00000fb0| 79 2c 20 48 51 20 49 49 | 49 20 43 6f 72 70 73 20 |y, HQ II|I Corps |
|00000fc0| 26 20 46 6f 72 74 20 48 | 6f 6f 64 0a 58 20 2a 20 |& Fort H|ood.X * |
|00000fd0| 2e 2e 2e 21 69 68 6e 70 | 34 21 75 69 75 63 75 78 |...!ihnp|4!uiucux|
|00000fe0| 63 21 66 74 68 6f 6f 64 | 21 65 67 72 61 79 09 41 |c!fthood|!egray.A|
|00000ff0| 74 74 6e 3a 20 41 46 5a | 46 2d 44 45 2d 45 4e 56 |ttn: AFZ|F-DE-ENV|
|00001000| 0a 58 20 2a 20 09 09 09 | 09 09 44 69 72 65 63 74 |.X * ...|..Direct|
|00001010| 6f 72 61 74 65 20 6f 66 | 20 45 6e 67 69 6e 65 65 |orate of| Enginee|
|00001020| 72 69 6e 67 20 26 20 48 | 6f 75 73 69 6e 67 0a 58 |ring & H|ousing.X|
|00001030| 20 2a 20 09 09 09 09 09 | 45 6e 76 69 72 6f 6e 6d | * .....|Environm|
|00001040| 65 6e 74 61 6c 20 4d 61 | 6e 61 67 65 6d 65 6e 74 |ental Ma|nagement|
|00001050| 20 4f 66 66 69 63 65 0a | 58 20 2a 20 09 09 09 09 | Office.|X * ....|
|00001060| 09 46 6f 72 74 20 48 6f | 6f 64 2c 20 54 58 20 37 |.Fort Ho|od, TX 7|
|00001070| 36 35 34 34 2d 35 30 35 | 37 0a 58 20 2a 2f 0a 58 |6544-505|7.X */.X|
|00001080| 0a 58 23 69 6e 63 6c 75 | 64 65 20 3c 73 74 64 69 |.X#inclu|de <stdi|
|00001090| 6f 2e 68 3e 0a 58 23 69 | 6e 63 6c 75 64 65 20 22 |o.h>.X#i|nclude "|
|000010a0| 6d 73 64 6f 73 2e 68 22 | 0a 58 0a 58 69 6e 74 20 |msdos.h"|.X.Xint |
|000010b0| 66 64 3b 09 09 09 09 2f | 2a 20 74 68 65 20 66 69 |fd;..../|* the fi|
|000010c0| 6c 65 20 64 65 73 63 72 | 69 70 74 6f 72 20 66 6f |le descr|iptor fo|
|000010d0| 72 20 74 68 65 20 66 6c | 6f 70 70 79 20 2a 2f 0a |r the fl|oppy */.|
|000010e0| 58 69 6e 74 20 64 69 72 | 5f 73 74 61 72 74 3b 09 |Xint dir|_start;.|
|000010f0| 09 09 2f 2a 20 73 74 61 | 72 74 69 6e 67 20 73 65 |../* sta|rting se|
|00001100| 63 74 6f 72 20 66 6f 72 | 20 64 69 72 65 63 74 6f |ctor for| directo|
|00001110| 72 79 20 2a 2f 0a 58 69 | 6e 74 20 64 69 72 5f 6c |ry */.Xi|nt dir_l|
|00001120| 65 6e 3b 09 09 09 2f 2a | 20 6c 65 6e 67 74 68 20 |en;.../*| length |
|00001130| 6f 66 20 64 69 72 65 63 | 74 6f 72 79 20 28 69 6e |of direc|tory (in|
|00001140| 20 73 65 63 74 6f 72 73 | 29 20 2a 2f 0a 58 69 6e | sectors|) */.Xin|
|00001150| 74 20 64 69 72 5f 65 6e | 74 72 69 65 73 3b 09 09 |t dir_en|tries;..|
|00001160| 2f 2a 20 6e 75 6d 62 65 | 72 20 6f 66 20 64 69 72 |/* numbe|r of dir|
|00001170| 65 63 74 6f 72 79 20 65 | 6e 74 72 69 65 73 20 2a |ectory e|ntries *|
|00001180| 2f 0a 58 69 6e 74 20 64 | 69 72 5f 63 68 61 69 6e |/.Xint d|ir_chain|
|00001190| 5b 32 35 5d 3b 09 09 2f | 2a 20 63 68 61 69 6e 20 |[25];../|* chain |
|000011a0| 6f 66 20 73 65 63 74 6f | 72 73 20 69 6e 20 64 69 |of secto|rs in di|
|000011b0| 72 65 63 74 6f 72 79 20 | 2a 2f 0a 58 69 6e 74 20 |rectory |*/.Xint |
|000011c0| 63 6c 75 73 5f 73 69 7a | 65 3b 09 09 09 2f 2a 20 |clus_siz|e;.../* |
|000011d0| 63 6c 75 73 74 65 72 20 | 73 69 7a 65 20 28 69 6e |cluster |size (in|
|000011e0| 20 73 65 63 74 6f 72 73 | 29 20 2a 2f 0a 58 69 6e | sectors|) */.Xin|
|000011f0| 74 20 66 61 74 5f 6c 65 | 6e 3b 09 09 09 2f 2a 20 |t fat_le|n;.../* |
|00001200| 6c 65 6e 67 74 68 20 6f | 66 20 46 41 54 20 74 61 |length o|f FAT ta|
|00001210| 62 6c 65 20 28 69 6e 20 | 73 65 63 74 6f 72 73 29 |ble (in |sectors)|
|00001220| 20 2a 2f 0a 58 69 6e 74 | 20 6e 75 6d 5f 63 6c 75 | */.Xint| num_clu|
|00001230| 73 3b 09 09 09 2f 2a 20 | 6e 75 6d 62 65 72 20 6f |s;.../* |number o|
|00001240| 66 20 61 76 61 69 6c 61 | 62 6c 65 20 63 6c 75 73 |f availa|ble clus|
|00001250| 74 65 72 73 20 2a 2f 0a | 58 75 6e 73 69 67 6e 65 |ters */.|Xunsigne|
|00001260| 64 20 63 68 61 72 20 2a | 66 61 74 62 75 66 3b 09 |d char *|fatbuf;.|
|00001270| 09 2f 2a 20 74 68 65 20 | 46 69 6c 65 20 41 6c 6c |./* the |File All|
|00001280| 6f 63 61 74 69 6f 6e 20 | 54 61 62 6c 65 20 2a 2f |ocation |Table */|
|00001290| 0a 58 63 68 61 72 20 2a | 6d 63 77 64 3b 09 09 09 |.Xchar *|mcwd;...|
|000012a0| 2f 2a 20 74 68 65 20 43 | 75 72 72 65 6e 74 20 57 |/* the C|urrent W|
|000012b0| 6f 72 6b 69 6e 67 20 44 | 69 72 65 63 74 6f 72 79 |orking D|irectory|
|000012c0| 20 2a 2f 0a 58 0a 58 6d | 61 69 6e 28 61 72 67 63 | */.X.Xm|ain(argc|
|000012d0| 2c 20 61 72 67 76 29 0a | 58 69 6e 74 20 61 72 67 |, argv).|Xint arg|
|000012e0| 63 3b 0a 58 63 68 61 72 | 20 2a 61 72 67 76 5b 5d |c;.Xchar| *argv[]|
|000012f0| 3b 0a 58 7b 0a 58 09 69 | 6e 74 20 65 6e 74 72 79 |;.X{.X.i|nt entry|
|00001300| 2c 20 73 6c 6f 74 2c 20 | 66 61 74 2c 20 64 6f 74 |, slot, |fat, dot|
|00001310| 2c 20 73 75 62 64 69 72 | 28 29 3b 0a 58 09 63 68 |, subdir|();.X.ch|
|00001320| 61 72 20 2a 66 69 6c 65 | 6e 61 6d 65 2c 20 2a 6e |ar *file|name, *n|
|00001330| 65 77 66 69 6c 65 2c 20 | 2a 66 69 78 6e 61 6d 65 |ewfile, |*fixname|
|00001340| 28 29 2c 20 2a 73 74 72 | 6e 63 70 79 28 29 2c 20 |(), *str|ncpy(), |
|00001350| 2a 75 6e 69 78 6e 61 6d | 65 28 29 3b 0a 58 09 63 |*unixnam|e();.X.c|
|00001360| 68 61 72 20 2a 67 65 74 | 70 61 74 68 28 29 2c 20 |har *get|path(), |
|00001370| 2a 70 61 74 68 6e 61 6d | 65 2c 20 74 6e 61 6d 65 |*pathnam|e, tname|
|00001380| 5b 39 5d 2c 20 74 65 78 | 74 5b 34 5d 2c 20 2a 66 |[9], tex|t[4], *f|
|00001390| 69 78 65 64 3b 0a 58 09 | 76 6f 69 64 20 65 78 69 |ixed;.X.|void exi|
|000013a0| 74 28 29 3b 0a 58 09 73 | 74 72 75 63 74 20 64 69 |t();.X.s|truct di|
|000013b0| 72 65 63 74 6f 72 79 20 | 2a 64 69 72 2c 20 2a 73 |rectory |*dir, *s|
|000013c0| 65 61 72 63 68 28 29 2c | 20 2a 6d 6b 5f 65 6e 74 |earch(),| *mk_ent|
|000013d0| 72 79 28 29 3b 0a 58 0a | 58 09 69 66 20 28 69 6e |ry();.X.|X.if (in|
|000013e0| 69 74 28 32 29 29 20 7b | 0a 58 09 09 66 70 72 69 |it(2)) {|.X..fpri|
|000013f0| 6e 74 66 28 73 74 64 65 | 72 72 2c 20 22 6d 6d 64 |ntf(stde|rr, "mmd|
|00001400| 3a 20 43 61 6e 6e 6f 74 | 20 69 6e 69 74 69 61 6c |: Cannot| initial|
|00001410| 69 7a 65 20 64 69 73 6b | 65 74 74 65 5c 6e 22 29 |ize disk|ette\n")|
|00001420| 3b 0a 58 09 09 65 78 69 | 74 28 31 29 3b 0a 58 09 |;.X..exi|t(1);.X.|
|00001430| 7d 0a 58 09 09 09 09 09 | 2f 2a 20 6f 6e 6c 79 20 |}.X.....|/* only |
|00001440| 31 20 64 69 72 65 63 74 | 6f 72 79 20 21 20 2a 2f |1 direct|ory ! */|
|00001450| 0a 58 09 69 66 20 28 61 | 72 67 63 20 21 3d 20 32 |.X.if (a|rgc != 2|
|00001460| 29 20 7b 0a 58 09 09 66 | 70 72 69 6e 74 66 28 73 |) {.X..f|printf(s|
|00001470| 74 64 65 72 72 2c 20 22 | 55 73 61 67 65 3a 20 6d |tderr, "|Usage: m|
|00001480| 6d 64 20 3c 4d 53 44 4f | 53 20 64 69 72 65 63 74 |md <MSDO|S direct|
|00001490| 6f 72 79 3e 5c 6e 22 29 | 3b 0a 58 09 09 65 78 69 |ory>\n")|;.X..exi|
|000014a0| 74 28 31 29 3b 0a 58 09 | 7d 0a 58 09 66 69 78 65 |t(1);.X.|}.X.fixe|
|000014b0| 64 20 3d 20 66 69 78 6e | 61 6d 65 28 61 72 67 76 |d = fixn|ame(argv|
|000014c0| 5b 31 5d 29 3b 0a 58 09 | 66 69 6c 65 6e 61 6d 65 |[1]);.X.|filename|
|000014d0| 20 3d 20 75 6e 69 78 6e | 61 6d 65 28 66 69 78 65 | = unixn|ame(fixe|
|000014e0| 64 2c 20 66 69 78 65 64 | 2b 38 29 3b 0a 58 09 70 |d, fixed|+8);.X.p|
|000014f0| 61 74 68 6e 61 6d 65 20 | 3d 20 67 65 74 70 61 74 |athname |= getpat|
|00001500| 68 28 61 72 67 76 5b 31 | 5d 29 3b 0a 58 09 69 66 |h(argv[1|]);.X.if|
|00001510| 20 28 73 74 72 63 6d 70 | 28 66 69 78 65 64 2b 38 | (strcmp|(fixed+8|
|00001520| 2c 20 22 20 20 20 22 29 | 29 20 7b 0a 58 09 09 66 |, " ")|) {.X..f|
|00001530| 70 72 69 6e 74 66 28 73 | 74 64 65 72 72 2c 20 22 |printf(s|tderr, "|
|00001540| 6d 6d 64 3a 20 44 69 72 | 65 63 74 6f 72 79 20 6e |mmd: Dir|ectory n|
|00001550| 61 6d 65 73 20 63 61 6e | 6e 6f 74 20 68 61 76 65 |ames can|not have|
|00001560| 20 65 78 74 65 6e 73 69 | 6f 6e 73 5c 6e 22 29 3b | extensi|ons\n");|
|00001570| 0a 58 09 09 65 78 69 74 | 28 31 29 3b 0a 58 09 7d |.X..exit|(1);.X.}|
|00001580| 0a 58 09 69 66 20 28 73 | 75 62 64 69 72 28 70 61 |.X.if (s|ubdir(pa|
|00001590| 74 68 6e 61 6d 65 29 29 | 0a 58 09 09 65 78 69 74 |thname))|.X..exit|
|000015a0| 28 31 29 3b 0a 58 09 09 | 09 09 09 2f 2a 20 73 65 |(1);.X..|.../* se|
|000015b0| 65 20 69 66 20 65 78 69 | 73 74 73 20 61 6e 64 20 |e if exi|sts and |
|000015c0| 67 65 74 20 73 6c 6f 74 | 20 2a 2f 0a 58 09 73 6c |get slot| */.X.sl|
|000015d0| 6f 74 20 3d 20 2d 31 3b | 0a 58 09 64 6f 74 20 3d |ot = -1;|.X.dot =|
|000015e0| 20 30 3b 0a 58 09 66 6f | 72 20 28 65 6e 74 72 79 | 0;.X.fo|r (entry|
|000015f0| 3d 30 3b 20 65 6e 74 72 | 79 3c 64 69 72 5f 65 6e |=0; entr|y<dir_en|
|00001600| 74 72 69 65 73 3b 20 65 | 6e 74 72 79 2b 2b 29 20 |tries; e|ntry++) |
|00001610| 7b 0a 58 09 09 64 69 72 | 20 3d 20 73 65 61 72 63 |{.X..dir| = searc|
|00001620| 68 28 65 6e 74 72 79 29 | 3b 0a 58 09 09 09 09 09 |h(entry)|;.X.....|
|00001630| 2f 2a 20 69 66 20 65 6d | 70 74 79 20 2a 2f 0a 58 |/* if em|pty */.X|
|00001640| 09 09 69 66 20 28 64 69 | 72 2d 3e 6e 61 6d 65 5b |..if (di|r->name[|
|00001650| 30 5d 20 3d 3d 20 4e 55 | 4c 4c 29 20 7b 0a 58 09 |0] == NU|LL) {.X.|
|00001660| 09 09 69 66 20 28 73 6c | 6f 74 20 3c 20 30 29 0a |..if (sl|ot < 0).|
|00001670| 58 09 09 09 09 73 6c 6f | 74 20 3d 20 65 6e 74 72 |X....slo|t = entr|
|00001680| 79 3b 0a 58 09 09 09 62 | 72 65 61 6b 3b 0a 58 09 |y;.X...b|reak;.X.|
|00001690| 09 7d 0a 58 09 09 09 09 | 09 2f 2a 20 69 66 20 65 |.}.X....|./* if e|
|000016a0| 72 61 73 65 64 20 2a 2f | 0a 58 09 09 69 66 20 28 |rased */|.X..if (|
|000016b0| 64 69 72 2d 3e 6e 61 6d | 65 5b 30 5d 20 3d 3d 20 |dir->nam|e[0] == |
|000016c0| 30 78 65 35 29 20 7b 0a | 58 09 09 09 69 66 20 28 |0xe5) {.|X...if (|
|000016d0| 73 6c 6f 74 20 3c 20 30 | 29 0a 58 09 09 09 09 73 |slot < 0|).X....s|
|000016e0| 6c 6f 74 20 3d 20 65 6e | 74 72 79 3b 0a 58 09 09 |lot = en|try;.X..|
|000016f0| 09 63 6f 6e 74 69 6e 75 | 65 3b 0a 58 09 09 7d 0a |.continu|e;.X..}.|
|00001700| 58 09 09 09 09 09 2f 2a | 20 69 66 20 6e 6f 74 20 |X...../*| if not |
|00001710| 61 20 64 69 72 65 63 74 | 6f 72 79 20 2a 2f 0a 58 |a direct|ory */.X|
|00001720| 09 09 69 66 20 28 21 28 | 64 69 72 2d 3e 61 74 74 |..if (!(|dir->att|
|00001730| 72 20 26 20 30 78 31 30 | 29 29 0a 58 09 09 09 63 |r & 0x10|)).X...c|
|00001740| 6f 6e 74 69 6e 75 65 3b | 0a 58 09 09 73 74 72 6e |ontinue;|.X..strn|
|00001750| 63 70 79 28 74 6e 61 6d | 65 2c 20 64 69 72 2d 3e |cpy(tnam|e, dir->|
|00001760| 6e 61 6d 65 2c 20 38 29 | 3b 0a 58 09 09 73 74 72 |name, 8)|;.X..str|
|00001770| 6e 63 70 79 28 74 65 78 | 74 2c 20 64 69 72 2d 3e |ncpy(tex|t, dir->|
|00001780| 65 78 74 2c 20 33 29 3b | 0a 58 09 09 6e 65 77 66 |ext, 3);|.X..newf|
|00001790| 69 6c 65 20 3d 20 75 6e | 69 78 6e 61 6d 65 28 74 |ile = un|ixname(t|
|000017a0| 6e 61 6d 65 2c 20 74 65 | 78 74 29 3b 0a 58 09 09 |name, te|xt);.X..|
|000017b0| 09 09 09 2f 2a 20 73 61 | 76 65 20 74 68 65 20 27 |.../* sa|ve the '|
|000017c0| 64 6f 74 27 20 64 69 72 | 65 63 74 6f 72 79 20 69 |dot' dir|ectory i|
|000017d0| 6e 66 6f 20 2a 2f 0a 58 | 09 09 69 66 20 28 21 73 |nfo */.X|..if (!s|
|000017e0| 74 72 63 6d 70 28 22 2e | 22 2c 20 6e 65 77 66 69 |trcmp(".|", newfi|
|000017f0| 6c 65 29 29 0a 58 09 09 | 09 64 6f 74 20 3d 20 64 |le)).X..|.dot = d|
|00001800| 69 72 2d 3e 73 74 61 72 | 74 5b 31 5d 2a 30 78 31 |ir->star|t[1]*0x1|
|00001810| 30 30 20 2b 20 64 69 72 | 2d 3e 73 74 61 72 74 5b |00 + dir|->start[|
|00001820| 30 5d 3b 0a 58 0a 58 09 | 09 69 66 20 28 21 73 74 |0];.X.X.|.if (!st|
|00001830| 72 63 6d 70 28 66 69 6c | 65 6e 61 6d 65 2c 20 6e |rcmp(fil|ename, n|
|00001840| 65 77 66 69 6c 65 29 29 | 20 7b 0a 58 09 09 09 66 |ewfile))| {.X...f|
|00001850| 70 72 69 6e 74 66 28 73 | 74 64 65 72 72 2c 20 22 |printf(s|tderr, "|
|00001860| 6d 6d 64 3a 20 44 69 72 | 65 63 74 6f 72 79 20 27 |mmd: Dir|ectory '|
|00001870| 25 73 27 20 61 6c 72 65 | 61 64 79 20 65 78 69 73 |%s' alre|ady exis|
|00001880| 74 73 5c 6e 22 2c 20 66 | 69 6c 65 6e 61 6d 65 29 |ts\n", f|ilename)|
|00001890| 3b 0a 58 09 09 09 65 78 | 69 74 28 31 29 3b 0a 58 |;.X...ex|it(1);.X|
|000018a0| 09 09 7d 0a 58 09 7d 0a | 58 09 09 09 09 09 2f 2a |..}.X.}.|X...../*|
|000018b0| 20 6e 6f 20 27 2e 27 20 | 65 6e 74 72 79 20 6d 65 | no '.' |entry me|
|000018c0| 61 6e 73 20 72 6f 6f 74 | 20 64 69 72 65 63 74 6f |ans root| directo|
|000018d0| 72 79 20 2a 2f 0a 58 09 | 69 66 20 28 64 6f 74 20 |ry */.X.|if (dot |
|000018e0| 3d 3d 20 30 20 26 26 20 | 73 6c 6f 74 20 3c 20 30 |== 0 && |slot < 0|
|000018f0| 29 20 7b 0a 58 09 09 70 | 72 69 6e 74 66 28 73 74 |) {.X..p|rintf(st|
|00001900| 64 65 72 72 2c 20 22 6d | 6d 64 3a 20 4e 6f 20 64 |derr, "m|md: No d|
|00001910| 69 72 65 63 74 6f 72 79 | 20 73 6c 6f 74 73 5c 6e |irectory| slots\n|
|00001920| 22 29 3b 0a 58 09 09 65 | 78 69 74 28 31 29 3b 0a |");.X..e|xit(1);.|
|00001930| 58 09 7d 0a 58 09 09 09 | 09 09 2f 2a 20 6d 61 6b |X.}.X...|../* mak|
|00001940| 65 20 74 68 65 20 64 69 | 72 65 63 74 6f 72 79 20 |e the di|rectory |
|00001950| 67 72 6f 77 20 2a 2f 0a | 58 09 69 66 20 28 64 6f |grow */.|X.if (do|
|00001960| 74 20 26 26 20 73 6c 6f | 74 20 3c 20 30 29 20 7b |t && slo|t < 0) {|
|00001970| 0a 58 09 09 69 66 20 28 | 67 72 6f 77 28 64 6f 74 |.X..if (|grow(dot|
|00001980| 29 29 20 7b 0a 58 09 09 | 09 66 70 72 69 6e 74 66 |)) {.X..|.fprintf|
|00001990| 28 73 74 64 65 72 72 2c | 20 22 6d 6d 64 3a 20 44 |(stderr,| "mmd: D|
|000019a0| 69 73 6b 20 66 75 6c 6c | 5c 6e 22 29 3b 0a 58 09 |isk full|\n");.X.|
|000019b0| 09 09 65 78 69 74 28 31 | 29 3b 0a 58 09 09 7d 0a |..exit(1|);.X..}.|
|000019c0| 58 09 09 09 09 09 2f 2a | 20 66 69 72 73 74 20 73 |X...../*| first s|
|000019d0| 6c 6f 74 20 69 6e 20 27 | 6e 65 77 27 20 64 69 72 |lot in '|new' dir|
|000019e0| 65 63 74 6f 72 79 20 2a | 2f 0a 58 09 09 73 6c 6f |ectory *|/.X..slo|
|000019f0| 74 20 3d 20 65 6e 74 72 | 79 3b 0a 58 09 7d 0a 58 |t = entr|y;.X.}.X|
|00001a00| 09 66 61 74 20 3d 20 6e | 65 78 74 66 61 74 28 30 |.fat = n|extfat(0|
|00001a10| 29 3b 0a 58 09 69 66 20 | 28 66 61 74 20 3d 3d 20 |);.X.if |(fat == |
|00001a20| 2d 31 29 20 7b 0a 58 09 | 09 66 70 72 69 6e 74 66 |-1) {.X.|.fprintf|
|00001a30| 28 73 74 64 65 72 72 2c | 20 22 6d 6d 64 3a 20 44 |(stderr,| "mmd: D|
|00001a40| 69 73 6b 20 66 75 6c 6c | 5c 6e 22 29 3b 0a 58 09 |isk full|\n");.X.|
|00001a50| 09 65 78 69 74 28 31 29 | 3b 0a 58 09 7d 0a 58 09 |.exit(1)|;.X.}.X.|
|00001a60| 09 09 09 09 2f 2a 20 6d | 61 6b 65 20 64 69 72 65 |..../* m|ake dire|
|00001a70| 63 74 6f 72 79 20 65 6e | 74 72 79 20 2a 2f 0a 58 |ctory en|try */.X|
|00001a80| 09 64 69 72 20 3d 20 6d | 6b 5f 65 6e 74 72 79 28 |.dir = m|k_entry(|
|00001a90| 66 69 78 65 64 2c 20 30 | 78 31 30 2c 20 66 61 74 |fixed, 0|x10, fat|
|00001aa0| 2c 20 30 29 3b 0a 58 09 | 69 66 20 28 64 69 72 20 |, 0);.X.|if (dir |
|00001ab0| 21 3d 20 4e 55 4c 4c 29 | 20 7b 0a 58 09 09 77 72 |!= NULL)| {.X..wr|
|00001ac0| 69 74 65 64 69 72 28 73 | 6c 6f 74 2c 20 64 69 72 |itedir(s|lot, dir|
|00001ad0| 29 3b 0a 58 09 09 09 09 | 09 2f 2a 20 77 72 69 74 |);.X....|./* writ|
|00001ae0| 65 20 74 68 65 20 63 6c | 75 73 74 65 72 20 2a 2f |e the cl|uster */|
|00001af0| 0a 58 09 09 70 75 74 66 | 61 74 28 66 61 74 2c 20 |.X..putf|at(fat, |
|00001b00| 30 78 66 66 66 29 3b 0a | 58 09 09 70 75 74 63 6c |0xfff);.|X..putcl|
|00001b10| 75 73 74 65 72 28 66 61 | 74 2c 20 64 6f 74 29 3b |uster(fa|t, dot);|
|00001b20| 0a 58 09 7d 0a 58 09 09 | 09 09 09 2f 2a 20 77 72 |.X.}.X..|.../* wr|
|00001b30| 69 74 65 20 46 41 54 20 | 73 65 63 74 6f 72 73 20 |ite FAT |sectors |
|00001b40| 2a 2f 0a 58 09 77 72 69 | 74 65 66 61 74 28 29 3b |*/.X.wri|tefat();|
|00001b50| 0a 58 09 63 6c 6f 73 65 | 28 66 64 29 3b 0a 58 09 |.X.close|(fd);.X.|
|00001b60| 65 78 69 74 28 30 29 3b | 0a 58 7d 0a 58 0a 58 70 |exit(0);|.X}.X.Xp|
|00001b70| 75 74 63 6c 75 73 74 65 | 72 28 64 6f 74 2c 20 64 |utcluste|r(dot, d|
|00001b80| 6f 74 5f 64 6f 74 29 09 | 09 2f 2a 20 77 72 69 74 |ot_dot).|./* writ|
|00001b90| 65 20 74 68 65 20 63 6c | 75 73 74 65 72 20 2a 2f |e the cl|uster */|
|00001ba0| 0a 58 69 6e 74 20 64 6f | 74 3b 0a 58 69 6e 74 20 |.Xint do|t;.Xint |
|00001bb0| 64 6f 74 5f 64 6f 74 3b | 0a 58 7b 0a 58 09 6c 6f |dot_dot;|.X{.X.lo|
|00001bc0| 6e 67 20 73 74 61 72 74 | 3b 0a 58 09 76 6f 69 64 |ng start|;.X.void|
|00001bd0| 20 65 78 69 74 28 29 2c | 20 70 65 72 72 6f 72 28 | exit(),| perror(|
|00001be0| 29 3b 0a 58 09 69 6e 74 | 20 62 75 66 6c 65 6e 3b |);.X.int| buflen;|
|00001bf0| 0a 58 09 73 74 61 74 69 | 63 20 73 74 72 75 63 74 |.X.stati|c struct|
|00001c00| 20 64 69 72 65 63 74 6f | 72 79 20 64 69 72 73 5b | directo|ry dirs[|
|00001c10| 33 32 5d 3b 0a 58 09 73 | 74 72 75 63 74 20 64 69 |32];.X.s|truct di|
|00001c20| 72 65 63 74 6f 72 79 20 | 2a 6d 6b 5f 65 6e 74 72 |rectory |*mk_entr|
|00001c30| 79 28 29 3b 0a 58 0a 58 | 09 73 74 61 72 74 20 3d |y();.X.X|.start =|
|00001c40| 20 28 64 6f 74 20 2d 20 | 32 29 2a 63 6c 75 73 5f | (dot - |2)*clus_|
|00001c50| 73 69 7a 65 20 2b 20 64 | 69 72 5f 73 74 61 72 74 |size + d|ir_start|
|00001c60| 20 2b 20 64 69 72 5f 6c | 65 6e 3b 0a 58 09 6d 6f | + dir_l|en;.X.mo|
|00001c70| 76 65 28 73 74 61 72 74 | 29 3b 0a 58 0a 58 09 62 |ve(start|);.X.X.b|
|00001c80| 75 66 6c 65 6e 20 3d 20 | 63 6c 75 73 5f 73 69 7a |uflen = |clus_siz|
|00001c90| 65 20 2a 20 4d 53 45 43 | 53 49 5a 3b 0a 58 09 09 |e * MSEC|SIZ;.X..|
|00001ca0| 09 09 09 2f 2a 20 6d 61 | 6b 65 20 74 68 65 20 27 |.../* ma|ke the '|
|00001cb0| 2e 27 20 61 6e 64 20 27 | 2e 2e 27 20 65 6e 74 72 |.' and '|..' entr|
|00001cc0| 69 65 73 20 2a 2f 09 0a | 58 09 64 69 72 73 5b 30 |ies */..|X.dirs[0|
|00001cd0| 5d 20 3d 20 2a 6d 6b 5f | 65 6e 74 72 79 28 22 2e |] = *mk_|entry(".|
|00001ce0| 20 20 20 20 20 20 20 20 | 20 20 22 2c 20 30 78 31 | | ", 0x1|
|00001cf0| 30 2c 20 64 6f 74 2c 20 | 30 29 3b 0a 58 09 64 69 |0, dot, |0);.X.di|
|00001d00| 72 73 5b 31 5d 20 3d 20 | 2a 6d 6b 5f 65 6e 74 72 |rs[1] = |*mk_entr|
|00001d10| 79 28 22 2e 2e 20 20 20 | 20 20 20 20 20 20 22 2c |y(".. | ",|
|00001d20| 20 30 78 31 30 2c 20 64 | 6f 74 5f 64 6f 74 2c 20 | 0x10, d|ot_dot, |
|00001d30| 30 29 3b 0a 58 0a 58 09 | 69 66 20 28 77 72 69 74 |0);.X.X.|if (writ|
|00001d40| 65 28 66 64 2c 20 28 63 | 68 61 72 20 2a 29 20 26 |e(fd, (c|har *) &|
|00001d50| 64 69 72 73 5b 30 5d 2c | 20 62 75 66 6c 65 6e 29 |dirs[0],| buflen)|
|00001d60| 20 21 3d 20 62 75 66 6c | 65 6e 29 20 7b 0a 58 09 | != bufl|en) {.X.|
|00001d70| 09 70 65 72 72 6f 72 28 | 22 70 75 74 63 6c 75 73 |.perror(|"putclus|
|00001d80| 74 65 72 3a 20 77 72 69 | 74 65 22 29 3b 0a 58 09 |ter: wri|te");.X.|
|00001d90| 09 65 78 69 74 28 31 29 | 3b 0a 58 09 7d 0a 58 09 |.exit(1)|;.X.}.X.|
|00001da0| 72 65 74 75 72 6e 3b 0a | 58 7d 0a 58 0a 58 69 6e |return;.|X}.X.Xin|
|00001db0| 74 0a 58 6e 65 78 74 66 | 61 74 28 6c 61 73 74 29 |t.Xnextf|at(last)|
|00001dc0| 09 09 09 09 2f 2a 20 72 | 65 74 75 72 6e 73 20 6e |..../* r|eturns n|
|00001dd0| 65 78 74 20 66 72 65 65 | 20 63 6c 75 73 74 65 72 |ext free| cluster|
|00001de0| 20 2a 2f 0a 58 69 6e 74 | 20 6c 61 73 74 3b 0a 58 | */.Xint| last;.X|
|00001df0| 7b 0a 58 09 73 74 61 74 | 69 63 20 69 6e 74 20 69 |{.X.stat|ic int i|
|00001e00| 3b 0a 58 0a 58 09 66 6f | 72 20 28 69 3d 6c 61 73 |;.X.X.fo|r (i=las|
|00001e10| 74 2b 31 3b 20 69 3c 6e | 75 6d 5f 63 6c 75 73 2b |t+1; i<n|um_clus+|
|00001e20| 32 3b 20 69 2b 2b 29 20 | 7b 0a 58 09 09 69 66 20 |2; i++) |{.X..if |
|00001e30| 28 21 67 65 74 66 61 74 | 28 69 29 29 0a 58 09 09 |(!getfat|(i)).X..|
|00001e40| 09 72 65 74 75 72 6e 28 | 69 29 3b 0a 58 09 7d 0a |.return(|i);.X.}.|
|00001e50| 58 09 72 65 74 75 72 6e | 28 2d 31 29 3b 0a 58 7d |X.return|(-1);.X}|
|00001e60| 0a 53 48 41 52 5f 45 4f | 46 0a 69 66 20 74 65 73 |.SHAR_EO|F.if tes|
|00001e70| 74 20 33 36 37 32 20 2d | 6e 65 20 22 60 77 63 20 |t 3672 -|ne "`wc |
|00001e80| 2d 63 20 3c 20 27 6d 6d | 64 2e 63 27 60 22 0a 74 |-c < 'mm|d.c'`".t|
|00001e90| 68 65 6e 0a 09 65 63 68 | 6f 20 73 68 61 72 3a 20 |hen..ech|o shar: |
|00001ea0| 22 65 72 72 6f 72 20 74 | 72 61 6e 73 6d 69 74 74 |"error t|ransmitt|
|00001eb0| 69 6e 67 20 27 6d 6d 64 | 2e 63 27 22 20 27 28 73 |ing 'mmd|.c'" '(s|
|00001ec0| 68 6f 75 6c 64 20 68 61 | 76 65 20 62 65 65 6e 20 |hould ha|ve been |
|00001ed0| 33 36 37 32 20 63 68 61 | 72 61 63 74 65 72 73 29 |3672 cha|racters)|
|00001ee0| 27 0a 66 69 0a 66 69 0a | 65 63 68 6f 20 73 68 61 |'.fi.fi.|echo sha|
|00001ef0| 72 3a 20 22 65 78 74 72 | 61 63 74 69 6e 67 20 27 |r: "extr|acting '|
|00001f00| 6d 72 64 2e 63 27 22 20 | 27 28 33 31 34 38 20 63 |mrd.c'" |'(3148 c|
|00001f10| 68 61 72 61 63 74 65 72 | 73 29 27 0a 69 66 20 74 |haracter|s)'.if t|
|00001f20| 65 73 74 20 2d 66 20 27 | 6d 72 64 2e 63 27 0a 74 |est -f '|mrd.c'.t|
|00001f30| 68 65 6e 0a 09 65 63 68 | 6f 20 73 68 61 72 3a 20 |hen..ech|o shar: |
|00001f40| 22 77 69 6c 6c 20 6e 6f | 74 20 6f 76 65 72 2d 77 |"will no|t over-w|
|00001f50| 72 69 74 65 20 65 78 69 | 73 74 69 6e 67 20 66 69 |rite exi|sting fi|
|00001f60| 6c 65 20 27 6d 72 64 2e | 63 27 22 0a 65 6c 73 65 |le 'mrd.|c'".else|
|00001f70| 0a 73 65 64 20 27 73 2f | 5e 58 2f 2f 27 20 3c 3c |.sed 's/|^X//' <<|
|00001f80| 20 5c 53 48 41 52 5f 45 | 4f 46 20 3e 20 27 6d 72 | \SHAR_E|OF > 'mr|
|00001f90| 64 2e 63 27 0a 58 2f 2a | 0a 58 20 2a 20 44 65 6c |d.c'.X/*|.X * Del|
|00001fa0| 65 74 65 20 61 20 4d 53 | 44 4f 53 20 73 75 62 20 |ete a MS|DOS sub |
|00001fb0| 64 69 72 65 63 74 6f 72 | 79 0a 58 20 2a 0a 58 20 |director|y.X *.X |
|00001fc0| 2a 20 45 6d 6d 65 74 20 | 50 2e 20 47 72 61 79 09 |* Emmet |P. Gray.|
|00001fd0| 09 09 55 53 20 41 72 6d | 79 2c 20 48 51 20 49 49 |..US Arm|y, HQ II|
|00001fe0| 49 20 43 6f 72 70 73 20 | 26 20 46 6f 72 74 20 48 |I Corps |& Fort H|
|00001ff0| 6f 6f 64 0a 58 20 2a 20 | 2e 2e 2e 21 69 68 6e 70 |ood.X * |...!ihnp|
|00002000| 34 21 75 69 75 63 75 78 | 63 21 66 74 68 6f 6f 64 |4!uiucux|c!fthood|
|00002010| 21 65 67 72 61 79 09 41 | 74 74 6e 3a 20 41 46 5a |!egray.A|ttn: AFZ|
|00002020| 46 2d 44 45 2d 45 4e 56 | 0a 58 20 2a 20 09 09 09 |F-DE-ENV|.X * ...|
|00002030| 09 09 44 69 72 65 63 74 | 6f 72 61 74 65 20 6f 66 |..Direct|orate of|
|00002040| 20 45 6e 67 69 6e 65 65 | 72 69 6e 67 20 26 20 48 | Enginee|ring & H|
|00002050| 6f 75 73 69 6e 67 0a 58 | 20 2a 20 09 09 09 09 09 |ousing.X| * .....|
|00002060| 45 6e 76 69 72 6f 6e 6d | 65 6e 74 61 6c 20 4d 61 |Environm|ental Ma|
|00002070| 6e 61 67 65 6d 65 6e 74 | 20 4f 66 66 69 63 65 0a |nagement| Office.|
|00002080| 58 20 2a 20 09 09 09 09 | 09 46 6f 72 74 20 48 6f |X * ....|.Fort Ho|
|00002090| 6f 64 2c 20 54 58 20 37 | 36 35 34 34 2d 35 30 35 |od, TX 7|6544-505|
|000020a0| 37 0a 58 20 2a 2f 0a 58 | 0a 58 23 69 6e 63 6c 75 |7.X */.X|.X#inclu|
|000020b0| 64 65 20 3c 73 74 64 69 | 6f 2e 68 3e 0a 58 23 69 |de <stdi|o.h>.X#i|
|000020c0| 6e 63 6c 75 64 65 20 22 | 6d 73 64 6f 73 2e 68 22 |nclude "|msdos.h"|
|000020d0| 0a 58 0a 58 69 6e 74 20 | 66 64 3b 09 09 09 09 2f |.X.Xint |fd;..../|
|000020e0| 2a 20 74 68 65 20 66 69 | 6c 65 20 64 65 73 63 72 |* the fi|le descr|
|000020f0| 69 70 74 6f 72 20 66 6f | 72 20 74 68 65 20 66 6c |iptor fo|r the fl|
|00002100| 6f 70 70 79 20 2a 2f 0a | 58 69 6e 74 20 64 69 72 |oppy */.|Xint dir|
|00002110| 5f 73 74 61 72 74 3b 09 | 09 09 2f 2a 20 73 74 61 |_start;.|../* sta|
|00002120| 72 74 69 6e 67 20 73 65 | 63 74 6f 72 20 66 6f 72 |rting se|ctor for|
|00002130| 20 64 69 72 65 63 74 6f | 72 79 20 2a 2f 0a 58 69 | directo|ry */.Xi|
|00002140| 6e 74 20 64 69 72 5f 6c | 65 6e 3b 09 09 09 2f 2a |nt dir_l|en;.../*|
|00002150| 20 6c 65 6e 67 74 68 20 | 6f 66 20 64 69 72 65 63 | length |of direc|
|00002160| 74 6f 72 79 20 28 69 6e | 20 73 65 63 74 6f 72 73 |tory (in| sectors|
|00002170| 29 20 2a 2f 0a 58 69 6e | 74 20 64 69 72 5f 65 6e |) */.Xin|t dir_en|
|00002180| 74 72 69 65 73 3b 09 09 | 2f 2a 20 6e 75 6d 62 65 |tries;..|/* numbe|
|00002190| 72 20 6f 66 20 64 69 72 | 65 63 74 6f 72 79 20 65 |r of dir|ectory e|
|000021a0| 6e 74 72 69 65 73 20 2a | 2f 0a 58 69 6e 74 20 64 |ntries *|/.Xint d|
|000021b0| 69 72 5f 63 68 61 69 6e | 5b 32 35 5d 3b 09 09 2f |ir_chain|[25];../|
|000021c0| 2a 20 63 68 61 69 6e 20 | 6f 66 20 73 65 63 74 6f |* chain |of secto|
|000021d0| 72 73 20 69 6e 20 64 69 | 72 65 63 74 6f 72 79 20 |rs in di|rectory |
|000021e0| 2a 2f 0a 58 69 6e 74 20 | 63 6c 75 73 5f 73 69 7a |*/.Xint |clus_siz|
|000021f0| 65 3b 09 09 09 2f 2a 20 | 63 6c 75 73 74 65 72 20 |e;.../* |cluster |
|00002200| 73 69 7a 65 20 28 69 6e | 20 73 65 63 74 6f 72 73 |size (in| sectors|
|00002210| 29 20 2a 2f 0a 58 69 6e | 74 20 66 61 74 5f 6c 65 |) */.Xin|t fat_le|
|00002220| 6e 3b 09 09 09 2f 2a 20 | 6c 65 6e 67 74 68 20 6f |n;.../* |length o|
|00002230| 66 20 46 41 54 20 74 61 | 62 6c 65 20 28 69 6e 20 |f FAT ta|ble (in |
|00002240| 73 65 63 74 6f 72 73 29 | 20 2a 2f 0a 58 69 6e 74 |sectors)| */.Xint|
|00002250| 20 6e 75 6d 5f 63 6c 75 | 73 3b 09 09 09 2f 2a 20 | num_clu|s;.../* |
|00002260| 6e 75 6d 62 65 72 20 6f | 66 20 61 76 61 69 6c 61 |number o|f availa|
|00002270| 62 6c 65 20 63 6c 75 73 | 74 65 72 73 20 2a 2f 0a |ble clus|ters */.|
|00002280| 58 75 6e 73 69 67 6e 65 | 64 20 63 68 61 72 20 2a |Xunsigne|d char *|
|00002290| 66 61 74 62 75 66 3b 09 | 09 2f 2a 20 74 68 65 20 |fatbuf;.|./* the |
|000022a0| 46 69 6c 65 20 41 6c 6c | 6f 63 61 74 69 6f 6e 20 |File All|ocation |
|000022b0| 54 61 62 6c 65 20 2a 2f | 0a 58 63 68 61 72 20 2a |Table */|.Xchar *|
|000022c0| 6d 63 77 64 3b 09 09 09 | 2f 2a 20 74 68 65 20 43 |mcwd;...|/* the C|
|000022d0| 75 72 72 65 6e 74 20 57 | 6f 72 6b 69 6e 67 20 44 |urrent W|orking D|
|000022e0| 69 72 65 63 74 6f 72 79 | 20 2a 2f 0a 58 0a 58 6d |irectory| */.X.Xm|
|000022f0| 61 69 6e 28 61 72 67 63 | 2c 20 61 72 67 76 29 0a |ain(argc|, argv).|
|00002300| 58 69 6e 74 20 61 72 67 | 63 3b 0a 58 63 68 61 72 |Xint arg|c;.Xchar|
|00002310| 20 2a 61 72 67 76 5b 5d | 3b 0a 58 7b 0a 58 09 69 | *argv[]|;.X{.X.i|
|00002320| 6e 74 20 69 73 6d 61 74 | 63 68 2c 20 65 6e 74 72 |nt ismat|ch, entr|
|00002330| 79 2c 20 73 74 61 72 74 | 2c 20 69 73 65 6d 70 74 |y, start|, isempt|
|00002340| 79 28 29 3b 0a 58 09 63 | 68 61 72 20 2a 66 69 6c |y();.X.c|har *fil|
|00002350| 65 6e 61 6d 65 2c 20 2a | 6e 65 77 66 69 6c 65 2c |ename, *|newfile,|
|00002360| 20 74 65 78 74 5b 34 5d | 2c 20 74 6e 61 6d 65 5b | text[4]|, tname[|
|00002370| 39 5d 2c 20 2a 67 65 74 | 6e 61 6d 65 28 29 3b 0a |9], *get|name();.|
|00002380| 58 09 63 68 61 72 20 2a | 73 74 72 6e 63 70 79 28 |X.char *|strncpy(|
|00002390| 29 2c 20 2a 70 61 74 68 | 6e 61 6d 65 2c 20 2a 67 |), *path|name, *g|
|000023a0| 65 74 70 61 74 68 28 29 | 2c 20 2a 75 6e 69 78 6e |etpath()|, *unixn|
|000023b0| 61 6d 65 28 29 3b 0a 58 | 09 76 6f 69 64 20 65 78 |ame();.X|.void ex|
|000023c0| 69 74 28 29 3b 0a 58 09 | 73 74 72 75 63 74 20 64 |it();.X.|struct d|
|000023d0| 69 72 65 63 74 6f 72 79 | 20 2a 64 69 72 2c 20 2a |irectory| *dir, *|
|000023e0| 73 65 61 72 63 68 28 29 | 3b 0a 58 0a 58 09 69 66 |search()|;.X.X.if|
|000023f0| 20 28 69 6e 69 74 28 32 | 29 29 20 7b 0a 58 09 09 | (init(2|)) {.X..|
|00002400| 66 70 72 69 6e 74 66 28 | 73 74 64 65 72 72 2c 20 |fprintf(|stderr, |
|00002410| 22 6d 72 64 3a 20 43 61 | 6e 6e 6f 74 20 69 6e 69 |"mrd: Ca|nnot ini|
|00002420| 74 69 61 6c 69 7a 65 20 | 64 69 73 6b 65 74 74 65 |tialize |diskette|
|00002430| 5c 6e 22 29 3b 0a 58 09 | 09 65 78 69 74 28 31 29 |\n");.X.|.exit(1)|
|00002440| 3b 0a 58 09 7d 0a 58 09 | 09 09 09 09 2f 2a 20 6f |;.X.}.X.|..../* o|
|00002450| 6e 6c 79 20 31 20 64 69 | 72 65 63 74 6f 72 79 20 |nly 1 di|rectory |
|00002460| 21 20 2a 2f 0a 58 09 69 | 66 20 28 61 72 67 63 20 |! */.X.i|f (argc |
|00002470| 21 3d 20 32 29 20 7b 0a | 58 09 09 66 70 72 69 6e |!= 2) {.|X..fprin|
|00002480| 74 66 28 73 74 64 65 72 | 72 2c 20 22 55 73 61 67 |tf(stder|r, "Usag|
|00002490| 65 3a 20 6d 72 64 20 3c | 4d 53 44 4f 53 20 64 69 |e: mrd <|MSDOS di|
|000024a0| 72 65 63 74 6f 72 79 3e | 5c 6e 22 29 3b 0a 58 09 |rectory>|\n");.X.|
|000024b0| 09 65 78 69 74 28 31 29 | 3b 0a 58 09 7d 0a 58 0a |.exit(1)|;.X.}.X.|
|000024c0| 58 09 66 69 6c 65 6e 61 | 6d 65 20 3d 20 67 65 74 |X.filena|me = get|
|000024d0| 6e 61 6d 65 28 61 72 67 | 76 5b 31 5d 29 3b 0a 58 |name(arg|v[1]);.X|
|000024e0| 09 70 61 74 68 6e 61 6d | 65 20 3d 20 67 65 74 70 |.pathnam|e = getp|
|000024f0| 61 74 68 28 61 72 67 76 | 5b 31 5d 29 3b 0a 58 09 |ath(argv|[1]);.X.|
|00002500| 69 66 20 28 73 75 62 64 | 69 72 28 70 61 74 68 6e |if (subd|ir(pathn|
|00002510| 61 6d 65 29 29 0a 58 09 | 09 65 78 69 74 28 31 29 |ame)).X.|.exit(1)|
|00002520| 3b 0a 58 09 69 73 6d 61 | 74 63 68 20 3d 20 30 3b |;.X.isma|tch = 0;|
|00002530| 0a 58 09 66 6f 72 20 28 | 65 6e 74 72 79 3d 30 3b |.X.for (|entry=0;|
|00002540| 20 65 6e 74 72 79 3c 64 | 69 72 5f 65 6e 74 72 69 | entry<d|ir_entri|
|00002550| 65 73 3b 20 65 6e 74 72 | 79 2b 2b 29 20 7b 0a 58 |es; entr|y++) {.X|
|00002560| 09 09 64 69 72 20 3d 20 | 73 65 61 72 63 68 28 65 |..dir = |search(e|
|00002570| 6e 74 72 79 29 3b 0a 58 | 09 09 09 09 09 2f 2a 20 |ntry);.X|...../* |
|00002580| 69 66 20 65 6d 70 74 79 | 20 2a 2f 0a 58 09 09 69 |if empty| */.X..i|
|00002590| 66 20 28 64 69 72 2d 3e | 6e 61 6d 65 5b 30 5d 20 |f (dir->|name[0] |
|000025a0| 3d 3d 20 4e 55 4c 4c 29 | 0a 58 09 09 09 62 72 65 |== NULL)|.X...bre|
|000025b0| 61 6b 3b 0a 58 09 09 09 | 09 09 2f 2a 20 69 66 20 |ak;.X...|../* if |
|000025c0| 65 72 61 73 65 64 20 2a | 2f 0a 58 09 09 69 66 20 |erased *|/.X..if |
|000025d0| 28 64 69 72 2d 3e 6e 61 | 6d 65 5b 30 5d 20 3d 3d |(dir->na|me[0] ==|
|000025e0| 20 30 78 65 35 29 0a 58 | 09 09 09 63 6f 6e 74 69 | 0xe5).X|...conti|
|000025f0| 6e 75 65 3b 0a 58 09 09 | 09 09 09 2f 2a 20 69 66 |nue;.X..|.../* if|
|00002600| 20 6e 6f 74 20 64 69 72 | 20 2a 2f 0a 58 09 09 69 | not dir| */.X..i|
|00002610| 66 20 28 21 28 64 69 72 | 2d 3e 61 74 74 72 20 26 |f (!(dir|->attr &|
|00002620| 20 30 78 31 30 29 29 0a | 58 09 09 09 63 6f 6e 74 | 0x10)).|X...cont|
|00002630| 69 6e 75 65 3b 0a 58 09 | 09 73 74 72 6e 63 70 79 |inue;.X.|.strncpy|
|00002640| 28 74 6e 61 6d 65 2c 20 | 64 69 72 2d 3e 6e 61 6d |(tname, |dir->nam|
|00002650| 65 2c 20 38 29 3b 0a 58 | 09 09 73 74 72 6e 63 70 |e, 8);.X|..strncp|
|00002660| 79 28 74 65 78 74 2c 20 | 64 69 72 2d 3e 65 78 74 |y(text, |dir->ext|
|00002670| 2c 20 33 29 3b 0a 58 09 | 09 6e 65 77 66 69 6c 65 |, 3);.X.|.newfile|
|00002680| 20 3d 20 75 6e 69 78 6e | 61 6d 65 28 74 6e 61 6d | = unixn|ame(tnam|
|00002690| 65 2c 20 74 65 78 74 29 | 3b 0a 58 09 09 69 66 20 |e, text)|;.X..if |
|000026a0| 28 21 73 74 72 63 6d 70 | 28 6e 65 77 66 69 6c 65 |(!strcmp|(newfile|
|000026b0| 2c 20 66 69 6c 65 6e 61 | 6d 65 29 29 20 7b 0a 58 |, filena|me)) {.X|
|000026c0| 09 09 09 73 74 61 72 74 | 20 3d 20 64 69 72 2d 3e |...start| = dir->|
|000026d0| 73 74 61 72 74 5b 31 5d | 2a 30 78 31 30 30 20 2b |start[1]|*0x100 +|
|000026e0| 20 64 69 72 2d 3e 73 74 | 61 72 74 5b 30 5d 3b 0a | dir->st|art[0];.|
|000026f0| 58 09 09 09 69 66 20 28 | 21 69 73 65 6d 70 74 79 |X...if (|!isempty|
|00002700| 28 73 74 61 72 74 29 29 | 20 7b 0a 58 09 09 09 09 |(start))| {.X....|
|00002710| 66 70 72 69 6e 74 66 28 | 73 74 64 65 72 72 2c 20 |fprintf(|stderr, |
|00002720| 22 6d 72 64 3a 20 44 69 | 72 65 63 74 6f 72 79 20 |"mrd: Di|rectory |
|00002730| 27 25 73 27 20 69 73 20 | 6e 6f 74 20 65 6d 70 74 |'%s' is |not empt|
|00002740| 79 5c 6e 22 2c 20 66 69 | 6c 65 6e 61 6d 65 29 3b |y\n", fi|lename);|
|00002750| 0a 58 09 09 09 09 65 78 | 69 74 28 31 29 3b 0a 58 |.X....ex|it(1);.X|
|00002760| 09 09 09 7d 0a 58 09 09 | 09 69 66 20 28 21 73 74 |...}.X..|.if (!st|
|00002770| 61 72 74 29 20 7b 0a 58 | 09 09 09 09 66 70 72 69 |art) {.X|....fpri|
|00002780| 6e 74 66 28 73 74 64 65 | 72 72 2c 20 22 6d 72 64 |ntf(stde|rr, "mrd|
|00002790| 3a 20 43 61 6e 27 74 20 | 72 65 6d 6f 76 65 20 72 |: Can't |remove r|
|000027a0| 6f 6f 74 20 64 69 72 65 | 63 74 6f 72 79 5c 6e 22 |oot dire|ctory\n"|
|000027b0| 29 3b 0a 58 09 09 09 09 | 65 78 69 74 28 31 29 3b |);.X....|exit(1);|
|000027c0| 0a 58 09 09 09 7d 0a 58 | 09 09 09 7a 61 70 69 74 |.X...}.X|...zapit|
|000027d0| 28 73 74 61 72 74 29 3b | 0a 58 09 09 09 64 69 72 |(start);|.X...dir|
|000027e0| 2d 3e 6e 61 6d 65 5b 30 | 5d 20 3d 20 30 78 65 35 |->name[0|] = 0xe5|
|000027f0| 3b 0a 58 09 09 09 77 72 | 69 74 65 64 69 72 28 65 |;.X...wr|itedir(e|
|00002800| 6e 74 72 79 2c 20 64 69 | 72 29 3b 0a 58 09 09 09 |ntry, di|r);.X...|
|00002810| 69 73 6d 61 74 63 68 20 | 3d 20 31 3b 0a 58 09 09 |ismatch |= 1;.X..|
|00002820| 7d 0a 58 09 7d 0a 58 09 | 69 66 20 28 21 69 73 6d |}.X.}.X.|if (!ism|
|00002830| 61 74 63 68 29 20 7b 0a | 58 09 09 66 70 72 69 6e |atch) {.|X..fprin|
|00002840| 74 66 28 73 74 64 65 72 | 72 2c 20 22 6d 72 64 3a |tf(stder|r, "mrd:|
|00002850| 20 44 69 72 65 63 74 6f | 72 79 20 27 25 73 27 20 | Directo|ry '%s' |
|00002860| 6e 6f 74 20 66 6f 75 6e | 64 5c 6e 22 2c 20 66 69 |not foun|d\n", fi|
|00002870| 6c 65 6e 61 6d 65 29 3b | 0a 58 09 09 65 78 69 74 |lename);|.X..exit|
|00002880| 28 31 29 3b 0a 58 09 7d | 0a 58 09 09 09 09 09 2f |(1);.X.}|.X...../|
|00002890| 2a 20 75 70 64 61 74 65 | 20 74 68 65 20 46 41 54 |* update| the FAT|
|000028a0| 20 73 65 63 74 6f 72 73 | 20 2a 2f 0a 58 09 77 72 | sectors| */.X.wr|
|000028b0| 69 74 65 66 61 74 28 29 | 3b 0a 58 09 63 6c 6f 73 |itefat()|;.X.clos|
|000028c0| 65 28 66 64 29 3b 0a 58 | 09 65 78 69 74 28 30 29 |e(fd);.X|.exit(0)|
|000028d0| 3b 0a 58 7d 0a 58 0a 58 | 2f 2a 0a 58 20 2a 20 53 |;.X}.X.X|/*.X * S|
|000028e0| 65 65 20 69 66 20 64 69 | 72 65 63 74 6f 72 79 20 |ee if di|rectory |
|000028f0| 69 73 20 65 6d 70 74 79 | 2e 20 20 52 65 74 75 72 |is empty|. Retur|
|00002900| 6e 73 20 31 20 69 66 20 | 65 6d 70 74 79 2c 20 30 |ns 1 if |empty, 0|
|00002910| 20 69 66 20 6e 6f 74 2e | 20 20 43 61 6e 27 74 20 | if not.| Can't |
|00002920| 75 73 65 0a 58 20 2a 20 | 73 75 62 64 69 72 28 29 |use.X * |subdir()|
|00002930| 20 61 6e 64 20 73 65 61 | 72 63 68 28 29 20 61 73 | and sea|rch() as|
|00002940| 20 69 74 20 77 6f 75 6c | 64 20 63 6c 6f 62 62 65 | it woul|d clobbe|
|00002950| 72 20 74 68 65 20 67 6c | 6f 62 61 6c 73 2e 0a 58 |r the gl|obals..X|
|00002960| 20 2a 2f 0a 58 0a 58 69 | 6e 74 0a 58 69 73 65 6d | */.X.Xi|nt.Xisem|
|00002970| 70 74 79 28 66 61 74 29 | 0a 58 69 6e 74 20 66 61 |pty(fat)|.Xint fa|
|00002980| 74 3b 0a 58 7b 0a 58 09 | 69 6e 74 20 69 2c 20 6e |t;.X{.X.|int i, n|
|00002990| 65 78 74 2c 20 62 75 66 | 6c 65 6e 2c 20 73 65 63 |ext, buf|len, sec|
|000029a0| 74 6f 72 2c 20 67 65 74 | 66 61 74 28 29 3b 0a 58 |tor, get|fat();.X|
|000029b0| 09 75 6e 73 69 67 6e 65 | 64 20 63 68 61 72 20 74 |.unsigne|d char t|
|000029c0| 62 75 66 5b 31 30 32 34 | 5d 3b 0a 58 09 76 6f 69 |buf[1024|];.X.voi|
|000029d0| 64 20 70 65 72 72 6f 72 | 28 29 2c 20 65 78 69 74 |d perror|(), exit|
|000029e0| 28 29 3b 0a 58 0a 58 09 | 77 68 69 6c 65 20 28 31 |();.X.X.|while (1|
|000029f0| 29 20 7b 0a 58 09 09 73 | 65 63 74 6f 72 20 3d 20 |) {.X..s|ector = |
|00002a00| 28 66 61 74 2d 32 29 2a | 63 6c 75 73 5f 73 69 7a |(fat-2)*|clus_siz|
|00002a10| 65 20 2b 20 64 69 72 5f | 73 74 61 72 74 20 2b 20 |e + dir_|start + |
|00002a20| 64 69 72 5f 6c 65 6e 3b | 0a 58 09 09 6d 6f 76 65 |dir_len;|.X..move|
|00002a30| 28 73 65 63 74 6f 72 29 | 3b 0a 58 09 09 62 75 66 |(sector)|;.X..buf|
|00002a40| 6c 65 6e 20 3d 20 63 6c | 75 73 5f 73 69 7a 65 20 |len = cl|us_size |
|00002a50| 2a 20 4d 53 45 43 53 49 | 5a 3b 0a 58 09 09 69 66 |* MSECSI|Z;.X..if|
|00002a60| 20 28 72 65 61 64 28 66 | 64 2c 20 74 62 75 66 2c | (read(f|d, tbuf,|
|00002a70| 20 62 75 66 6c 65 6e 29 | 20 21 3d 20 62 75 66 6c | buflen)| != bufl|
|00002a80| 65 6e 29 20 7b 0a 58 09 | 09 09 70 65 72 72 6f 72 |en) {.X.|..perror|
|00002a90| 28 22 69 73 65 6d 70 74 | 79 3a 20 72 65 61 64 22 |("isempt|y: read"|
|00002aa0| 29 3b 0a 58 09 09 09 65 | 78 69 74 28 31 29 3b 0a |);.X...e|xit(1);.|
|00002ab0| 58 09 09 7d 0a 58 09 09 | 09 09 09 2f 2a 20 63 68 |X..}.X..|.../* ch|
|00002ac0| 65 63 6b 20 66 69 72 73 | 74 20 63 68 61 72 61 63 |eck firs|t charac|
|00002ad0| 74 65 72 20 6f 66 20 6e | 61 6d 65 20 2a 2f 0a 58 |ter of n|ame */.X|
|00002ae0| 09 09 66 6f 72 20 28 69 | 3d 30 3b 20 69 3c 4d 53 |..for (i|=0; i<MS|
|00002af0| 45 43 53 49 5a 3b 20 69 | 2b 3d 4d 44 49 52 53 49 |ECSIZ; i|+=MDIRSI|
|00002b00| 5a 29 20 7b 0a 58 09 09 | 09 69 66 20 28 74 62 75 |Z) {.X..|.if (tbu|
|00002b10| 66 5b 69 5d 20 3d 3d 20 | 27 2e 27 29 0a 58 09 09 |f[i] == |'.').X..|
|00002b20| 09 09 63 6f 6e 74 69 6e | 75 65 3b 0a 58 09 09 09 |..contin|ue;.X...|
|00002b30| 69 66 20 28 74 62 75 66 | 5b 69 5d 20 21 3d 20 4e |if (tbuf|[i] != N|
|00002b40| 55 4c 4c 20 26 26 20 74 | 62 75 66 5b 69 5d 20 21 |ULL && t|buf[i] !|
|00002b50| 3d 20 30 78 65 35 29 0a | 58 09 09 09 09 72 65 74 |= 0xe5).|X....ret|
|00002b60| 75 72 6e 28 30 29 3b 0a | 58 09 09 7d 0a 58 09 09 |urn(0);.|X..}.X..|
|00002b70| 09 09 09 2f 2a 20 67 65 | 74 20 6e 65 78 74 20 63 |.../* ge|t next c|
|00002b80| 6c 75 73 74 65 72 20 6e | 75 6d 62 65 72 20 2a 2f |luster n|umber */|
|00002b90| 0a 58 09 09 6e 65 78 74 | 20 3d 20 67 65 74 66 61 |.X..next| = getfa|
|00002ba0| 74 28 66 61 74 29 3b 0a | 58 09 09 69 66 20 28 6e |t(fat);.|X..if (n|
|00002bb0| 65 78 74 20 3d 3d 20 2d | 31 29 20 7b 0a 58 09 09 |ext == -|1) {.X..|
|00002bc0| 09 66 70 72 69 6e 74 66 | 28 73 74 64 65 72 72 2c |.fprintf|(stderr,|
|00002bd0| 20 22 69 73 65 6d 70 74 | 79 3a 20 46 41 54 20 70 | "isempt|y: FAT p|
|00002be0| 72 6f 62 6c 65 6d 5c 6e | 22 29 3b 0a 58 09 09 09 |roblem\n|");.X...|
|00002bf0| 65 78 69 74 28 31 29 3b | 0a 58 09 09 7d 0a 58 09 |exit(1);|.X..}.X.|
|00002c00| 09 09 09 09 2f 2a 20 65 | 6e 64 20 6f 66 20 63 6c |..../* e|nd of cl|
|00002c10| 75 73 74 65 72 20 63 68 | 61 69 6e 20 2a 2f 0a 58 |uster ch|ain */.X|
|00002c20| 09 09 69 66 20 28 6e 65 | 78 74 20 3e 3d 20 30 78 |..if (ne|xt >= 0x|
|00002c30| 66 66 38 29 0a 58 09 09 | 09 62 72 65 61 6b 3b 0a |ff8).X..|.break;.|
|00002c40| 58 09 09 66 61 74 20 3d | 20 6e 65 78 74 3b 0a 58 |X..fat =| next;.X|
|00002c50| 09 7d 0a 58 09 72 65 74 | 75 72 6e 28 31 29 3b 0a |.}.X.ret|urn(1);.|
|00002c60| 58 7d 0a 53 48 41 52 5f | 45 4f 46 0a 69 66 20 74 |X}.SHAR_|EOF.if t|
|00002c70| 65 73 74 20 33 31 34 38 | 20 2d 6e 65 20 22 60 77 |est 3148| -ne "`w|
|00002c80| 63 20 2d 63 20 3c 20 27 | 6d 72 64 2e 63 27 60 22 |c -c < '|mrd.c'`"|
|00002c90| 0a 74 68 65 6e 0a 09 65 | 63 68 6f 20 73 68 61 72 |.then..e|cho shar|
|00002ca0| 3a 20 22 65 72 72 6f 72 | 20 74 72 61 6e 73 6d 69 |: "error| transmi|
|00002cb0| 74 74 69 6e 67 20 27 6d | 72 64 2e 63 27 22 20 27 |tting 'm|rd.c'" '|
|00002cc0| 28 73 68 6f 75 6c 64 20 | 68 61 76 65 20 62 65 65 |(should |have bee|
|00002cd0| 6e 20 33 31 34 38 20 63 | 68 61 72 61 63 74 65 72 |n 3148 c|haracter|
|00002ce0| 73 29 27 0a 66 69 0a 66 | 69 0a 65 63 68 6f 20 73 |s)'.fi.f|i.echo s|
|00002cf0| 68 61 72 3a 20 22 65 78 | 74 72 61 63 74 69 6e 67 |har: "ex|tracting|
|00002d00| 20 27 6d 72 65 61 64 2e | 63 27 22 20 27 28 34 35 | 'mread.|c'" '(45|
|00002d10| 32 33 20 63 68 61 72 61 | 63 74 65 72 73 29 27 0a |23 chara|cters)'.|
|00002d20| 69 66 20 74 65 73 74 20 | 2d 66 20 27 6d 72 65 61 |if test |-f 'mrea|
|00002d30| 64 2e 63 27 0a 74 68 65 | 6e 0a 09 65 63 68 6f 20 |d.c'.the|n..echo |
|00002d40| 73 68 61 72 3a 20 22 77 | 69 6c 6c 20 6e 6f 74 20 |shar: "w|ill not |
|00002d50| 6f 76 65 72 2d 77 72 69 | 74 65 20 65 78 69 73 74 |over-wri|te exist|
|00002d60| 69 6e 67 20 66 69 6c 65 | 20 27 6d 72 65 61 64 2e |ing file| 'mread.|
|00002d70| 63 27 22 0a 65 6c 73 65 | 0a 73 65 64 20 27 73 2f |c'".else|.sed 's/|
|00002d80| 5e 58 2f 2f 27 20 3c 3c | 20 5c 53 48 41 52 5f 45 |^X//' <<| \SHAR_E|
|00002d90| 4f 46 20 3e 20 27 6d 72 | 65 61 64 2e 63 27 0a 58 |OF > 'mr|ead.c'.X|
|00002da0| 2f 2a 0a 58 20 2a 20 52 | 65 61 64 20 28 63 6f 70 |/*.X * R|ead (cop|
|00002db0| 79 29 20 61 20 4d 53 44 | 4f 53 20 66 69 6c 65 20 |y) a MSD|OS file |
|00002dc0| 74 6f 20 55 6e 69 78 0a | 58 20 2a 0a 58 20 2a 20 |to Unix.|X *.X * |
|00002dd0| 45 6d 6d 65 74 20 50 2e | 20 47 72 61 79 09 09 09 |Emmet P.| Gray...|
|00002de0| 55 53 20 41 72 6d 79 2c | 20 48 51 20 49 49 49 20 |US Army,| HQ III |
|00002df0| 43 6f 72 70 73 20 26 20 | 46 6f 72 74 20 48 6f 6f |Corps & |Fort Hoo|
|00002e00| 64 0a 58 20 2a 20 2e 2e | 2e 21 69 68 6e 70 34 21 |d.X * ..|.!ihnp4!|
|00002e10| 75 69 75 63 75 78 63 21 | 66 74 68 6f 6f 64 21 65 |uiucuxc!|fthood!e|
|00002e20| 67 72 61 79 09 41 74 74 | 6e 3a 20 41 46 5a 46 2d |gray.Att|n: AFZF-|
|00002e30| 44 45 2d 45 4e 56 0a 58 | 20 2a 20 09 09 09 09 09 |DE-ENV.X| * .....|
|00002e40| 44 69 72 65 63 74 6f 72 | 61 74 65 20 6f 66 20 45 |Director|ate of E|
|00002e50| 6e 67 69 6e 65 65 72 69 | 6e 67 20 26 20 48 6f 75 |ngineeri|ng & Hou|
|00002e60| 73 69 6e 67 0a 58 20 2a | 20 09 09 09 09 09 45 6e |sing.X *| .....En|
|00002e70| 76 69 72 6f 6e 6d 65 6e | 74 61 6c 20 4d 61 6e 61 |vironmen|tal Mana|
|00002e80| 67 65 6d 65 6e 74 20 4f | 66 66 69 63 65 0a 58 20 |gement O|ffice.X |
|00002e90| 2a 20 09 09 09 09 09 46 | 6f 72 74 20 48 6f 6f 64 |* .....F|ort Hood|
|00002ea0| 2c 20 54 58 20 37 36 35 | 34 34 2d 35 30 35 37 0a |, TX 765|44-5057.|
|00002eb0| 58 20 2a 2f 0a 58 0a 58 | 23 69 6e 63 6c 75 64 65 |X */.X.X|#include|
|00002ec0| 20 3c 73 74 64 69 6f 2e | 68 3e 0a 58 23 69 6e 63 | <stdio.|h>.X#inc|
|00002ed0| 6c 75 64 65 20 3c 73 79 | 73 2f 74 79 70 65 73 2e |lude <sy|s/types.|
|00002ee0| 68 3e 0a 58 23 69 6e 63 | 6c 75 64 65 20 3c 73 79 |h>.X#inc|lude <sy|
|00002ef0| 73 2f 73 74 61 74 2e 68 | 3e 0a 58 23 69 6e 63 6c |s/stat.h|>.X#incl|
|00002f00| 75 64 65 20 22 6d 73 64 | 6f 73 2e 68 22 0a 58 0a |ude "msd|os.h".X.|
|00002f10| 58 69 6e 74 20 66 64 3b | 09 09 09 09 2f 2a 20 74 |Xint fd;|..../* t|
|00002f20| 68 65 20 66 69 6c 65 20 | 64 65 73 63 72 69 70 74 |he file |descript|
|00002f30| 6f 72 20 66 6f 72 20 74 | 68 65 20 66 6c 6f 70 70 |or for t|he flopp|
|00002f40| 79 20 2a 2f 0a 58 69 6e | 74 20 64 69 72 5f 73 74 |y */.Xin|t dir_st|
|00002f50| 61 72 74 3b 09 09 09 2f | 2a 20 73 74 61 72 74 69 |art;.../|* starti|
|00002f60| 6e 67 20 73 65 63 74 6f | 72 20 66 6f 72 20 64 69 |ng secto|r for di|
|00002f70| 72 65 63 74 6f 72 79 20 | 2a 2f 0a 58 69 6e 74 20 |rectory |*/.Xint |
|00002f80| 64 69 72 5f 6c 65 6e 3b | 09 09 09 2f 2a 20 6c 65 |dir_len;|.../* le|
|00002f90| 6e 67 74 68 20 6f 66 20 | 64 69 72 65 63 74 6f 72 |ngth of |director|
|00002fa0| 79 20 28 69 6e 20 73 65 | 63 74 6f 72 73 29 20 2a |y (in se|ctors) *|
|00002fb0| 2f 0a 58 69 6e 74 20 64 | 69 72 5f 65 6e 74 72 69 |/.Xint d|ir_entri|
|00002fc0| 65 73 3b 09 09 2f 2a 20 | 6e 75 6d 62 65 72 20 6f |es;../* |number o|
|00002fd0| 66 20 64 69 72 65 63 74 | 6f 72 79 20 65 6e 74 72 |f direct|ory entr|
|00002fe0| 69 65 73 20 2a 2f 0a 58 | 69 6e 74 20 64 69 72 5f |ies */.X|int dir_|
|00002ff0| 63 68 61 69 6e 5b 32 35 | 5d 3b 09 09 2f 2a 20 63 |chain[25|];../* c|
|00003000| 68 61 69 6e 20 6f 66 20 | 73 65 63 74 6f 72 73 20 |hain of |sectors |
|00003010| 69 6e 20 64 69 72 65 63 | 74 6f 72 79 20 2a 2f 0a |in direc|tory */.|
|00003020| 58 69 6e 74 20 63 6c 75 | 73 5f 73 69 7a 65 3b 09 |Xint clu|s_size;.|
|00003030| 09 09 2f 2a 20 63 6c 75 | 73 74 65 72 20 73 69 7a |../* clu|ster siz|
|00003040| 65 20 28 69 6e 20 73 65 | 63 74 6f 72 73 29 20 2a |e (in se|ctors) *|
|00003050| 2f 0a 58 69 6e 74 20 66 | 61 74 5f 6c 65 6e 3b 09 |/.Xint f|at_len;.|
|00003060| 09 09 2f 2a 20 6c 65 6e | 67 74 68 20 6f 66 20 46 |../* len|gth of F|
|00003070| 41 54 20 74 61 62 6c 65 | 20 28 69 6e 20 73 65 63 |AT table| (in sec|
|00003080| 74 6f 72 73 29 20 2a 2f | 0a 58 69 6e 74 20 6e 75 |tors) */|.Xint nu|
|00003090| 6d 5f 63 6c 75 73 3b 09 | 09 09 2f 2a 20 6e 75 6d |m_clus;.|../* num|
|000030a0| 62 65 72 20 6f 66 20 61 | 76 61 69 6c 61 62 6c 65 |ber of a|vailable|
|000030b0| 20 63 6c 75 73 74 65 72 | 73 20 2a 2f 0a 58 75 6e | cluster|s */.Xun|
|000030c0| 73 69 67 6e 65 64 20 63 | 68 61 72 20 2a 66 61 74 |signed c|har *fat|
|000030d0| 62 75 66 3b 09 09 2f 2a | 20 74 68 65 20 46 69 6c |buf;../*| the Fil|
|000030e0| 65 20 41 6c 6c 6f 63 61 | 74 69 6f 6e 20 54 61 62 |e Alloca|tion Tab|
|000030f0| 6c 65 20 2a 2f 0a 58 63 | 68 61 72 20 2a 6d 63 77 |le */.Xc|har *mcw|
|00003100| 64 3b 09 09 09 2f 2a 20 | 74 68 65 20 43 75 72 72 |d;.../* |the Curr|
|00003110| 65 6e 74 20 57 6f 72 6b | 69 6e 67 20 44 69 72 65 |ent Work|ing Dire|
|00003120| 63 74 6f 72 79 20 2a 2f | 0a 58 0a 58 6c 6f 6e 67 |ctory */|.X.Xlong|
|00003130| 20 73 69 7a 65 3b 0a 58 | 6c 6f 6e 67 20 63 75 72 | size;.X|long cur|
|00003140| 72 65 6e 74 3b 0a 58 69 | 6e 74 20 74 65 78 74 6d |rent;.Xi|nt textm|
|00003150| 6f 64 65 20 3d 20 30 3b | 0a 58 69 6e 74 20 6e 6f |ode = 0;|.Xint no|
|00003160| 77 61 72 6e 20 3d 20 30 | 3b 0a 58 0a 58 6d 61 69 |warn = 0|;.X.Xmai|
|00003170| 6e 28 61 72 67 63 2c 20 | 61 72 67 76 29 0a 58 69 |n(argc, |argv).Xi|
|00003180| 6e 74 20 61 72 67 63 3b | 0a 58 63 68 61 72 20 2a |nt argc;|.Xchar *|
|00003190| 61 72 67 76 5b 5d 3b 0a | 58 7b 0a 58 09 65 78 74 |argv[];.|X{.X.ext|
|000031a0| 65 72 6e 20 69 6e 74 20 | 6f 70 74 69 6e 64 3b 0a |ern int |optind;.|
|000031b0| 58 09 65 78 74 65 72 6e | 20 63 68 61 72 20 2a 6f |X.extern| char *o|
|000031c0| 70 74 61 72 67 3b 0a 58 | 09 69 6e 74 20 66 61 74 |ptarg;.X|.int fat|
|000031d0| 2c 20 69 2c 20 69 73 6d | 61 74 63 68 2c 20 65 6e |, i, ism|atch, en|
|000031e0| 74 72 79 2c 20 73 75 62 | 64 69 72 28 29 2c 20 73 |try, sub|dir(), s|
|000031f0| 69 6e 67 6c 65 2c 20 63 | 2c 20 6f 6f 70 73 3b 0a |ingle, c|, oops;.|
|00003200| 58 09 63 68 61 72 20 2a | 66 69 6c 65 6e 61 6d 65 |X.char *|filename|
|00003210| 2c 20 2a 6e 65 77 66 69 | 6c 65 2c 20 74 65 78 74 |, *newfi|le, text|
|00003220| 5b 34 5d 2c 20 74 6e 61 | 6d 65 5b 39 5d 2c 20 2a |[4], tna|me[9], *|
|00003230| 67 65 74 6e 61 6d 65 28 | 29 2c 20 2a 75 6e 69 78 |getname(|), *unix|
|00003240| 6e 61 6d 65 28 29 3b 0a | 58 09 63 68 61 72 20 2a |name();.|X.char *|
|00003250| 73 74 72 6e 63 70 79 28 | 29 2c 20 2a 70 61 74 68 |strncpy(|), *path|
|00003260| 6e 61 6d 65 2c 20 2a 67 | 65 74 70 61 74 68 28 29 |name, *g|etpath()|
|00003270| 2c 20 2a 74 61 72 67 65 | 74 2c 20 2a 74 6d 70 2c |, *targe|t, *tmp,|
|00003280| 20 2a 6d 61 6c 6c 6f 63 | 28 29 3b 0a 58 09 63 68 | *malloc|();.X.ch|
|00003290| 61 72 20 2a 73 74 72 63 | 61 74 28 29 2c 20 2a 73 |ar *strc|at(), *s|
|000032a0| 74 72 63 70 79 28 29 3b | 0a 58 09 76 6f 69 64 20 |trcpy();|.X.void |
|000032b0| 70 65 72 72 6f 72 28 29 | 2c 20 65 78 69 74 28 29 |perror()|, exit()|
|000032c0| 3b 0a 58 09 73 74 72 75 | 63 74 20 64 69 72 65 63 |;.X.stru|ct direc|
|000032d0| 74 6f 72 79 20 2a 64 69 | 72 2c 20 2a 73 65 61 72 |tory *di|r, *sear|
|000032e0| 63 68 28 29 3b 0a 58 09 | 73 74 72 75 63 74 20 73 |ch();.X.|struct s|
|000032f0| 74 61 74 20 73 74 62 75 | 66 3b 0a 58 0a 58 09 69 |tat stbu|f;.X.X.i|
|00003300| 66 20 28 69 6e 69 74 28 | 30 29 29 20 7b 0a 58 09 |f (init(|0)) {.X.|
|00003310| 09 66 70 72 69 6e 74 66 | 28 73 74 64 65 72 72 2c |.fprintf|(stderr,|
|00003320| 20 22 6d 72 65 61 64 3a | 20 43 61 6e 6e 6f 74 20 | "mread:| Cannot |
|00003330| 69 6e 69 74 69 61 6c 69 | 7a 65 20 64 69 73 6b 65 |initiali|ze diske|
|00003340| 74 74 65 5c 6e 22 29 3b | 0a 58 09 09 65 78 69 74 |tte\n");|.X..exit|
|00003350| 28 31 29 3b 0a 58 09 7d | 0a 58 09 09 09 09 09 2f |(1);.X.}|.X...../|
|00003360| 2a 20 67 65 74 20 63 6f | 6d 6d 61 6e 64 20 6c 69 |* get co|mmand li|
|00003370| 6e 65 20 6f 70 74 69 6f | 6e 73 20 2a 2f 0a 58 09 |ne optio|ns */.X.|
|00003380| 6f 6f 70 73 20 3d 20 30 | 3b 0a 58 09 77 68 69 6c |oops = 0|;.X.whil|
|00003390| 65 20 28 28 63 20 3d 20 | 67 65 74 6f 70 74 28 61 |e ((c = |getopt(a|
|000033a0| 72 67 63 2c 20 61 72 67 | 76 2c 20 22 74 6e 22 29 |rgc, arg|v, "tn")|
|000033b0| 29 20 21 3d 20 45 4f 46 | 29 20 7b 0a 58 09 09 73 |) != EOF|) {.X..s|
|000033c0| 77 69 74 63 68 28 63 29 | 20 7b 0a 58 09 09 09 63 |witch(c)| {.X...c|
|000033d0| 61 73 65 20 27 74 27 3a | 0a 58 09 09 09 09 74 65 |ase 't':|.X....te|
|000033e0| 78 74 6d 6f 64 65 20 3d | 20 31 3b 0a 58 09 09 09 |xtmode =| 1;.X...|
|000033f0| 09 62 72 65 61 6b 3b 0a | 58 09 09 09 63 61 73 65 |.break;.|X...case|
|00003400| 20 27 6e 27 3a 0a 58 09 | 09 09 09 6e 6f 77 61 72 | 'n':.X.|...nowar|
|00003410| 6e 20 3d 20 31 3b 0a 58 | 09 09 09 09 62 72 65 61 |n = 1;.X|....brea|
|00003420| 6b 3b 0a 58 09 09 09 64 | 65 66 61 75 6c 74 3a 0a |k;.X...d|efault:.|
|00003430| 58 09 09 09 09 6f 6f 70 | 73 20 3d 20 31 3b 0a 58 |X....oop|s = 1;.X|
|00003440| 09 09 09 09 62 72 65 61 | 6b 3b 0a 58 09 09 7d 0a |....brea|k;.X..}.|
|00003450| 58 09 7d 0a 58 0a 58 09 | 69 66 20 28 6f 6f 70 73 |X.}.X.X.|if (oops|
|00003460| 20 7c 7c 20 28 61 72 67 | 63 20 2d 20 6f 70 74 69 | || (arg|c - opti|
|00003470| 6e 64 29 20 3c 20 32 29 | 20 7b 0a 58 09 09 66 70 |nd) < 2)| {.X..fp|
|00003480| 72 69 6e 74 66 28 73 74 | 64 65 72 72 2c 20 22 55 |rintf(st|derr, "U|
|00003490| 73 61 67 65 3a 20 6d 72 | 65 61 64 20 5b 2d 74 7c |sage: mr|ead [-t||
|000034a0| 2d 6e 5d 20 3c 4d 53 44 | 4f 53 20 66 69 6c 65 3e |-n] <MSD|OS file>|
|000034b0| 20 3c 55 6e 69 78 20 66 | 69 6c 65 3e 5c 6e 22 29 | <Unix f|ile>\n")|
|000034c0| 3b 0a 58 09 09 66 70 72 | 69 6e 74 66 28 73 74 64 |;.X..fpr|intf(std|
|000034d0| 65 72 72 2c 20 22 20 20 | 20 20 6f 72 20 6d 72 65 |err, " | or mre|
|000034e0| 61 64 20 5b 2d 74 7c 2d | 6e 5d 20 3c 4d 53 44 4f |ad [-t|-|n] <MSDO|
|000034f0| 53 20 66 69 6c 65 3e 20 | 5b 3c 4d 53 44 4f 53 20 |S file> |[<MSDOS |
|00003500| 66 69 6c 65 73 2e 2e 2e | 3e 5d 20 3c 55 6e 69 78 |files...|>] <Unix|
|00003510| 20 64 69 72 65 63 74 6f | 72 79 3e 5c 6e 22 29 3b | directo|ry>\n");|
|00003520| 0a 58 09 09 65 78 69 74 | 28 31 29 3b 0a 58 09 7d |.X..exit|(1);.X.}|
|00003530| 0a 58 09 09 09 09 09 2f | 2a 20 6f 6e 6c 79 20 31 |.X...../|* only 1|
|00003540| 20 66 69 6c 65 20 74 6f | 20 63 6f 70 79 2e 2e 2e | file to| copy...|
|00003550| 20 2a 2f 0a 58 09 73 69 | 6e 67 6c 65 20 3d 20 31 | */.X.si|ngle = 1|
|00003560| 3b 0a 58 09 74 61 72 67 | 65 74 20 3d 20 61 72 67 |;.X.targ|et = arg|
|00003570| 76 5b 61 72 67 63 2d 31 | 5d 3b 0a 58 09 09 09 09 |v[argc-1|];.X....|
|00003580| 09 2f 2a 20 2e 2e 2e 75 | 6e 6c 65 73 73 20 6c 61 |./* ...u|nless la|
|00003590| 73 74 20 61 72 67 20 69 | 73 20 61 20 64 69 72 65 |st arg i|s a dire|
|000035a0| 63 74 6f 72 79 20 2a 2f | 0a 58 09 69 66 20 28 21 |ctory */|.X.if (!|
|000035b0| 73 74 61 74 28 74 61 72 | 67 65 74 2c 20 26 73 74 |stat(tar|get, &st|
|000035c0| 62 75 66 29 29 20 7b 0a | 58 09 09 69 66 20 28 73 |buf)) {.|X..if (s|
|000035d0| 74 62 75 66 2e 73 74 5f | 6d 6f 64 65 20 26 20 30 |tbuf.st_|mode & 0|
|000035e0| 34 30 30 30 30 29 0a 58 | 09 09 09 73 69 6e 67 6c |40000).X|...singl|
|000035f0| 65 20 3d 20 30 3b 09 0a | 58 09 7d 0a 58 0a 58 09 |e = 0;..|X.}.X.X.|
|00003600| 66 6f 72 20 28 69 3d 6f | 70 74 69 6e 64 3b 20 69 |for (i=o|ptind; i|
|00003610| 3c 61 72 67 63 2d 31 3b | 20 69 2b 2b 29 20 7b 0a |<argc-1;| i++) {.|
|00003620| 58 09 09 66 69 6c 65 6e | 61 6d 65 20 3d 20 67 65 |X..filen|ame = ge|
|00003630| 74 6e 61 6d 65 28 61 72 | 67 76 5b 69 5d 29 3b 0a |tname(ar|gv[i]);.|
|00003640| 58 09 09 70 61 74 68 6e | 61 6d 65 20 3d 20 67 65 |X..pathn|ame = ge|
|00003650| 74 70 61 74 68 28 61 72 | 67 76 5b 69 5d 29 3b 0a |tpath(ar|gv[i]);.|
|00003660| 58 09 09 69 66 20 28 73 | 75 62 64 69 72 28 70 61 |X..if (s|ubdir(pa|
|00003670| 74 68 6e 61 6d 65 29 29 | 0a 58 09 09 09 63 6f 6e |thname))|.X...con|
|00003680| 74 69 6e 75 65 3b 0a 58 | 09 09 69 73 6d 61 74 63 |tinue;.X|..ismatc|
|00003690| 68 20 3d 20 30 3b 0a 58 | 09 09 66 6f 72 20 28 65 |h = 0;.X|..for (e|
|000036a0| 6e 74 72 79 3d 30 3b 20 | 65 6e 74 72 79 3c 64 69 |ntry=0; |entry<di|
|000036b0| 72 5f 65 6e 74 72 69 65 | 73 3b 20 65 6e 74 72 79 |r_entrie|s; entry|
|000036c0| 2b 2b 29 20 7b 0a 58 09 | 09 09 64 69 72 20 3d 20 |++) {.X.|..dir = |
|000036d0| 73 65 61 72 63 68 28 65 | 6e 74 72 79 29 3b 0a 58 |search(e|ntry);.X|
|000036e0| 09 09 09 09 09 2f 2a 20 | 69 66 20 65 6d 70 74 79 |...../* |if empty|
|000036f0| 20 2a 2f 0a 58 09 09 09 | 69 66 20 28 64 69 72 2d | */.X...|if (dir-|
|00003700| 3e 6e 61 6d 65 5b 30 5d | 20 3d 3d 20 4e 55 4c 4c |>name[0]| == NULL|
|00003710| 29 0a 58 09 09 09 09 62 | 72 65 61 6b 3b 0a 58 09 |).X....b|reak;.X.|
|00003720| 09 09 09 09 2f 2a 20 69 | 66 20 65 72 61 73 65 64 |..../* i|f erased|
|00003730| 20 2a 2f 0a 58 09 09 09 | 69 66 20 28 64 69 72 2d | */.X...|if (dir-|
|00003740| 3e 6e 61 6d 65 5b 30 5d | 20 3d 3d 20 30 78 65 35 |>name[0]| == 0xe5|
|00003750| 29 0a 58 09 09 09 09 63 | 6f 6e 74 69 6e 75 65 3b |).X....c|ontinue;|
|00003760| 0a 58 09 09 09 09 09 2f | 2a 20 69 66 20 64 69 72 |.X...../|* if dir|
|00003770| 20 6f 72 20 76 6f 6c 75 | 6d 65 20 6c 61 62 6c 65 | or volu|me lable|
|00003780| 20 2a 2f 0a 58 09 09 09 | 69 66 20 28 28 64 69 72 | */.X...|if ((dir|
|00003790| 2d 3e 61 74 74 72 20 26 | 20 30 78 31 30 29 20 7c |->attr &| 0x10) ||
|000037a0| 7c 20 28 64 69 72 2d 3e | 61 74 74 72 20 26 20 30 || (dir->|attr & 0|
|000037b0| 78 30 38 29 29 0a 58 09 | 09 09 09 63 6f 6e 74 69 |x08)).X.|...conti|
|000037c0| 6e 75 65 3b 0a 58 09 09 | 09 73 74 72 6e 63 70 79 |nue;.X..|.strncpy|
|000037d0| 28 74 6e 61 6d 65 2c 20 | 64 69 72 2d 3e 6e 61 6d |(tname, |dir->nam|
|000037e0| 65 2c 20 38 29 3b 0a 58 | 09 09 09 73 74 72 6e 63 |e, 8);.X|...strnc|
|000037f0| 70 79 28 74 65 78 74 2c | 20 64 69 72 2d 3e 65 78 |py(text,| dir->ex|
|00003800| 74 2c 20 33 29 3b 0a 58 | 09 09 09 6e 65 77 66 69 |t, 3);.X|...newfi|
|00003810| 6c 65 20 3d 20 75 6e 69 | 78 6e 61 6d 65 28 74 6e |le = uni|xname(tn|
|00003820| 61 6d 65 2c 20 74 65 78 | 74 29 3b 0a 58 09 09 09 |ame, tex|t);.X...|
|00003830| 66 61 74 20 3d 20 64 69 | 72 2d 3e 73 74 61 72 74 |fat = di|r->start|
|00003840| 5b 31 5d 2a 30 78 31 30 | 30 20 2b 20 64 69 72 2d |[1]*0x10|0 + dir-|
|00003850| 3e 73 74 61 72 74 5b 30 | 5d 3b 0a 58 09 09 09 73 |>start[0|];.X...s|
|00003860| 69 7a 65 20 3d 20 64 69 | 72 2d 3e 73 69 7a 65 5b |ize = di|r->size[|
|00003870| 32 5d 2a 30 78 31 30 30 | 30 30 20 2b 20 64 69 72 |2]*0x100|00 + dir|
|00003880| 2d 3e 73 69 7a 65 5b 31 | 5d 2a 30 78 31 30 30 20 |->size[1|]*0x100 |
|00003890| 2b 20 64 69 72 2d 3e 73 | 69 7a 65 5b 30 5d 3b 0a |+ dir->s|ize[0];.|
|000038a0| 58 09 09 09 09 09 2f 2a | 20 69 66 20 73 69 6e 67 |X...../*| if sing|
|000038b0| 6c 65 20 66 69 6c 65 20 | 2a 2f 0a 58 09 09 09 69 |le file |*/.X...i|
|000038c0| 66 20 28 73 69 6e 67 6c | 65 29 20 7b 0a 58 09 09 |f (singl|e) {.X..|
|000038d0| 09 09 69 66 20 28 21 73 | 74 72 63 6d 70 28 6e 65 |..if (!s|trcmp(ne|
|000038e0| 77 66 69 6c 65 2c 20 66 | 69 6c 65 6e 61 6d 65 29 |wfile, f|ilename)|
|000038f0| 29 20 7b 0a 58 09 09 09 | 09 09 72 65 61 64 69 74 |) {.X...|..readit|
|00003900| 28 66 61 74 2c 20 74 61 | 72 67 65 74 29 3b 0a 58 |(fat, ta|rget);.X|
|00003910| 09 09 09 09 09 69 73 6d | 61 74 63 68 20 3d 20 31 |.....ism|atch = 1|
|00003920| 3b 0a 58 09 09 09 09 09 | 62 72 65 61 6b 3b 0a 58 |;.X.....|break;.X|
|00003930| 09 09 09 09 7d 0a 58 09 | 09 09 7d 0a 58 09 09 09 |....}.X.|..}.X...|
|00003940| 09 09 2f 2a 20 69 66 20 | 6d 75 6c 74 69 70 6c 65 |../* if |multiple|
|00003950| 20 66 69 6c 65 73 20 2a | 2f 0a 58 09 09 09 65 6c | files *|/.X...el|
|00003960| 73 65 20 7b 0a 58 09 09 | 09 09 69 66 20 28 6d 61 |se {.X..|..if (ma|
|00003970| 74 63 68 28 6e 65 77 66 | 69 6c 65 2c 20 66 69 6c |tch(newf|ile, fil|
|00003980| 65 6e 61 6d 65 29 29 20 | 7b 0a 58 09 09 09 09 09 |ename)) |{.X.....|
|00003990| 70 72 69 6e 74 66 28 22 | 43 6f 70 79 69 6e 67 20 |printf("|Copying |
|000039a0| 25 73 5c 6e 22 2c 20 6e | 65 77 66 69 6c 65 29 3b |%s\n", n|ewfile);|
|000039b0| 0a 58 09 09 09 09 09 74 | 6d 70 20 3d 20 6d 61 6c |.X.....t|mp = mal|
|000039c0| 6c 6f 63 28 73 74 72 6c | 65 6e 28 74 61 72 67 65 |loc(strl|en(targe|
|000039d0| 74 29 2b 31 2b 73 74 72 | 6c 65 6e 28 6e 65 77 66 |t)+1+str|len(newf|
|000039e0| 69 6c 65 29 2b 31 29 3b | 0a 58 09 09 09 09 09 73 |ile)+1);|.X.....s|
|000039f0| 74 72 63 70 79 28 74 6d | 70 2c 20 74 61 72 67 65 |trcpy(tm|p, targe|
|00003a00| 74 29 3b 0a 58 09 09 09 | 09 09 73 74 72 63 61 74 |t);.X...|..strcat|
|00003a10| 28 74 6d 70 2c 20 22 2f | 22 29 3b 0a 58 09 09 09 |(tmp, "/|");.X...|
|00003a20| 09 09 73 74 72 63 61 74 | 28 74 6d 70 2c 20 6e 65 |..strcat|(tmp, ne|
|00003a30| 77 66 69 6c 65 29 3b 0a | 58 09 09 09 09 09 72 65 |wfile);.|X.....re|
|00003a40| 61 64 69 74 28 66 61 74 | 2c 20 74 6d 70 29 3b 0a |adit(fat|, tmp);.|
|00003a50| 58 09 09 09 09 09 69 73 | 6d 61 74 63 68 20 3d 20 |X.....is|match = |
|00003a60| 31 3b 0a 58 09 09 09 09 | 7d 0a 58 09 09 09 7d 0a |1;.X....|}.X...}.|
|00003a70| 58 09 09 7d 0a 58 09 09 | 69 66 20 28 21 69 73 6d |X..}.X..|if (!ism|
|00003a80| 61 74 63 68 29 20 7b 0a | 58 09 09 09 66 70 72 69 |atch) {.|X...fpri|
|00003a90| 6e 74 66 28 73 74 64 65 | 72 72 2c 20 22 6d 72 65 |ntf(stde|rr, "mre|
|00003aa0| 61 64 3a 20 46 69 6c 65 | 20 27 25 73 27 20 6e 6f |ad: File| '%s' no|
|00003ab0| 74 20 66 6f 75 6e 64 5c | 6e 22 2c 20 66 69 6c 65 |t found\|n", file|
|00003ac0| 6e 61 6d 65 29 3b 0a 58 | 09 09 09 63 6f 6e 74 69 |name);.X|...conti|
|00003ad0| 6e 75 65 3b 0a 58 09 09 | 7d 0a 58 09 7d 0a 58 09 |nue;.X..|}.X.}.X.|
|00003ae0| 63 6c 6f 73 65 28 66 64 | 29 3b 0a 58 09 65 78 69 |close(fd|);.X.exi|
|00003af0| 74 28 30 29 3b 0a 58 7d | 0a 58 0a 58 72 65 61 64 |t(0);.X}|.X.Xread|
|00003b00| 69 74 28 66 61 74 2c 20 | 74 61 72 67 65 74 29 0a |it(fat, |target).|
|00003b10| 58 69 6e 74 20 66 61 74 | 3b 0a 58 63 68 61 72 20 |Xint fat|;.Xchar |
|00003b20| 2a 74 61 72 67 65 74 3b | 0a 58 7b 0a 58 09 63 68 |*target;|.X{.X.ch|
|00003b30| 61 72 20 61 6e 73 5b 31 | 30 5d 3b 0a 58 09 76 6f |ar ans[1|0];.X.vo|
|00003b40| 69 64 20 65 78 69 74 28 | 29 3b 0a 58 09 46 49 4c |id exit(|);.X.FIL|
|00003b50| 45 20 2a 66 70 3b 0a 58 | 0a 58 09 63 75 72 72 65 |E *fp;.X|.X.curre|
|00003b60| 6e 74 20 3d 20 30 4c 3b | 0a 58 09 69 66 20 28 21 |nt = 0L;|.X.if (!|
|00003b70| 6e 6f 77 61 72 6e 29 20 | 7b 0a 58 09 09 69 66 20 |nowarn) |{.X..if |
|00003b80| 28 21 61 63 63 65 73 73 | 28 74 61 72 67 65 74 2c |(!access|(target,|
|00003b90| 20 30 29 29 20 7b 0a 58 | 09 09 09 77 68 69 6c 65 | 0)) {.X|...while|
|00003ba0| 20 28 31 29 20 7b 0a 58 | 09 09 09 09 70 72 69 6e | (1) {.X|....prin|
|00003bb0| 74 66 28 22 46 69 6c 65 | 20 27 25 73 27 20 65 78 |tf("File| '%s' ex|
|00003bc0| 69 73 74 73 2c 20 6f 76 | 65 72 77 72 69 74 65 20 |ists, ov|erwrite |
|00003bd0| 28 79 2f 6e 29 20 3f 20 | 22 2c 20 74 61 72 67 65 |(y/n) ? |", targe|
|00003be0| 74 29 3b 0a 58 09 09 09 | 09 67 65 74 73 28 61 6e |t);.X...|.gets(an|
|00003bf0| 73 29 3b 0a 58 09 09 09 | 09 69 66 20 28 61 6e 73 |s);.X...|.if (ans|
|00003c00| 5b 30 5d 20 3d 3d 20 27 | 6e 27 20 7c 7c 20 61 6e |[0] == '|n' || an|
|00003c10| 73 5b 30 5d 20 3d 3d 20 | 27 4e 27 29 0a 58 09 09 |s[0] == |'N').X..|
|00003c20| 09 09 09 72 65 74 75 72 | 6e 3b 0a 58 09 09 09 09 |...retur|n;.X....|
|00003c30| 69 66 20 28 61 6e 73 5b | 30 5d 20 3d 3d 20 27 79 |if (ans[|0] == 'y|
|00003c40| 27 20 7c 7c 20 61 6e 73 | 5b 30 5d 20 3d 3d 20 27 |' || ans|[0] == '|
|00003c50| 59 27 29 0a 58 09 09 09 | 09 09 62 72 65 61 6b 3b |Y').X...|..break;|
|00003c60| 0a 58 09 09 09 7d 0a 58 | 09 09 7d 0a 58 09 7d 0a |.X...}.X|..}.X.}.|
|00003c70| 58 0a 58 09 69 66 20 28 | 21 28 66 70 20 3d 20 66 |X.X.if (|!(fp = f|
|00003c80| 6f 70 65 6e 28 74 61 72 | 67 65 74 2c 20 22 77 22 |open(tar|get, "w"|
|00003c90| 29 29 29 20 7b 0a 58 09 | 09 66 70 72 69 6e 74 66 |))) {.X.|.fprintf|
|00003ca0| 28 73 74 64 65 72 72 2c | 20 22 6d 72 65 61 64 3a |(stderr,| "mread:|
|00003cb0| 20 43 61 6e 27 74 20 6f | 70 65 6e 20 27 25 73 27 | Can't o|pen '%s'|
|00003cc0| 20 66 6f 72 20 77 72 69 | 74 65 5c 6e 22 2c 20 74 | for wri|te\n", t|
|00003cd0| 61 72 67 65 74 29 3b 0a | 58 09 09 72 65 74 75 72 |arget);.|X..retur|
|00003ce0| 6e 3b 0a 58 09 7d 0a 58 | 0a 58 09 77 68 69 6c 65 |n;.X.}.X|.X.while|
|00003cf0| 20 28 31 29 20 7b 0a 58 | 09 09 67 65 74 63 6c 75 | (1) {.X|..getclu|
|00003d00| 73 74 65 72 28 66 61 74 | 2c 20 66 70 29 3b 0a 58 |ster(fat|, fp);.X|
|00003d10| 09 09 09 09 09 2f 2a 20 | 67 65 74 20 6e 65 78 74 |...../* |get next|
|00003d20| 20 63 6c 75 73 74 65 72 | 20 6e 75 6d 62 65 72 20 | cluster| number |
|00003d30| 2a 2f 0a 58 09 09 66 61 | 74 20 3d 20 67 65 74 66 |*/.X..fa|t = getf|
|00003d40| 61 74 28 66 61 74 29 3b | 0a 58 09 09 69 66 20 28 |at(fat);|.X..if (|
|00003d50| 66 61 74 20 3d 3d 20 2d | 31 29 20 7b 0a 58 09 09 |fat == -|1) {.X..|
|00003d60| 09 66 70 72 69 6e 74 66 | 28 73 74 64 65 72 72 2c |.fprintf|(stderr,|
|00003d70| 20 22 6d 72 65 61 64 3a | 20 46 41 54 20 70 72 6f | "mread:| FAT pro|
|00003d80| 62 6c 65 6d 5c 6e 22 29 | 3b 0a 58 09 09 09 65 78 |blem\n")|;.X...ex|
|00003d90| 69 74 28 31 29 3b 0a 58 | 09 09 7d 0a 58 09 09 09 |it(1);.X|..}.X...|
|00003da0| 09 09 2f 2a 20 65 6e 64 | 20 6f 66 20 63 6c 75 73 |../* end| of clus|
|00003db0| 74 65 72 20 63 68 61 69 | 6e 20 2a 2f 0a 58 09 09 |ter chai|n */.X..|
|00003dc0| 69 66 20 28 66 61 74 20 | 3e 3d 20 30 78 66 66 38 |if (fat |>= 0xff8|
|00003dd0| 29 0a 58 09 09 09 62 72 | 65 61 6b 3b 0a 58 09 7d |).X...br|eak;.X.}|
|00003de0| 0a 58 09 66 63 6c 6f 73 | 65 28 66 70 29 3b 0a 58 |.X.fclos|e(fp);.X|
|00003df0| 09 72 65 74 75 72 6e 3b | 0a 58 7d 0a 58 0a 58 67 |.return;|.X}.X.Xg|
|00003e00| 65 74 63 6c 75 73 74 65 | 72 28 6e 75 6d 2c 20 66 |etcluste|r(num, f|
|00003e10| 70 29 09 09 09 2f 2a 20 | 72 65 61 64 20 61 20 63 |p).../* |read a c|
|00003e20| 6c 75 73 74 65 72 20 2a | 2f 0a 58 69 6e 74 20 6e |luster *|/.Xint n|
|00003e30| 75 6d 3b 0a 58 46 49 4c | 45 20 2a 66 70 3b 0a 58 |um;.XFIL|E *fp;.X|
|00003e40| 7b 0a 58 09 69 6e 74 20 | 69 2c 20 62 75 66 6c 65 |{.X.int |i, bufle|
|00003e50| 6e 2c 20 73 74 61 72 74 | 3b 0a 58 09 76 6f 69 64 |n, start|;.X.void|
|00003e60| 20 65 78 69 74 28 29 2c | 20 70 65 72 72 6f 72 28 | exit(),| perror(|
|00003e70| 29 3b 0a 58 09 63 68 61 | 72 20 62 75 66 5b 31 30 |);.X.cha|r buf[10|
|00003e80| 32 34 5d 3b 0a 58 0a 58 | 09 73 74 61 72 74 20 3d |24];.X.X|.start =|
|00003e90| 20 28 6e 75 6d 20 2d 20 | 32 29 2a 63 6c 75 73 5f | (num - |2)*clus_|
|00003ea0| 73 69 7a 65 20 2b 20 64 | 69 72 5f 73 74 61 72 74 |size + d|ir_start|
|00003eb0| 20 2b 20 64 69 72 5f 6c | 65 6e 3b 0a 58 09 6d 6f | + dir_l|en;.X.mo|
|00003ec0| 76 65 28 73 74 61 72 74 | 29 3b 0a 58 0a 58 09 62 |ve(start|);.X.X.b|
|00003ed0| 75 66 6c 65 6e 20 3d 20 | 63 6c 75 73 5f 73 69 7a |uflen = |clus_siz|
|00003ee0| 65 20 2a 20 4d 53 45 43 | 53 49 5a 3b 0a 58 09 69 |e * MSEC|SIZ;.X.i|
|00003ef0| 66 20 28 72 65 61 64 28 | 66 64 2c 20 62 75 66 2c |f (read(|fd, buf,|
|00003f00| 20 62 75 66 6c 65 6e 29 | 20 21 3d 20 62 75 66 6c | buflen)| != bufl|
|00003f10| 65 6e 29 20 7b 0a 58 09 | 09 70 65 72 72 6f 72 28 |en) {.X.|.perror(|
|00003f20| 22 67 65 74 63 6c 75 73 | 74 65 72 3a 20 72 65 61 |"getclus|ter: rea|
|00003f30| 64 22 29 3b 0a 58 09 09 | 65 78 69 74 28 31 29 3b |d");.X..|exit(1);|
|00003f40| 0a 58 09 7d 0a 58 09 09 | 09 09 09 2f 2a 20 73 74 |.X.}.X..|.../* st|
|00003f50| 6f 70 20 61 74 20 73 69 | 7a 65 20 6e 6f 74 20 45 |op at si|ze not E|
|00003f60| 4f 46 20 6d 61 72 6b 65 | 72 20 2a 2f 0a 58 09 66 |OF marke|r */.X.f|
|00003f70| 6f 72 20 28 69 3d 30 3b | 20 69 3c 62 75 66 6c 65 |or (i=0;| i<bufle|
|00003f80| 6e 3b 20 69 2b 2b 29 20 | 7b 0a 58 09 09 63 75 72 |n; i++) |{.X..cur|
|00003f90| 72 65 6e 74 2b 2b 3b 0a | 58 09 09 69 66 20 28 63 |rent++;.|X..if (c|
|00003fa0| 75 72 72 65 6e 74 20 3e | 20 73 69 7a 65 29 20 0a |urrent >| size) .|
|00003fb0| 58 09 09 09 62 72 65 61 | 6b 3b 0a 58 09 09 69 66 |X...brea|k;.X..if|
|00003fc0| 20 28 74 65 78 74 6d 6f | 64 65 20 26 26 20 62 75 | (textmo|de && bu|
|00003fd0| 66 5b 69 5d 20 3d 3d 20 | 27 5c 72 27 29 0a 58 09 |f[i] == |'\r').X.|
|00003fe0| 09 09 63 6f 6e 74 69 6e | 75 65 3b 0a 58 09 09 66 |..contin|ue;.X..f|
|00003ff0| 70 75 74 63 28 62 75 66 | 5b 69 5d 2c 20 66 70 29 |putc(buf|[i], fp)|
|00004000| 3b 0a 58 09 7d 0a 58 09 | 72 65 74 75 72 6e 3b 0a |;.X.}.X.|return;.|
|00004010| 58 7d 0a 53 48 41 52 5f | 45 4f 46 0a 69 66 20 74 |X}.SHAR_|EOF.if t|
|00004020| 65 73 74 20 34 35 32 33 | 20 2d 6e 65 20 22 60 77 |est 4523| -ne "`w|
|00004030| 63 20 2d 63 20 3c 20 27 | 6d 72 65 61 64 2e 63 27 |c -c < '|mread.c'|
|00004040| 60 22 0a 74 68 65 6e 0a | 09 65 63 68 6f 20 73 68 |`".then.|.echo sh|
|00004050| 61 72 3a 20 22 65 72 72 | 6f 72 20 74 72 61 6e 73 |ar: "err|or trans|
|00004060| 6d 69 74 74 69 6e 67 20 | 27 6d 72 65 61 64 2e 63 |mitting |'mread.c|
|00004070| 27 22 20 27 28 73 68 6f | 75 6c 64 20 68 61 76 65 |'" '(sho|uld have|
|00004080| 20 62 65 65 6e 20 34 35 | 32 33 20 63 68 61 72 61 | been 45|23 chara|
|00004090| 63 74 65 72 73 29 27 0a | 66 69 0a 66 69 0a 65 63 |cters)'.|fi.fi.ec|
|000040a0| 68 6f 20 73 68 61 72 3a | 20 22 65 78 74 72 61 63 |ho shar:| "extrac|
|000040b0| 74 69 6e 67 20 27 6d 72 | 65 6e 2e 63 27 22 20 27 |ting 'mr|en.c'" '|
|000040c0| 28 32 36 32 38 20 63 68 | 61 72 61 63 74 65 72 73 |(2628 ch|aracters|
|000040d0| 29 27 0a 69 66 20 74 65 | 73 74 20 2d 66 20 27 6d |)'.if te|st -f 'm|
|000040e0| 72 65 6e 2e 63 27 0a 74 | 68 65 6e 0a 09 65 63 68 |ren.c'.t|hen..ech|
|000040f0| 6f 20 73 68 61 72 3a 20 | 22 77 69 6c 6c 20 6e 6f |o shar: |"will no|
|00004100| 74 20 6f 76 65 72 2d 77 | 72 69 74 65 20 65 78 69 |t over-w|rite exi|
|00004110| 73 74 69 6e 67 20 66 69 | 6c 65 20 27 6d 72 65 6e |sting fi|le 'mren|
|00004120| 2e 63 27 22 0a 65 6c 73 | 65 0a 73 65 64 20 27 73 |.c'".els|e.sed 's|
|00004130| 2f 5e 58 2f 2f 27 20 3c | 3c 20 5c 53 48 41 52 5f |/^X//' <|< \SHAR_|
|00004140| 45 4f 46 20 3e 20 27 6d | 72 65 6e 2e 63 27 0a 58 |EOF > 'm|ren.c'.X|
|00004150| 2f 2a 0a 58 20 2a 20 52 | 65 6e 61 6d 65 20 61 6e |/*.X * R|ename an|
|00004160| 20 65 78 69 73 74 69 6e | 67 20 4d 53 44 4f 53 20 | existin|g MSDOS |
|00004170| 66 69 6c 65 0a 58 20 2a | 0a 58 20 2a 20 45 6d 6d |file.X *|.X * Emm|
|00004180| 65 74 20 50 2e 20 47 72 | 61 79 09 09 09 55 53 20 |et P. Gr|ay...US |
|00004190| 41 72 6d 79 2c 20 48 51 | 20 49 49 49 20 43 6f 72 |Army, HQ| III Cor|
|000041a0| 70 73 20 26 20 46 6f 72 | 74 20 48 6f 6f 64 0a 58 |ps & For|t Hood.X|
|000041b0| 20 2a 20 2e 2e 2e 21 69 | 68 6e 70 34 21 75 69 75 | * ...!i|hnp4!uiu|
|000041c0| 63 75 78 63 21 66 74 68 | 6f 6f 64 21 65 67 72 61 |cuxc!fth|ood!egra|
|000041d0| 79 09 41 74 74 6e 3a 20 | 41 46 5a 46 2d 44 45 2d |y.Attn: |AFZF-DE-|
|000041e0| 45 4e 56 0a 58 20 2a 20 | 09 09 09 09 09 44 69 72 |ENV.X * |.....Dir|
|000041f0| 65 63 74 6f 72 61 74 65 | 20 6f 66 20 45 6e 67 69 |ectorate| of Engi|
|00004200| 6e 65 65 72 69 6e 67 20 | 26 20 48 6f 75 73 69 6e |neering |& Housin|
|00004210| 67 0a 58 20 2a 20 09 09 | 09 09 09 45 6e 76 69 72 |g.X * ..|...Envir|
|00004220| 6f 6e 6d 65 6e 74 61 6c | 20 4d 61 6e 61 67 65 6d |onmental| Managem|
|00004230| 65 6e 74 20 4f 66 66 69 | 63 65 0a 58 20 2a 20 09 |ent Offi|ce.X * .|
|00004240| 09 09 09 09 46 6f 72 74 | 20 48 6f 6f 64 2c 20 54 |....Fort| Hood, T|
|00004250| 58 20 37 36 35 34 34 2d | 35 30 35 37 0a 58 20 2a |X 76544-|5057.X *|
|00004260| 2f 0a 58 0a 58 23 69 6e | 63 6c 75 64 65 20 3c 73 |/.X.X#in|clude <s|
|00004270| 74 64 69 6f 2e 68 3e 0a | 58 23 69 6e 63 6c 75 64 |tdio.h>.|X#includ|
|00004280| 65 20 22 6d 73 64 6f 73 | 2e 68 22 0a 58 0a 58 69 |e "msdos|.h".X.Xi|
|00004290| 6e 74 20 66 64 3b 09 09 | 09 09 2f 2a 20 74 68 65 |nt fd;..|../* the|
|000042a0| 20 66 69 6c 65 20 64 65 | 73 63 72 69 70 74 6f 72 | file de|scriptor|
|000042b0| 20 66 6f 72 20 74 68 65 | 20 66 6c 6f 70 70 79 20 | for the| floppy |
|000042c0| 2a 2f 0a 58 69 6e 74 20 | 64 69 72 5f 73 74 61 72 |*/.Xint |dir_star|
|000042d0| 74 3b 09 09 09 2f 2a 20 | 73 74 61 72 74 69 6e 67 |t;.../* |starting|
|000042e0| 20 73 65 63 74 6f 72 20 | 66 6f 72 20 64 69 72 65 | sector |for dire|
|000042f0| 63 74 6f 72 79 20 2a 2f | 0a 58 69 6e 74 20 64 69 |ctory */|.Xint di|
|00004300| 72 5f 6c 65 6e 3b 09 09 | 09 2f 2a 20 6c 65 6e 67 |r_len;..|./* leng|
|00004310| 74 68 20 6f 66 20 64 69 | 72 65 63 74 6f 72 79 20 |th of di|rectory |
|00004320| 28 69 6e 20 73 65 63 74 | 6f 72 73 29 20 2a 2f 0a |(in sect|ors) */.|
|00004330| 58 69 6e 74 20 64 69 72 | 5f 65 6e 74 72 69 65 73 |Xint dir|_entries|
|00004340| 3b 09 09 2f 2a 20 6e 75 | 6d 62 65 72 20 6f 66 20 |;../* nu|mber of |
|00004350| 64 69 72 65 63 74 6f 72 | 79 20 65 6e 74 72 69 65 |director|y entrie|
|00004360| 73 20 2a 2f 0a 58 69 6e | 74 20 64 69 72 5f 63 68 |s */.Xin|t dir_ch|
|00004370| 61 69 6e 5b 32 35 5d 3b | 09 09 2f 2a 20 63 68 61 |ain[25];|../* cha|
|00004380| 69 6e 20 6f 66 20 73 65 | 63 74 6f 72 73 20 69 6e |in of se|ctors in|
|00004390| 20 64 69 72 65 63 74 6f | 72 79 20 2a 2f 0a 58 69 | directo|ry */.Xi|
|000043a0| 6e 74 20 63 6c 75 73 5f | 73 69 7a 65 3b 09 09 09 |nt clus_|size;...|
|000043b0| 2f 2a 20 63 6c 75 73 74 | 65 72 20 73 69 7a 65 20 |/* clust|er size |
|000043c0| 28 69 6e 20 73 65 63 74 | 6f 72 73 29 20 2a 2f 0a |(in sect|ors) */.|
|000043d0| 58 69 6e 74 20 66 61 74 | 5f 6c 65 6e 3b 09 09 09 |Xint fat|_len;...|
|000043e0| 2f 2a 20 6c 65 6e 67 74 | 68 20 6f 66 20 46 41 54 |/* lengt|h of FAT|
|000043f0| 20 74 61 62 6c 65 20 28 | 69 6e 20 73 65 63 74 6f | table (|in secto|
|00004400| 72 73 29 20 2a 2f 0a 58 | 69 6e 74 20 6e 75 6d 5f |rs) */.X|int num_|
|00004410| 63 6c 75 73 3b 09 09 09 | 2f 2a 20 6e 75 6d 62 65 |clus;...|/* numbe|
|00004420| 72 20 6f 66 20 61 76 61 | 69 6c 61 62 6c 65 20 63 |r of ava|ilable c|
|00004430| 6c 75 73 74 65 72 73 20 | 2a 2f 0a 58 75 6e 73 69 |lusters |*/.Xunsi|
|00004440| 67 6e 65 64 20 63 68 61 | 72 20 2a 66 61 74 62 75 |gned cha|r *fatbu|
|00004450| 66 3b 09 09 2f 2a 20 74 | 68 65 20 46 69 6c 65 20 |f;../* t|he File |
|00004460| 41 6c 6c 6f 63 61 74 69 | 6f 6e 20 54 61 62 6c 65 |Allocati|on Table|
|00004470| 20 2a 2f 0a 58 63 68 61 | 72 20 2a 6d 63 77 64 3b | */.Xcha|r *mcwd;|
|00004480| 09 09 09 2f 2a 20 74 68 | 65 20 43 75 72 72 65 6e |.../* th|e Curren|
|00004490| 74 20 57 6f 72 6b 69 6e | 67 20 44 69 72 65 63 74 |t Workin|g Direct|
|000044a0| 6f 72 79 20 2a 2f 0a 58 | 0a 58 6d 61 69 6e 28 61 |ory */.X|.Xmain(a|
|000044b0| 72 67 63 2c 20 61 72 67 | 76 29 0a 58 69 6e 74 20 |rgc, arg|v).Xint |
|000044c0| 61 72 67 63 3b 0a 58 63 | 68 61 72 20 2a 61 72 67 |argc;.Xc|har *arg|
|000044d0| 76 5b 5d 3b 0a 58 7b 0a | 58 09 69 6e 74 20 65 6e |v[];.X{.|X.int en|
|000044e0| 74 72 79 2c 20 69 73 6d | 61 74 63 68 2c 20 73 75 |try, ism|atch, su|
|000044f0| 62 64 69 72 28 29 2c 20 | 6e 6f 67 6f 2c 20 69 73 |bdir(), |nogo, is|
|00004500| 64 69 72 28 29 3b 0a 58 | 09 63 68 61 72 20 2a 66 |dir();.X|.char *f|
|00004510| 69 6c 65 6e 61 6d 65 2c | 20 2a 6e 65 77 66 69 6c |ilename,| *newfil|
|00004520| 65 2c 20 2a 66 69 78 6e | 61 6d 65 28 29 2c 20 2a |e, *fixn|ame(), *|
|00004530| 73 74 72 6e 63 70 79 28 | 29 2c 20 2a 75 6e 69 78 |strncpy(|), *unix|
|00004540| 6e 61 6d 65 28 29 3b 0a | 58 09 63 68 61 72 20 2a |name();.|X.char *|
|00004550| 67 65 74 70 61 74 68 28 | 29 2c 20 2a 70 61 74 68 |getpath(|), *path|
|00004560| 6e 61 6d 65 2c 20 74 6e | 61 6d 65 5b 39 5d 2c 20 |name, tn|ame[9], |
|00004570| 74 65 78 74 5b 34 5d 2c | 20 2a 67 65 74 6e 61 6d |text[4],| *getnam|
|00004580| 65 28 29 2c 20 2a 74 61 | 72 67 65 74 3b 0a 58 09 |e(), *ta|rget;.X.|
|00004590| 63 68 61 72 20 2a 6e 65 | 77 2c 20 61 6e 73 5b 31 |char *ne|w, ans[1|
|000045a0| 30 5d 2c 20 2a 74 65 6d | 70 2c 20 2a 73 74 72 63 |0], *tem|p, *strc|
|000045b0| 70 79 28 29 3b 0a 58 09 | 76 6f 69 64 20 65 78 69 |py();.X.|void exi|
|000045c0| 74 28 29 3b 0a 58 09 73 | 74 72 75 63 74 20 64 69 |t();.X.s|truct di|
|000045d0| 72 65 63 74 6f 72 79 20 | 2a 64 69 72 2c 20 2a 73 |rectory |*dir, *s|
|000045e0| 65 61 72 63 68 28 29 3b | 0a 58 0a 58 09 69 66 20 |earch();|.X.X.if |
|000045f0| 28 69 6e 69 74 28 32 29 | 29 20 7b 0a 58 09 09 66 |(init(2)|) {.X..f|
|00004600| 70 72 69 6e 74 66 28 73 | 74 64 65 72 72 2c 20 22 |printf(s|tderr, "|
|00004610| 6d 72 65 6e 3a 20 43 61 | 6e 6e 6f 74 20 69 6e 69 |mren: Ca|nnot ini|
|00004620| 74 69 61 6c 69 7a 65 20 | 64 69 73 6b 65 74 74 65 |tialize |diskette|
|00004630| 5c 6e 22 29 3b 0a 58 09 | 09 65 78 69 74 28 31 29 |\n");.X.|.exit(1)|
|00004640| 3b 0a 58 09 7d 0a 58 09 | 69 66 20 28 61 72 67 63 |;.X.}.X.|if (argc|
|00004650| 20 21 3d 20 33 29 20 7b | 0a 58 09 09 66 70 72 69 | != 3) {|.X..fpri|
|00004660| 6e 74 66 28 73 74 64 65 | 72 72 2c 20 22 55 73 61 |ntf(stde|rr, "Usa|
|00004670| 67 65 3a 20 6d 72 65 6e | 20 3c 4d 53 44 4f 53 20 |ge: mren| <MSDOS |
|00004680| 73 6f 75 72 63 65 20 66 | 69 6c 65 3e 20 3c 4d 53 |source f|ile> <MS|
|00004690| 44 4f 53 20 74 61 72 67 | 65 74 20 66 69 6c 65 3e |DOS targ|et file>|
|000046a0| 5c 6e 22 29 3b 0a 58 09 | 09 65 78 69 74 28 31 29 |\n");.X.|.exit(1)|
|000046b0| 3b 0a 58 09 7d 0a 58 09 | 66 69 6c 65 6e 61 6d 65 |;.X.}.X.|filename|
|000046c0| 20 3d 20 67 65 74 6e 61 | 6d 65 28 61 72 67 76 5b | = getna|me(argv[|
|000046d0| 31 5d 29 3b 0a 58 09 70 | 61 74 68 6e 61 6d 65 20 |1]);.X.p|athname |
|000046e0| 3d 20 67 65 74 70 61 74 | 68 28 61 72 67 76 5b 31 |= getpat|h(argv[1|
|000046f0| 5d 29 3b 0a 58 09 69 66 | 20 28 73 75 62 64 69 72 |]);.X.if| (subdir|
|00004700| 28 70 61 74 68 6e 61 6d | 65 29 29 0a 58 09 09 65 |(pathnam|e)).X..e|
|00004710| 78 69 74 28 31 29 3b 0a | 58 0a 58 09 74 65 6d 70 |xit(1);.|X.X.temp|
|00004720| 20 3d 20 67 65 74 6e 61 | 6d 65 28 61 72 67 76 5b | = getna|me(argv[|
|00004730| 32 5d 29 3b 0a 58 09 74 | 61 72 67 65 74 20 3d 20 |2]);.X.t|arget = |
|00004740| 66 69 78 6e 61 6d 65 28 | 61 72 67 76 5b 32 5d 29 |fixname(|argv[2])|
|00004750| 3b 0a 58 09 69 66 20 28 | 69 73 64 69 72 28 66 69 |;.X.if (|isdir(fi|
|00004760| 6c 65 6e 61 6d 65 29 20 | 26 26 20 73 74 72 63 6d |lename) |&& strcm|
|00004770| 70 28 74 61 72 67 65 74 | 2b 38 2c 20 22 20 20 20 |p(target|+8, " |
|00004780| 22 29 29 20 7b 0a 58 09 | 09 73 74 72 63 70 79 28 |")) {.X.|.strcpy(|
|00004790| 74 61 72 67 65 74 2b 38 | 2c 20 22 20 20 20 22 29 |target+8|, " ")|
|000047a0| 3b 0a 58 09 09 66 70 72 | 69 6e 74 66 28 73 74 64 |;.X..fpr|intf(std|
|000047b0| 65 72 72 2c 20 22 6d 72 | 65 6e 3a 20 44 69 72 65 |err, "mr|en: Dire|
|000047c0| 63 74 6f 72 79 20 6e 61 | 6d 65 73 20 6d 61 79 20 |ctory na|mes may |
|000047d0| 6e 6f 74 20 68 61 76 65 | 20 65 78 74 65 6e 74 69 |not have| extenti|
|000047e0| 6f 6e 73 5c 6e 22 29 3b | 0a 58 09 7d 0a 58 09 6e |ons\n");|.X.}.X.n|
|000047f0| 65 77 20 3d 20 75 6e 69 | 78 6e 61 6d 65 28 74 61 |ew = uni|xname(ta|
|00004800| 72 67 65 74 2c 20 74 61 | 72 67 65 74 2b 38 29 3b |rget, ta|rget+8);|
|00004810| 0a 58 09 6e 6f 67 6f 20 | 3d 20 30 3b 0a 58 09 09 |.X.nogo |= 0;.X..|
|00004820| 09 09 09 2f 2a 20 74 68 | 65 20 6e 61 6d 65 20 73 |.../* th|e name s|
|00004830| 75 70 70 6c 69 65 64 20 | 6d 61 79 20 62 65 20 61 |upplied |may be a|
|00004840| 6c 74 65 72 65 64 20 2a | 2f 0a 58 09 69 66 20 28 |ltered *|/.X.if (|
|00004850| 73 74 72 63 6d 70 28 74 | 65 6d 70 2c 20 6e 65 77 |strcmp(t|emp, new|
|00004860| 29 29 20 7b 0a 58 09 09 | 77 68 69 6c 65 20 28 21 |)) {.X..|while (!|
|00004870| 6e 6f 67 6f 29 20 7b 0a | 58 09 09 09 70 72 69 6e |nogo) {.|X...prin|
|00004880| 74 66 28 22 44 6f 20 79 | 6f 75 20 61 63 63 65 70 |tf("Do y|ou accep|
|00004890| 74 20 27 25 73 27 20 61 | 73 20 74 68 65 20 6e 65 |t '%s' a|s the ne|
|000048a0| 77 20 66 69 6c 65 20 6e | 61 6d 65 20 28 79 2f 6e |w file n|ame (y/n|
|000048b0| 29 20 3f 20 22 2c 20 6e | 65 77 29 3b 0a 58 09 09 |) ? ", n|ew);.X..|
|000048c0| 09 67 65 74 73 28 61 6e | 73 29 3b 0a 58 09 09 09 |.gets(an|s);.X...|
|000048d0| 69 66 20 28 61 6e 73 5b | 30 5d 20 3d 3d 20 27 79 |if (ans[|0] == 'y|
|000048e0| 27 20 7c 7c 20 61 6e 73 | 5b 30 5d 20 3d 3d 20 27 |' || ans|[0] == '|
|000048f0| 59 27 29 0a 58 09 09 09 | 09 62 72 65 61 6b 3b 0a |Y').X...|.break;.|
|00004900| 58 09 09 09 69 66 20 28 | 61 6e 73 5b 30 5d 20 3d |X...if (|ans[0] =|
|00004910| 3d 20 27 6e 27 20 7c 7c | 20 61 6e 73 5b 30 5d 20 |= 'n' ||| ans[0] |
|00004920| 3d 3d 20 27 4e 27 29 0a | 58 09 09 09 09 6e 6f 67 |== 'N').|X....nog|
|00004930| 6f 20 3d 20 31 3b 0a 58 | 09 09 7d 0a 58 09 7d 0a |o = 1;.X|..}.X.}.|
|00004940| 58 09 69 66 20 28 6e 6f | 67 6f 29 0a 58 09 09 65 |X.if (no|go).X..e|
|00004950| 78 69 74 28 30 29 3b 0a | 58 09 09 09 09 09 2f 2a |xit(0);.|X...../*|
|00004960| 20 73 65 65 20 69 66 20 | 65 78 69 73 74 73 20 61 | see if |exists a|
|00004970| 6e 64 20 64 6f 20 69 74 | 20 2a 2f 0a 58 09 69 73 |nd do it| */.X.is|
|00004980| 6d 61 74 63 68 20 3d 20 | 30 3b 0a 58 09 66 6f 72 |match = |0;.X.for|
|00004990| 20 28 65 6e 74 72 79 3d | 30 3b 20 65 6e 74 72 79 | (entry=|0; entry|
|000049a0| 3c 64 69 72 5f 65 6e 74 | 72 69 65 73 3b 20 65 6e |<dir_ent|ries; en|
|000049b0| 74 72 79 2b 2b 29 20 7b | 0a 58 09 09 64 69 72 20 |try++) {|.X..dir |
|000049c0| 3d 20 73 65 61 72 63 68 | 28 65 6e 74 72 79 29 3b |= search|(entry);|
|000049d0| 0a 58 09 09 09 09 09 2f | 2a 20 69 66 20 65 6d 70 |.X...../|* if emp|
|000049e0| 74 79 20 2a 2f 0a 58 09 | 09 69 66 20 28 64 69 72 |ty */.X.|.if (dir|
|000049f0| 2d 3e 6e 61 6d 65 5b 30 | 5d 20 3d 3d 20 4e 55 4c |->name[0|] == NUL|
|00004a00| 4c 29 0a 58 09 09 09 62 | 72 65 61 6b 3b 0a 58 09 |L).X...b|reak;.X.|
|00004a10| 09 09 09 09 2f 2a 20 69 | 66 20 65 72 61 73 65 64 |..../* i|f erased|
|00004a20| 20 2a 2f 0a 58 09 09 69 | 66 20 28 64 69 72 2d 3e | */.X..i|f (dir->|
|00004a30| 6e 61 6d 65 5b 30 5d 20 | 3d 3d 20 30 78 65 35 29 |name[0] |== 0xe5)|
|00004a40| 0a 58 09 09 09 63 6f 6e | 74 69 6e 75 65 3b 0a 58 |.X...con|tinue;.X|
|00004a50| 09 09 09 09 09 2f 2a 20 | 79 6f 75 20 6d 61 79 20 |...../* |you may |
|00004a60| 72 65 6e 61 6d 65 20 61 | 20 64 69 72 65 63 74 6f |rename a| directo|
|00004a70| 72 79 20 2a 2f 0a 58 09 | 09 73 74 72 6e 63 70 79 |ry */.X.|.strncpy|
|00004a80| 28 74 6e 61 6d 65 2c 20 | 64 69 72 2d 3e 6e 61 6d |(tname, |dir->nam|
|00004a90| 65 2c 20 38 29 3b 0a 58 | 09 09 73 74 72 6e 63 70 |e, 8);.X|..strncp|
|00004aa0| 79 28 74 65 78 74 2c 20 | 64 69 72 2d 3e 65 78 74 |y(text, |dir->ext|
|00004ab0| 2c 20 33 29 3b 0a 58 09 | 09 6e 65 77 66 69 6c 65 |, 3);.X.|.newfile|
|00004ac0| 20 3d 20 75 6e 69 78 6e | 61 6d 65 28 74 6e 61 6d | = unixn|ame(tnam|
|00004ad0| 65 2c 20 74 65 78 74 29 | 3b 0a 58 09 09 69 66 20 |e, text)|;.X..if |
|00004ae0| 28 21 73 74 72 63 6d 70 | 28 66 69 6c 65 6e 61 6d |(!strcmp|(filenam|
|00004af0| 65 2c 20 6e 65 77 66 69 | 6c 65 29 29 20 7b 0a 58 |e, newfi|le)) {.X|
|00004b00| 09 09 09 69 73 6d 61 74 | 63 68 20 3d 20 31 3b 0a |...ismat|ch = 1;.|
|00004b10| 58 09 09 09 73 74 72 6e | 63 70 79 28 64 69 72 2d |X...strn|cpy(dir-|
|00004b20| 3e 6e 61 6d 65 2c 20 74 | 61 72 67 65 74 2c 20 38 |>name, t|arget, 8|
|00004b30| 29 3b 0a 58 09 09 09 73 | 74 72 6e 63 70 79 28 64 |);.X...s|trncpy(d|
|00004b40| 69 72 2d 3e 65 78 74 2c | 20 74 61 72 67 65 74 2b |ir->ext,| target+|
|00004b50| 38 2c 20 33 29 3b 0a 58 | 09 09 09 77 72 69 74 65 |8, 3);.X|...write|
|00004b60| 64 69 72 28 65 6e 74 72 | 79 2c 20 64 69 72 29 3b |dir(entr|y, dir);|
|00004b70| 0a 58 09 09 7d 0a 58 09 | 7d 0a 58 09 69 66 20 28 |.X..}.X.|}.X.if (|
|00004b80| 21 69 73 6d 61 74 63 68 | 29 20 7b 0a 58 09 09 66 |!ismatch|) {.X..f|
|00004b90| 70 72 69 6e 74 66 28 73 | 74 64 65 72 72 2c 20 22 |printf(s|tderr, "|
|00004ba0| 6d 72 65 6e 3a 20 46 69 | 6c 65 20 27 25 73 27 20 |mren: Fi|le '%s' |
|00004bb0| 6e 6f 74 20 66 6f 75 6e | 64 5c 6e 22 2c 20 66 69 |not foun|d\n", fi|
|00004bc0| 6c 65 6e 61 6d 65 29 3b | 0a 58 09 09 65 78 69 74 |lename);|.X..exit|
|00004bd0| 28 31 29 3b 0a 58 09 7d | 0a 58 09 63 6c 6f 73 65 |(1);.X.}|.X.close|
|00004be0| 28 66 64 29 3b 0a 58 09 | 65 78 69 74 28 30 29 3b |(fd);.X.|exit(0);|
|00004bf0| 0a 58 7d 0a 53 48 41 52 | 5f 45 4f 46 0a 69 66 20 |.X}.SHAR|_EOF.if |
|00004c00| 74 65 73 74 20 32 36 32 | 38 20 2d 6e 65 20 22 60 |test 262|8 -ne "`|
|00004c10| 77 63 20 2d 63 20 3c 20 | 27 6d 72 65 6e 2e 63 27 |wc -c < |'mren.c'|
|00004c20| 60 22 0a 74 68 65 6e 0a | 09 65 63 68 6f 20 73 68 |`".then.|.echo sh|
|00004c30| 61 72 3a 20 22 65 72 72 | 6f 72 20 74 72 61 6e 73 |ar: "err|or trans|
|00004c40| 6d 69 74 74 69 6e 67 20 | 27 6d 72 65 6e 2e 63 27 |mitting |'mren.c'|
|00004c50| 22 20 27 28 73 68 6f 75 | 6c 64 20 68 61 76 65 20 |" '(shou|ld have |
|00004c60| 62 65 65 6e 20 32 36 32 | 38 20 63 68 61 72 61 63 |been 262|8 charac|
|00004c70| 74 65 72 73 29 27 0a 66 | 69 0a 66 69 0a 65 63 68 |ters)'.f|i.fi.ech|
|00004c80| 6f 20 73 68 61 72 3a 20 | 22 65 78 74 72 61 63 74 |o shar: |"extract|
|00004c90| 69 6e 67 20 27 6d 74 79 | 70 65 2e 63 27 22 20 27 |ing 'mty|pe.c'" '|
|00004ca0| 28 33 33 36 34 20 63 68 | 61 72 61 63 74 65 72 73 |(3364 ch|aracters|
|00004cb0| 29 27 0a 69 66 20 74 65 | 73 74 20 2d 66 20 27 6d |)'.if te|st -f 'm|
|00004cc0| 74 79 70 65 2e 63 27 0a | 74 68 65 6e 0a 09 65 63 |type.c'.|then..ec|
|00004cd0| 68 6f 20 73 68 61 72 3a | 20 22 77 69 6c 6c 20 6e |ho shar:| "will n|
|00004ce0| 6f 74 20 6f 76 65 72 2d | 77 72 69 74 65 20 65 78 |ot over-|write ex|
|00004cf0| 69 73 74 69 6e 67 20 66 | 69 6c 65 20 27 6d 74 79 |isting f|ile 'mty|
|00004d00| 70 65 2e 63 27 22 0a 65 | 6c 73 65 0a 73 65 64 20 |pe.c'".e|lse.sed |
|00004d10| 27 73 2f 5e 58 2f 2f 27 | 20 3c 3c 20 5c 53 48 41 |'s/^X//'| << \SHA|
|00004d20| 52 5f 45 4f 46 20 3e 20 | 27 6d 74 79 70 65 2e 63 |R_EOF > |'mtype.c|
|00004d30| 27 0a 58 2f 2a 0a 58 20 | 2a 20 44 69 73 70 6c 61 |'.X/*.X |* Displa|
|00004d40| 79 20 63 6f 6e 74 65 6e | 74 73 20 6f 66 20 61 20 |y conten|ts of a |
|00004d50| 4d 53 44 4f 53 20 66 69 | 6c 65 0a 58 20 2a 0a 58 |MSDOS fi|le.X *.X|
|00004d60| 20 2a 20 45 6d 6d 65 74 | 20 50 2e 20 47 72 61 79 | * Emmet| P. Gray|
|00004d70| 09 09 09 55 53 20 41 72 | 6d 79 2c 20 48 51 20 49 |...US Ar|my, HQ I|
|00004d80| 49 49 20 43 6f 72 70 73 | 20 26 20 46 6f 72 74 20 |II Corps| & Fort |
|00004d90| 48 6f 6f 64 0a 58 20 2a | 20 2e 2e 2e 21 69 68 6e |Hood.X *| ...!ihn|
|00004da0| 70 34 21 75 69 75 63 75 | 78 63 21 66 74 68 6f 6f |p4!uiucu|xc!fthoo|
|00004db0| 64 21 65 67 72 61 79 09 | 41 74 74 6e 3a 20 41 46 |d!egray.|Attn: AF|
|00004dc0| 5a 46 2d 44 45 2d 45 4e | 56 0a 58 20 2a 20 09 09 |ZF-DE-EN|V.X * ..|
|00004dd0| 09 09 09 44 69 72 65 63 | 74 6f 72 61 74 65 20 6f |...Direc|torate o|
|00004de0| 66 20 45 6e 67 69 6e 65 | 65 72 69 6e 67 20 26 20 |f Engine|ering & |
|00004df0| 48 6f 75 73 69 6e 67 0a | 58 20 2a 20 09 09 09 09 |Housing.|X * ....|
|00004e00| 09 45 6e 76 69 72 6f 6e | 6d 65 6e 74 61 6c 20 4d |.Environ|mental M|
|00004e10| 61 6e 61 67 65 6d 65 6e | 74 20 4f 66 66 69 63 65 |anagemen|t Office|
|00004e20| 0a 58 20 2a 20 09 09 09 | 09 09 46 6f 72 74 20 48 |.X * ...|..Fort H|
|00004e30| 6f 6f 64 2c 20 54 58 20 | 37 36 35 34 34 2d 35 30 |ood, TX |76544-50|
|00004e40| 35 37 0a 58 20 2a 2f 0a | 58 0a 58 23 69 6e 63 6c |57.X */.|X.X#incl|
|00004e50| 75 64 65 20 3c 73 74 64 | 69 6f 2e 68 3e 0a 58 23 |ude <std|io.h>.X#|
|00004e60| 69 6e 63 6c 75 64 65 20 | 22 6d 73 64 6f 73 2e 68 |include |"msdos.h|
|00004e70| 22 0a 58 0a 58 69 6e 74 | 20 66 64 3b 09 09 09 09 |".X.Xint| fd;....|
|00004e80| 2f 2a 20 74 68 65 20 66 | 69 6c 65 20 64 65 73 63 |/* the f|ile desc|
|00004e90| 72 69 70 74 6f 72 20 66 | 6f 72 20 74 68 65 20 66 |riptor f|or the f|
|00004ea0| 6c 6f 70 70 79 20 2a 2f | 0a 58 69 6e 74 20 64 69 |loppy */|.Xint di|
|00004eb0| 72 5f 73 74 61 72 74 3b | 09 09 09 2f 2a 20 73 74 |r_start;|.../* st|
|00004ec0| 61 72 74 69 6e 67 20 73 | 65 63 74 6f 72 20 66 6f |arting s|ector fo|
|00004ed0| 72 20 64 69 72 65 63 74 | 6f 72 79 20 2a 2f 0a 58 |r direct|ory */.X|
|00004ee0| 69 6e 74 20 64 69 72 5f | 6c 65 6e 3b 09 09 09 2f |int dir_|len;.../|
|00004ef0| 2a 20 6c 65 6e 67 74 68 | 20 6f 66 20 64 69 72 65 |* length| of dire|
|00004f00| 63 74 6f 72 79 20 28 69 | 6e 20 73 65 63 74 6f 72 |ctory (i|n sector|
|00004f10| 73 29 20 2a 2f 0a 58 69 | 6e 74 20 64 69 72 5f 65 |s) */.Xi|nt dir_e|
|00004f20| 6e 74 72 69 65 73 3b 09 | 09 2f 2a 20 6e 75 6d 62 |ntries;.|./* numb|
|00004f30| 65 72 20 6f 66 20 64 69 | 72 65 63 74 6f 72 79 20 |er of di|rectory |
|00004f40| 65 6e 74 72 69 65 73 20 | 2a 2f 0a 58 69 6e 74 20 |entries |*/.Xint |
|00004f50| 64 69 72 5f 63 68 61 69 | 6e 5b 32 35 5d 3b 09 09 |dir_chai|n[25];..|
|00004f60| 2f 2a 20 63 68 61 69 6e | 20 6f 66 20 73 65 63 74 |/* chain| of sect|
|00004f70| 6f 72 73 20 69 6e 20 64 | 69 72 65 63 74 6f 72 79 |ors in d|irectory|
|00004f80| 20 2a 2f 0a 58 69 6e 74 | 20 63 6c 75 73 5f 73 69 | */.Xint| clus_si|
|00004f90| 7a 65 3b 09 09 09 2f 2a | 20 63 6c 75 73 74 65 72 |ze;.../*| cluster|
|00004fa0| 20 73 69 7a 65 20 28 69 | 6e 20 73 65 63 74 6f 72 | size (i|n sector|
|00004fb0| 73 29 20 2a 2f 0a 58 69 | 6e 74 20 66 61 74 5f 6c |s) */.Xi|nt fat_l|
|00004fc0| 65 6e 3b 09 09 09 2f 2a | 20 6c 65 6e 67 74 68 20 |en;.../*| length |
|00004fd0| 6f 66 20 46 41 54 20 74 | 61 62 6c 65 20 28 69 6e |of FAT t|able (in|
|00004fe0| 20 73 65 63 74 6f 72 73 | 29 20 2a 2f 0a 58 69 6e | sectors|) */.Xin|
|00004ff0| 74 20 6e 75 6d 5f 63 6c | 75 73 3b 09 09 09 2f 2a |t num_cl|us;.../*|
|00005000| 20 6e 75 6d 62 65 72 20 | 6f 66 20 61 76 61 69 6c | number |of avail|
|00005010| 61 62 6c 65 20 63 6c 75 | 73 74 65 72 73 20 2a 2f |able clu|sters */|
|00005020| 0a 58 75 6e 73 69 67 6e | 65 64 20 63 68 61 72 20 |.Xunsign|ed char |
|00005030| 2a 66 61 74 62 75 66 3b | 09 09 2f 2a 20 74 68 65 |*fatbuf;|../* the|
|00005040| 20 46 69 6c 65 20 41 6c | 6c 6f 63 61 74 69 6f 6e | File Al|location|
|00005050| 20 54 61 62 6c 65 20 2a | 2f 0a 58 63 68 61 72 20 | Table *|/.Xchar |
|00005060| 2a 6d 63 77 64 3b 09 09 | 09 2f 2a 20 74 68 65 20 |*mcwd;..|./* the |
|00005070| 43 75 72 72 65 6e 74 20 | 57 6f 72 6b 69 6e 67 20 |Current |Working |
|00005080| 44 69 72 65 63 74 6f 72 | 79 20 2a 2f 0a 58 0a 58 |Director|y */.X.X|
|00005090| 6c 6f 6e 67 20 73 69 7a | 65 3b 0a 58 6c 6f 6e 67 |long siz|e;.Xlong|
|000050a0| 20 63 75 72 72 65 6e 74 | 3b 0a 58 73 74 72 69 70 | current|;.Xstrip|
|000050b0| 6d 6f 64 65 20 3d 20 30 | 3b 0a 58 74 65 78 74 6d |mode = 0|;.Xtextm|
|000050c0| 6f 64 65 20 3d 20 30 3b | 0a 58 0a 58 6d 61 69 6e |ode = 0;|.X.Xmain|
|000050d0| 28 61 72 67 63 2c 20 61 | 72 67 76 29 0a 58 69 6e |(argc, a|rgv).Xin|
|000050e0| 74 20 61 72 67 63 3b 0a | 58 63 68 61 72 20 2a 61 |t argc;.|Xchar *a|
|000050f0| 72 67 76 5b 5d 3b 0a 58 | 7b 0a 58 09 65 78 74 65 |rgv[];.X|{.X.exte|
|00005100| 72 6e 20 69 6e 74 20 6f | 70 74 69 6e 64 3b 0a 58 |rn int o|ptind;.X|
|00005110| 09 65 78 74 65 72 6e 20 | 63 68 61 72 20 2a 6f 70 |.extern |char *op|
|00005120| 74 61 72 67 3b 0a 58 09 | 69 6e 74 20 66 61 74 2c |targ;.X.|int fat,|
|00005130| 20 69 2c 20 69 73 6d 61 | 74 63 68 2c 20 65 6e 74 | i, isma|tch, ent|
|00005140| 72 79 2c 20 73 75 62 64 | 69 72 28 29 2c 20 63 2c |ry, subd|ir(), c,|
|00005150| 20 6f 6f 70 73 3b 0a 58 | 09 63 68 61 72 20 2a 66 | oops;.X|.char *f|
|00005160| 69 6c 65 6e 61 6d 65 2c | 20 2a 6e 65 77 66 69 6c |ilename,| *newfil|
|00005170| 65 2c 20 74 65 78 74 5b | 34 5d 2c 20 74 6e 61 6d |e, text[|4], tnam|
|00005180| 65 5b 39 5d 2c 20 2a 67 | 65 74 6e 61 6d 65 28 29 |e[9], *g|etname()|
|00005190| 2c 20 2a 75 6e 69 78 6e | 61 6d 65 28 29 3b 0a 58 |, *unixn|ame();.X|
|000051a0| 09 63 68 61 72 20 2a 73 | 74 72 6e 63 70 79 28 29 |.char *s|trncpy()|
|000051b0| 2c 20 2a 70 61 74 68 6e | 61 6d 65 2c 20 2a 67 65 |, *pathn|ame, *ge|
|000051c0| 74 70 61 74 68 28 29 3b | 0a 58 09 76 6f 69 64 20 |tpath();|.X.void |
|000051d0| 65 78 69 74 28 29 3b 0a | 58 09 73 74 72 75 63 74 |exit();.|X.struct|
|000051e0| 20 64 69 72 65 63 74 6f | 72 79 20 2a 64 69 72 2c | directo|ry *dir,|
|000051f0| 20 2a 73 65 61 72 63 68 | 28 29 3b 0a 58 0a 58 09 | *search|();.X.X.|
|00005200| 69 66 20 28 69 6e 69 74 | 28 30 29 29 20 7b 0a 58 |if (init|(0)) {.X|
|00005210| 09 09 66 70 72 69 6e 74 | 66 28 73 74 64 65 72 72 |..fprint|f(stderr|
|00005220| 2c 20 22 6d 74 79 70 65 | 3a 20 43 61 6e 6e 6f 74 |, "mtype|: Cannot|
|00005230| 20 69 6e 69 74 69 61 6c | 69 7a 65 20 64 69 73 6b | initial|ize disk|
|00005240| 65 74 74 65 5c 6e 22 29 | 3b 0a 58 09 09 65 78 69 |ette\n")|;.X..exi|
|00005250| 74 28 31 29 3b 0a 58 09 | 7d 0a 58 09 09 09 09 09 |t(1);.X.|}.X.....|
|00005260| 2f 2a 20 67 65 74 20 63 | 6f 6d 6d 61 6e 64 20 6c |/* get c|ommand l|
|00005270| 69 6e 65 20 6f 70 74 69 | 6f 6e 73 20 2a 2f 0a 58 |ine opti|ons */.X|
|00005280| 09 6f 6f 70 73 20 3d 20 | 30 3b 0a 58 09 77 68 69 |.oops = |0;.X.whi|
|00005290| 6c 65 20 28 28 63 20 3d | 20 67 65 74 6f 70 74 28 |le ((c =| getopt(|
|000052a0| 61 72 67 63 2c 20 61 72 | 67 76 2c 20 22 73 74 22 |argc, ar|gv, "st"|
|000052b0| 29 29 20 21 3d 20 45 4f | 46 29 20 7b 0a 58 09 09 |)) != EO|F) {.X..|
|000052c0| 73 77 69 74 63 68 28 63 | 29 20 7b 0a 58 09 09 09 |switch(c|) {.X...|
|000052d0| 63 61 73 65 20 27 73 27 | 3a 0a 58 09 09 09 09 73 |case 's'|:.X....s|
|000052e0| 74 72 69 70 6d 6f 64 65 | 20 3d 20 31 3b 0a 58 09 |tripmode| = 1;.X.|
|000052f0| 09 09 09 62 72 65 61 6b | 3b 0a 58 09 09 09 63 61 |...break|;.X...ca|
|00005300| 73 65 20 27 74 27 3a 0a | 58 09 09 09 09 74 65 78 |se 't':.|X....tex|
|00005310| 74 6d 6f 64 65 20 3d 20 | 31 3b 0a 58 09 09 09 09 |tmode = |1;.X....|
|00005320| 62 72 65 61 6b 3b 0a 58 | 09 09 09 64 65 66 61 75 |break;.X|...defau|
|00005330| 6c 74 3a 0a 58 09 09 09 | 09 6f 6f 70 73 20 3d 20 |lt:.X...|.oops = |
|00005340| 31 3b 0a 58 09 09 09 09 | 62 72 65 61 6b 3b 0a 58 |1;.X....|break;.X|
|00005350| 09 09 7d 0a 58 09 7d 0a | 58 0a 58 09 69 66 20 28 |..}.X.}.|X.X.if (|
|00005360| 6f 6f 70 73 20 7c 7c 20 | 28 61 72 67 63 20 2d 20 |oops || |(argc - |
|00005370| 6f 70 74 69 6e 64 29 20 | 3c 20 31 29 20 7b 0a 58 |optind) |< 1) {.X|
|00005380| 09 09 66 70 72 69 6e 74 | 66 28 73 74 64 65 72 72 |..fprint|f(stderr|
|00005390| 2c 20 22 55 73 61 67 65 | 3a 20 6d 74 79 70 65 20 |, "Usage|: mtype |
|000053a0| 5b 2d 73 7c 2d 74 5d 20 | 3c 4d 53 44 4f 53 20 66 |[-s|-t] |<MSDOS f|
|000053b0| 69 6c 65 3e 20 5b 3c 4d | 53 44 4f 53 20 66 69 6c |ile> [<M|SDOS fil|
|000053c0| 65 73 2e 2e 2e 3e 5d 5c | 6e 22 29 3b 0a 58 09 09 |es...>]\|n");.X..|
|000053d0| 65 78 69 74 28 31 29 3b | 0a 58 09 7d 0a 58 0a 58 |exit(1);|.X.}.X.X|
|000053e0| 09 66 6f 72 20 28 69 3d | 6f 70 74 69 6e 64 3b 20 |.for (i=|optind; |
|000053f0| 69 3c 61 72 67 63 3b 20 | 69 2b 2b 29 20 7b 0a 58 |i<argc; |i++) {.X|
|00005400| 09 09 66 69 6c 65 6e 61 | 6d 65 20 3d 20 67 65 74 |..filena|me = get|
|00005410| 6e 61 6d 65 28 61 72 67 | 76 5b 69 5d 29 3b 0a 58 |name(arg|v[i]);.X|
|00005420| 09 09 70 61 74 68 6e 61 | 6d 65 20 3d 20 67 65 74 |..pathna|me = get|
|00005430| 70 61 74 68 28 61 72 67 | 76 5b 69 5d 29 3b 0a 58 |path(arg|v[i]);.X|
|00005440| 09 09 69 66 20 28 73 75 | 62 64 69 72 28 70 61 74 |..if (su|bdir(pat|
|00005450| 68 6e 61 6d 65 29 29 0a | 58 09 09 09 63 6f 6e 74 |hname)).|X...cont|
|00005460| 69 6e 75 65 3b 0a 58 09 | 09 69 73 6d 61 74 63 68 |inue;.X.|.ismatch|
|00005470| 20 3d 20 30 3b 0a 58 09 | 09 66 6f 72 20 28 65 6e | = 0;.X.|.for (en|
|00005480| 74 72 79 3d 30 3b 20 65 | 6e 74 72 79 3c 64 69 72 |try=0; e|ntry<dir|
|00005490| 5f 65 6e 74 72 69 65 73 | 3b 20 65 6e 74 72 79 2b |_entries|; entry+|
|000054a0| 2b 29 20 7b 0a 58 09 09 | 09 64 69 72 20 3d 20 73 |+) {.X..|.dir = s|
|000054b0| 65 61 72 63 68 28 65 6e | 74 72 79 29 3b 0a 58 09 |earch(en|try);.X.|
|000054c0| 09 09 09 09 2f 2a 20 69 | 66 20 65 6d 70 74 79 20 |..../* i|f empty |
|000054d0| 2a 2f 0a 58 09 09 09 69 | 66 20 28 64 69 72 2d 3e |*/.X...i|f (dir->|
|000054e0| 6e 61 6d 65 5b 30 5d 20 | 3d 3d 20 4e 55 4c 4c 29 |name[0] |== NULL)|
|000054f0| 0a 58 09 09 09 09 62 72 | 65 61 6b 3b 0a 58 09 09 |.X....br|eak;.X..|
|00005500| 09 09 09 2f 2a 20 69 66 | 20 65 72 61 73 65 64 20 |.../* if| erased |
|00005510| 2a 2f 0a 58 09 09 09 69 | 66 20 28 64 69 72 2d 3e |*/.X...i|f (dir->|
|00005520| 6e 61 6d 65 5b 30 5d 20 | 3d 3d 20 30 78 65 35 29 |name[0] |== 0xe5)|
|00005530| 0a 58 09 09 09 09 63 6f | 6e 74 69 6e 75 65 3b 0a |.X....co|ntinue;.|
|00005540| 58 09 09 09 09 09 2f 2a | 20 69 66 20 64 69 72 20 |X...../*| if dir |
|00005550| 6f 72 20 76 6f 6c 75 6d | 65 20 6c 61 62 6c 65 20 |or volum|e lable |
|00005560| 2a 2f 0a 58 09 09 09 69 | 66 20 28 28 64 69 72 2d |*/.X...i|f ((dir-|
|00005570| 3e 61 74 74 72 20 26 20 | 30 78 31 30 29 20 7c 7c |>attr & |0x10) |||
|00005580| 20 28 64 69 72 2d 3e 61 | 74 74 72 20 26 20 30 78 | (dir->a|ttr & 0x|
|00005590| 30 38 29 29 0a 58 09 09 | 09 09 63 6f 6e 74 69 6e |08)).X..|..contin|
|000055a0| 75 65 3b 0a 58 09 09 09 | 73 74 72 6e 63 70 79 28 |ue;.X...|strncpy(|
|000055b0| 74 6e 61 6d 65 2c 20 64 | 69 72 2d 3e 6e 61 6d 65 |tname, d|ir->name|
|000055c0| 2c 20 38 29 3b 0a 58 09 | 09 09 73 74 72 6e 63 70 |, 8);.X.|..strncp|
|000055d0| 79 28 74 65 78 74 2c 20 | 64 69 72 2d 3e 65 78 74 |y(text, |dir->ext|
|000055e0| 2c 20 33 29 3b 0a 58 09 | 09 09 6e 65 77 66 69 6c |, 3);.X.|..newfil|
|000055f0| 65 20 3d 20 75 6e 69 78 | 6e 61 6d 65 28 74 6e 61 |e = unix|name(tna|
|00005600| 6d 65 2c 20 74 65 78 74 | 29 3b 0a 58 09 09 09 09 |me, text|);.X....|
|00005610| 09 2f 2a 20 73 65 65 20 | 69 74 20 69 66 20 6d 61 |./* see |it if ma|
|00005620| 74 63 68 65 73 20 74 68 | 65 20 70 61 74 74 65 72 |tches th|e patter|
|00005630| 6e 20 2a 2f 0a 58 09 09 | 09 69 66 20 28 6d 61 74 |n */.X..|.if (mat|
|00005640| 63 68 28 6e 65 77 66 69 | 6c 65 2c 20 66 69 6c 65 |ch(newfi|le, file|
|00005650| 6e 61 6d 65 29 29 20 7b | 0a 58 09 09 09 09 66 61 |name)) {|.X....fa|
|00005660| 74 20 3d 20 64 69 72 2d | 3e 73 74 61 72 74 5b 31 |t = dir-|>start[1|
|00005670| 5d 2a 30 78 31 30 30 20 | 2b 20 64 69 72 2d 3e 73 |]*0x100 |+ dir->s|
|00005680| 74 61 72 74 5b 30 5d 3b | 0a 58 09 09 09 09 73 69 |tart[0];|.X....si|
|00005690| 7a 65 20 3d 20 64 69 72 | 2d 3e 73 69 7a 65 5b 32 |ze = dir|->size[2|
|000056a0| 5d 2a 30 78 31 30 30 30 | 30 20 2b 20 64 69 72 2d |]*0x1000|0 + dir-|
|000056b0| 3e 73 69 7a 65 5b 31 5d | 2a 30 78 31 30 30 20 2b |>size[1]|*0x100 +|
|000056c0| 20 64 69 72 2d 3e 73 69 | 7a 65 5b 30 5d 3b 0a 58 | dir->si|ze[0];.X|
|000056d0| 09 09 09 09 72 65 61 64 | 69 74 28 66 61 74 29 3b |....read|it(fat);|
|000056e0| 0a 58 09 09 09 09 69 73 | 6d 61 74 63 68 20 3d 20 |.X....is|match = |
|000056f0| 31 3b 0a 58 09 09 09 7d | 0a 58 09 09 7d 0a 58 09 |1;.X...}|.X..}.X.|
|00005700| 09 69 66 20 28 21 69 73 | 6d 61 74 63 68 29 20 7b |.if (!is|match) {|
|00005710| 0a 58 09 09 09 66 70 72 | 69 6e 74 66 28 73 74 64 |.X...fpr|intf(std|
|00005720| 65 72 72 2c 20 22 6d 74 | 79 70 65 3a 20 46 69 6c |err, "mt|ype: Fil|
|00005730| 65 20 27 25 73 27 20 6e | 6f 74 20 66 6f 75 6e 64 |e '%s' n|ot found|
|00005740| 5c 6e 22 2c 20 66 69 6c | 65 6e 61 6d 65 29 3b 0a |\n", fil|ename);.|
|00005750| 58 09 09 09 63 6f 6e 74 | 69 6e 75 65 3b 0a 58 09 |X...cont|inue;.X.|
|00005760| 09 7d 0a 58 09 7d 0a 58 | 09 63 6c 6f 73 65 28 66 |.}.X.}.X|.close(f|
|00005770| 64 29 3b 0a 58 09 65 78 | 69 74 28 30 29 3b 0a 58 |d);.X.ex|it(0);.X|
|00005780| 7d 0a 58 0a 58 72 65 61 | 64 69 74 28 66 61 74 29 |}.X.Xrea|dit(fat)|
|00005790| 0a 58 69 6e 74 20 66 61 | 74 3b 0a 58 7b 0a 58 09 |.Xint fa|t;.X{.X.|
|000057a0| 63 75 72 72 65 6e 74 20 | 3d 20 30 4c 3b 0a 58 0a |current |= 0L;.X.|
|000057b0| 58 09 77 68 69 6c 65 20 | 28 31 29 20 7b 0a 58 09 |X.while |(1) {.X.|
|000057c0| 09 67 65 74 63 6c 75 73 | 74 65 72 28 66 61 74 29 |.getclus|ter(fat)|
|000057d0| 3b 0a 58 09 09 09 09 09 | 2f 2a 20 67 65 74 20 6e |;.X.....|/* get n|
|000057e0| 65 78 74 20 63 6c 75 73 | 74 65 72 20 6e 75 6d 62 |ext clus|ter numb|
|000057f0| 65 72 20 2a 2f 0a 58 09 | 09 66 61 74 20 3d 20 67 |er */.X.|.fat = g|
|00005800| 65 74 66 61 74 28 66 61 | 74 29 3b 0a 58 09 09 69 |etfat(fa|t);.X..i|
|00005810| 66 20 28 66 61 74 20 3d | 3d 20 2d 31 29 20 7b 0a |f (fat =|= -1) {.|
|00005820| 58 09 09 09 66 70 72 69 | 6e 74 66 28 73 74 64 65 |X...fpri|ntf(stde|
|00005830| 72 72 2c 20 22 6d 74 79 | 70 65 3a 20 46 41 54 20 |rr, "mty|pe: FAT |
|00005840| 70 72 6f 62 6c 65 6d 5c | 6e 22 29 3b 0a 58 09 09 |problem\|n");.X..|
|00005850| 09 65 78 69 74 28 31 29 | 3b 0a 58 09 09 7d 0a 58 |.exit(1)|;.X..}.X|
|00005860| 09 09 09 09 09 2f 2a 20 | 65 6e 64 20 6f 66 20 63 |...../* |end of c|
|00005870| 6c 75 73 74 65 72 20 63 | 68 61 69 6e 20 2a 2f 0a |luster c|hain */.|
|00005880| 58 09 09 69 66 20 28 66 | 61 74 20 3e 3d 20 30 78 |X..if (f|at >= 0x|
|00005890| 66 66 38 29 0a 58 09 09 | 09 62 72 65 61 6b 3b 0a |ff8).X..|.break;.|
|000058a0| 58 09 7d 0a 58 09 72 65 | 74 75 72 6e 3b 0a 58 7d |X.}.X.re|turn;.X}|
|000058b0| 0a 58 0a 58 67 65 74 63 | 6c 75 73 74 65 72 28 6e |.X.Xgetc|luster(n|
|000058c0| 75 6d 29 09 09 09 09 2f | 2a 20 72 65 61 64 20 61 |um)..../|* read a|
|000058d0| 20 63 6c 75 73 74 65 72 | 20 2a 2f 0a 58 69 6e 74 | cluster| */.Xint|
|000058e0| 20 6e 75 6d 3b 0a 58 7b | 0a 58 09 69 6e 74 20 69 | num;.X{|.X.int i|
|000058f0| 2c 20 62 75 66 6c 65 6e | 2c 20 73 74 61 72 74 3b |, buflen|, start;|
|00005900| 0a 58 09 76 6f 69 64 20 | 65 78 69 74 28 29 2c 20 |.X.void |exit(), |
|00005910| 70 65 72 72 6f 72 28 29 | 3b 0a 58 09 63 68 61 72 |perror()|;.X.char|
|00005920| 20 62 75 66 5b 31 30 32 | 34 5d 3b 0a 58 0a 58 09 | buf[102|4];.X.X.|
|00005930| 73 74 61 72 74 20 3d 20 | 28 6e 75 6d 20 2d 20 32 |start = |(num - 2|
|00005940| 29 2a 63 6c 75 73 5f 73 | 69 7a 65 20 2b 20 64 69 |)*clus_s|ize + di|
|00005950| 72 5f 73 74 61 72 74 20 | 2b 20 64 69 72 5f 6c 65 |r_start |+ dir_le|
|00005960| 6e 3b 0a 58 09 6d 6f 76 | 65 28 73 74 61 72 74 29 |n;.X.mov|e(start)|
|00005970| 3b 0a 58 0a 58 09 62 75 | 66 6c 65 6e 20 3d 20 63 |;.X.X.bu|flen = c|
|00005980| 6c 75 73 5f 73 69 7a 65 | 20 2a 20 4d 53 45 43 53 |lus_size| * MSECS|
|00005990| 49 5a 3b 0a 58 09 69 66 | 20 28 72 65 61 64 28 66 |IZ;.X.if| (read(f|
|000059a0| 64 2c 20 62 75 66 2c 20 | 62 75 66 6c 65 6e 29 20 |d, buf, |buflen) |
|000059b0| 21 3d 20 62 75 66 6c 65 | 6e 29 20 7b 0a 58 09 09 |!= bufle|n) {.X..|
|000059c0| 70 65 72 72 6f 72 28 22 | 67 65 74 63 6c 75 73 74 |perror("|getclust|
|000059d0| 65 72 3a 20 72 65 61 64 | 22 29 3b 0a 58 09 09 65 |er: read|");.X..e|
|000059e0| 78 69 74 28 31 29 3b 0a | 58 09 7d 0a 58 09 09 09 |xit(1);.|X.}.X...|
|000059f0| 09 09 2f 2a 20 73 74 6f | 70 20 61 74 20 73 69 7a |../* sto|p at siz|
|00005a00| 65 20 6e 6f 74 20 45 4f | 46 20 6d 61 72 6b 65 72 |e not EO|F marker|
|00005a10| 20 2a 2f 0a 58 09 66 6f | 72 20 28 69 3d 30 3b 20 | */.X.fo|r (i=0; |
|00005a20| 69 3c 62 75 66 6c 65 6e | 3b 20 69 2b 2b 29 20 7b |i<buflen|; i++) {|
|00005a30| 0a 58 09 09 63 75 72 72 | 65 6e 74 2b 2b 3b 0a 58 |.X..curr|ent++;.X|
|00005a40| 09 09 69 66 20 28 63 75 | 72 72 65 6e 74 20 3e 20 |..if (cu|rrent > |
|00005a50| 73 69 7a 65 29 20 0a 58 | 09 09 09 62 72 65 61 6b |size) .X|...break|
|00005a60| 3b 0a 58 09 09 69 66 20 | 28 74 65 78 74 6d 6f 64 |;.X..if |(textmod|
|00005a70| 65 20 26 20 62 75 66 5b | 69 5d 20 3d 3d 20 27 5c |e & buf[|i] == '\|
|00005a80| 72 27 29 0a 58 09 09 09 | 63 6f 6e 74 69 6e 75 65 |r').X...|continue|
|00005a90| 3b 0a 58 09 09 69 66 20 | 28 73 74 72 69 70 6d 6f |;.X..if |(stripmo|
|00005aa0| 64 65 29 0a 58 09 09 09 | 70 75 74 63 68 61 72 28 |de).X...|putchar(|
|00005ab0| 62 75 66 5b 69 5d 20 26 | 20 30 78 37 66 29 3b 0a |buf[i] &| 0x7f);.|
|00005ac0| 58 09 09 65 6c 73 65 0a | 58 09 09 09 70 75 74 63 |X..else.|X...putc|
|00005ad0| 68 61 72 28 62 75 66 5b | 69 5d 29 3b 0a 58 09 7d |har(buf[|i]);.X.}|
|00005ae0| 0a 58 09 72 65 74 75 72 | 6e 3b 0a 58 7d 0a 53 48 |.X.retur|n;.X}.SH|
|00005af0| 41 52 5f 45 4f 46 0a 69 | 66 20 74 65 73 74 20 33 |AR_EOF.i|f test 3|
|00005b00| 33 36 34 20 2d 6e 65 20 | 22 60 77 63 20 2d 63 20 |364 -ne |"`wc -c |
|00005b10| 3c 20 27 6d 74 79 70 65 | 2e 63 27 60 22 0a 74 68 |< 'mtype|.c'`".th|
|00005b20| 65 6e 0a 09 65 63 68 6f | 20 73 68 61 72 3a 20 22 |en..echo| shar: "|
|00005b30| 65 72 72 6f 72 20 74 72 | 61 6e 73 6d 69 74 74 69 |error tr|ansmitti|
|00005b40| 6e 67 20 27 6d 74 79 70 | 65 2e 63 27 22 20 27 28 |ng 'mtyp|e.c'" '(|
|00005b50| 73 68 6f 75 6c 64 20 68 | 61 76 65 20 62 65 65 6e |should h|ave been|
|00005b60| 20 33 33 36 34 20 63 68 | 61 72 61 63 74 65 72 73 | 3364 ch|aracters|
|00005b70| 29 27 0a 66 69 0a 66 69 | 0a 65 63 68 6f 20 73 68 |)'.fi.fi|.echo sh|
|00005b80| 61 72 3a 20 22 65 78 74 | 72 61 63 74 69 6e 67 20 |ar: "ext|racting |
|00005b90| 27 6d 77 72 69 74 65 2e | 63 27 22 20 27 28 37 30 |'mwrite.|c'" '(70|
|00005ba0| 36 37 20 63 68 61 72 61 | 63 74 65 72 73 29 27 0a |67 chara|cters)'.|
|00005bb0| 69 66 20 74 65 73 74 20 | 2d 66 20 27 6d 77 72 69 |if test |-f 'mwri|
|00005bc0| 74 65 2e 63 27 0a 74 68 | 65 6e 0a 09 65 63 68 6f |te.c'.th|en..echo|
|00005bd0| 20 73 68 61 72 3a 20 22 | 77 69 6c 6c 20 6e 6f 74 | shar: "|will not|
|00005be0| 20 6f 76 65 72 2d 77 72 | 69 74 65 20 65 78 69 73 | over-wr|ite exis|
|00005bf0| 74 69 6e 67 20 66 69 6c | 65 20 27 6d 77 72 69 74 |ting fil|e 'mwrit|
|00005c00| 65 2e 63 27 22 0a 65 6c | 73 65 0a 73 65 64 20 27 |e.c'".el|se.sed '|
|00005c10| 73 2f 5e 58 2f 2f 27 20 | 3c 3c 20 5c 53 48 41 52 |s/^X//' |<< \SHAR|
|00005c20| 5f 45 4f 46 20 3e 20 27 | 6d 77 72 69 74 65 2e 63 |_EOF > '|mwrite.c|
|00005c30| 27 0a 58 2f 2a 0a 58 20 | 2a 20 57 72 69 74 65 20 |'.X/*.X |* Write |
|00005c40| 28 63 6f 70 79 29 20 61 | 20 55 6e 69 78 20 66 69 |(copy) a| Unix fi|
|00005c50| 6c 65 20 74 6f 20 4d 53 | 44 4f 53 0a 58 20 2a 0a |le to MS|DOS.X *.|
|00005c60| 58 20 2a 20 45 6d 6d 65 | 74 20 50 2e 20 47 72 61 |X * Emme|t P. Gra|
|00005c70| 79 09 09 09 55 53 20 41 | 72 6d 79 2c 20 48 51 20 |y...US A|rmy, HQ |
|00005c80| 49 49 49 20 43 6f 72 70 | 73 20 26 20 46 6f 72 74 |III Corp|s & Fort|
|00005c90| 20 48 6f 6f 64 0a 58 20 | 2a 20 2e 2e 2e 21 69 68 | Hood.X |* ...!ih|
|00005ca0| 6e 70 34 21 75 69 75 63 | 75 78 63 21 66 74 68 6f |np4!uiuc|uxc!ftho|
|00005cb0| 6f 64 21 65 67 72 61 79 | 09 41 74 74 6e 3a 20 41 |od!egray|.Attn: A|
|00005cc0| 46 5a 46 2d 44 45 2d 45 | 4e 56 0a 58 20 2a 20 09 |FZF-DE-E|NV.X * .|
|00005cd0| 09 09 09 09 44 69 72 65 | 63 74 6f 72 61 74 65 20 |....Dire|ctorate |
|00005ce0| 6f 66 20 45 6e 67 69 6e | 65 65 72 69 6e 67 20 26 |of Engin|eering &|
|00005cf0| 20 48 6f 75 73 69 6e 67 | 0a 58 20 2a 20 09 09 09 | Housing|.X * ...|
|00005d00| 09 09 45 6e 76 69 72 6f | 6e 6d 65 6e 74 61 6c 20 |..Enviro|nmental |
|00005d10| 4d 61 6e 61 67 65 6d 65 | 6e 74 20 4f 66 66 69 63 |Manageme|nt Offic|
|00005d20| 65 0a 58 20 2a 20 09 09 | 09 09 09 46 6f 72 74 20 |e.X * ..|...Fort |
|00005d30| 48 6f 6f 64 2c 20 54 58 | 20 37 36 35 34 34 2d 35 |Hood, TX| 76544-5|
|00005d40| 30 35 37 0a 58 20 2a 2f | 0a 58 0a 58 23 69 6e 63 |057.X */|.X.X#inc|
|00005d50| 6c 75 64 65 20 3c 73 74 | 64 69 6f 2e 68 3e 0a 58 |lude <st|dio.h>.X|
|00005d60| 23 69 6e 63 6c 75 64 65 | 20 3c 73 79 73 2f 74 79 |#include| <sys/ty|
|00005d70| 70 65 73 2e 68 3e 0a 58 | 23 69 6e 63 6c 75 64 65 |pes.h>.X|#include|
|00005d80| 20 3c 73 79 73 2f 73 74 | 61 74 2e 68 3e 0a 58 23 | <sys/st|at.h>.X#|
|00005d90| 69 6e 63 6c 75 64 65 20 | 22 6d 73 64 6f 73 2e 68 |include |"msdos.h|
|00005da0| 22 0a 58 0a 58 69 6e 74 | 20 66 64 3b 09 09 09 09 |".X.Xint| fd;....|
|00005db0| 2f 2a 20 74 68 65 20 66 | 69 6c 65 20 64 65 73 63 |/* the f|ile desc|
|00005dc0| 72 69 70 74 6f 72 20 66 | 6f 72 20 74 68 65 20 66 |riptor f|or the f|
|00005dd0| 6c 6f 70 70 79 20 2a 2f | 0a 58 69 6e 74 20 64 69 |loppy */|.Xint di|
|00005de0| 72 5f 73 74 61 72 74 3b | 09 09 09 2f 2a 20 73 74 |r_start;|.../* st|
|00005df0| 61 72 74 69 6e 67 20 73 | 65 63 74 6f 72 20 66 6f |arting s|ector fo|
|00005e00| 72 20 64 69 72 65 63 74 | 6f 72 79 20 2a 2f 0a 58 |r direct|ory */.X|
|00005e10| 69 6e 74 20 64 69 72 5f | 6c 65 6e 3b 09 09 09 2f |int dir_|len;.../|
|00005e20| 2a 20 6c 65 6e 67 74 68 | 20 6f 66 20 64 69 72 65 |* length| of dire|
|00005e30| 63 74 6f 72 79 20 28 69 | 6e 20 73 65 63 74 6f 72 |ctory (i|n sector|
|00005e40| 73 29 20 2a 2f 0a 58 69 | 6e 74 20 64 69 72 5f 65 |s) */.Xi|nt dir_e|
|00005e50| 6e 74 72 69 65 73 3b 09 | 09 2f 2a 20 6e 75 6d 62 |ntries;.|./* numb|
|00005e60| 65 72 20 6f 66 20 64 69 | 72 65 63 74 6f 72 79 20 |er of di|rectory |
|00005e70| 65 6e 74 72 69 65 73 20 | 2a 2f 0a 58 69 6e 74 20 |entries |*/.Xint |
|00005e80| 64 69 72 5f 63 68 61 69 | 6e 5b 32 35 5d 3b 09 09 |dir_chai|n[25];..|
|00005e90| 2f 2a 20 63 68 61 69 6e | 20 6f 66 20 73 65 63 74 |/* chain| of sect|
|00005ea0| 6f 72 73 20 69 6e 20 64 | 69 72 65 63 74 6f 72 79 |ors in d|irectory|
|00005eb0| 20 2a 2f 0a 58 69 6e 74 | 20 63 6c 75 73 5f 73 69 | */.Xint| clus_si|
|00005ec0| 7a 65 3b 09 09 09 2f 2a | 20 63 6c 75 73 74 65 72 |ze;.../*| cluster|
|00005ed0| 20 73 69 7a 65 20 28 69 | 6e 20 73 65 63 74 6f 72 | size (i|n sector|
|00005ee0| 73 29 20 2a 2f 0a 58 69 | 6e 74 20 66 61 74 5f 6c |s) */.Xi|nt fat_l|
|00005ef0| 65 6e 3b 09 09 09 2f 2a | 20 6c 65 6e 67 74 68 20 |en;.../*| length |
|00005f00| 6f 66 20 46 41 54 20 74 | 61 62 6c 65 20 28 69 6e |of FAT t|able (in|
|00005f10| 20 73 65 63 74 6f 72 73 | 29 20 2a 2f 0a 58 69 6e | sectors|) */.Xin|
|00005f20| 74 20 6e 75 6d 5f 63 6c | 75 73 3b 09 09 09 2f 2a |t num_cl|us;.../*|
|00005f30| 20 6e 75 6d 62 65 72 20 | 6f 66 20 61 76 61 69 6c | number |of avail|
|00005f40| 61 62 6c 65 20 63 6c 75 | 73 74 65 72 73 20 2a 2f |able clu|sters */|
|00005f50| 0a 58 75 6e 73 69 67 6e | 65 64 20 63 68 61 72 20 |.Xunsign|ed char |
|00005f60| 2a 66 61 74 62 75 66 3b | 09 09 2f 2a 20 74 68 65 |*fatbuf;|../* the|
|00005f70| 20 46 69 6c 65 20 41 6c | 6c 6f 63 61 74 69 6f 6e | File Al|location|
|00005f80| 20 54 61 62 6c 65 20 2a | 2f 0a 58 63 68 61 72 20 | Table *|/.Xchar |
|00005f90| 2a 6d 63 77 64 3b 09 09 | 09 2f 2a 20 74 68 65 20 |*mcwd;..|./* the |
|00005fa0| 43 75 72 72 65 6e 74 20 | 57 6f 72 6b 69 6e 67 20 |Current |Working |
|00005fb0| 44 69 72 65 63 74 6f 72 | 79 20 2a 2f 0a 58 0a 58 |Director|y */.X.X|
|00005fc0| 69 6e 74 20 66 75 6c 6c | 20 3d 20 30 3b 0a 58 69 |int full| = 0;.Xi|
|00005fd0| 6e 74 20 74 65 78 74 6d | 6f 64 65 20 3d 20 30 3b |nt textm|ode = 0;|
|00005fe0| 0a 58 69 6e 74 20 6e 6f | 77 61 72 6e 20 3d 20 30 |.Xint no|warn = 0|
|00005ff0| 3b 0a 58 69 6e 74 20 66 | 69 6c 65 73 69 7a 65 3b |;.Xint f|ilesize;|
|00006000| 0a 58 0a 58 6d 61 69 6e | 28 61 72 67 63 2c 20 61 |.X.Xmain|(argc, a|
|00006010| 72 67 76 29 0a 58 69 6e | 74 20 61 72 67 63 3b 0a |rgv).Xin|t argc;.|
|00006020| 58 63 68 61 72 20 2a 61 | 72 67 76 5b 5d 3b 0a 58 |Xchar *a|rgv[];.X|
|00006030| 7b 0a 58 09 65 78 74 65 | 72 6e 20 69 6e 74 20 6f |{.X.exte|rn int o|
|00006040| 70 74 69 6e 64 3b 0a 58 | 09 65 78 74 65 72 6e 20 |ptind;.X|.extern |
|00006050| 63 68 61 72 20 2a 6f 70 | 74 61 72 67 3b 0a 58 09 |char *op|targ;.X.|
|00006060| 69 6e 74 20 69 2c 20 65 | 6e 74 72 79 2c 20 69 73 |int i, e|ntry, is|
|00006070| 6d 61 74 63 68 2c 20 6e | 6f 67 6f 2c 20 73 6c 6f |match, n|ogo, slo|
|00006080| 74 2c 20 73 74 61 72 74 | 2c 20 64 6f 74 2c 20 73 |t, start|, dot, s|
|00006090| 75 62 64 69 72 28 29 2c | 20 73 69 6e 67 6c 65 3b |ubdir(),| single;|
|000060a0| 0a 58 09 69 6e 74 20 69 | 73 64 69 72 28 29 2c 20 |.X.int i|sdir(), |
|000060b0| 72 6f 6f 74 2c 20 63 2c | 20 6f 6f 70 73 3b 0a 58 |root, c,| oops;.X|
|000060c0| 09 63 68 61 72 20 2a 66 | 69 6c 65 6e 61 6d 65 2c |.char *f|ilename,|
|000060d0| 20 2a 6e 65 77 66 69 6c | 65 2c 20 74 6e 61 6d 65 | *newfil|e, tname|
|000060e0| 5b 39 5d 2c 20 74 65 78 | 74 5b 34 5d 2c 20 2a 66 |[9], tex|t[4], *f|
|000060f0| 69 78 6e 61 6d 65 28 29 | 2c 20 2a 67 65 74 6e 61 |ixname()|, *getna|
|00006100| 6d 65 28 29 3b 0a 58 09 | 63 68 61 72 20 2a 75 6e |me();.X.|char *un|
|00006110| 69 78 6e 61 6d 65 28 29 | 2c 20 61 6e 73 5b 31 30 |ixname()|, ans[10|
|00006120| 5d 2c 20 2a 73 74 72 6e | 63 70 79 28 29 2c 20 2a |], *strn|cpy(), *|
|00006130| 70 61 74 68 6e 61 6d 65 | 2c 20 2a 67 65 74 70 61 |pathname|, *getpa|
|00006140| 74 68 28 29 2c 20 2a 66 | 69 78 65 64 3b 0a 58 09 |th(), *f|ixed;.X.|
|00006150| 63 68 61 72 20 2a 74 6d | 70 2c 20 2a 6d 61 6c 6c |char *tm|p, *mall|
|00006160| 6f 63 28 29 2c 20 2a 73 | 74 72 63 61 74 28 29 2c |oc(), *s|trcat(),|
|00006170| 20 2a 73 74 72 63 70 79 | 28 29 3b 0a 58 09 76 6f | *strcpy|();.X.vo|
|00006180| 69 64 20 65 78 69 74 28 | 29 3b 0a 58 09 73 74 72 |id exit(|);.X.str|
|00006190| 75 63 74 20 64 69 72 65 | 63 74 6f 72 79 20 2a 64 |uct dire|ctory *d|
|000061a0| 69 72 2c 20 2a 73 65 61 | 72 63 68 28 29 2c 20 2a |ir, *sea|rch(), *|
|000061b0| 77 72 69 74 65 69 74 28 | 29 3b 0a 58 0a 58 09 69 |writeit(|);.X.X.i|
|000061c0| 66 20 28 69 6e 69 74 28 | 32 29 29 20 7b 0a 58 09 |f (init(|2)) {.X.|
|000061d0| 09 66 70 72 69 6e 74 66 | 28 73 74 64 65 72 72 2c |.fprintf|(stderr,|
|000061e0| 20 22 6d 77 72 69 74 65 | 3a 20 43 61 6e 6e 6f 74 | "mwrite|: Cannot|
|000061f0| 20 69 6e 69 74 69 61 6c | 69 7a 65 20 64 69 73 6b | initial|ize disk|
|00006200| 65 74 74 65 5c 6e 22 29 | 3b 0a 58 09 09 65 78 69 |ette\n")|;.X..exi|
|00006210| 74 28 31 29 3b 0a 58 09 | 7d 0a 58 09 09 09 09 09 |t(1);.X.|}.X.....|
|00006220| 2f 2a 20 67 65 74 20 63 | 6f 6d 6d 61 6e 64 20 6c |/* get c|ommand l|
|00006230| 69 6e 65 20 6f 70 74 69 | 6f 6e 73 20 2a 2f 0a 58 |ine opti|ons */.X|
|00006240| 09 6f 6f 70 73 20 3d 20 | 30 3b 0a 58 09 77 68 69 |.oops = |0;.X.whi|
|00006250| 6c 65 20 28 28 63 20 3d | 20 67 65 74 6f 70 74 28 |le ((c =| getopt(|
|00006260| 61 72 67 63 2c 20 61 72 | 67 76 2c 20 22 74 6e 22 |argc, ar|gv, "tn"|
|00006270| 29 29 20 21 3d 20 45 4f | 46 29 20 7b 0a 58 09 09 |)) != EO|F) {.X..|
|00006280| 73 77 69 74 63 68 28 63 | 29 20 7b 0a 58 09 09 09 |switch(c|) {.X...|
|00006290| 63 61 73 65 20 27 74 27 | 3a 0a 58 09 09 09 09 74 |case 't'|:.X....t|
|000062a0| 65 78 74 6d 6f 64 65 20 | 3d 20 31 3b 0a 58 09 09 |extmode |= 1;.X..|
|000062b0| 09 09 62 72 65 61 6b 3b | 0a 58 09 09 09 63 61 73 |..break;|.X...cas|
|000062c0| 65 20 27 6e 27 3a 0a 58 | 09 09 09 09 6e 6f 77 61 |e 'n':.X|....nowa|
|000062d0| 72 6e 20 3d 20 31 3b 0a | 58 09 09 09 09 62 72 65 |rn = 1;.|X....bre|
|000062e0| 61 6b 3b 0a 58 09 09 09 | 64 65 66 61 75 6c 74 3a |ak;.X...|default:|
|000062f0| 0a 58 09 09 09 09 6f 6f | 70 73 20 3d 20 31 3b 0a |.X....oo|ps = 1;.|
|00006300| 58 09 09 09 09 62 72 65 | 61 6b 3b 0a 58 09 09 7d |X....bre|ak;.X..}|
|00006310| 0a 58 09 7d 0a 58 0a 58 | 09 69 66 20 28 6f 6f 70 |.X.}.X.X|.if (oop|
|00006320| 73 20 7c 7c 20 28 61 72 | 67 63 20 2d 20 6f 70 74 |s || (ar|gc - opt|
|00006330| 69 6e 64 29 20 3c 20 32 | 29 20 7b 0a 58 09 09 66 |ind) < 2|) {.X..f|
|00006340| 70 72 69 6e 74 66 28 73 | 74 64 65 72 72 2c 20 22 |printf(s|tderr, "|
|00006350| 55 73 61 67 65 3a 20 6d | 77 72 69 74 65 20 5b 2d |Usage: m|write [-|
|00006360| 74 7c 2d 6e 5d 20 3c 55 | 6e 69 78 20 66 69 6c 65 |t|-n] <U|nix file|
|00006370| 3e 20 3c 4d 53 44 4f 53 | 20 66 69 6c 65 3e 5c 6e |> <MSDOS| file>\n|
|00006380| 22 29 3b 0a 58 09 09 66 | 70 72 69 6e 74 66 28 73 |");.X..f|printf(s|
|00006390| 74 64 65 72 72 2c 20 22 | 20 20 20 20 6f 72 20 6d |tderr, "| or m|
|000063a0| 77 72 69 74 65 20 5b 2d | 74 7c 2d 6e 5d 20 3c 55 |write [-|t|-n] <U|
|000063b0| 6e 69 78 20 66 69 6c 65 | 3e 20 5b 3c 55 6e 69 78 |nix file|> [<Unix|
|000063c0| 20 66 69 6c 65 73 2e 2e | 2e 3e 5d 20 3c 4d 53 44 | files..|.>] <MSD|
|000063d0| 4f 53 20 64 69 72 65 63 | 74 6f 72 79 3e 5c 6e 22 |OS direc|tory>\n"|
|000063e0| 29 3b 0a 58 09 09 65 78 | 69 74 28 31 29 3b 0a 58 |);.X..ex|it(1);.X|
|000063f0| 09 7d 0a 58 09 72 6f 6f | 74 20 3d 20 30 3b 0a 58 |.}.X.roo|t = 0;.X|
+--------+-------------------------+-------------------------+--------+--------+
Only 25.0 KB of data is shown above.