Commit Graph

724 Commits

Author SHA1 Message Date
Bart Oldeman
78fc7a1e6d Remove dosnames.c and inline ParseDosName, because there is only one user left
(split_path()) which only uses it to find out if the path ends in a backslash
and the length of the directory part.


git-svn-id: https://svn.code.sf.net/p/freedos/svn/kernel/trunk@1442 6ac86273-5f31-0410-b378-82cca8765d1b
2009-06-13 04:01:01 +00:00
Bart Oldeman
60915d3cd0 dos_findfirst() now uses split_path(). The only thing that needed to be
added was the need to check for "d:\" paths which return DE_NFILES.
Also, findfirst("d:\nonexist\*.*",D_VOLID) should fail even if it actually
searches in d:\.


git-svn-id: https://svn.code.sf.net/p/freedos/svn/kernel/trunk@1441 6ac86273-5f31-0410-b378-82cca8765d1b
2009-06-13 03:44:50 +00:00
Bart Oldeman
f7a9177b64 The invalid pathname character detection is moved from ParseDosName (dosnames.c)
to truename (newstuff.c), because TRUENAME should check these characters
before passing paths on to fatfs.c & fatdir.c.


git-svn-id: https://svn.code.sf.net/p/freedos/svn/kernel/trunk@1440 6ac86273-5f31-0410-b378-82cca8765d1b
2009-06-12 22:58:24 +00:00
Bart Oldeman
c812a96e85 Corrected the if-statement && logic for attributes in the findnext loop.
git-svn-id: https://svn.code.sf.net/p/freedos/svn/kernel/trunk@1439 6ac86273-5f31-0410-b378-82cca8765d1b
2009-06-12 20:57:39 +00:00
Bart Oldeman
07d2b24149 Make findfirst/findnext more MSDOS compatible:
* ignore 0x40 (D_DEVICE) in search attribute.
* if you specify D_VOLID + one or more of D_HIDDEN, D_SYSTEM, and D_DIR you
  will get files *and* volume labels in the specified directory, not forced
  to the root directory.
* VOLID searches must look at the search pattern name too, or do not match.


git-svn-id: https://svn.code.sf.net/p/freedos/svn/kernel/trunk@1438 6ac86273-5f31-0410-b378-82cca8765d1b
2009-06-12 20:38:40 +00:00
Bart Oldeman
f5696a4a7e For read/write don't update sft_posit in dosfns.c anymore so fatfs.c takes
care of it.


git-svn-id: https://svn.code.sf.net/p/freedos/svn/kernel/trunk@1437 6ac86273-5f31-0410-b378-82cca8765d1b
2009-06-11 13:25:32 +00:00
Bart Oldeman
76c967d581 Remove usage of the fnode f_flags field where it is not relevant anymore.
Because of the explicit dir_write() calls we only need them in situations
where SFTs where used, that is for open files but not for directories.


git-svn-id: https://svn.code.sf.net/p/freedos/svn/kernel/trunk@1436 6ac86273-5f31-0410-b378-82cca8765d1b
2009-06-11 12:33:30 +00:00
Bart Oldeman
3a16a4c755 Eliminate fcbname[] on the stack: we can use dm_name_pat in the dirmatch
structures instead.


git-svn-id: https://svn.code.sf.net/p/freedos/svn/kernel/trunk@1435 6ac86273-5f31-0410-b378-82cca8765d1b
2009-06-10 21:08:16 +00:00
Bart Oldeman
479e6fb0eb %if 0 unused asm functions and fix a stack return problem with fstrcmp.
git-svn-id: https://svn.code.sf.net/p/freedos/svn/kernel/trunk@1434 6ac86273-5f31-0410-b378-82cca8765d1b
2009-06-10 21:02:52 +00:00
Bart Oldeman
a21bcd8a85 Split 8.3 FCB-style filename extraction from ParseDosName into a new
ConvertNameSZToName83 function, also used by dir_open().


git-svn-id: https://svn.code.sf.net/p/freedos/svn/kernel/trunk@1433 6ac86273-5f31-0410-b378-82cca8765d1b
2009-06-10 19:02:24 +00:00
Bart Oldeman
8e2b96a70b Move the fnode fields f_diroff and f_dirstart into a referenced directory
match structure with fields dm_entry and dm_dircluster.


git-svn-id: https://svn.code.sf.net/p/freedos/svn/kernel/trunk@1432 6ac86273-5f31-0410-b378-82cca8765d1b
2009-06-10 16:10:54 +00:00
Kenneth J Davis
3239b3d4b0 More verbose output of UPX method (sys or exe) used and fix case without UPX so kernel boots.
git-svn-id: https://svn.code.sf.net/p/freedos/svn/kernel/trunk@1431 6ac86273-5f31-0410-b378-82cca8765d1b
2009-06-10 02:09:08 +00:00
Bart Oldeman
054631c300 Ported COUNTRY.SYS support from the unstable branch.
Simple country support is kept: COUNTRY=31 will look for country.sys but
if it does not exist, not complain and load the built-in info.


git-svn-id: https://svn.code.sf.net/p/freedos/svn/kernel/trunk@1430 6ac86273-5f31-0410-b378-82cca8765d1b
2009-06-09 23:41:50 +00:00
Bart Oldeman
e0ca8d76e2 Seek changes:
* merge unstable kernel optimizations
* enable seek for int2f/AX=1228
* -1 is a valid offset, so we need to process the return code seperately


git-svn-id: https://svn.code.sf.net/p/freedos/svn/kernel/trunk@1429 6ac86273-5f31-0410-b378-82cca8765d1b
2009-06-09 18:50:03 +00:00
Bart Oldeman
288a2f396b Merge pop_dmp optimization from the unstable kernel.
git-svn-id: https://svn.code.sf.net/p/freedos/svn/kernel/trunk@1428 6ac86273-5f31-0410-b378-82cca8765d1b
2009-06-09 18:09:05 +00:00
Bart Oldeman
d519f3db40 This change was missed, as the changelog mentioned it was in 2035a already:
r_si/r_di contents added as documented in PC-DOS Technical Update.
I also moved the CharReqHdr filling in to just before execrh, and
made the command table a static const so it is outside the SDA (OW places
it in CONST2).


git-svn-id: https://svn.code.sf.net/p/freedos/svn/kernel/trunk@1427 6ac86273-5f31-0410-b378-82cca8765d1b
2009-06-09 12:23:14 +00:00
Bart Oldeman
598ca4276a Optimization: move the attribute checks down and localize some variables.
git-svn-id: https://svn.code.sf.net/p/freedos/svn/kernel/trunk@1426 6ac86273-5f31-0410-b378-82cca8765d1b
2009-06-09 11:49:53 +00:00
Bart Oldeman
0231b7efd0 Streamline ioctl.c code so OW saves 2 more words of stack.
git-svn-id: https://svn.code.sf.net/p/freedos/svn/kernel/trunk@1425 6ac86273-5f31-0410-b378-82cca8765d1b
2009-06-08 19:40:41 +00:00
Bart Oldeman
b8cabddd8e r1115 set the dpb_subunit but that was wrong for get_cds() called from AX=4409.
Use a local variable unit to avoid that, and simplify the AX=4409 logic like
in the unstable kernel.


git-svn-id: https://svn.code.sf.net/p/freedos/svn/kernel/trunk@1424 6ac86273-5f31-0410-b378-82cca8765d1b
2009-06-08 18:04:36 +00:00
Bart Oldeman
ab6b4ffdf4 Inline ioctl helper routine back again. We can save stack by using the
dev variable that points to the device smartly.


git-svn-id: https://svn.code.sf.net/p/freedos/svn/kernel/trunk@1423 6ac86273-5f31-0410-b378-82cca8765d1b
2009-06-08 13:19:58 +00:00
Bart Oldeman
17bd0113b2 Split DosDevIoctl into two calls so execrh can be called with minimal
stack usage. Always return DE_ACCESS when the device fails instead
of DE_DEVICE, as DE_DEVICE is only used for renames between devices that
are not the same.


git-svn-id: https://svn.code.sf.net/p/freedos/svn/kernel/trunk@1422 6ac86273-5f31-0410-b378-82cca8765d1b
2009-06-07 15:47:45 +00:00
Bart Oldeman
f57099220b Introduce clear_dir() to clear a directory, this was code shared between
dos_mkdir() and extend_dir(). Now dos_mkdir() calls this function to clear
the new directory, and then creates the . and .. entries using higher level
functions instead of dealing with the blocks directly.


git-svn-id: https://svn.code.sf.net/p/freedos/svn/kernel/trunk@1421 6ac86273-5f31-0410-b378-82cca8765d1b
2009-06-05 14:53:05 +00:00
Bart Oldeman
ec30074f48 Make the fnode f_flags completely equal to the SFT sft_flags.
Rename SFT_FDIRTY to SFT_FCLEAN to avoid confusion.


git-svn-id: https://svn.code.sf.net/p/freedos/svn/kernel/trunk@1420 6ac86273-5f31-0410-b378-82cca8765d1b
2009-06-05 00:06:05 +00:00
Bart Oldeman
fedf951beb Eliminate the fnode F_DDIR flag which has no SFT equivalent:
f_sft_idx==0xff can do the same. rwblock() is never called for directories
so the checks could be removed.


git-svn-id: https://svn.code.sf.net/p/freedos/svn/kernel/trunk@1419 6ac86273-5f31-0410-b378-82cca8765d1b
2009-06-04 23:40:17 +00:00
Bart Oldeman
60e8c56f91 Flip target and source checks to avoid calling ParseDosName for in-directory
renames. Do not allow to rename directories between different directories.


git-svn-id: https://svn.code.sf.net/p/freedos/svn/kernel/trunk@1418 6ac86273-5f31-0410-b378-82cca8765d1b
2009-06-03 12:24:16 +00:00
Bart Oldeman
063c57e237 RENAME: if the source and target directories are the same, rename the directory
entry in-place instead of creating a new one and deleting the old one.
Fixes archived bugzilla bug:
http://www.freedos.org/bugzilla/cgi-bin/show_bug.cgi?id=1908


git-svn-id: https://svn.code.sf.net/p/freedos/svn/kernel/trunk@1417 6ac86273-5f31-0410-b378-82cca8765d1b
2009-06-03 03:11:23 +00:00
Bart Oldeman
4a6e5677ad Change dos_rmdir to only use 1 fnode. It now first checks if the directory
is empty and then opens the parent and deletes the real directory.
No longer returns DE_FILENOTFND(2), but return DE_PATHNOTFND(3) instead.


git-svn-id: https://svn.code.sf.net/p/freedos/svn/kernel/trunk@1416 6ac86273-5f31-0410-b378-82cca8765d1b
2009-06-03 01:01:47 +00:00
Bart Oldeman
1569b6b920 Cleanup dirmatch.h: make attributes and size unsigned, and make the unused
dm_flags field reserved.


git-svn-id: https://svn.code.sf.net/p/freedos/svn/kernel/trunk@1415 6ac86273-5f31-0410-b378-82cca8765d1b
2009-06-02 13:18:24 +00:00
Bart Oldeman
b10d86bcaa Introduce get_cds1 to merge common code that checks for 0=default_drive,1=A,etc.
Make load_transfer() static.


git-svn-id: https://svn.code.sf.net/p/freedos/svn/kernel/trunk@1414 6ac86273-5f31-0410-b378-82cca8765d1b
2009-06-01 14:55:11 +00:00
Bart Oldeman
eb318177c1 Inline cooked_write_char() into cooked_write().
git-svn-id: https://svn.code.sf.net/p/freedos/svn/kernel/trunk@1413 6ac86273-5f31-0410-b378-82cca8765d1b
2009-06-01 13:41:03 +00:00
Eric Auer
c14e9df8bb Describe SVN revision r1365-r1384 in history.txt, add some URLs
for FreeDOS SF pages to readme.txt, update email in contrib.txt


git-svn-id: https://svn.code.sf.net/p/freedos/svn/kernel/trunk@1412 6ac86273-5f31-0410-b378-82cca8765d1b
2009-05-31 15:43:49 +00:00
Bart Oldeman
2fb8715bdc Fix compilation with Turbo C.
git-svn-id: https://svn.code.sf.net/p/freedos/svn/kernel/trunk@1411 6ac86273-5f31-0410-b378-82cca8765d1b
2009-05-29 00:50:28 +00:00
Bart Oldeman
5b46738372 Eliminate dir_close().
Its only purpose left was to flush buffers, which isn't necessary after
just open/read, so we can move that to dir_write().


git-svn-id: https://svn.code.sf.net/p/freedos/svn/kernel/trunk@1410 6ac86273-5f31-0410-b378-82cca8765d1b
2009-05-29 00:25:38 +00:00
Bart Oldeman
1cc33a1a5e Move the open/creat access checks to more efficient places.
git-svn-id: https://svn.code.sf.net/p/freedos/svn/kernel/trunk@1409 6ac86273-5f31-0410-b378-82cca8765d1b
2009-05-29 00:03:27 +00:00
Bart Oldeman
7b89e44274 Make merge_file_changes more direct dealing with SFTs and merge the
"close open files setfattr wants to change" functionality there.


git-svn-id: https://svn.code.sf.net/p/freedos/svn/kernel/trunk@1408 6ac86273-5f31-0410-b378-82cca8765d1b
2009-05-28 18:33:22 +00:00
Bart Oldeman
896908d6f7 Eliminate DosGetFile -- it is no longer necessary because the filename
is already copied from the fnode.


git-svn-id: https://svn.code.sf.net/p/freedos/svn/kernel/trunk@1407 6ac86273-5f31-0410-b378-82cca8765d1b
2009-05-26 21:09:56 +00:00
Bart Oldeman
9a415b14b2 Fix a regression with sft_flags overwriting what dos_open wrote so file
dates/times would always be updated, even for reads!


git-svn-id: https://svn.code.sf.net/p/freedos/svn/kernel/trunk@1406 6ac86273-5f31-0410-b378-82cca8765d1b
2009-05-26 20:57:55 +00:00
Bart Oldeman
a0382d32e4 Eliminate dos_setfsize, dos_setftime, and dos_lseek, by just using the SFT.
dos_setfsize still needed to merge changes for SHARE so the call was replaced
by a new dos_merge_file_changes() call.


git-svn-id: https://svn.code.sf.net/p/freedos/svn/kernel/trunk@1405 6ac86273-5f31-0410-b378-82cca8765d1b
2009-05-26 20:44:44 +00:00
Bart Oldeman
76f1c10a4e Eliminate xlt_fd(), save_far_f_node(), and the redundant fnode f_mode field.
git-svn-id: https://svn.code.sf.net/p/freedos/svn/kernel/trunk@1404 6ac86273-5f31-0410-b378-82cca8765d1b
2009-05-26 18:34:05 +00:00
Bart Oldeman
4a81e6e9a2 Let merge_file_changes operate directly on the other SFTs.
dos_setfattr with SHARE now closes open SFTs referring to that file
in compat mode.


git-svn-id: https://svn.code.sf.net/p/freedos/svn/kernel/trunk@1403 6ac86273-5f31-0410-b378-82cca8765d1b
2009-05-26 18:23:35 +00:00
Bart Oldeman
386fc961e3 Fix SFT/fnode fields so the SHARE related functions is_same_file() and
merge_file_changes() work.


git-svn-id: https://svn.code.sf.net/p/freedos/svn/kernel/trunk@1402 6ac86273-5f31-0410-b378-82cca8765d1b
2009-05-26 16:49:57 +00:00
Bart Oldeman
c179284147 Remove redundant checks for fnodes==0 since the checks are done in dosfns.c.
Replace global f_nodes[] array by f_sft_idx fields in the fnodes.


git-svn-id: https://svn.code.sf.net/p/freedos/svn/kernel/trunk@1401 6ac86273-5f31-0410-b378-82cca8765d1b
2009-05-26 14:44:44 +00:00
Bart Oldeman
a69b4ba011 Eliminate the sft_status field as it is now equal to the SFT index.
git-svn-id: https://svn.code.sf.net/p/freedos/svn/kernel/trunk@1400 6ac86273-5f31-0410-b378-82cca8765d1b
2009-05-26 14:11:50 +00:00
Bart Oldeman
f9f2fe447d Eliminate dos_getftime, dos_getfsize, and dos_getfattr_fd, because we can
now get these properties directly from the SFT.


git-svn-id: https://svn.code.sf.net/p/freedos/svn/kernel/trunk@1399 6ac86273-5f31-0410-b378-82cca8765d1b
2009-05-26 13:59:44 +00:00
Bart Oldeman
e63e5dd125 Eliminate f_count field in fnodes and some no-op functions.
git-svn-id: https://svn.code.sf.net/p/freedos/svn/kernel/trunk@1398 6ac86273-5f31-0410-b378-82cca8765d1b
2009-05-26 13:47:52 +00:00
Bart Oldeman
d7d201a53b This is the main change to eliminate far fnodes.
SFT info is copied from and to the two near fnodes.
Some cleanups still follow.


git-svn-id: https://svn.code.sf.net/p/freedos/svn/kernel/trunk@1397 6ac86273-5f31-0410-b378-82cca8765d1b
2009-05-26 13:24:14 +00:00
Bart Oldeman
39e6570be9 Make the SFT DOS 4+ compatible and change fields to be unsigned.
git-svn-id: https://svn.code.sf.net/p/freedos/svn/kernel/trunk@1396 6ac86273-5f31-0410-b378-82cca8765d1b
2009-05-26 13:09:20 +00:00
Bart Oldeman
0ad01cd768 Handle sft_count before calling dos_open and after calling dos_close so
the SFT is open for longer, during fatfs.c operations.


git-svn-id: https://svn.code.sf.net/p/freedos/svn/kernel/trunk@1395 6ac86273-5f31-0410-b378-82cca8765d1b
2009-05-25 22:55:06 +00:00
Bart Oldeman
cb4ab16a22 Fix compilation with -DDOSEMU set.
git-svn-id: https://svn.code.sf.net/p/freedos/svn/kernel/trunk@1394 6ac86273-5f31-0410-b378-82cca8765d1b
2009-05-25 00:04:03 +00:00
Bart Oldeman
affddaaf64 Handle dos_getfattr and dos_setfattr directly at the directory level, instead
of opening the file, to avoid needing to claim SFTs in later changes.
Clarify and implement parts of the correct SHARE behaviour.


git-svn-id: https://svn.code.sf.net/p/freedos/svn/kernel/trunk@1393 6ac86273-5f31-0410-b378-82cca8765d1b
2009-05-23 02:04:03 +00:00