Login new

This commit is contained in:
Mario Fetka
2026-05-22 17:18:33 +02:00
parent 4e49ecec1a
commit f08aa986a8

97
login.c
View File

@@ -23,18 +23,75 @@
static uint8 script_login_name[64];
static uint8 script_file_server[52];
#if defined(__WATCOMC__)
extern void textbackground(int color);
extern void textcolor(int color);
extern void clrscr(void);
extern void gotoxy(int x, int y);
#endif
extern char **build_argv(char *buf, int bufsize, char *str);
static char **build_argv(char *buf, int bufsize, char *str);
extern int read_command_file(char *fstr);
extern int get_fs_name(int connid, char *name);
static uint8 login_video_attr = 0x07;
static void login_gotoxy(int x, int y)
{
REGS regs;
regs.h.ah = 0x02;
regs.h.bh = 0x00;
regs.h.dh = (uint8)(y - 1);
regs.h.dl = (uint8)(x - 1);
int86(0x10, &regs, &regs);
}
static void login_cls_attr(uint8 attr)
{
REGS regs;
regs.h.ah = 0x06;
regs.h.al = 0x00;
regs.h.bh = attr;
regs.h.ch = 0;
regs.h.cl = 0;
regs.h.dh = 24;
regs.h.dl = 79;
int86(0x10, &regs, &regs);
login_gotoxy(1, 1);
}
static void login_write_attr(int x, int y, const char *s, uint8 attr)
{
REGS regs;
int col = x;
while (*s) {
login_gotoxy(col++, y);
regs.h.ah = 0x09;
regs.h.al = (uint8)*s++;
regs.h.bh = 0;
regs.h.bl = attr;
regs.x.cx = 1;
int86(0x10, &regs, &regs);
}
login_gotoxy(col, y);
}
static void login_fill_line(int y, uint8 attr)
{
REGS regs;
login_gotoxy(1, y);
regs.h.ah = 0x09;
regs.h.al = ' ';
regs.h.bh = 0;
regs.h.bl = attr;
regs.x.cx = 80;
int86(0x10, &regs, &regs);
}
static void login_screen_normal(void)
{
login_video_attr = 0x07;
}
static int login_help(void)
{
fprintf(stdout, "\n");
@@ -58,20 +115,12 @@ static int login_help(void)
static void login_banner(void)
{
int i;
textbackground(BLUE);
textcolor(WHITE);
clrscr();
gotoxy(1, 1);
for (i = 0; i < 80; i++) putch(' ');
gotoxy(36, 1);
cputs("Mars NWE");
textbackground(BLACK);
textcolor(LIGHTGRAY);
gotoxy(1, 3);
login_video_attr = 0x1f; /* white on blue */
login_cls_attr(login_video_attr);
login_fill_line(1, login_video_attr);
login_write_attr(36, 1, "Mars NWE", login_video_attr);
login_screen_normal();
login_gotoxy(1, 3);
}
static char *skip_spaces(char *p)
@@ -256,7 +305,7 @@ static int script_execute_line(char *line)
}
if (!strcmp(cmd, "CLS")) {
clrscr();
login_cls_attr(0x07);
return(0);
}
@@ -495,7 +544,7 @@ int func_login(int argc, char *argv[], int mode)
if (argv[1][0] == '-' || argv[1][0] == '/') {
if (argv[1][1] == 'u' || argv[1][1] == 'U') option |= 1;
else if (!strcmp(argv[1], "/NS") || !strcmp(argv[1], "-NS")) no_script = 1;
else if (!strcmp(argv[1], "/CLS") || !strcmp(argv[1], "-CLS")) clrscr();
else if (!strcmp(argv[1], "/CLS") || !strcmp(argv[1], "-CLS")) login_cls_attr(0x07);
else return(login_usage());
argc--;
argv++;