1 /* $Id: maccfg.c,v 1.1.2.3 1999/03/16 20:27:30 ben Exp $ */
3 * maccfg.c -- Mac port configuration
19 static void get_string(struct strloc *l, char *d, size_t maxlen) {
23 GetIndString(s, l->id, l->idx);
25 /* maxlen includes a terminator */
28 for (i = 0; i < len; i++)
33 static void get_wordness(short id, short *dst) {
36 h = GetResource(PREF_wordness_type, id);
37 if (h == NULL || *h == NULL)
38 fatalbox ("Couldn't get wordness id %d (%d)", id, ResError());
39 memcpy(dst, *h, 256 * sizeof(short));
42 #pragma options align=mac68k
44 unsigned long basic_flags;
45 #define CLOSE_ON_EXIT 0x80000000
46 unsigned long ssh_flags;
47 #define NO_PTY 0x80000000
48 unsigned long telnet_flags;
49 #define RFC_ENVIRON 0x80000000
50 unsigned long kbd_flags;
51 #define BKSP_IS_DELETE 0x80000000
52 #define RXVT_HOMEEND 0x40000000
53 #define LINUX_FUNKEYS 0x20000000
54 #define APP_CURSOR 0x10000000
55 #define APP_KEYPAD 0x08000000
56 unsigned long term_flags;
57 #define DEC_OM 0x80000000
58 #define WRAP_MODE 0x40000000
59 #define LFHASCR 0x20000000
60 #define WIN_NAME_ALWAYS 0x10000000
61 unsigned long colour_flags;
62 #define BOLD_COLOUR 0x80000000
63 unsigned long selection_flags;
64 #define IMPLICIT_COPY 0x80000000
68 struct strloc termtype, termspeed;
69 struct strloc environmt;
70 struct strloc username;
71 long width, height, savelines;
77 #pragma options align=reset
80 * Load a configuration from the current chain of resource files.
82 void mac_loadconfig(Config *cfg) {
86 h = GetResource('pSET', PREF_settings);
87 if (h == NULL || *h == NULL)
88 fatalbox("Can't load settings");
89 if (GetResourceSizeOnDisk(h) != sizeof(struct pSET))
90 fatalbox("Settings resource is wrong size (%d vs %d)",
91 GetResourceSizeOnDisk(h), sizeof(struct pSET));
92 SetResAttrs(h, GetResAttrs(h) | resLocked);
93 s = (struct pSET *)*h;
95 get_string(&s->host, cfg->host, sizeof(cfg->host));
97 cfg->protocol = s->protocol;
98 cfg->close_on_exit = (s->basic_flags & CLOSE_ON_EXIT) != 0;
100 cfg->nopty = (s->ssh_flags & NO_PTY) != 0;
102 get_string(&s->termtype, cfg->termtype, sizeof(cfg->termtype));
103 get_string(&s->termspeed, cfg->termspeed, sizeof(cfg->termspeed));
104 get_string(&s->environmt, cfg->environmt, sizeof(cfg->environmt));
105 get_string(&s->username, cfg->username, sizeof(cfg->username));
106 cfg->rfc_environ = (s->telnet_flags & RFC_ENVIRON) != 0;
108 cfg->bksp_is_delete = (s->kbd_flags & BKSP_IS_DELETE) != 0;
109 cfg->rxvt_homeend = (s->kbd_flags & RXVT_HOMEEND) != 0;
110 cfg->linux_funkeys = (s->kbd_flags & LINUX_FUNKEYS) != 0;
111 cfg->app_cursor = (s->kbd_flags & APP_CURSOR) != 0;
112 cfg->app_keypad = (s->kbd_flags & APP_KEYPAD) != 0;
114 cfg->savelines = s->savelines;
115 cfg->dec_om = (s->term_flags & DEC_OM) != 0;
116 cfg->wrap_mode = (s->term_flags & WRAP_MODE) != 0;
117 cfg->lfhascr = (s->term_flags & LFHASCR) != 0;
118 cfg->win_name_always = (s->term_flags & WIN_NAME_ALWAYS) != 0;
119 cfg->width = s->width;
120 cfg->height = s->height;
121 get_string(&s->font, cfg->font, sizeof(cfg->font));
122 cfg->fontisbold = FALSE; /* XXX */
123 cfg->fontheight = s->font_height;
124 cfg->vtmode = VT_POORMAN; /* XXX */
126 cfg->try_palette = FALSE; /* XXX */
127 cfg->bold_colour = (s->colour_flags & BOLD_COLOUR) != 0;
128 cfg->colours = GetNewPalette(s->colours_id);
129 if (cfg->colours == NULL)
130 fatalbox("Failed to get default palette");
132 cfg->implicit_copy = (s->selection_flags & IMPLICIT_COPY) != 0;
133 get_wordness(s->wordness_id, cfg->wordness);
134 SetResAttrs(h, GetResAttrs(h) & ~resLocked);
141 * c-file-style: "simon"