eb6ba62c28a04345445620d5b353bad31f9cfd0d
[openafs.git] / src / gtx / windows.c
1 /*
2  * Copyright 2000, International Business Machines Corporation and others.
3  * All Rights Reserved.
4  * 
5  * This software has been released under the terms of the IBM Public
6  * License.  For details, see the LICENSE file in the top-level source
7  * directory or online at http://www.openafs.org/dl/license10.html
8  */
9
10 /*
11  * gator_windows.c
12  *
13  * Description:
14  *      Implementation of the gator windows interface.
15  *
16  *--------------------------------------------------------------------------------*/
17
18 #include <afs/param.h>
19 #include <afsconfig.h>
20
21 RCSID("$Header$");
22
23 /* On DUX "IN" is a variable in curses.h, so this can be a bit of a problem */
24 #ifdef IN
25 #undef IN
26 #endif
27
28 #include "gtxwindows.h"         /*Interface for this module*/
29 #include "gtxcurseswin.h"       /*Interface for the curses module*/
30 #include "gtxdumbwin.h"         /*Interface for the dumb terminal module*/
31 #include "gtxX11win.h"          /*Interface for the X11 module*/
32
33 static char mn[] = "gator_windows";     /*Module name*/
34 struct gwinbaseops gwinbops;            /*Base window operation fn array*/
35 struct gwin gator_basegwin;             /*Base gator window*/
36
37 /*--------------------------------------------------------------------------------
38  * gw_init
39  *
40  * Description:
41  *      Initialize the gator window package.
42  *
43  * Arguments:
44  *      struct gwin_initparams *params : Ptr to initialization params.
45  *
46  * Returns:
47  *      0 on success,
48  *      Error value otherwise.
49  *
50  * Environment:
51  *      *** MUST BE THE FIRST ROUTINE CALLED FROM
52  *            THIS PACKAGE ***
53  *
54  * Side Effects:
55  *      Sets up the chosen lower-level graphics package, as well
56  *      as the base operation array (gwinbops).  Also sets up the
57  *      base window.
58  *--------------------------------------------------------------------------------*/
59
60 int gw_init(params)
61     struct gwin_initparams *params;
62
63 { /*gw_init*/
64
65     static char rn[] = "gw_init";   /*Routine name*/
66     register int code;              /*Return code*/
67     int gwin_debug;                 /*Is debugging turned on?*/
68
69     /*
70      * Remember our debugging level.
71      */
72     gwin_debug = params->i_debug;
73     if (gwin_debug)
74       fprintf(stderr, "[%s:%s] Window debugging turned on\n", mn, rn);
75
76     /*
77      * What we do/call depends on the type of lower-level graphics
78      * package we'll be using.
79      */
80     switch (params->i_type) {
81         case GATOR_WIN_DUMB:    /*Dumb terminal*/
82             if (gwin_debug)
83                 fprintf(stderr, "[%s:%s] Initializing for the dumb terminal package\n", mn, rn);
84             gwinbops = gator_dumb_gwinbops;
85             code = gator_dumbgwin_init(gwin_debug);
86             if (code) {
87                 fprintf(stderr, "[%s:%s] Error in dumb terminal initialization routine, gator_dumbgwin_init(): %d\n", mn, rn, code);
88                 return(code);
89             }
90             break;
91
92         case GATOR_WIN_CURSES:  /*Curses*/
93             if (gwin_debug)
94                 fprintf(stderr, "[%s:%s] Initializing for the curses package\n", mn, rn);
95             gwinbops = gator_curses_gwinbops;
96             code = gator_cursesgwin_init(gwin_debug);
97             if (code) {
98                 fprintf(stderr, "[%s:%s] Error in curses initialization routine, gator_cursesgwin_init(): %d\n", mn, rn, code);
99                 return(code);
100             }
101             break;
102
103         case GATOR_WIN_X11:     /*X11*/
104             if (gwin_debug)
105                 fprintf(stderr, "[%s:%s] Initializing for the X11 package\n", mn, rn);
106             gwinbops = gator_X11_gwinbops;
107             code = gator_X11gwin_init(params);
108             if (code) {
109                 fprintf(stderr, "[%s:%s] Error in X11 initialization routine, gator_X11gwin_init(): %d\n", mn, rn, code);
110                 return(code);
111             }
112             break;
113
114         default:
115             fprintf(stderr, "[%s:%s] Illegal choice of graphics system: %d\n",
116                     mn, rn, params->i_type);
117             fprintf(stderr, "\tLegal choices are:\n");
118             fprintf(stderr, "\t\t%d: Dumb terminal\n", GATOR_WIN_DUMB);
119             fprintf(stderr, "\t\t%d: Curses\n",        GATOR_WIN_CURSES);
120             fprintf(stderr, "\t\t%d: X11\n",           GATOR_WIN_X11);
121             return(-1);
122     } /*end switch (params->i_type)*/
123
124     /*
125      * Finally, return the good news.
126      */
127     return(0);
128
129 } /*gw_init*/