void check_email(void) { FILE *email_box; int rtrn = 0; char location[128], buf[128]; sprintf(location, MAIL_PATH "%s", stats.user_box); if(!stat(location, &st)) rtrn = st.st_size; stats.email = 0; chcolor(colors.data[0], colors.data[1]); if(rtrn){ if((email_box = fopen(location, "r"))) { while(!feof(email_box)) { fgets(buf, 128, email_box); if(!strncmp(buf, "From ", 5)) stats.email++; } if(stats.email < 10) mvprintw(17, 65, "0%d ", stats.email); else mvprintw(17, 65, "%d ", stats.email); fclose(email_box); } else mvprintw(17, 65, "Can't check"); } else mvprintw(17, 65, "00 "); refresh(); }
void ip_address(int display) { struct ifreq ifr; struct sockaddr_in *skt; if((eth_s = socket(AF_INET, SOCK_DGRAM, 0)) < 0) { perror("socket"); exit(0); } strcpy(ifr.ifr_name, interface); if(ioctl(eth_s, SIOCGIFADDR, &ifr) < 0); skt = (struct sockaddr_in*)&ifr.ifr_addr; if(skt->sin_addr.s_addr) stats.ip_addr_rtrn = inet_ntoa(skt->sin_addr); else stats.ip_addr_rtrn = "Unknown"; if(display) { chcolor(colors.data[0], colors.data[1]); mvprintw(17, 27, "%s", stats.ip_addr_rtrn); refresh(); } }
main(int argc, char *argv[]) { int pid, cmd, i; char name[64]; ucolor = 0; clearScreen(UMODE); printf("enter main() : argc = %d\n", argc); for (i=0; i<argc; i++) printf("argv[%d] = %s\n", i, argv[i]); while(1){ pid = getpid(); color = ucolor ? ucolor:0x000B + (pid % 5);// avoid black on black baground cmd?resetCursor(UMODE):1; printf("----------------------------------------------\n"); printf("I am proc %din U mode: segment=%x\n", pid, (pid+1)*0x1000); show_menu(); printf("Command ? "); getCurPos(UMODE); printf(" \n"); setCurPos(ux_col,uy_row,UMODE); gets(name); clearScreenRegion(K_X_PRINT_OFFSET,80,U_Y_PRINT_OFFSET-1,24,UMODE); if (name[0]==0) continue; cmd = find_cmd(name); getCurPos(UMODE); setCurPos(K_X_PRINT_OFFSET,U_Y_PRINT_OFFSET,UMODE); switch(cmd){ case 0 : do_getpid(); break; case 1 : ps(); break; case 2 : chname(); break; case 3 : kmode(); break; case 4 : kswitch(); break; case 5 : wait(); break; case 6 : exit(); break; case 7 : fork(); break; case 8 : exec(); break; case 9 : ucolor = chcolor(); break; case 10: pipe(); break; case 11: pfd(); break; case 12: read_pipe(); break; case 13: write_pipe(); break; case 14: close_pipe(); break; default: invalid(name); break; } setCurPos(ux_col,uy_row,UMODE); } }
main(int argc, char *argv[]) { char name[64]; int pid, cmd, segment, i; pid = getpid(); color = 0x000B + (pid % 5); // avoid black on black baground printf("enter main() : argc = %d\n", argc); for (i=0; i<argc; i++) printf("argv[%d] = %s\n", i, argv[i]); while(1){ pid = getpid(); color = 0x000B + (pid % 5); segment = (pid+1)*0x1000; printf("==============================================\n"); printf("I am proc %din U mode: segment=%x\n", pid, segment); show_menu(); printf("Command ? "); gets(name); if (name[0]==0) continue; cmd = find_cmd(name); switch(cmd){ case 0 : getpid(); break; case 1 : ps(); break; case 2 : chname(); break; case 3 : kmode(); break; case 4 : kswitch(); break; case 5 : wait(); break; case 6 : exit(); break; case 7 : fork(); break; case 8 : exec(); break; case 9: chcolor(); break; default: invalid(name); break; } } }
int kcinth() { u16 segment, offset; int a,b,c,d, r; segment = running->uss; offset = running->usp; a = get_word(segment, offset + 2*PA); b = get_word(segment, offset + 2*PB); c = get_word(segment, offset + 2*PC); d = get_word(segment, offset + 2*PD); switch(a){ case 0 : r = running->pid; break; case 1 : r = do_ps(); break; case 2 : r = chname(b); break; case 3 : r = kmode(); break; case 4 : r = tswitch(); break; case 5 : r = do_wait(b); break; case 6 : r = do_exit(b); break; case 7 : r = fork(); break; case 8 : r = exec(b); break; case 9 : r = chcolor(b); break; case 10 : r = putc(b); break; // putc() in Umode is now a syscall case 90: r = getc(); break; case 91: color=running->pid+11; r = putc(b); break; case 99: do_exit(b); break; default: printf("invalid syscall # : %d\n", a); } put_word(r, segment, offset + 2*AX); }
main() { char name[64]; int pid, cmd; while(1){ printf("==============================================\n"); printf("\nIch bin Prozess %d in der U Weise: das laufen im Segment=%x\n", getpid(), getcs()); show_menu(); printf("Command ? "); gets(name); if (name[0]==0) continue; cmd = find_cmd(name); switch(cmd){ case 0 : getpid(); break; case 1 : ps(); break; case 2 : chname(); break; case 3 : kmode(); break; case 4 : kswitch(); break; case 5 : wait(); break; case 6 : die(); break; case 7 : ufork(); break; case 8 : uexec(); break; case 9 : chcolor(); break; default: invalid(name); break; } } }
int kcinth() { ushort seg, off, r; int x, y, z, w; seg = running->uss; off = running->usp; x = get_word(seg, off + 2*13); y = get_word(seg, off + 2*14); z = get_word(seg, off + 2*15); w = get_word(seg, off + 2*16); switch(x){ case 0 : r = running->pid; break; case 1 : r = do_ps(); break; case 2 : r = chname(y); break; case 3 : r = kmode(); break; case 4 : r = tswitch(); break; case 5 : r = do_wait(y); break; case 6 : r = do_exit(y); break; case 7 : r = ufork(); break; case 8 : r = exec(y); break; case 9 : r = chcolor(y); break; case 10: r = putc(y); break; case 11: mysleep(y); break; case 99 : do_exit(y); break; default: printf("invalid syscall # : %d\n", x); break; } put_word(r, seg, off + 2*8); }