#include "Surcouche.h"
#include <string.h>
Aller au code source de ce fichier.
Fonctions | |
int | ThreadStart (THREAD *pThread, ROUTINE Process, PARAMETRE Param) |
Demare un thread. | |
void | ThreadStop (THREAD *pThread) |
Stop un thread. | |
void | ThreadExit (int ExitCode) |
Sortie d'un thread. | |
void | ThreadWait (THREAD *pThread) |
Attent un thread. | |
void | MutexInit (MUTEX *pMutex) |
Initialise un mutex. | |
void | MutexLock (MUTEX *pMutex) |
Attent un mutex. | |
void | MutexUnLock (MUTEX *pMutex) |
Libere un mutex. | |
void | MutexStop (MUTEX *pMutex) |
Stop un mutex. | |
int | ModuleLoad (MODULE *pModule, char *pName) |
Charge un module. | |
int | ModuleUnload (MODULE *pModule) |
Decharge un module. | |
int | ModuleImport (MODULE Module, ROUTINE *pFonction, char *pName) |
Importe une fonction. | |
int | SocketLoad (void) |
Configure le reseau. | |
void | SocketUnLoad (void) |
Libere le reseau. | |
void | SocketClose (SOCKET Sock) |
Ferme un socket. | |
void | TempWait (unsigned int Delai) |
Attend un certain delai. | |
void | TempPause () |
Marque une pause. | |
void | ConsoleClear () |
Efface la console. | |
void | ConsoleSetColor (unsigned int iColor) |
Change la couleur de la console. | |
int | ConsoleCharWrite (CONSOLE *pConsole, unsigned int iPosX, unsigned int iPosY, char *pData, unsigned int iLength) |
Ecrit dans le buffer des carracteres. | |
int | ConsoleCharRead (CONSOLE *pConsole, unsigned int iPosX, unsigned int iPosY, char *pData, unsigned int iLength) |
Lit dans le buffer des carracteres. | |
int | ConsoleZoneWrite (CONSOLE *pConsole, unsigned int iPosX, unsigned int iPosY, unsigned int iLength, unsigned int iHeight, CHARINFO *pData) |
Ecrit dans le buffer une zone. | |
int | ConsoleZoneRead (CONSOLE *pConsole, unsigned int iPosX, unsigned int iPosY, unsigned int iLength, unsigned int iHeight, CHARINFO *pData) |
Lit dans le buffer une zone. | |
int | KeyGet () |
Retourne une touche. | |
int | KeyGet2 () |
Retourne une touche sans valider. | |
int | KeyWait () |
Attend la frappe d'une touche et la retourne. | |
int | KeyPressed () |
Permet de savoir si une touche a été presser. | |
int | FileDelete (char *pName) |
Supprime un fichier. | |
int | FileRename (char *pName, char *pNewName) |
Renome un fichier ou repertoire. | |
DIRECTORY | DirOpen (char *pDirName, char *pFirstData, int *pIsFile) |
Ouvre un dossier. | |
int | DirClose (DIRECTORY *pDir) |
Ferme un dossier. | |
int | DirGetNext (DIRECTORY *pDir, char *pNextData, int *pIsFile) |
Récupère une donnée d'un dossier. | |
int | DirCreate (char *pName) |
Crée un repertoire. | |
int | DirDelete (char *pName) |
Supprime un repertoire. |
Définition dans le fichier Surcouche.c.
|
Lit des carracteres a une position donnée dans la console.
Définition à la ligne 272 du fichier Surcouche.c. 00273 { 00274 #ifdef WIN32 00275 COORD Pos; 00276 00277 Pos.X = iPosX; 00278 Pos.Y = iPosY; 00279 00280 if(!iLength) 00281 iLength = strlen(pData); 00282 00283 return ReadConsoleOutputCharacter(pConsole, pData, iLength, Pos, (LPDWORD)iLength); 00284 #else 00285 return 0; 00286 #endif 00287 }
|
|
Ecrit des carracteres a une position donnée dans la console
Définition à la ligne 255 du fichier Surcouche.c. 00256 { 00257 #ifdef WIN32 00258 COORD Pos; 00259 00260 Pos.X = iPosX; 00261 Pos.Y = iPosY; 00262 00263 if(!iLength) 00264 iLength = strlen(pData); 00265 00266 return WriteConsoleOutputCharacter(pConsole, pData, iLength, Pos, (LPDWORD)iLength); 00267 #else 00268 return 0; 00269 #endif 00270 }
|
|
Vide le buffer stdout et efface la console. Définition à la ligne 215 du fichier Surcouche.c. Référencé par GereEntry(), et GereTable(). 00216 { 00217 #ifdef WIN32 00218 system("CLS"); 00219 #else 00220 printf("\033[2J"); 00221 #endif 00222 }
|
|
Définie la couleur de police et de fond de la console.
Définition à la ligne 224 du fichier Surcouche.c. 00225 { 00226 #ifdef WIN32 00227 char Buffer[12]; 00228 00229 sprintf(Buffer, "COLOR %X", iColor); 00230 system(Buffer); 00231 #else 00232 00233 #endif 00234 }
|
|
Lit dans une zone à une position donnée dans la console
Définition à la ligne 311 du fichier Surcouche.c. 00312 { 00313 #ifdef WIN32 00314 COORD Pos; 00315 COORD Size; 00316 SMALL_RECT Zone; 00317 00318 Pos.X = iPosX; 00319 Pos.Y = iPosY; 00320 Size.X = iLength - iPosX; 00321 Size.Y = iHeight - iPosY; 00322 Zone.Left = Pos.X; 00323 Zone.Top = Pos.Y; 00324 Zone.Right = Size.X; 00325 Zone.Bottom = Size.Y; 00326 00327 return ReadConsoleOutput(pConsole, pData, Size, Pos, &Zone); 00328 #else 00329 return 0; 00330 #endif 00331 }
|
|
Ecrit dans une zone à une position donnée dans la console
Définition à la ligne 289 du fichier Surcouche.c. 00290 { 00291 #ifdef WIN32 00292 COORD Pos; 00293 COORD Size; 00294 SMALL_RECT Zone; 00295 00296 Pos.X = iPosX; 00297 Pos.Y = iPosY; 00298 Size.X = iLength - iPosX; 00299 Size.Y = iHeight - iPosY; 00300 Zone.Left = Pos.X; 00301 Zone.Top = Pos.Y; 00302 Zone.Right = Size.X; 00303 Zone.Bottom = Size.Y; 00304 00305 return WriteConsoleOutput(pConsole, pData, Size, Pos, &Zone); 00306 #else 00307 return 0; 00308 #endif 00309 }
|
|
Ferme un dossier explorer.
Définition à la ligne 446 du fichier Surcouche.c. 00447 { 00448 #ifdef WIN32 00449 if(FindClose(pDir)) 00450 return 0; 00451 #else 00452 if(!closedir(*pDir)) 00453 return 0; 00454 #endif 00455 00456 return 1; 00457 }
|
|
Crée un repertoire via l'os.
Définition à la ligne 500 du fichier Surcouche.c. 00501 { 00502 #ifdef WIN32 00503 if(CreateDirectory(pName, NULL)) 00504 return 0; 00505 #else 00506 mode_t modes; 00507 00508 modes = S_IRWXU | S_IXGRP | S_IXOTH; 00509 if(!mkdir(pName, modes)) 00510 return 0; 00511 #endif 00512 00513 return 1; 00514 }
|
|
Supprime un repertoire vide via l'os.
Définition à la ligne 516 du fichier Surcouche.c. 00517 { 00518 #ifdef WIN32 00519 if(RemoveDirectory(pName)) 00520 return 0; 00521 #else 00522 if(!rmdir(pName)) 00523 return 0; 00524 #endif 00525 00526 return 1; 00527 }
|
|
Récupère la donnée suivante d'un dossier.
Définition à la ligne 459 du fichier Surcouche.c. 00460 { 00461 #ifdef WIN32 00462 WIN32_FIND_DATA Find; 00463 #else 00464 struct dirent *Find; 00465 struct stat Stat; 00466 #endif 00467 00468 *pNextData = '\0'; 00469 *pIsFile = 1; 00470 00471 #ifdef WIN32 00472 if(FindNextFile(pDir, &Find)) 00473 { 00474 if(Find.cFileName) 00475 strcpy(pNextData, Find.cFileName); 00476 00477 if(Find.dwFileAttributes) 00478 if(Find.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) 00479 *pIsFile = 0; 00480 return 0; 00481 } 00482 #else 00483 if(Find = readdir(*pDir)) 00484 { 00485 Find = readdir(*pDir); 00486 if(Find->d_name) 00487 strcpy(pNextData, Find->d_name); 00488 00489 lstat(pNextData, &Stat); 00490 if(S_ISDIR(Stat.st_mode)) 00491 *pIsFile = 0; 00492 00493 return 0; 00494 } 00495 #endif 00496 00497 return 1; 00498 }
|
|
Ouvre un dossier pour l'explorer et recupère la première donnée.
Définition à la ligne 399 du fichier Surcouche.c. 00400 { 00401 char *DirName; 00402 DIRECTORY Dir; 00403 #ifdef WIN32 00404 WIN32_FIND_DATA Find; 00405 #else 00406 struct dirent *Find; 00407 struct stat Stat; 00408 #endif 00409 00410 DirName = (char *)malloc(sizeof(char) * (strlen(pDirName) + 3)); 00411 strcpy(DirName, pDirName); 00412 strcat(DirName, "\\"); 00413 strcat(DirName, "*"); 00414 *pFirstData = '\0'; 00415 *pIsFile = 1; 00416 00417 #ifdef WIN32 00418 if(Dir = FindFirstFile(DirName, &Find)) 00419 { 00420 if(Find.cFileName) 00421 strcpy(pFirstData, Find.cFileName); 00422 00423 if(Find.dwFileAttributes) 00424 if(Find.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) 00425 *pIsFile = 0; 00426 } 00427 #else 00428 Dir = opendir(DirName); 00429 if(Dir) 00430 { 00431 Find = readdir(Dir); 00432 if(Find->d_name) 00433 strcpy(pFirstData, Find->d_name); 00434 00435 lstat(DirName, &Stat); 00436 if(S_ISDIR(Stat.st_mode)) 00437 *pIsFile = 0; 00438 } 00439 #endif 00440 00441 free(DirName); 00442 00443 return Dir; 00444 }
|
|
Supprime un fichier via l'os.
Définition à la ligne 372 du fichier Surcouche.c. Référencé par DataBase::SaveBase(). 00373 { 00374 #ifdef WIN32 00375 if(DeleteFile(pName)) 00376 return 0; 00377 #else 00378 if(!remove(pName)) 00379 return 0; 00380 #endif 00381 00382 return 1; 00383 }
|
|
Renome un fichier ou repertoire via l'os, permet aussi de le déplacé.
Définition à la ligne 385 du fichier Surcouche.c. 00386 { 00387 #ifdef WIN32 00388 if(MoveFile(pName, pNewName)) 00389 return 0; 00390 #else 00391 if(!rename(pName, pNewName)) 00392 return 0; 00393 #endif 00394 00395 return 1; 00396 }
|
|
Retourne la plus vielle touche du buffer stdin.
Définition à la ligne 334 du fichier Surcouche.c. Référencé par GereEntry(), et GereTable(). 00335 {
00336 fflush(stdin);
00337
00338 return getchar();
00339 }
|
|
Retourne la plus vielle touche du buffer stdin sans devoir presser 'entrée'.
Définition à la ligne 341 du fichier Surcouche.c. 00342 { 00343 #ifdef WIN32 00344 return _getch(); 00345 #else 00346 return 0; 00347 #endif 00348 }
|
|
Permet de savoir si une touche a été presser.
Définition à la ligne 361 du fichier Surcouche.c. 00362 { 00363 #ifdef WIN32 00364 return _kbhit(); 00365 #else 00366 return 0; 00367 #endif 00368 }
|
|
Pause la tache en attente de la frappe d'une touche et retourne son code.
Définition à la ligne 350 du fichier Surcouche.c. 00351 { 00352 #ifdef WIN32 00353 while(!_kbhit()); 00354 00355 return _getch(); 00356 #else 00357 return 0; 00358 #endif 00359 }
|
|
Importe une fonction depuis un module dynamique.
Définition à la ligne 141 du fichier Surcouche.c. Référencé par ModuleModule::AddFonction(), ModuleModule::Load(), et ModuleModule::UnLoad(). 00142 { 00143 *pFonction = NULL; 00144 00145 #ifdef WIN32 00146 *pFonction = (ROUTINE)GetProcAddress(Module, pName); 00147 #else 00148 *pFonction = (ROUTINE)dlsym(Module, pName); 00149 #endif 00150 00151 if(*pFonction) 00152 return 1; 00153 00154 return 0; 00155 }
|
|
Charge un module dynamique.
Définition à la ligne 110 du fichier Surcouche.c. Référencé par ModuleModule::Load(). 00111 { 00112 *pModule = NULL; 00113 #ifdef WIN32 00114 *pModule = (MODULE)LoadLibrary(pName); 00115 #else 00116 *pModule = (MODULE)dlopen(pName, RTLD_NOW); 00117 #endif 00118 00119 if(*pModule) 00120 return 1; 00121 00122 return 0; 00123 }
|
|
Decharge un module dynamique.
Définition à la ligne 125 du fichier Surcouche.c. Références MODULE. Référencé par ModuleModule::UnLoad(). 00126 { 00127 int r = 1; 00128 #ifdef WIN32 00129 if(FreeLibrary((MODULE)*pModule)) 00130 r = 0; 00131 #else 00132 if(!dlclose((MODULE)*pModule)) 00133 r = 0; 00134 #endif 00135 00136 *pModule = NULL; 00137 00138 return r; 00139 }
|
|
Initialise un verou de syncronisation de tache
Définition à la ligne 67 du fichier Surcouche.c. Références MUTEX. Référencé par DataBase::DataBase(), DataBaseTable::DataBaseTable(), Ini::Ini(), Module::Module(), MutexLock(), et XML::XML(). 00068 { 00069 #ifdef WIN32 00070 *pMutex = (MUTEX)CreateMutex(NULL, FALSE, NULL); 00071 #else 00072 pthread_mutex_init((MUTEX *)pMutex, NULL); 00073 #endif 00074 }
|
|
Pause la tache en cour en attente du déverouillage du mutex et va le verouillé.
Définition à la ligne 76 du fichier Surcouche.c. Références MUTEX, et MutexInit(). Référencé par XML::Load(), Module::LoadModules(), XML::Print(), RequestServerData(), Ini::Save(), XML::Save(), DataBase::SaveBase(), DataBaseTable::SaveEntrys(), et Module::UnLoadModules(). 00077 { 00078 if(!pMutex) 00079 MutexInit(pMutex); 00080 00081 #ifdef WIN32 00082 WaitForSingleObject((MUTEX)pMutex, INFINITE); 00083 #else 00084 pthread_mutex_lock((MUTEX *)pMutex); 00085 #endif 00086 }
|
|
Déverouille et détrui un mutex.
Définition à la ligne 97 du fichier Surcouche.c. Références MUTEX. Référencé par DataBase::~DataBase(), DataBaseTable::~DataBaseTable(), Ini::~Ini(), Module::~Module(), et XML::~XML(). 00098 { 00099 #ifdef WIN32 00100 ReleaseMutex((MUTEX)pMutex); 00101 CloseHandle((MUTEX)pMutex); 00102 *pMutex = NULL; 00103 #else 00104 pthread_mutex_destroy((MUTEX *)pMutex); 00105 pMutex = NULL; 00106 #endif 00107 }
|
|
Déverouille le mutex préalablement réservé.
Définition à la ligne 88 du fichier Surcouche.c. Références MUTEX. Référencé par XML::Load(), Module::LoadModules(), XML::Print(), RequestServerData(), Ini::Save(), XML::Save(), DataBase::SaveBase(), DataBaseTable::SaveEntrys(), et Module::UnLoadModules(). 00089 { 00090 #ifdef WIN32 00091 ReleaseMutex((MUTEX)pMutex); 00092 #else 00093 pthread_mutex_unlock((MUTEX *)pMutex); 00094 #endif 00095 }
|
|
Relache un socket proprement.
Définition à la ligne 184 du fichier Surcouche.c. Référencé par NetConnect::Close(), NetServer::KillClientNo(), NetClient::Stop(), et NetServer::Stop(). 00185 { 00186 #ifdef WIN32 00187 closesocket(Sock); 00188 #else 00189 close(Sock); 00190 #endif 00191 Sock = 0; 00192 }
|
|
Configure l'os pour l'utilisation de socket.
Définition à la ligne 159 du fichier Surcouche.c. Référencé par NetServer::Start(), et NetClient::Start(). 00160 { 00161 #ifdef WIN32 00162 WORD wVersionRequested = MAKEWORD(1, 1); 00163 WSADATA wsaData; 00164 00165 if(WSAStartup(wVersionRequested, &wsaData)) 00166 { 00167 WSACleanup(); 00168 return 1; 00169 } 00170 #else 00171 signal(SIGPIPE, SIG_IGN); 00172 #endif 00173 00174 return 0; 00175 }
|
|
Relache la gestion du reseau.
Définition à la ligne 177 du fichier Surcouche.c. Référencé par NetServer::Stop(), et NetClient::Stop(). 00178 { 00179 #ifdef WIN32 00180 WSACleanup(); 00181 #endif 00182 }
|
|
Pause la tache en attente de la frappe d'une touche.
Définition à la ligne 205 du fichier Surcouche.c. 00206 { 00207 #ifdef WIN32 00208 system("PAUSE"); 00209 #else 00210 00211 #endif 00212 }
|
|
Fait rentrée la tache en cour d'éxécution en attente pendant Delai ms.
Définition à la ligne 196 du fichier Surcouche.c. Référencé par NetClient::Start(). 00197 { 00198 #ifdef WIN32 00199 Sleep(Delai); 00200 #else 00201 usleep(Delai * 1000); 00202 #endif 00203 }
|
|
Sortie propre d'une tache et renvoie iExitCode au systeme.
Définition à la ligne 47 du fichier Surcouche.c. Référencé par ThreadGestionClient(), et NetServer::WaitClient(). 00048 { 00049 #ifdef WIN32 00050 ExitThread(ExitCode); 00051 #else 00052 pthread_exit((void *)&ExitCode); 00053 #endif 00054 }
|
|
Demare une tache Process avec un parametre Param.
Définition à la ligne 15 du fichier Surcouche.c. Références PARAMETRE, ROUTINE, et THREAD. Référencé par NetServer::Start(), et NetServer::WaitClient(). 00016 { 00017 #ifdef WIN32 00018 *pThread = (THREAD)CreateThread(NULL, 0, (ROUTINE)Process, (PARAMETRE)Param, 0, NULL); 00019 if(pThread == INVALID_HANDLE_VALUE) 00020 return 1; 00021 #else 00022 pthread_attr_t Type; 00023 00024 if(pthread_attr_init(&Type)) 00025 return(1); 00026 00027 pthread_attr_setdetachstate(&Type, PTHREAD_CREATE_JOINABLE); 00028 00029 if(pthread_create((THREAD *)pThread, &Type, (ROUTINE)Process, (PARAMETRE)Param)) 00030 return 1; 00031 #endif 00032 00033 return 0; 00034 }
|
|
Force la fermeture d'une tache.
Définition à la ligne 36 du fichier Surcouche.c. Références THREAD. 00037 { 00038 #ifdef WIN32 00039 TerminateThread((THREAD)pThread, FALSE); 00040 CloseHandle((THREAD)pThread); 00041 #else 00042 pthread_cancel((THREAD)pThread); 00043 #endif 00044 *pThread = 0; 00045 }
|
|
Pause la tache en cour en attente de la fin de la tache donnée.
Définition à la ligne 56 du fichier Surcouche.c. Références THREAD. 00057 { 00058 #ifdef WIN32 00059 WaitForSingleObject((THREAD)pThread, INFINITE); 00060 CloseHandle((THREAD)pThread); 00061 #else 00062 pthread_join((THREAD)pThread, NULL); 00063 #endif 00064 *pThread = 0; 00065 }
|