summaryrefslogtreecommitdiff
path: root/dmake/msdos/switchar.c
blob: 8879a9ad7c446736e1b985548aed0da55695122e (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
/* RCS  $Id: switchar.c,v 1.1.1.1 2000-09-22 15:33:27 hr Exp $
--
-- SYNOPSIS
--      switch char query.
--
-- DESCRIPTION
--      Get the current value of the command line switch char.  Only useful
--      in a DOS environment, otherwise we #define it to be '-'.
--
-- AUTHOR
--      Dennis Vadura, dvadura@dmake.wticorp.com
--
-- WWW
--      http://dmake.wticorp.com/
--
-- COPYRIGHT
--      Copyright (c) 1996,1997 by WTI Corp.  All rights reserved.
--
--      This program is NOT free software; you can redistribute it and/or
--      modify it under the terms of the Software License Agreement Provided
--      in the file <distribution-root>/readme/license.txt.
--
-- LOG
--      Use cvs log to obtain detailed change logs.
*/
#if defined(_MSC_VER)
#include <stdlib.h>
#endif
#include <dos.h>
#include <stdio.h>
#include "stdmacs.h"

getswitchar()/*
===============
   Try the environment first.  If you don't find SWITCHAR there, then use
   the DOS call.  The call is undocumented, and doesn't work for DOS versions
   4.0 and up, so the check of the environment will fix that. */
{
#if defined(__MSDOS__) || defined(M_I86)
   union REGS rg;
   static char *_env_switchar = NIL(char);

   if( _env_switchar != NIL(char) ||
       (_env_switchar = (char *)getenv("SWITCHAR")) != NIL(char) )
      return(*_env_switchar);

   rg.h.ah = 0x37;      /* switch char request */
   rg.h.al = 0;         /* get (not set) */

   intdos(&rg, &rg);
   return (rg.h.dl);
#endif /* M_I86 */

   return ('-');
}