// Presentation unigiciel, 2000 #include "graph.h" #include "tledit.h" #include "schema.h" static void api1() { ("Les APIs système"); (mode,node); drawparagraph (mode,node,"Les APIs système"); (mode,node,true); drawrect (mode,node,20,20,"","Entrées/Sorties"); drawparagraph (mode,node,"Synchrone\nAsyncrhone"); (mode,node,true); drawrect (mode,node,20,20,"","Système de fichiers"); drawparagraph (mode,node,"Volumes\nRépertoires et fichiers\nFichiers spéciaux"); (mode,node,true); drawrect (mode,node,20,20,"","Communications"); drawparagraph (mode,node,"Réseaux\nInternes\nAnonyme"); (mode,node,true); drawrect (mode,node,20,20,"","Ressources"); drawparagraph (mode,node,"Mémoire\nProcessus\n/proc"); (mode,node,true); drawrect (mode,node,20,20,"","Sécurité"); drawparagraph (mode,node,"Accès\nSetuid"); } static void api2() { ("Les APIs système"); (mode,node); drawparagraph (mode,node,"Les APIs système"); (mode,node); drawparagraph (mode,node,"Entrées/Sorties"); (mode,node,true); drawrect (mode,node,20,20,"","Entrées/Sorties"); drawparagraph (mode,node,"Synchrone\nAsyncrhone"); (mode,node,true); drawrect (mode,node,20,20,"","Système de fichiers"); drawparagraph (mode,node,"Volumes\nRépertoires et fichiers\nFichiers spéciaux"); drawrect (mode,node,20,20,"","Communications"); drawparagraph (mode,node,"Réseaux\nInternes\nAnonyme"); (mode,node); drawparagraph (mode,node,"Divers"); (mode,node,true); drawrect (mode,node,20,20,"","Ressources"); drawparagraph (mode,node,"Mémoire\nProcessus\n/proc"); (mode,node,true); drawrect (mode,node,20,20,"","Sécurité"); drawparagraph (mode,node,"Accès\nSetuid"); } static void api3() { ("Entrées sorties"); (mode,node); drawparagraph (mode,node,"Entrées/Sorties"); (mode,node,false); drawrect (mode,node,20,20,"","Synchrone"); drawparagraph (mode,node, "select\n" "read,write,pread,pwrite\n" "readv,writev\n" "mmap\n" "pause\n" "flock"); (mode,node,false); drawrect (mode,node,20,20,"","Asynchrone"); drawparagraph (mode,node, "kill\n"); } static void api4() { ("Fichiers et répertoires"); (mode,node); drawparagraph (mode,node,"Système de fichiers"); drawparagraph (mode,node, "Volumes\n" "\tstatfs\n" "Répertoires et fichiers\n" "\tstat\n" "\topendir,readdir,closedir\n" "fichiers spéciaux\n" "\tsymlink,readlink\n" "\tmknod\n" "\tlink\n" "\tlstat"); } static void api5() { ("Communications"); (mode,node); drawparagraph (mode,node,"Communications"); (mode,node,false); drawrect (mode,node,20,20,"","Réseaux"); drawparagraph (mode,node, "bind\n" "connect\n" "socket\n" "listen\n" "accept\n" "getpeername\n" "getsockname"); (mode,node,false); drawrect (mode,node,20,20,"","Locales"); drawparagraph (mode,node, "named pipe\n" "mknod\n" "Unix domain socket"); drawparagraph (mode,node, "anonyme\n" "pipe"); } static void api6() { ("Ressources"); (mode,node); drawparagraph (mode,node,"Ressources"); (mode,node,false); drawrect (mode,node,20,20,"","Mémoire"); drawparagraph (mode,node, "Mémoire partagé\n" "mmap anonyme"); (mode,node,false); drawrect (mode,node,20,20,"","Processus"); drawparagraph (mode,node, "fork\n" "pthread\n" "system\n" "exec\n" "sleep\n" "nanosleep"); drawparagraph (mode,node, "/proc\n" "uname"); } static void api7() { ("Sécurité"); (mode,node); drawparagraph (mode,node,"Sécurité"); (mode,node,false); drawrect (mode,node,20,20,"","Accès"); drawparagraph (mode,node, "access\n" "chroot"); (mode,node,false); drawrect (mode,node,20,20,"","Setuid"); drawparagraph (mode,node, "getuid\n" "geteuid"); } static const char *float_get(int val) { static char line[100]; char cmd[100]; sprintf (cmd,"echo \"2^-%d\" | /usr/bin/bc -l",val); POPEN pop (cmd); line[0] = '\0'; if (pop.isok()){ pop.wait(10); pop.readout (line,sizeof(line)); } return line; } static void dofloat () { int i; ("intro float","float00"); (mode,node); drawparagraph (mode,node,"Point flottant 101"); drawparagraph (mode,node ,"Representation d'un nombre point flottant\n" "\n" "1010101010101... * 2**N" ); for (glocal.i=1; glocal.i<56; glocal.i+=5){ SSTRING s; s.setfromf ("float%02d",glocal.i); ("Sécurité",s.get()); (mode,node,false); drawparagraph (mode,node,float_get(glocal.i)); drawparagraph (mode,node,float_get(glocal.i+1)); drawparagraph (mode,node,float_get(glocal.i+2)); drawparagraph (mode,node,float_get(glocal.i+3)); drawparagraph (mode,node,float_get(glocal.i+4)); } } static void unix1() { UNIFORM_OBJECT *subject; (); drawellipse (mode,node,w,h,title,desc); glocal.subject = &subject; ("unix 1"); (mode,node); drawellipse (mode,node,20,20,"","Les APIs"); (mode,node); drawrect (mode,node,node.depth,node.width,"Programmation mondaine",""); (mode,node,false); (mode,node); glocal.subject->draw (mode,node,"Interfaces usager"); drawellipse (mode,node,20,20,"","Gnome/GTK"); drawellipse (mode,node,20,20,"","KDE/Qt"); drawellipse (mode,node,20,20,"","Motif/Xt/TclTk/..."); (mode,node); glocal.subject->draw (mode,node,"Base de données"); drawellipse (mode,node,20,20,"","SQL"); drawellipse (mode,node,20,20,"","DB"); drawellipse (mode,node,20,20,"","Fichier texte"); (mode,node); drawrect (mode,node,node.depth,node.width,"Programmation système",""); (mode,node,false); (mode,node); glocal.subject->draw (mode,node,"Entrées/Sorties"); drawellipse (mode,node,20,20,"","Synchrone"); drawellipse (mode,node,20,20,"","Asynchrone"); (mode,node); glocal.subject->draw (mode,node,"Système de fichiers"); drawellipse (mode,node,20,20,"","Volumes"); drawellipse (mode,node,20,20,"","Répertoires et fichiers"); drawellipse (mode,node,20,20,"","Fichiers spéciaux"); (mode,node); glocal.subject->draw (mode,node,"Communications"); drawellipse (mode,node,20,20,"","Réseaux"); drawellipse (mode,node,20,20,"","Locales"); drawellipse (mode,node,20,20,"","Anonymes"); (mode,node); glocal.subject->draw (mode,node,"Ressources"); drawellipse (mode,node,20,20,"","Mémoire"); drawellipse (mode,node,20,20,"","Processus"); drawellipse (mode,node,20,20,"","/proc"); (mode,node); glocal.subject->draw (mode,node,"Sécurité"); drawellipse (mode,node,20,20,"","Accès"); drawellipse (mode,node,20,20,"","Setuid"); drawellipse (mode,node,20,20,"",""); (mode,node); drawrect (mode,node,node.depth,node.width,"Outils",""); (mode,node,false); glocal.subject->draw (mode,node,"DLLs"); glocal.subject->draw (mode,node,"Performance"); glocal.subject->draw (mode,node,"Debug"); } static void unix2() { ("Entrées/Sorties"); (mode,node,false); (mode,node); drawellipse (mode,node,20,20,"","Synchrone"); (mode,node,true); drawrect (mode,node,50,50,"",""); drawrect (mode,node,50,50,"",""); drawellipse (mode,node,20,20,"","Asynchrone"); } static void unix3() { ("unix 3"); (mode,node); } static void unix4() { ("unix 4"); (mode,node); } static SCHEMA_REGISTER rapi1 ("api1",api1); static SCHEMA_REGISTER rapi2 ("api2",api2); static SCHEMA_REGISTER rapi3 ("api3",api3); static SCHEMA_REGISTER rapi4 ("api4",api4); static SCHEMA_REGISTER rapi5 ("api5",api5); static SCHEMA_REGISTER rapi6 ("api6",api6); static SCHEMA_REGISTER rapi7 ("api7",api7); static SCHEMA_REGISTER rfloat ("float",dofloat); static SCHEMA_REGISTER runix1 ("unix1",unix1); static SCHEMA_REGISTER runix2 ("unix2",unix2); static SCHEMA_REGISTER runix3 ("unix3",unix3); static SCHEMA_REGISTER runix4 ("unix4",unix4);