made some progress on the DvorakMSDOS remake with the login screen

This commit is contained in:
dvorakmortonxd 2026-05-26 11:44:35 +02:00
commit 95696a0311

View file

@ -1,5 +1,6 @@
#include "dvorakmsdos.h" #include "dvorakmsdos.h"
#include <stdio.h> #include <stdio.h>
#include <string.h>
#ifdef _WIN32 #ifdef _WIN32
#include <conio.h> #include <conio.h>
#define GETCH() _getch() #define GETCH() _getch()
@ -12,47 +13,90 @@
char getch(); char getch();
#endif #endif
void loginmenu(int USER, int PASS) {
struct winsize w;
ioctl(STDOUT_FILENO, TIOCGWINSZ, &w);
// we now use w.ws_col as width and w.ws_row as height
int repeat = 0;
for (int height=w.ws_row; height>1; height--) {
for (int width=w.ws_col; width>0; width--) {
if ((w.ws_col/2+11 >= width && width >= w.ws_col/2-11) && (w.ws_row/2+3 >= height && height >= w.ws_row/2-2)) {
if ((w.ws_row/2+3 == height) && repeat == 0) {
printf("Welcome To DvorakMSDOS!");
repeat++;
} else if ((w.ws_row/2+2 == height) && repeat == 1) {
if (USER == 1) {
printf("Username: admin ");
} else {
printf("Username: ");
}
repeat++;
} else if ((w.ws_row/2+1 == height) && repeat == 2) {
if (PASS == 1) {
printf("Password: **** █████████████████████████████████████████████████████████████████████");
} else {
printf("Password: █████████████████████████████████████████████████████████████████████");
}
repeat++;
}
} else {
printf("█");
}
}
}
}
void msmain() { void msmain() {
int level = 0;
int userfail = 0;
#ifndef _WIN32 #ifndef _WIN32
while (1) { while (1) {
char GETCH(); char GETCH();
struct winsize w; switch (level) {
ioctl(STDOUT_FILENO, TIOCGWINSZ, &w); case 0:
// we now use w.ws_col as width and w.ws_row as height loginmenu(0, 0);
int repeat = 0; if (userfail == 0) {
for (int height=w.ws_row; height>1; height--) { printf("Enter your username: ");
for (int width=w.ws_col; width>0; width--) {
if ((w.ws_col/2+11 >= width && width >= w.ws_col/2-11) && (w.ws_row/2+3 >= height && height >= w.ws_row/2-2)) {
if ((w.ws_row/2+3 == height) && repeat == 0) {
printf("Welcome To DvorakMSDOS!");
repeat++;
} else if ((w.ws_row/2+2 == height) && repeat == 1) {
printf("Username: ");
repeat++;
} else if ((w.ws_row/2+1 == height) && repeat == 2) {
printf("Password: ████████████████████████████████████████████████████████████████████");
repeat++;
}
} else { } else {
printf("█"); printf("Wrong username, Try again: ");
} }
} fflush(stdout); // this forces the buffer to print NOW, fixing the "bug" in which it prints out everything AFTER the next line (scanf)
char username[13];
scanf(" %12[^\n]", username);
while (getchar() != '\n') {}
if (strcmp(username, "admin") != 0) {
userfail = 1;
} else {
userfail = 0;
system("clear");
level++;
}
break;
case 1:
loginmenu(1, 0);
if (userfail == 0) {
printf("Enter your password: ");
} else {
printf("Wrong password, Try again: ");
}
fflush(stdout); // this forces the buffer to print NOW, fixing the "bug" in which it prints out everything AFTER the next line (scanf)
char password[13];
scanf(" %12[^\n]", password);
while (getchar() != '\n') {}
if (strcmp(password, "1234") != 0) {
userfail = 1;
} else {
int userfail = 0;
system("clear");
level++;
}
break;
case 2:
printf("you did it");
} }
printf("Enter your username: ");
char username[13];
while (username != "admin") {
fflush(stdout);
while (getchar() != '\n') {}
scanf(" %12[^\n]", username);
if (username == "admin") {
return;
}
}
system("clear");
fflush(stdout); // this forces the buffer to print NOW, fixing the "bug" in which it prints out everything AFTER the next line (scanf)
} }
#else #else
printf("fuck you for using windows get out of here and run this on a better unix system") // ofcourse this is temporary printf("fuck you for using windows get out of here and run this on an unix system") // ofcourse this is temporary
return; return;
#endif #endif
} }