source: trunk/dll/dirs.c@ 1346

Last change on this file since 1346 was 1346, checked in by Gregg Young, 17 years ago

Code cleanup; removal of dead 07 code copywrite updates etc

  • Property svn:eol-style set to native
  • Property svn:keywords set to Author Date Id Revision
File size: 2.1 KB
RevLine 
[793]1
2/***********************************************************************
3
4 $Id: dirs.c 1346 2008-12-20 04:18:30Z gyoung $
5
6 Copyright (c) 1993-98 M. Kimes
[1346]7 Copyright (c) 2003, 2008 Steven H.Levine
[793]8
9 Directory manipulation
10
11 20 Aug 07 GKY Move #pragma alloc_text to end for OpenWatcom compat
12
13***********************************************************************/
14
[2]15#include <stdlib.h>
16#include <string.h>
17#include <ctype.h>
[907]18
[1159]19#define INCL_LONGLONG // dircnrs.h
[907]20
[2]21#include "fm3dll.h"
[1206]22#include "init.h" // Data declaration(s)
[1159]23#include "dirs.h"
24#include "valid.h" // IsValidDir
[2]25
[551]26APIRET save_dir2(CHAR * curdir)
27{
[2]28 CHAR *env = getenv("FM3INI");
29
[551]30 if (env && *env) {
31 strncpy(curdir, env, CCHMAXPATH);
[2]32 curdir[CCHMAXPATH - 1] = 0;
[551]33 if (IsValidDir(curdir))
[2]34 return 0;
35 else {
[551]36 env = strrchr(curdir, '\\');
37 if (env) {
[1159]38 *env = 0;
39 if (IsValidDir(curdir))
40 return 0;
[2]41 }
42 }
43 }
44 return save_dir(curdir);
45}
46
[551]47APIRET save_dir(CHAR * curdir)
48{
49 APIRET ret;
50 ULONG curdirlen, curdrive, drivemap;
[2]51
52 *curdir = 0;
[551]53 ret = DosQCurDisk(&curdrive, &drivemap);
[1159]54 curdirlen = CCHMAXPATH - 4; /* NOTE!!!!!!!!! */
[1321]55 ret += DosQCurDir(curdrive, (PBYTE)&curdir[3], &curdirlen);
[551]56 *curdir = (CHAR) ('@' + (INT) curdrive);
[2]57 curdir[1] = ':';
58 curdir[2] = '\\';
59 return ret;
60}
61
[551]62APIRET switch_to(CHAR * s)
63{
[2]64
[551]65 APIRET ret;
[843]66 FILESTATUS3 fsa;
[551]67 CHAR path[CCHMAXPATH + 1], *p;
[2]68
[551]69 strcpy(path, s);
70 while (*path) {
[843]71 ret = DosQueryPathInfo(path, FIL_STANDARD, &fsa, sizeof(fsa));
[551]72 if (ret || !(fsa.attrFile & FILE_DIRECTORY)) {
73 p = strrchr(path, '\\');
74 if (p)
[1159]75 *p = 0;
[2]76 else {
[1159]77 strcpy(path, s);
78 break;
[2]79 }
80 }
81 else
82 break;
83 }
[551]84 if (isalpha(*path) && path[1] == ':') {
[2]85
[551]86 ULONG curdrive, drivemap;
[2]87
[551]88 if (!DosQCurDisk(&curdrive, &drivemap)) {
89 if ((CHAR) ((CHAR) curdrive + '@') != (CHAR) toupper(*HomePath) &&
[1159]90 (CHAR) ((CHAR) curdrive + '@') != (CHAR) toupper(*path))
91 DosChDir("\\");
[2]92 }
93 ret = DosSelectDisk(toupper(*path) - '@');
94 return (ret) ? ret : DosChDir(path);
95 }
96 return DosChDir(path);
97}
[793]98
99#pragma alloc_text(MISC9,save_dir,save_dir2,switch_to)
Note: See TracBrowser for help on using the repository browser.