Fixes for Sparc systems

This commit is contained in:
Michiel Broek 2002-01-12 16:36:56 +00:00
parent 80b71dc43a
commit 3b40aba444
6 changed files with 53 additions and 27 deletions

View File

@ -4304,6 +4304,8 @@ v0.33.19 26-Oct-2001
Changed users password length to 14 characters instead of 12. Changed users password length to 14 characters instead of 12.
When you make a tty line available, some settings are When you make a tty line available, some settings are
automatic set to reasonable defaults. automatic set to reasonable defaults.
The color editor now has a rangecheck.
Rewrote calling of the color editor for Sparc systems.
mbsebbs: mbsebbs:
Added menu 317, change FS editor shortcut keys to (Emacs/ Added menu 317, change FS editor shortcut keys to (Emacs/

View File

@ -1442,14 +1442,14 @@ void show_aka(int y, int x, fidoaddr aka)
void edit_color(int *fg, int *bg, char *help) void edit_color(int *fg, int *bg, char *title, char *help)
{ {
int ch, f, b; int ch, f, b;
char temp[81]; char temp[81];
clr_index(); clr_index();
set_color(WHITE, BLACK); set_color(WHITE, BLACK);
mvprintw(5, 6, "1.8 EDIT COLORS"); mvprintw(5, 6, title);
sprintf(temp, "Change the ^%s^ color with arrow keys, press <Enter> whene done", help); sprintf(temp, "Change the ^%s^ color with arrow keys, press <Enter> whene done", help);
showhelp(temp); showhelp(temp);
@ -1458,15 +1458,16 @@ void edit_color(int *fg, int *bg, char *help)
set_color(f, b); set_color(f, b);
mvprintw(b + 9, f + 33, "."); mvprintw(b + 9, f + 33, ".");
} }
f = (* fg);
b = (* bg); f = (*fg) & 15;
b = (*bg) & 7;
for (;;) { for (;;) {
set_color(f, b); set_color(f, b);
mvprintw(7, 6, "This is an example..."); mvprintw(7, 6, "This is an example...");
fflush(stdout); fflush(stdout);
mvprintw(b + 9, f + 33, "*"); mvprintw(b + 9, f + 33, "*");
ch = readkey(7,28,f,b); ch = readkey(7,28, f, b);
mvprintw(b + 9, f + 33, "."); mvprintw(b + 9, f + 33, ".");
switch(ch) { switch(ch) {
case KEY_LINEFEED: case KEY_LINEFEED:

View File

@ -1,3 +1,5 @@
/* $Id$ */
#ifndef _LEDIT_H #ifndef _LEDIT_H
#define _LEDIT_H #define _LEDIT_H
@ -58,7 +60,7 @@ char *getmagictype(int);
void show_magictype(int, int, int); void show_magictype(int, int, int);
int edit_magictype(int, int, int); int edit_magictype(int, int, int);
void show_aka(int, int, fidoaddr); void show_aka(int, int, fidoaddr);
void edit_color(int *, int *, char *); void edit_color(int *, int *, char *, char *);
char *get_color(int); char *get_color(int);
char *getmenutype(int); char *getmenutype(int);

View File

@ -436,6 +436,14 @@ void e_newuser(void)
void e_colors(void) void e_colors(void)
{ {
int fg, bg;
/*
* With this macro intermediate variables are passed to the color editor to prevent SIGBUS
* on some CPU's (Sparc).
*/
#define ED_COL(f, b, t, h) fg = f; bg = b; edit_color(&fg, &bg, (char *)t, (char *)h); f = fg; b = bg; break;
for (;;) { for (;;) {
clr_index(); clr_index();
set_color(WHITE, BLACK); set_color(WHITE, BLACK);
@ -466,17 +474,17 @@ void e_colors(void)
switch(select_menu(11)) { switch(select_menu(11)) {
case 0: return; case 0: return;
case 1: edit_color(&CFG.TextColourF, &CFG.TextColourB, (char *)"normal text"); break; case 1: ED_COL(CFG.TextColourF, CFG.TextColourB, "1.8.1 EDIT COLOR", "normal text")
case 2: edit_color(&CFG.UnderlineColourF, &CFG.UnderlineColourB, (char *)"underline"); break; case 2: ED_COL(CFG.UnderlineColourF, CFG.UnderlineColourB, "1.8.2 EDIT COLOR", "underline")
case 3: edit_color(&CFG.InputColourF, &CFG.InputColourB, (char *)"input"); break; case 3: ED_COL(CFG.InputColourF, CFG.InputColourB, "1.8.3 EDIT COLOR", "input")
case 4: edit_color(&CFG.CRColourF, &CFG.CRColourB, (char *)"<Carriage Return>"); break; case 4: ED_COL(CFG.CRColourF, CFG.CRColourB, "1.8.4 EDIT COLOR", "<Carriage Return>")
case 5: edit_color(&CFG.MoreF, &CFG.MoreB, (char *)"more prompt"); break; case 5: ED_COL(CFG.MoreF, CFG.MoreB, "1.8.5 EDIT COLOR", "more prompt")
case 6: edit_color(&CFG.HiliteF, &CFG.HiliteB, (char *)"hilite text"); break; case 6: ED_COL(CFG.HiliteF, CFG.HiliteB, "1.8.6 EDIT COLOR", "hilite text")
case 7: edit_color(&CFG.FilenameF, &CFG.FilenameB, (char *)"file name"); break; case 7: ED_COL(CFG.FilenameF, CFG.FilenameB, "1.8.7 EDIT COLOR", "file name")
case 8: edit_color(&CFG.FilesizeF, &CFG.FilesizeB, (char *)"file size"); break; case 8: ED_COL(CFG.FilesizeF, CFG.FilesizeB, "1.8.8 EDIT COLOR", "file size")
case 9: edit_color(&CFG.FiledateF, &CFG.FiledateB, (char *)"file date"); break; case 9: ED_COL(CFG.FiledateF, CFG.FiledateB, "1.8.9 EDIT COLOR", "file date")
case 10:edit_color(&CFG.FiledescF, &CFG.FiledescB, (char *)"file description"); break; case 10:ED_COL(CFG.FiledescF, CFG.FiledescB, "1.8.10 EDIT COLOR", "file description")
case 11:edit_color(&CFG.MsgInputColourF, &CFG.MsgInputColourB, (char *)"message input"); break; case 11:ED_COL(CFG.MsgInputColourF, CFG.MsgInputColourB, "1.8.11 EDIT COLOR", "message input")
} }
}; };
} }

View File

@ -209,6 +209,8 @@ int GetMenuType(void)
void Edit_A_Menu(void); void Edit_A_Menu(void);
void Edit_A_Menu(void) void Edit_A_Menu(void)
{ {
int fg, bg;
Show_A_Menu(); Show_A_Menu();
for (;;) { for (;;) {
@ -226,15 +228,23 @@ void Edit_A_Menu(void)
break; break;
case 3: E_STR( 9,16,64, menus.OptionalData, "The ^optional data^ for this menu item") case 3: E_STR( 9,16,64, menus.OptionalData, "The ^optional data^ for this menu item")
case 4: E_STR(11,16,64, menus.Display, "The text to ^display^ for this menu") case 4: E_STR(11,16,64, menus.Display, "The text to ^display^ for this menu")
case 5: E_SEC(12,16, menus.MenuSecurity, "7.3.5 MENU ACCESS SECURITY", Show_A_Menu) case 5: E_SEC(12,16, menus.MenuSecurity, "8.3.5 MENU ACCESS SECURITY", Show_A_Menu)
case 6: E_INT(13,16, menus.Age, "The minimum ^Age^ to select this menu, 0 is don't care") case 6: E_INT(13,16, menus.Age, "The minimum ^Age^ to select this menu, 0 is don't care")
case 7: E_INT(14,16, menus.MaxSecurity, "The maximum ^Security level^ to access this menu") case 7: E_INT(14,16, menus.MaxSecurity, "The maximum ^Security level^ to access this menu")
case 8: E_STR(15,16,14, menus.Password, "The ^password^ to access this menu item") case 8: E_STR(15,16,14, menus.Password, "The ^password^ to access this menu item")
case 9: E_INT(16,16, menus.Credit, "The ^credit cost^ for this menu item") case 9: E_INT(16,16, menus.Credit, "The ^credit cost^ for this menu item")
case 10:edit_color(&menus.ForeGnd, &menus.BackGnd, (char *)"normal"); case 10:fg = menus.ForeGnd;
bg = menus.BackGnd;
edit_color(&fg, &bg, (char *)"8.3.10 EDIT COLOR", (char *)"normal");
menus.ForeGnd = fg;
menus.BackGnd = bg;
Show_A_Menu(); Show_A_Menu();
break; break;
case 11:edit_color(&menus.HiForeGnd, &menus.HiBackGnd, (char *)"bright"); case 11:fg = menus.HiForeGnd;
bg = menus.HiBackGnd;
edit_color(&fg, &bg, (char *)"8.3.11 EDIT COLOR", (char *)"bright");
menus.HiForeGnd = fg;
menus.HiBackGnd = bg;
Show_A_Menu(); Show_A_Menu();
break; break;
case 12:E_BOOL(19,16, menus.AutoExec, "Is this an ^Autoexecute^ menu item") case 12:E_BOOL(19,16, menus.AutoExec, "Is this an ^Autoexecute^ menu item")
@ -339,7 +349,7 @@ void EditMenu(char *Name)
if ((fil = fopen(temp, "w+")) == NULL) { if ((fil = fopen(temp, "w+")) == NULL) {
working(2, 0, 0); working(2, 0, 0);
} else { } else {
Syslog('+', "Updated menu %s", temp); Syslog('+', "Updated menu %s (%s)", temp, lang.Name);
fseek(tmp, 0, SEEK_SET); fseek(tmp, 0, SEEK_SET);
while (fread(&menus, sizeof(menus), 1, tmp) == 1) { while (fread(&menus, sizeof(menus), 1, tmp) == 1) {
if (menus.MenuKey[0] || menus.AutoExec) if (menus.MenuKey[0] || menus.AutoExec)

View File

@ -74,12 +74,15 @@ static int old_b = -1;
void set_color(int f, int b) void set_color(int f, int b)
{ {
if ((f != old_f) || (b != old_b)) { f = f & 15;
old_f = f; b = b & 7;
old_b = b;
colour(f, b); if ((f != old_f) || (b != old_b)) {
fflush(stdout); old_f = f;
} old_b = b;
colour(f, b);
fflush(stdout);
}
} }